Add support for incremental consent via MsalProvider #147
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.
Fixes #8
PR Type
What kind of change does this PR introduce?
What is the current behavior?
MsalProvider does not currently support incremental consent. Requesting new scopes after the initial login will require the user to fully authenticate again.
In addition, the
WithScopes
parameter being passed in with the Graph requests is not being handled when the request is authenticated viaMsalProvider.AuthenticateRequestAsync
. The scopes are ignored currently and not used to actually make requests,What is the new behavior?
With these changes, the MsalProvider will now use any specified alternate scopes with the graph request, and it will only ask for the user's password when consenting, instead of requiring full re-login.
I've also added a SemaphoreSlim to the MsalProvider and WindowsProvider to protect the provider from being bombarded with auth requests simultaneously, potentially causing throttling exceptions.
Lastly, I added a small fix to the PersonView to clear out PersonDetails and prevent stale data from showing up when one user logs out and another logs in.
PR Checklist
Please check if your PR fulfills the following requirements:
Other information
https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#incremental-and-dynamic-user-consent