Gerenciar tokens para Zero Trust
No desenvolvimento de aplicativos Zero Trust, é importante definir especificamente a intenção do seu aplicativo e seus requisitos de acesso a recursos. Seu aplicativo deve solicitar apenas o acesso necessário para funcionar como pretendido. Este artigo ajuda você, como desenvolvedor, a criar segurança em seus aplicativos com tokens de ID, tokens de acesso e tokens de segurança que seu aplicativo pode receber da plataforma de identidade da Microsoft.
Certifique-se de que seu aplicativo siga o princípio Zero Trust de menor privilégio e impeça o uso de maneiras que comprometam sua intenção. Limite o acesso do usuário com Just-In-Time e Just-Enough-Access (JIT/JEA), políticas adaptativas baseadas em risco e proteção de dados. Separe as seções sensíveis e poderosas do seu aplicativo, fornecendo apenas acesso de usuário autorizado a essas áreas. Limite os usuários que podem usar seu aplicativo e os recursos que eles têm em seu aplicativo.
Crie o mínimo de privilégios em como seu aplicativo gerencia tokens de ID que ele recebe da plataforma de identidade da Microsoft. As informações nos ID Tokens permitem verificar se um usuário é quem afirma ser. O usuário ou sua organização pode especificar condições de autenticação, como fornecer uma MFA, usar um dispositivo gerenciado e estar no local correto.
Torne mais fácil para seus clientes gerenciar autorizações para seu aplicativo. Reduza a sobrecarga de provisionamento do usuário e a necessidade de processos manuais. O provisionamento automático de usuários permite que os administradores de TI automatizem a criação, manutenção e remoção de identidade do usuário em armazenamentos de identidade de destino. Seus clientes podem basear automações em alterações em usuários e grupos com provisionamento de aplicativos ou provisionamento orientado por RH no Microsoft Entra ID.
Usar declarações de token em seus aplicativos
Use declarações em tokens de ID para UX dentro do seu aplicativo, como chaves em um banco de dados e fornecendo acesso ao aplicativo cliente. O token de ID é a extensão principal que o OpenID Connect (OIDC) faz para o OAuth 2.0. Seu aplicativo pode receber tokens de ID ao lado ou em vez de tokens de acesso.
No padrão padrão para autorização de token de segurança, um token de ID emitido permite que o aplicativo receba informações sobre o usuário. Não use o token de ID como um processo de autorização para acessar recursos. O servidor de autorização emite tokens de ID que contêm declarações com informações do usuário que incluem o seguinte.
- A declaração de audiência (
aud
) é a ID do cliente do seu aplicativo. Aceite apenas tokens para sua ID de cliente de API. - A
tid
declaração é a ID do locatário que emitiu o token. Aoid
declaração é um valor imutável que identifica exclusivamente o usuário. Use a combinação exclusiva de etid
oid
declarações como uma chave quando precisar associar dados ao usuário. Você pode usar esses valores de declaração para conectar seus dados de volta à ID do usuário no Microsoft Entra ID. - A
sub
declaração é um valor imutável que identifica exclusivamente o usuário. A reivindicação do assunto também é exclusiva para o seu pedido. Se você usar asub
declaração para associar dados ao usuário, é impossível ir de seus dados e conectá-los a um usuário no Microsoft Entra ID.
Seus aplicativos podem usar o openid
escopo para solicitar um token de ID da plataforma de identidade da Microsoft. O padrão OIDC rege o openid
escopo juntamente com o formato e o conteúdo do token de ID. O OIDC especifica estes escopos:
- Use o
openid
escopo para entrar no usuário e adicionar umasub
declaração ao token de ID. Esses escopos fornecem um ID de usuário que é exclusivo para o aplicativo e o usuário e chama o ponto de extremidade UserInfo. - O
email
escopo adiciona umaemail
declaração contendo o endereço de e-mail do usuário ao token de ID. - O
profile
escopo adiciona declarações com atributos de perfil básicos do usuário (nome, nome de usuário) ao token de ID. - O
offline_access
escopo permite que o aplicativo acesse os dados do usuário mesmo quando o usuário não está presente.
A Biblioteca de Autenticação da Microsoft (MSAL) sempre adiciona openid, email e profile
escopos a cada solicitação de token. Como resultado, o MSAL sempre retorna um token de ID e um token de acesso em cada chamada para AcquireTokenSilent
ou AcquireTokenInteractive. A MSAL sempre solicita o offline_access
escopo. A plataforma de identidade da Microsoft sempre retorna offline_access
o escopo, mesmo quando o aplicativo solicitante não especifica o offline_access
escopo.
A Microsoft usa o padrão OAuth2 para emitir tokens de acesso. O padrão OAuth2 diz que você recebe um token, mas não especifica o formato do token ou o que precisa estar no token. Quando seu aplicativo precisa acessar um recurso que o Microsoft Entra ID protege, ele deve usar um escopo que o recurso definiu.
Por exemplo, o Microsoft Graph define o User.Read
escopo que autoriza o aplicativo a acessar o perfil completo do usuário atual e o nome do locatário. O Microsoft Graph define permissões em toda a gama de funcionalidades disponíveis nessa API.
Após autorização, a plataforma de identidade da Microsoft retorna um token de acesso ao seu aplicativo. Quando você chama o recurso, seu aplicativo fornece esse token como parte do cabeçalho de autorização da solicitação HTTP para a API.
Gerenciar tempos de vida de token
Os aplicativos podem criar uma sessão para um usuário depois que a autenticação for concluída com êxito com o Microsoft Entra ID. O gerenciamento de sessão de usuário determina a frequência com que um usuário precisa de reautenticação. Seu papel em manter um usuário explicitamente verificado na frente do aplicativo com o privilégio certo e pela quantidade certa de tempo é crucial. O tempo de vida da exp
sessão deve ser baseado na declaração no token de ID. A exp
declaração é o momento em que o token de ID expira e o tempo após o qual você não pode mais usar o token para autenticar o usuário.
Sempre respeite o tempo de vida do token conforme fornecido na resposta do token para tokens de acesso ou a exp
declaração no token de ID. As condições que regem o tempo de vida do token podem incluir a frequência de entrada para uma empresa. Seu aplicativo não pode configurar o tempo de vida do token. Não é possível solicitar um tempo de vida do token.
Em geral, os tokens devem ser válidos e não expirados. A declaração de audiência (aud) deve corresponder ao seu ID de cliente. Verifique se o token vem de um emissor confiável. Se você tiver uma API multilocatário, poderá optar por filtrar para que apenas locatários específicos possam chamar sua API. Certifique-se de impor o tempo de vida do token. Verifique as nbf
declarações (não antes) e ( exp
expiração) para garantir que o tempo atual esteja dentro dos valores dessas duas reivindicações.
Não tenha como objetivo períodos de sessão excepcionalmente longos ou curtos. Deixe que o tempo de vida do token de ID concedido conduza essa decisão. Manter as sessões do seu aplicativo ativas além da validade do token viola as regras, políticas e preocupações que levaram um administrador de TI a definir uma duração de validade do token para impedir o acesso não autorizado. Sessões curtas degradam a experiência do usuário e não necessariamente aumentam a postura de segurança. Estruturas populares como ASP.NET permitem que você defina tempos limite de sessão e cookie a partir do tempo de expiração do token de ID do Microsoft Entra ID. Seguir o tempo de expiração do token do provedor de identidade garante que as sessões do usuário nunca sejam maiores do que as políticas ditadas pelo provedor de identidade.
Armazenar em cache e atualizar tokens
Lembre-se de armazenar tokens em cache adequadamente. O MSAL armazena tokens automaticamente em cache, mas os tokens têm tempo de vida. Use tokens durante toda a sua vida útil e armazene-os em cache adequadamente. Se você pedir repetidamente o mesmo token, a limitação fará com que seu aplicativo se torne menos responsivo. Se o seu aplicativo abusar da emissão de tokens, o tempo necessário para emitir novos tokens para seu aplicativo aumentará.
As bibliotecas MSAL gerenciam os detalhes do protocolo OAuth2, incluindo a mecânica de atualização de tokens. Se você não estiver usando o MSAL, certifique-se de que sua biblioteca de escolha faça uso efetivo de tokens de atualização.
Quando o cliente adquire um token de acesso para acessar um recurso protegido, ele recebe um token de atualização. Use o token de atualização para obter novos pares de token de acesso/atualização depois que o token de acesso atual expirar. Use tokens de atualização para adquirir tokens de acesso extra para outros recursos. Os tokens de atualização são vinculados a uma combinação de usuário e cliente (não a um recurso ou locatário). Você pode usar um token de atualização para adquirir tokens de acesso em qualquer combinação de recurso e locatário em que seu aplicativo tenha permissões.
Gerenciar erros e bugs de token
Seu aplicativo nunca deve tentar validar, decodificar, inspecionar, interpretar ou examinar o conteúdo de um token de acesso. Essas operações são estritamente de responsabilidade da API de recursos. Se seu aplicativo tentar examinar o conteúdo de um token de acesso, é altamente provável que seu aplicativo seja interrompido quando a plataforma de identidade da Microsoft emitir tokens criptografados.
Raramente, uma chamada para recuperar um token pode falhar devido a problemas como falha ou interrupção de rede, infraestrutura ou serviço de autenticação. Aumente a resiliência da experiência de autenticação em seu aplicativo se ocorrer uma falha na aquisição de token seguindo estas práticas recomendadas:
- Armazene em cache e proteja tokens localmente com criptografia.
- Não passe artefatos de segurança, como tokens, em canais não seguros.
- Compreender e agir de acordo com exceções e respostas de serviço do provedor de identidade.
Os desenvolvedores geralmente têm dúvidas sobre como procurar tokens internos para depurar problemas, como receber um erro 401 ao chamar o recurso. Como mais tokens criptografados impedem que você procure dentro de um token de acesso, você precisa encontrar alternativas para procurar dentro de tokens de acesso. Para depuração, a resposta de token que contém o token de acesso fornece as informações de que você precisa.
No seu código, verifique se há classes de erro em vez de casos de erro individuais. Por exemplo, manipule a interação do usuário necessária em vez de erros individuais quando o sistema não conceder permissão. Como você pode perder esses casos individuais, é melhor verificar se há um classificador como a interação do usuário em vez de se aprofundar em códigos de erro individuais.
Talvez seja necessário recorrer e AcquireTokenInteractive
fornecer contestações de declarações que a AcquireTokenSilent
chamada exige. Isso garante um gerenciamento eficaz da solicitação interativa.
Próximos passos
- Personalizar tokens ajuda você a entender como personalizar tokens para melhorar a flexibilidade e o controle, aumentando a segurança de confiança zero do aplicativo com o menor privilégio.
- Autenticar usuários para Zero Trust ajuda os desenvolvedores a aprender as práticas recomendadas para autenticar usuários de aplicativos no desenvolvimento de aplicativos Zero Trust. Ele descreve como melhorar a segurança do aplicativo com os princípios Zero Trust de menor privilégio e verificar explicitamente.
- Adquirir autorização para acessar recursos ajuda você a entender a melhor forma de garantir o Zero Trust ao adquirir permissões de acesso a recursos para seu aplicativo.
- Configurar a forma como os utilizadores concedem consentimento às aplicações
- Fornecer credenciais de identidade de aplicativo quando não houver nenhum usuário explica as práticas recomendadas de recursos do Managed Identities for Azure para serviços (aplicativos não usuários).
- Solucionar problemas de tokens de acesso do Microsoft Entra: validar um token de acesso