Jak používat rozhraní API s povoleným průběžným vyhodnocováním přístupu ve vašich aplikacích

CaE (Continuous Access Evaluation) 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. U některých rozhraní API prostředků, protože rizika a zásady se vyhodnocují v reálném čase, může to prodloužit životnost tokenu až o 28 hodin. Tyto dlouhodobé tokeny jsou proaktivně aktualizovány knihovnou Microsoft Authentication Library (MSAL), což zvyšuje odolnost vašich aplikací.

V tomto článku se dozvíte, jak v aplikacích používat rozhraní API s podporou CAE. 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.

Důležité informace o implementaci

Pokud chcete používat CAE, musí mít aplikace i rozhraní API prostředků, ke které přistupuje, povoleno CAE. Příprava kódu na použití prostředku s povoleným CAE vám ale nezabrání v používání rozhraní API, která nemají povolené CAE.

Pokud rozhraní API prostředku implementuje CAE a vaše aplikace deklaruje, že dokáže zpracovat CAE, obdrží vaše aplikace tokeny CAE pro tento prostředek. Z tohoto důvodu platí, že pokud deklarujete připravenost aplikace cae, musí vaše aplikace zpracovat výzvu deklarace identity CAE pro všechna rozhraní API prostředků, která přijímají přístupové tokeny identity Microsoftu. Pokud v těchto voláních rozhraní API nezpracujete odpovědi CAE, aplikace může skončit ve smyčce opakování volání rozhraní API s tokenem, který je stále ve vrácené životnosti tokenu, ale byl odvolán kvůli CAE.

Kód

Prvním krokem je přidání kódu pro zpracování odpovědi z rozhraní API prostředku, které odmítá volání kvůli CAE. V případě CAE vrátí rozhraní API stav 401 a hlavičku WWW-Authenticate, když dojde k odvolání přístupového tokenu nebo rozhraní API zjistí změnu použité IP adresy. Hlavička WWW-Authenticate obsahuje výzvu deklarací identity, kterou aplikace může 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="

Vaše aplikace zkontroluje:

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

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

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

Aplikace pak použije výzvu deklarací identity k získání nového přístupového tokenu pro prostředek.

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 bude vaše aplikace připravená zpracovat výzvu deklarace identity vrácenou prostředkem s povoleným CAE, můžete identitě Microsoftu oznámit, že je vaše aplikace připravená na CAE. Pokud to chcete udělat v aplikaci MSAL, sestavte veřejného klienta pomocí možností klienta cp1.

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

Aplikaci můžete otestovat tak, že se přihlásíte uživatele k aplikaci a pak použijete Azure Portal k odvolání uživatelských relací. Při příštím volání rozhraní API s podporou CAE se uživateli zobrazí výzva k opětovnému ověření.

Aplikaci můžete otestovat tak, že se přihlásíte k uživateli a pak pomocí Azure Portal odvoláte jeho relaci. 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ódů

Další kroky