Partager via


Guide pratique pour utiliser les API d’évaluation continue de l’accès dans vos applications

Évaluation continue de l’accès (CAE) est une fonctionnalité de Microsoft Entra qui permet de révoquer les jetons d’accès en fonction d’événements critiques et de l’évaluation de la stratégie, au lieu de s’appuyer sur l’expiration des jetons en fonction de leur durée de vie.

Comme le risque et la stratégie sont évalués en temps réel, la durée de validité des jetons de certaines API de ressources peut augmenter jusqu’à 28 heures. Ces jetons de longue durée sont actualisés préalablement par la bibliothèque d’authentification Microsoft (MSAL), ce qui augmente la résilience de vos applications.

Les applications qui n’utilisent pas MSAL peuvent ajouter la prise en charge des contestations aux revendications, des demandes de revendications et des fonctionnalités clientes pour utiliser l’évaluation continue de l’accès.

Considérations relatives à l’implémentation

Pour utiliser l’évaluation CAE, votre application et l’API de ressource à laquelle elle accède doivent être compatibles CAE. Si une API de ressource implémente l’évaluation CAE et que votre application déclare qu’elle peut gérer la fonctionnalité CAE, votre application obtient des jetons CAE pour cette ressource. Pour cette raison, si vous déclarez que votre application est prête à utiliser l’évaluation continue de l’accès, votre application doit traiter le défi de revendications CAE pour toutes les API de ressources qui acceptent les jetons d’accès Microsoft Identity.

Toutefois, la préparation de votre code pour la prise en charge des ressources compatibles CAE ne limite pas sa capacité à travailler avec des API qui ne prennent pas en charge CAE. Si votre application ne gère pas correctement les réponses CAE, elle peut réessayer à plusieurs reprises un appel d’API à l’aide d’un jeton techniquement valide, mais révoqué en raison de la CAE.

Gestion de l’évaluation continue de l’accès (CAE) dans votre application

Commencez par ajouter du code pour gérer les réponses de l’API de ressource qui rejette l’appel en raison de la CAE. Avec CAE, les API retournent un état 401 et un en-tête WWW-Authenticate lorsque le jeton d’accès est révoqué ou que l’API détecte une modification de l’adresse IP utilisée. L’en-tête WWW-Authenticate contient un défi de revendications que l’application peut utiliser pour obtenir un nouveau jeton d’accès.

Par exemple :

// Line breaks for legibility only

HTTP 401; Unauthorized

Bearer authorization_uri="https://login.windows.net/common/oauth2/authorize",
  error="insufficient_claims",
  claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwNDEwNjY1MSJ9fX0="

Votre application vérifie les points suivants :

  • l’appel d’API retournant l’état 401
  • l’existence d’un en-tête WWW-Authenticate contenant :
    • un paramètre error avec la valeur insufficient_claims
    • un paramètre claims

Lorsque ces conditions sont réunies, l’application peut extraire et décoder le défi de revendications à l’aide de la classe MSAL.NET WwwAuthenticateParameters.

if (APIresponse.IsSuccessStatusCode)
{
    // ...
}
else
{
    if (APIresponse.StatusCode == System.Net.HttpStatusCode.Unauthorized
        && APIresponse.Headers.WwwAuthenticate.Any())
    {
        string claimChallenge = WwwAuthenticateParameters.GetClaimChallengeFromResponseHeaders(APIresponse.Headers);

Votre application utilise ensuite le défi de revendications pour obtenir un nouveau jeton d’accès pour la ressource.

try
{
    authResult = await _clientApp.AcquireTokenSilent(scopes, firstAccount)
        .WithClaims(claimChallenge)
        .ExecuteAsync()
        .ConfigureAwait(false);
}
catch (MsalUiRequiredException)
{
    try
    {
        authResult = await _clientApp.AcquireTokenInteractive(scopes)
            .WithClaims(claimChallenge)
            .WithAccount(firstAccount)
            .ExecuteAsync()
            .ConfigureAwait(false);
    }
    // ...

Une fois que votre application est prête à traiter le défi de revendications retourné par une ressource activée avec CAE, vous pouvez indiquer à Microsoft Identity que votre application est prête à utiliser CAE. Pour effectuer cette opération dans votre application MSAL, générez votre client public à l’aide des fonctionnalités client de "cp1".

_clientApp = PublicClientApplicationBuilder.Create(App.ClientId)
    .WithDefaultRedirectUri()
    .WithAuthority(authority)
    .WithClientCapabilities(new [] {"cp1"})
    .Build();

Vous pouvez tester votre application en connectant un utilisateur, puis en utilisant le portail Azure pour révoquer la session de l’utilisateur. La prochaine fois que l’application appellera l’API prenant en charge l’évaluation continue de l’accès, l’utilisateur sera invité à se réauthentifier.

Exemples de code