Fix caching access tokens for delegated permissions #98
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.
Context
When caching tokens, we need to ensure that during retrieval, we only retrieve the access token for the intended user (if delegated auth had been used) or for the intended application (if app permissions were used)
We previously used unique cache keys to uniquely identify a user/app from the cache:
app permissions:
{tenantId}-{clientId}
delegated permissions:
{tenantId}-{clientId}-{userId}
This PR
Changes from exploding the access token to retrieve the subject claim value to using a hash of the access token string as the cache key for delegated permissions.
It is not recommended to inspect access tokens since they may not always be JWTs. It's recommended to request & use ID tokens instead.
We opted to generate a hash of the access token instead of the ID token since ID tokens are not activated out of the box for all apps.
closes microsoftgraph/msgraph-sdk-php#1407
closes #92