Browse Source
sso(authentik): always surface current provider refresh token from exchange
pull/6360/head
Alex Smith
4 days ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with
13 additions and
5 deletions
-
src/sso_client.rs
|
|
@ -240,11 +240,19 @@ impl Client { |
|
|
|
Ok(token_response) => token_response, |
|
|
|
}; |
|
|
|
|
|
|
|
Ok(( |
|
|
|
token_response.refresh_token().map(|token| token.secret().clone()), |
|
|
|
token_response.access_token().secret().clone(), |
|
|
|
token_response.expires_in(), |
|
|
|
)) |
|
|
|
// Always surface a refresh token:
|
|
|
|
// - If the IdP (e.g., Authentik) returned a rotated one, use it.
|
|
|
|
// - Otherwise, keep using the one we just used for this request.
|
|
|
|
let access = token_response.access_token().secret().clone(); |
|
|
|
let expires_in = token_response.expires_in(); |
|
|
|
|
|
|
|
let new_refresh = token_response |
|
|
|
.refresh_token() |
|
|
|
.map(|t| t.secret().clone()) |
|
|
|
.unwrap_or_else(|| rt.secret().clone()); |
|
|
|
|
|
|
|
Ok((Some(new_refresh), access, expires_in)) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|