Sdílet prostřednictvím


Jak ve svých aplikacích používat rozhraní API s podporou průběžného vyhodnocování přístupu

Průběžné vyhodnocování přístupu (CAE) je funkce Microsoft Entra, která umožňuje odvolat přístupové tokeny na základě kritických událostí a vyhodnocení zásad, a nespoléhat se na vypršení platnosti tokenu na základě životnosti.

Vzhledem k tomu, že se rizika a zásady vyhodnocují v reálném čase, může se doba života tokenů rozhraní API prostředků zvýšit až o 28 hodin. Tyto dlouhodobé tokeny jsou proaktivně aktualizovány knihovnou MSAL (Microsoft Authentication Library) a zvyšují odolnost vašich aplikací.

Aplikace, které nepoužívají MSAL, můžou navíc využívat podporu pro výzvy při nedostatečných deklaracích identity, žádosti o deklarace identity a schopnosti klientů, aby mohly používat CAE.

Na co myslet při implementaci

Pokud chcete používat CAE, musí být vaše aplikace i rozhraní API prostředků, ke které přistupuje, povolenou službou CAE. Pokud rozhraní API prostředků implementuje CAE a vaše aplikace deklaruje, že dokáže zpracovat CAE, vaše aplikace obdrží tokeny CAE pro tento prostředek. Z tohoto důvodu, pokud deklarujete, že vaše aplikace je připravená, musí vaše aplikace zpracovat výzvu deklarace identity CAE pro všechna rozhraní API prostředků, která přijímají přístupové tokeny Microsoft Identity.

Příprava kódu na podporu prostředků s podporou CAE ale neomezuje jeho schopnost pracovat s rozhraními API, která nepodporují CAE. Pokud vaše aplikace nezpracuje správně odpovědi CAE, může opakovaně opakovat volání rozhraní API pomocí technicky platného tokenu, ale je odvolán z důvodu caE.

Zpracování CAE ve vaší aplikaci

Začněte přidáním kódu pro zpracování odpovědí z rozhraní API prostředků, které odmítlo volání kvůli CAE. V případě caE vrátí rozhraní API stav 401 a hlavičku WWW-Authenticate , když je přístupový token odvolán nebo rozhraní API zjistí změnu použité IP adresy. Hlavička WWW-Authenticate obsahuje výzvu deklarací identity, kterou může aplikace použít k získání nového přístupového tokenu.

Příklad:

// Line breaks for legibility only

HTTP 401; Unauthorized

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

Aplikace kontroluje:

  • Volání rozhraní API vracející stav 401
  • existence hlavičky WWW-Authenticate obsahující:
    • parametr error s hodnotou insufficient_claims
    • claims parametr

Po splnění těchto podmínek může aplikace extrahovat a dekódovat výzvu deklarací pomocí třídy MSAL.NETWwwAuthenticateParameters.

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

Aplikace pak pomocí výzvy deklarací identity získá nový přístupový token prostředku.

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

Jakmile je vaše aplikace připravená na zpracování výzvy deklarace identity vrácené prostředkem s povoleným caE, můžete zjistit, jestli je vaše aplikace připravená na cae. Chcete-li to provést v aplikaci MSAL, sestavte veřejný klient pomocí schopností "cp1"klienta .

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

Aplikaci můžete otestovat přihlášením uživatele a následným použitím webu Azure Portal k odvolání relace uživatele. Při příštím volání rozhraní API s podporou CAE se uživateli zobrazí výzva k opětovnému ověření.

Ukázky kódu