Delen via


API's met continue toegangsevaluatie gebruiken in uw toepassingen

Continuous Access Evaluation (CAE) is een Microsoft Entra-functie waarmee toegangstokens kunnen worden ingetrokken op basis van kritieke gebeurtenissen en beleidsevaluatie, in plaats van te vertrouwen op het verlopen van tokens op basis van de levensduur.

Omdat risico's en beleid in realtime worden geëvalueerd, kan de levensduur van een resource-API-token met maximaal 28 uur toenemen. Deze langlevende tokens worden proactief vernieuwd door de Microsoft Authentication Library (MSAL), waardoor de tolerantie van uw toepassingen wordt verhoogd.

Toepassingen die geen gebruikmaken van MSAL, kunnen ondersteuning toevoegen voor problemen met claims, aanvragen van claims en clientmogelijkheden voor gebruik van CAE.

Implementatieoverwegingen

Als u CAE wilt gebruiken, moeten zowel uw app als de resource-API die toegang heeft, CAE zijn ingeschakeld. Als een resource-API CAE implementeert en uw toepassing declareert dat deze CAE kan verwerken, ontvangt uw app CAE-tokens voor die resource. Als u daarom uw app CAE-gereed declareert, moet uw toepassing de CAE-claimvraag afhandelen voor alle resource-API's die toegangstokens voor Microsoft Identity accepteren.

Het voorbereiden van uw code ter ondersteuning van RESOURCES met CAE beperkt echter niet de mogelijkheid om te werken met API's die GEEN ONDERSTEUNING bieden voor CAE. Als uw app CAE-antwoorden niet correct verwerkt, kan het herhaaldelijk opnieuw proberen om een API-aanroep uit te voeren met behulp van een token dat technisch geldig is, maar wordt ingetrokken vanwege CAE.

CAE verwerken in uw toepassing

Begin met het toevoegen van code om reacties van de resource-API af te handelen die de aanroep weigert vanwege CAE. Met CAE retourneren API's een 401-status en een WWW-Authenticate header wanneer het toegangstoken wordt ingetrokken of detecteert de API een wijziging in het gebruikte IP-adres. De WWW-Authenticate header bevat een claimvraag die de toepassing kan gebruiken om een nieuw toegangstoken te verkrijgen.

Voorbeeld:

// Line breaks for legibility only

HTTP 401; Unauthorized

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

Uw app controleert op:

  • de API-aanroep die de 401-status retourneert
  • het bestaan van een WWW-Authenticate header met:
    • een error parameter met de waarde insufficient_claims
    • een claims parameter

Wanneer aan deze voorwaarden wordt voldaan, kan de app de claimvraag extraheren en decoderen met behulp van de MSAL.NET-klasseWwwAuthenticateParameters.

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

Uw app gebruikt vervolgens de claimvraag om een nieuw toegangstoken voor de resource te verkrijgen.

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);
    }
    // ...

Zodra uw toepassing klaar is om de claimvraag af te handelen die wordt geretourneerd door een resource met CAE-functionaliteit, kunt u aan Microsoft Identity zien dat uw app gereed is voor CAE. U doet dit in uw MSAL-toepassing door uw openbare client te bouwen met behulp van de clientmogelijkheden van "cp1".

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

U kunt uw toepassing testen door u aan te melden bij een gebruiker en vervolgens de Azure-portal te gebruiken om de sessie van de gebruiker in te trekken. De volgende keer dat de app de API met CAE aanroept, wordt de gebruiker gevraagd om opnieuw te verifiëren.

Codevoorbeelden