Autenticar aplicativos e usuários com o Microsoft Entra ID

Uma função principal do Microsoft Entra ID para aplicativos é a autenticação, o processo no qual os usuários declaram sua identidade com um identificador pessoal, como um nome de usuário ou endereço de email. É fornecida prova de identidade. A prova pode ser uma senha, um artefato de autenticação multifator, uma biometria ou um consentimento sem senha.

Este artigo descreve como os aplicativos usam o Microsoft Entra ID para autenticar usuários e aplicativos. É o terceiro de uma série de artigos sobre como os Desenvolvedores Independentes de Software (ISV) podem criar e otimizar seus aplicativos para o Microsoft Entra ID. Nesta série, você pode saber mais sobre estes tópicos:

Solicitar tokens

Os aplicativos solicitam um token do Microsoft Entra ID. Depois que os aplicativos recebem o token, eles podem usar as informações desse token para identificar o usuário. Quando você cria com base no Microsoft Entra ID, os usuários podem autenticar muitos aplicativos com uma única conta registrada do Microsoft Entra ID (SSO). O método de autenticação SSO permite que os usuários entrem em vários sistemas de software independentes usando um conjunto de credenciais.

Os protocolos que os desenvolvedores podem usar para solicitar um token do Microsoft Entra ID usam um navegador para conectar o usuário ao site do Microsoft Entra ID. Este site permite que o usuário tenha uma conversa privada com o Microsoft Entra ID. Um aplicativo não participa dessa conversa privada. Os aplicativos iniciam o site Microsoft Entra ID onde o usuário inicia o processo de autenticação. Após a conclusão do processo de autenticação, o Microsoft Entra ID redireciona o usuário de volta para o aplicativo, com ou sem um token.

É importante que os usuários raramente precisem passar pelo processo de autenticação. Quanto mais frequentemente os utilizadores são obrigados a fazê-lo, mais se tornam suscetíveis a ameaças como ataques de phishing.

Reduzir as solicitações de início de sessão

O SSO pode reduzir ou eliminar pedidos de início de sessão. Os desenvolvedores desempenham um papel vital na redução e eliminação de avisos de autenticação. Todos os aplicativos devem compartilhar o navegador que acessa o site Microsoft Entra ID onde os usuários executam o processo de autenticação. Se o seu aplicativo for um aplicativo de página única (SPA) ou um aplicativo Web baseado em navegador, não serão necessárias etapas do desenvolvedor. Todas as aplicações no navegador partilham o navegador. Para aplicações nativas executadas em desktops e dispositivos móveis, os desenvolvedores devem reduzir ou eliminar proativamente as solicitações de início de sessão.

O melhor método para reduzir ou eliminar prompts de entrada é usar as Bibliotecas de Autenticação da Microsoft (MSAL) ou uma biblioteca baseada no MSAL e autenticações intermediárias. Este método minimiza os prompts de entrada e fornece a experiência mais fluida. Se não for possível criar no MSAL, a sua aplicação deverá usar o navegador do sistema para minimizar os prompts de início de sessão.

Para aplicativos executados em iOS ou Android, os provedores de plataforma móvel têm algumas funcionalidades para tornar essa experiência mais perfeita. A Google tem orientações para aplicações Android com Chrome Custom Tabs. A Apple tem orientações para autenticar um utilizador através de um serviço Web em aplicações iOS. Evite usar WebViews incorporadas, pois elas podem não permitir o compartilhamento entre aplicativos ou com o navegador do sistema.

Os dois protocolos para autenticação de usuário são Security Assertion Markup Language (SAML) 2.0 e OpenID Connect (OIDC). O Microsoft Entra ID suporta totalmente aplicativos que usam ambos os protocolos, para que os desenvolvedores possam escolher qualquer um deles com base em seus requisitos.

Essas referências detalham o suporte ao Microsoft Entra ID SAML.

  • A plataforma de identidade da Microsoft utiliza o protocolo SAML, sendo o ponto de partida para a documentação do SAML do Microsoft Entra ID para desenvolvedores.
  • O protocolo SAML de início de sessão único é a referência para as solicitações e respostas de autenticação SAML 2.0 suportadas pelo Microsoft Entra ID.
  • Os metadados de federação do Microsoft Entra descrevem os metadados de Federação e os pontos de extremidade de metadados para metadados específicos do locatário e independentes do locatário. Ele abrange metadados para SAML e os padrões WS-Federation mais antigos. Embora totalmente suportado, não recomendamos WS-Federation para novos aplicativos.
  • A referência de declarações de token SAML 2.0 é a documentação para tokens SAML (asserções) do Microsoft Entra ID.

Existem algumas limitações no suporte ao Microsoft Entra ID SAML. Especificamente, você não pode migrar aplicativos que exigem esses recursos de protocolo: suporte para o padrão WS-Trust ActAs e resolução de artefacto SAML.

Embora o Microsoft Entra ID suporte totalmente SAML para aplicativos criados no protocolo SAML, a plataforma de identidade da Microsoft não fornece bibliotecas ou outras ferramentas de desenvolvimento para desenvolver aplicativos com SAML. Para o desenvolvimento de novos aplicativos, recomendamos o uso do OpenID Connect (OIDC) para autenticação.

