Aumentar a resiliência da autenticação e autorização em aplicativos cliente desenvolvidos por você

Aprenda a criar resiliência em aplicativos cliente que usam a plataforma de identidade da Microsoft e a ID do Microsoft Entra para conectar usuários e executar ações em nome desses usuários.

Usar a MSAL (Biblioteca de Autenticação da Microsoft)

A MSAL (Biblioteca de Autenticação da Microsoft) faz parte da plataforma de identidade da Microsoft. A MSAL adquire, gerencia, armazena em cache e atualiza tokens; ela usa as práticas recomendadas para resiliência. A MSAL ajuda os desenvolvedores a criar soluções seguras.

Saiba mais:

A MSAL armazena tokens em cache e usa um padrão de aquisição de token silencioso. A MSAL serializa o cache de token em sistemas operacionais que fornecem nativamente um armazenamento seguro, como a UWP (Plataforma Universal do Windows), o iOS e o Android. Personalize o comportamento de serialização ao usar:

  • Microsoft.Identity.Web
  • MSAL.NET
  • MSAL para Java
  • MSAL para Python

Saiba mais:

Quando você está usando a MSAL, há suporte para o cache de token, a atualização e a aquisição silenciosa. Pode usar padrões simples para adquirir os tokens para autenticação. Há suporte para muitas linguagens. Encontre exemplos de código em Exemplos de código da plataforma de identidade da Microsoft.

try
{
    result = await app.AcquireTokenSilent(scopes, account).ExecuteAsync();
}
catch(MsalUiRequiredException ex)
{
    result = await app.AcquireToken(scopes).WithClaims(ex.Claims).ExecuteAsync()
}

A MSAL é capaz de atualizar tokens. Quando a plataforma Microsoft Identity emite um token de longa vida útil, ele pode enviar informações ao cliente para atualizar o token (refresh_in). O aplicativo é executado enquanto o token antigo é válido, mas leva mais tempo para a aquisição de outro token.

Versões da MSAL

Recomendamos que os desenvolvedores criem um processo para usar a versão mais recente da MSAL porque a autenticação faz parte da segurança do aplicativo. Use essa prática para bibliotecas em desenvolvimento e melhore a resiliência do aplicativo.

Encontre as notas sobre a versão e a versão mais recente:

Padrões resilientes para o tratamento de tokens

Se fazer não usa a MSAL, use padrões resilientes para o tratamento de tokens. A biblioteca MSAL implementa as práticas recomendadas.

Geralmente, os aplicativo que usam autenticação moderna chamam um ponto de extremidade para recuperar tokens que autenticam o usuário ou autorizam o aplicativo a chamar APIs protegidas. A MSAL processa a autenticação e implementa padrões para melhorar a resiliência. Se você não usa a MSAL, use as diretrizes nesta seção para obter as melhores práticas. Caso contrário, a MSAL implementa as práticas recomendadas automaticamente.

Tokens de cache

Verifique se os aplicativos armazenam tokens em cache com precisão do plataforma de identidade da Microsoft. Depois que seu aplicativo recebe tokens, a resposta HTTP com tokens tem uma propriedade expires_in que indica a duração do cache e quando reutilizá-la. Confirme se o aplicativo não tenta decodificar um token de acesso à API.

Diagrama de um aplicativo chamando para plataforma de identidade da Microsoft, por meio de um cache de token no dispositivo que executa o aplicativo.

Os tokens armazenados em cache impedem o tráfego desnecessário entre um aplicativo e a plataforma de identidade da Microsoft. Esse cenário torna o aplicativo menos suscetível a falhas de aquisição de token, reduzindo as chamadas de aquisição de token. Os tokens armazenados em cache melhoram o desempenho do aplicativo, porque o aplicativo bloqueia a aquisição de tokens com menos frequência. Os usuários permanecem conectados ao seu aplicativo durante o tempo de vida do token.

Serializar e persistir tokens

