<p>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.</p>
<p>Par exemple, nous devons vérifier les revendications <code>iss</code> et <code>aud</code> si vous développez une application mono-locataire. Et vous devez également vérifier <code>nbf</code> pour vous assurer que le jeton n’a pas expiré. Pour plus de revendications, vous pouvez vous référer <a href="https://azure.microsoft.com/en-us/documentation/articles/active-directory-token-and-claims/">ici</a>.</p>
<p>La description ci-dessous provient d’<a href="https://blogs.msdn.microsoft.com/practice-sharing/2016/03/22/office-365-dev-how-to-validate-the-access-token-issued-by-microsoft-azure-ad/">ici</a> 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.)</p>
<p>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.</p>
<p>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.</p>
<p>Première étape - récupérer et mettre en cache les jetons de signature (clé publique)</p>
<p>Point de terminaison : <a href="https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration">https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration</a></p>
<p>Ensuite, nous pouvons utiliser le <code>JwtSecurityTokenHandler</code> pour vérifier le jeton en utilisant le code d’exemple ci-dessous :</p>
<pre><code class="lang-auto"> 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)</code></pre>