Connection initializes Client with AuthProvider
instead AuthString
#194
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.
This change is to allow AAD based auth token to refresh when exipred. Previously, if the token encoded in the auth string is expired, the client will always fail.
With this change, the Client is initialized with the
AuthProvider
, which is built on top ofazidentity
and MSAL-Go. Everytime the client is gonna make a request, the token will be retrieved from the underlying MSAL-Go library, either from its cache (if not expired) or a fresh new one retrieved via API. This means if the token got expired, a new token will be retireved and used by the client.However, there is one edge case: Since there is no "token expiration buffer" in the MSAL-Go right now, if the token returned from cache expires right after returning, the client will then use this invalid token for an API call, hence fail. There is no "retry" mechanism in the current client implementation to mitigate this.
I reckon this is a slight breaking change (as the exposed field
AuthorizationString
ofConnection
got changed), whilst besides this one, the other API are unchanged.Relating to: microsoft/terraform-provider-azuredevops#1402