Partilhar via


Como usar APIs habilitadas para Avaliação Contínua de Acesso em seus aplicativos

A Avaliação Contínua de Acesso (CAE) é um recurso do Microsoft Entra que permite que os 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 recursos pode aumentar em até 28 horas. Esses tokens de longa duração são atualizados proativamente pela Microsoft Authentication Library (MSAL), aumentando a resiliência de seus aplicativos.

As aplicações que não utilizem a MSAL podem adicionar suporte para desafios de afirmações, pedidos de afirmação e capacidades do cliente para utilização da CAE.

Considerações de implementação

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

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

Manipulando o CAE em seu aplicativo

Comece adicionando código para manipular 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 deteta uma alteração no endereço IP usado. O WWW-Authenticate cabeçalho contém um Desafio de Declarações que o 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 verifica se:

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

Quando essas condições são atendidas, o aplicativo pode extrair e decodificar o desafio de declarações usando a classe MSAL.NETWwwAuthenticateParameters.

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

Em seguida, seu aplicativo usa 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á dizer ao Microsoft Identity que seu aplicativo está pronto para CAE. Para fazer isso em seu aplicativo MSAL, crie seu cliente público usando os recursos de cliente do "cp1".

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

Você pode testar seu aplicativo entrando em um usuário e, em seguida, usando o portal do Azure para revogar a sessão do usuário. Na próxima vez que o aplicativo chamar a API habilitada para CAE, o usuário será solicitado a se autenticar novamente.

Amostras de código