Support Access Token Refresh for MSAL Provided Tokens (with_interactive
, with_device_flow
, with_client_certificate
)
#953
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR Description
This PR addresses re-addresses issue #950, which still occurs in the latest
2.6.1
release.It extends the token refresh behavior to support MSAL-based authentication workflows — specifically
with_client_certificate
,with_interactive
, andwith_device_flow
— by incorporating token expiration and refresh logic whenever using a cached access token.Comment
In reviewing the current implementation:
TokenResponse
does not have an explicitly annotatedexpiresIn
property.AuthenticationContext
— includingwith_interactive
,with_device_flow
, andwith_client_certificate
— all rely on MSAL, which consistently returns anexpires_in
field in its token response.TokenResponse
class dynamically sets this field when available.To ensure compatibility while maintaining backward safety, this PR takes a conservative approach: it checks for the presence of the
expiresIn
attribute onTokenResponse
before using it, and gracefully defaults to the original behavior if it's absent.