Verifique se os aplicativos serializam o cache de token com segurança para persistir os tokens entre as instâncias do aplicativo. Reutilize os tokens durante o tempo de vida. Os tokens de atualização e os tokens de acesso são emitidos por muitas horas. Durante esse tempo, os usuários podem iniciar seu aplicativo várias vezes. Quando um aplicativo for iniciado, confirme se ele procura um acesso válido ou um token de atualização. Isso aumenta a resiliência e o desempenho do aplicativo.

Saiba mais:

Verifique se o armazenamento de token persistente tem controle de acesso e criptografia, em relação ao proprietário do usuário ou à identidade do processo. Em vários sistemas operacionais, há recursos de armazenamento de credenciais.

Adquirir tokens silenciosamente

Autenticar um usuário ou recuperar a autorização para chamar uma API envolve várias etapas na plataforma de identidade da Microsoft. Por exemplo, os usuários que entram pela primeira vez inserem credenciais e executam uma autenticação multifator. Cada etapa afeta o recurso que fornece o serviço. A melhor experiência do usuário com menos dependências é a aquisição de token silenciosa.

Diagrama de serviços da plataforma de identidade da Microsoft que ajudam a concluir a autenticação ou autorização do usuário.

A aquisição de token silenciosa começa com um token válido do cache de token do aplicativo. Caso não haja um token válido, o aplicativo tenta adquirir um token usando um token de atualização disponível e o ponto de extremidade do token. Se nenhuma opção estiver disponível, o aplicativo adquire um token usando o parâmetro prompt=none. Essa ação usa o ponto de extremidade de autorização, mas nenhuma interface do usuário aparece para o usuário. Se possível, o plataforma de identidade da Microsoft fornece um token para o aplicativo sem interação com o usuário. Se nenhum método resultar em um token, o usuário será reautenticado manualmente.

Observação

Em geral, verifique se os aplicativos não usam prompts como "login" e "consentimento". Esses prompts forçam a interação do usuário, quando nenhuma interação é necessária.

Tratamento de código de resposta

Use as seções a seguir para saber mais sobre os códigos de resposta.

Código de resposta HTTP 429

Há respostas de erro que afetam a resiliência. Caso o aplicativo receba um código de resposta HTTP 429, Muitas Solicitações, isso significa que a plataforma de identidade da Microsoft está limitando as solicitações. Se um aplicativo fizer muitas solicitações, ele será limitado para impedir que o aplicativo receba tokens. Não permita que um aplicativo tente a aquisição de tokens antes que o tempo do campo de resposta Retry-After termine. Geralmente, uma resposta 429 indica que o aplicativo não está armazenando em cache e reutilizando tokens corretamente. Confirme como os tokens são armazenados em cache e reutilizados no aplicativo.

Código de resposta HTTP 5x

Se um aplicativo recebe um código de resposta HTTP 5x, o aplicativo não deverá entrar em um loop de repetição rápida. Use o mesmo tratamento para uma resposta 429. Caso nenhum cabeçalho “Retry-After” aparecer, implemente uma nova tentativa de retirada exponencial com a primeira tentativa ocorrendo pelo menos 5 segundos após a resposta.

Quando uma solicitação atinge o tempo limite, novas tentativas imediatas são desaconselhadas. Implemente uma nova tentativa de retirada exponencial, com a primeira tentativa, pelo menos 5 segundos após a resposta.

Muitos aplicativos e APIs precisam de informações do usuário para autorizar. Os métodos disponíveis têm vantagens e desvantagens.

Tokens

Tokens de ID (identidade) e tokens de acesso têm declarações padrão que fornecem informações. Se as informações necessárias estiverem no token, a técnica mais eficiente são as declarações de token, porque isso evita outra chamada de rede. Menos chamadas de rede equivalem a uma resiliência melhor.

Saiba mais:

Observação

Alguns aplicativos chamam o ponto de extremidade UserInfo para recuperar declarações sobre o usuário autenticado. As informações no token de ID são um superconjunto de informações do ponto de extremidade UserInfo. Permita que os aplicativos usem o token de ID em vez de chamar o ponto de extremidade UserInfo.