O Microsoft Entra ID suporta totalmente o OpenID Connect. A Microsoft fornece bibliotecas MSAL, Microsoft Identity Web e SDK do Azure para facilitar o desenvolvimento de aplicativos OIDC. OpenID Connect (OIDC) na plataforma de identidade da Microsoft detalha o suporte OIDC do Microsoft Entra ID. MSAL suporta automaticamente OIDC. A MSAL sempre solicita um token de ID OIDC com cada solicitação de token, incluindo solicitações de autorização para que um aplicativo acesse um recurso.

Duração do token

O MSAL armazena tokens de ID e tokens de acesso com base no tempo de expiração do token de acesso. Como o Microsoft Entra ID define de forma diferente o tempo de vida em tokens de ID e tokens de acesso, você pode receber um token de ID expirado de um cache MSAL expirado enquanto o token de acesso ainda está dentro de seu tempo de vida válido.

O MSAL não renova automaticamente os tokens de ID. O MSAL renova os tokens de acesso no fim da vida útil do token de acesso ou perto dele quando um aplicativo solicita o token. Nesse ponto, a MSAL solicita um novo token de ID. Para implementar o OIDC, use a afirmação de expiração do token de ID para agendar uma solicitação de token de ID usando o parâmetro ForceRefresh do MSAL.

Quando a criação no MSAL ou em uma biblioteca construída no MSAL não é possível, você pode usar o padrão OpenID Connect para autenticar o usuário atual. Algumas funcionalidades em aplicativos nativos podem não ser possíveis sem o uso do MSAL, como garantir que o aplicativo nativo esteja sendo executado em um dispositivo gerenciado. Revisão Aumente a resiliência da autenticação e autorização em aplicativos cliente que você desenvolve para orientação quando não estiver criando no MSAL.

Microsoft Entra ID implementa um endpoint UserInfo como parte do suporte aos padrões OIDC do Microsoft Entra ID, com um caminho específico no Microsoft Graph (https://graph.microsoft.com/oidc/userinfo). Não é possível adicionar ou personalizar as informações retornadas pelo UserInfo ponto de extremidade. Como as informações no token de ID são um superconjunto das informações retornadas chamando o UserInfo ponto de extremidade, recomendamos usar o token de ID em vez de chamar o UserInfo ponto de extremidade.

Autenticar utilizadores

Os aplicativos interagem com locatários do Microsoft Entra ID para autenticar usuários. Para autenticar um usuário, um aplicativo direciona um navegador para https://login.microsoftonline.com/{tenant}/v2.0, onde {tenant} é o ID ou domínio do locatário. No entanto, recomendamos que os ISVs usem o Microsoft Entra ID para criar aplicativos multilocatários que possam oferecer suporte à maior variedade de clientes. Para uma aplicação multilocatário, uma aplicação pode não saber de qual locatário um utilizador é até após o utilizador se autenticar, portanto, não é possível usar um endpoint específico de locatário.

Para habilitar apps multitenant, a Microsoft Entra ID fornece dois endpoints OIDC/OAuth 2.0 independentes do tenant:

  • https://login.microsoftonline.com/common/v2.0 permite que os utilizadores autentiquem uma aplicação quando pertencem a qualquer inquilino do Microsoft Entra ID ou quando têm uma Conta Microsoft de consumidor de sites como outlook.com, skype.com, xbox.com, live.com ou Hotmail.com.
  • https://login.microsoftonline.com/organizations/v2.0 permite que os utilizadores autentiquem uma aplicação quando forem de qualquer inquilino do Microsoft Entra ID.

Esses pontos de extremidade permitem que qualquer usuário de qualquer locatário do Microsoft Entra ID autentique seu aplicativo. Se você quiser permitir apenas usuários de locatários específicos, implemente a lógica para permitir que apenas usuários desses locatários acessem seu aplicativo. A implementação normal é filtrar usuários com base na iss declaração (emissor) ou tid (ID do locatário) no token para uma lista de permissões de locatários que você mantém.

Os locatários do Microsoft Entra ID oferecem suporte a usuários que podem ser membros regulares do locatário ou que podem ser usuários convidados do locatário. Por padrão, há recursos limitados para usuários convidados em um locatário. Por exemplo, os usuários convidados não podem ver o perfil completo de outros usuários no locatário. Os usuários convidados, às vezes chamados de usuários Business to Business (B2B), permitem que diferentes organizações colaborem com ferramentas e serviços que o Microsoft Entra ID protege. Um cenário de exemplo é convidar um usuário de fora da sua organização para acessar um arquivo do SharePoint em seu locatário. Normalmente, um utilizador B2B usa o seu endereço de e-mail como seu userid. No entanto, podem utilizar o mesmo endereço que o inquilino userid da sua casa. Por padrão, o Microsoft Entra ID conecta o usuário ao seu tenant de origem quando ele insere o userid.

Para fazer login como um utilizador B2B, uma aplicação deve usar o endpoint do inquilino específico onde o utilizador é um convidado. Embora seja possível para um utilizador especificar um inquilino que deseja aceder quando uma aplicação utiliza o ponto de extremidade https://login.microsoftonline.com/organizations/v2.0, os utilizadores podem achar essa capacidade difícil de descobrir.

Próximos passos