Compartilhar via


Como usar APIs habilitadas para a Avaliação contínua de acesso em seus aplicativos

Avaliação Contínua de Acesso (CAE) é um recurso do Microsoft Entra que permite que tokens de acesso sejam revogados com base em eventos críticos e avaliação de políticas, em vez de depender da expiração do token com base no tempo de vida.

Como o risco e a política são avaliados em tempo real, o tempo de vida do token de algumas APIs de recurso pode aumentar em até 28 horas. Esses tokens de longa duração são atualizados proativamente pela Biblioteca de Autenticação da Microsoft (MSAL), aumentando a resiliência dos seus aplicativos.

Os aplicativos que não usam a MSAL podem adicionar suporte para desafios de declarações, solicitações de declarações e recursos do cliente para usar a CAE.

Considerações sobre a implementação

Para usar a CAE, o aplicativo e a API do recurso que ele acessa precisam estar habilitados para CAE. Se uma API de recurso implementar a CAE e o aplicativo declarar que pode manipular a CAE, o aplicativo obterá tokens da CAE para esse recurso. Por esse motivo, se você declarar que seu aplicativo está pronto para CAE, seu aplicativo deverá lidar com o desafio da declaração de CAE para todas as APIs de recurso que aceitam tokens de acesso do Microsoft Identity.

No entanto, preparar seu código para dar suporte a recursos habilitados para CAE não limita sua capacidade de trabalhar com APIs que não dão suporte para CAE. Se seu aplicativo não lidar corretamente com as respostas do CAE, ele poderá tentar repetidamente uma chamada à API usando um token que é tecnicamente válido, mas que foi revogado devido ao CAE.

Lidar com o CAE no seu aplicativo

Comece adicionando código para lidar com respostas da API de recurso rejeitando a chamada devido ao CAE. Com o CAE, as APIs retornam um status 401 e um WWW-Authenticate cabeçalho quando o token de acesso é revogado ou a API detecta uma alteração no endereço IP usado. O cabeçalho WWW-Authenticate contém um Desafio de Declarações que p aplicativo pode usar para adquirir um novo token de acesso.

Por exemplo:

// Line breaks for legibility only

HTTP 401; Unauthorized

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

Seu aplicativo verificará:

  • a chamada à API retornando o status 401
  • a existência de um cabeçalho WWW-Authenticate contendo:
    • um parâmetro error com o valor insufficient_claims
    • um parâmetro claims

Quando essas condições são atendidas, o aplicativo pode extrair e decodificar o desafio de declarações usando a 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);

Seu aplicativo então usará o desafio de declarações para adquirir um novo token de acesso para o recurso.

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

Quando seu aplicativo estiver pronto para lidar com o desafio de declaração retornado por um recurso habilitado para CAE, você poderá informar ao Microsoft Identity que seu aplicativo está pronto para CAE. Para fazer isso no seu aplicativo MSAL, crie seu Cliente Público usando as Funcionalidades do Cliente do "cp1".

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

Você pode testar seu aplicativo conectando um usuário no aplicativo e usando o portal do Azure para revogar as sessões do usuário. Na próxima vez que o aplicativo chamar a API habilitada para CAE, o usuário deverá se autenticar.

Exemplos de código