Aumente as declarações de token padrão com declarações opcionais, como grupos. A opção Grupo de Aplicativos inclui grupos atribuídos ao aplicativo. As opções Todos ou Grupos de segurança incluem grupos de aplicativos no mesmo locatário, o que pode adicionar grupos ao token. Avalie o efeito, porque ele pode anular a eficiência da solicitação de grupos no token, causando a sobrecarga do token e exigindo mais chamadas para obter os grupos.

Saiba mais:

Recomendamos que você use e inclua funções de aplicativo, que os clientes gerenciam usando o portal ou as APIs. Atribua funções a usuários e grupos para controlar o acesso. Quando um token é emitido, as funções atribuídas estão na declaração de funções do token. As informações derivadas de um token impedem mais chamadas de APIs.

Confira Adicionar funções de aplicativo a seu aplicativo e recebê-las no token

Adicione declarações com base nas informações do locatário. Por exemplo, uma extensão tem uma ID de usuário específica da empresa.

Adicionar informações do diretório a um token é eficiente e aumenta a resiliência reduzindo as dependências. Não resolve problemas de resiliência devido à incapacidade de adquirir um token. Adicione declarações opcionais para os cenários principais do aplicativo. Se o aplicativo exigir informações para funcionalidades administrativas, o aplicativo poderá obter essas informações, conforme necessário.

Microsoft Graph

O Microsoft Graph possui um ponto de extremidade de API unificado para acessar dados do Microsoft 365 sobre padrões de produtividade, identidade e segurança. Os aplicativos que usam o Microsoft Graph podem usar as informações do Microsoft 365 para autorização.

Os aplicativos exigem um token para acessar o Microsoft 365, que é mais resiliente do que as APIs anteriores para componentes do Microsoft 365, como o Microsoft Exchange ou o Microsoft SharePoint, que exigiam vários tokens.

Ao usar APIs do Microsoft Graph, use um SDK do Microsoft Graph que simplifica a criação de aplicativos resilientes que acessam o Microsoft Graph.

Confira a Visão geral do SDK do Microsoft Graph

Para autorização, considere usar declarações de token em vez de algumas chamadas do Microsoft Graph. Grupos de solicitação, funções de aplicativo e declarações opcionais em tokens. O Microsoft Graph para autorização requer mais chamadas de rede que dependem da plataforma de identidade da Microsoft e do Microsoft Graph. No entanto, se seu aplicativo depende do Microsoft Graph como sua camada de dados, o Microsoft Graph para autorização não é mais arriscado.

Usar a autenticação de agente em dispositivos móveis

Em dispositivos móveis, um agente de autenticação como o Microsoft Authenticator melhora a resiliência. O agente de autenticação usa um PRT (token de atualização primário) com declarações sobre o usuário e o dispositivo. Use o PRT para tokens de autenticação para acessar outros aplicativos do dispositivo. Quando um PRT solicita acesso ao aplicativo, a ID do Microsoft Entra confia em seu dispositivo e nas declarações da MFA. Isso aumenta a resiliência reduzindo as etapas para autenticação do dispositivo. Os usuários não são desafiados com vários prompts de MFA no mesmo dispositivo.

Confira: O que é um Token de Atualização Primário?

Diagrama de um aplicativo que chama a plataforma de identidade da Microsoft, por meio de um cache de token, armazenamento de token e agente de autenticação no dispositivo que executa o aplicativo.

A MSAL oferece suporte à autenticação do agente. Saiba mais:

Avaliação contínua de acesso

A CAE (Avaliação contínua de acesso) aumenta a segurança e a resiliência do aplicativo com tokens com longa vida útil. Com a CAE, um token de acesso é revogado com base em eventos críticos e na avaliação da política, em vez de tempos de vida curtos do token. Para algumas APIs de recursos, como o risco e a política são avaliados em tempo real, a CAE aumenta o tempo de vida do token em até 28 horas. A MSAL atualiza tokens de longa vida útil.

Saiba mais:

Se você desenvolve APIs de recursos, acesse openid.net para ler Shared Signals – Uma estrutura de webhooks segura.

Próximas etapas