Comment valider un jeton de sécurité Azure AD ?
Source : Stack Overflow [azure].)
Il y a deux étapes pour vérifier le jeton. Premièrement, vérifier la signature du jeton pour s’assurer que le jeton a été émis par Azure Active Directory. Deuxièmement, vérifier les revendications (claims) du jeton en fonction de la logique métier.
Par exemple, nous devons vérifier les revendications iss et aud si vous développez une application mono-locataire. Et vous devez également vérifier nbf pour vous assurer que le jeton n’a pas expiré. Pour plus de revendications, vous pouvez vous référer ici.
La description ci-dessous provient d’ici sur les détails de la vérification de signature. (Remarque : l’exemple ci-dessous utilise le point de terminaison Azure AD v2. Vous devriez utiliser le point de terminaison correspondant à celui que l’application cliente utilise.)
Le jeton d’accès d’Azure AD est un JSON Web Token (JWT) signé par le Security Token Service avec une clé privée.
Le JWT comprend 3 parties : en-tête, données et signature. Techniquement, nous pouvons utiliser la clé publique pour valider le jeton d’accès.
Première étape - récupérer et mettre en cache les jetons de signature (clé publique)
Point de terminaison : https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration
Ensuite, nous pouvons utiliser le JwtSecurityTokenHandler pour vérifier le jeton en utilisant le code d’exemple ci-dessous :
public JwtSecurityToken Validate(string token)
{
string stsDiscoveryEndpoint = "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration";
ConfigurationManager<OpenIdConnectConfiguration> configManager = new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint);
OpenIdConnectConfiguration config = configManager.GetConfigurationAsync().Result;
TokenValidationParameters validationParameters = new TokenValidationParameters
{
ValidateAudience = false,
Valida
*(Réponse tronquée)*