[OIDC 1] Add basic Entra ID token validation #10251
Merged
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.
Progress on #10212.
This adds an
IEntraIdTokenValidator
interface which accepts a parsed JWT (JSON web token) and performs basic Entra ID validation. This will be used by higher level code in a future PR.The goal of this class is to assert that a given JWT is issued by Entra ID and is valid. The following checks are performed:
ConfigurationManager<OpenIdConnectConfiguration>
.iss
claim andissuer
property on the key). This is done viaAadIssuerValidator.GetAadIssuerValidator
andEnableAadSigningKeyIssuerValidation
.nbf
andexp
claims). This is done insideJsonWebTokenHandler.ValidateTokenAsync
.aud
claim). A validaud
claim is our configured app client ID. This is done insideJsonWebTokenHandler.ValidateTokenAsync
.Other validations like replay protection, matching tenant ID/object ID, etc will be done elsewhere.
This minimal set of validations mimic the OWIN integration in Microsoft.Identity.Web:
https://github.com/AzureAD/microsoft-identity-web/blob/011bd155ce3ddedeb43daa7348e09584cfa20552/src/Microsoft.Identity.Web.OWIN/AppBuilderExtension.cs#L62-L73