OpenID Connect na plataforma de identidade da Microsoft
O OIDC (OpenID Connect) estende o protocolo de autorização do OAuth 2.0 a ser usado como outro protocolo de autenticação. Você pode usar o OIDC para habilitar o SSO (logon único) entre os aplicativos habilitados para OAuth usando um token de segurança chamado token de ID.
A especificação completa do OIDC está disponível no site da OpenID Foundation em Especificação do OpenID Connect Core 1.0.
Fluxo de protocolo: entrada
O diagrama a seguir mostra o fluxo de entrada básico do OpenID Connect. As etapas no fluxo são descritas em mais detalhes nas seções posteriores do artigo.
Habilitar tokens de ID
O token de ID introduzido pelo OpenID Connect é emitido pelo servidor de autorização, a plataforma de identidade da Microsoft, quando o aplicativo cliente solicita um durante a autenticação do usuário. O token de ID permite que um aplicativo cliente verifique a identidade do usuário e obtenha outras informações (declarações) sobre eles.
Os tokens de ID não são emitidos por padrão para um aplicativo registrado com a plataforma de identidade da Microsoft. Os tokens de ID de um aplicativo são habilitados usando um dos seguintes métodos:
- Entre no Centro de administração do Microsoft Entra.
- Navegue até Identidade>Aplicativos>Registros de aplicativo><seu aplicativo>>Autenticação.
- Em Configurações da plataforma, selecione Adicionar uma plataforma.
- No painel que é aberto, selecione a plataforma apropriada para seu aplicativo. Por exemplo, selecione Web para um aplicativo Web.
- Em URIs de Redirecionamento, adicione o URI de redirecionamento do seu aplicativo. Por exemplo,
https://localhost:8080/
. - Na seção Concessão implícita e fluxos híbridos, selecione a caixa de seleção Tokens de ID (usados para fluxos implícitos e híbridos).
Ou:
- Selecione Identidade>Aplicativos>Registros de aplicativo><seu aplicativo>>Manifesto.
- Defina
oauth2AllowIdTokenImplicitFlow
comotrue
no manifesto do aplicativo do registro de aplicativo.
Se os tokens de ID não estiverem habilitados para seu aplicativo e um for solicitado, a plataforma de identidade da Microsoft retornará um erro unsupported_response
semelhante a:
O valor fornecido para o parâmetro de entrada 'response_type' não é permitido para este cliente. O valor esperado é "code".
A solicitação de um token de ID especificando um response_type
do id_token
é explicada em Enviar a solicitação de entrada posteriormente no artigo.
Buscar o documento de configuração do OpenID
Os provedores OpenID, como a plataforma de identidade da Microsoft, fornecem um Documento de configuração do provedor OpenID em um ponto de extremidade acessível ao público contendo os pontos de extremidade OIDC do provedor, declarações compatíveis e outros metadados. Os aplicativos cliente podem usar os metadados para descobrir os URLs a serem usados para autenticação e as chaves públicas de assinatura do serviço de autenticação.
As bibliotecas de autenticação são os consumidores mais comuns do documento de configuração do OpenID, que eles usam para descoberta de URLs de autenticação, chaves de assinatura pública do provedor e outros metadados de serviço. Se uma biblioteca de autenticação for usada em seu aplicativo, você provavelmente não precisará codificar manualmente as solicitações e as respostas do ponto de extremidade do documento de configuração do OpenID.
Localizar o URI do documento de configuração do OpenID do aplicativo
Cada registro de aplicativo no Microsoft Entra ID recebe um ponto de extremidade acessível publicamente que atende ao documento de configuração do OpenID. Para determinar o URI do ponto de extremidade do documento de configuração para o aplicativo, acrescente o caminho de configuração OpenID bem conhecido ao URL de autoridade do registro de aplicativo.
- Caminho do documento de configuração bem conhecido:
/.well-known/openid-configuration
- URL de autoridade:
https://login.microsoftonline.com/{tenant}/v2.0
O valor de {tenant}
varia acordo com o público-alvo de entrada do aplicativo, conforme mostrado na tabela a seguir. A URL de autoridade também varia de acordo com a instância de nuvem.
Valor | Descrição |
---|---|
common |
Os usuários com uma conta Microsoft pessoal e com uma conta corporativa ou de estudante do Microsoft Entra ID podem entrar no aplicativo. |
organizations |
Somente usuários com contas corporativas ou de estudante do Microsoft Entra ID podem entrar no aplicativo. |
consumers |
Somente os usuários com uma conta pessoal da Microsoft podem entrar no aplicativo. |
Directory (tenant) ID ou contoso.onmicrosoft.com |
Somente os usuários de um locatário específico do Microsoft Entra (membros do diretório com uma conta corporativa ou de estudante ou convidados no diretório com um conta Microsoft pessoal) podem entrar no aplicativo. O valor pode ser o nome de domínio do locatário do Microsoft Entra ou a ID do locatário no formato GUID. |
Dica
Observe que, ao usar a autoridade common
ou consumers
para contas Microsoft pessoais, o aplicativo de recurso de consumo deverá ser configurado para dar suporte a esse tipo de contas de acordo com signInAudience.
Para localizar o documento de configuração do OIDC no centro de administração do Microsoft Entra, entre no centro de administração do Microsoft Entra e, em seguida:
- Navegue até Identidade>Aplicativos>Registros de aplicativo><seu aplicativo>>Pontos de extremidade.
- Localize o URI no documento de metadados do OpenID Connect.
Solicitação de exemplo
A solicitação a seguir obtém os metadados de configuração do OpenID do ponto de extremidade do documento de configuração do OpenID da autoridade common
na nuvem pública do Azure:
GET /common/v2.0/.well-known/openid-configuration
Host: login.microsoftonline.com
Dica
Experimente! Para conferir o documento de configuração do OpenID para a autoridade common
de um aplicativo, navegue até https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration.
Resposta de exemplo
Os metadados de configuração são retornados no formato JSON, conforme mostrado no exemplo a seguir (truncado para brevidade). Os metadados retornados na resposta JSON são descritos detalhadamente na especificação de descoberta do OpenID Connect 1.0.
{
"authorization_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize",
"token_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token",
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"private_key_jwt"
],
"jwks_uri": "https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys",
"userinfo_endpoint": "https://graph.microsoft.com/oidc/userinfo",
"subject_types_supported": [
"pairwise"
],
...
}
Enviar a solicitação de conexão
Para autenticar um usuário e solicitar um token de ID para uso no aplicativo, direcione o agente de usuário para o ponto de extremidade /authorize da plataforma de identidade da Microsoft. A solicitação é semelhante ao primeiro segmento do Fluxo de código de autorização do OAuth 2.0, mas com estas diferenças:
- Inclua o escopo
openid
no parâmetroscope
. - Especifique
id_token
noresponse_type
parâmetro. - Inclua o parâmetro
nonce
.
Solicitação de entrada de exemplo (quebras de linha incluídas apenas para legibilidade):
GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=id_token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=form_post
&scope=openid
&state=12345
&nonce=678910
Parâmetro | Condição | Descrição |
---|---|---|
tenant |
Obrigatório | Você pode usar o valor {tenant} no caminho da solicitação para controlar quem pode entrar no aplicativo. Os valores permitidos são common , organizations , consumers e identificadores de locatário. Para saber mais, veja noções básicas de protocolo. Criticamente, para cenários de convidado em que você conecta um usuário de um locatário a outro locatário, você deve fornecer o identificador de locatário para que ele se conecte corretamente no locatário do recurso. |
client_id |
Obrigatório | A ID do aplicativo (cliente) que a experiência centro de administração do Microsoft Entra - Registros de aplicativo atribui ao seu aplicativo. |
response_type |
Obrigatório | Deve incluir id_token para conexão do OpenID Connect. |
redirect_uri |
Recomendadas | O URI de redirecionamento do seu aplicativo, onde as respostas de autenticação podem ser enviadas e recebidas pelo aplicativo. Ele deve coincidir exatamente com um dos URIs de redirecionamento registrados no portal, exceto que deve ser codificado em URL. Se não estiver presente, o ponto de extremidade escolherá um redirect_uri registrado aleatoriamente para enviar o usuário de volta. |
scope |
Obrigatório | Uma lista de escopos separados por espaços. Para o OpenID Connect, é necessário incluir o escopo openid , que é traduzido para a permissão Fazer seu logon na interface do usuário de consentimento. Você também pode incluir outros escopos nesta solicitação para solicitar o consentimento. |
nonce |
Obrigatório | Um valor gerado e enviado pelo aplicativo na solicitação para um token de ID. O mesmo valor nonce é incluído no token de ID retornado ao aplicativo pela plataforma de identidade da Microsoft. Para atenuar os ataques de reprodução de token, o aplicativo deve verificar se o valor nonce no token de ID é o mesmo valor enviado ao solicitá-lo. Normalmente, o valor é uma cadeia de caracteres aleatória exclusiva. |
response_mode |
Recomendadas | Especifica o método que deve ser usado para enviar o authorization_code resultante de volta ao aplicativo. Pode ser form_post ou fragment . Para aplicativos Web, é recomendável usar response_mode=form_post para garantir a transferência mais segura de tokens para seu aplicativo. |
state |
Recomendadas | Um valor incluído na solicitação que também retorna na resposta do token. Pode ser uma cadeia de caracteres de qualquer conteúdo desejado. Um valor exclusivo gerado aleatoriamente que normalmente é usado para impedir ataques de solicitação entre sites forjada. O estado também é usado para codificar as informações sobre o estado do usuário no aplicativo antes da solicitação de autenticação ocorrida, como a página ou exibição em que ele estava. |
prompt |
Opcional | Indica o tipo de interação do usuário que é necessário. Os únicos valores válidos no momento são login , none , consent e select_account . A declaração prompt=login força o usuário a digitar suas credenciais na solicitação, o que nega o logon único. O parâmetro prompt=none é o oposto e deve ser emparelhado com login_hint para indicar o usuário que deve estar conectado. Esses parâmetros garantem que o usuário não veja nenhum prompt interativo. Se a solicitação não puder ser concluída silenciosamente por meio de logon único, a plataforma de identidade da Microsoft retornará um erro. As causas incluem nenhum usuário conectado, o usuário sugerido não está conectado ou vários usuários estão conectados, mas nenhuma dica foi fornecida. A declaração prompt=consent aciona a caixa de diálogo de consentimento de OAuth depois que o usuário faz logon. A caixa de diálogo pede ao usuário para conceder permissões para o aplicativo. Por fim, select_account mostra ao usuário um seletor de conta, negando o logoff único, mas permitindo que o usuário escolha em qual conta pretende entrar, sem exigir a inserção de credenciais. Não é possível usar login_hint e select_account . |
login_hint |
Opcional | Você pode usar esse parâmetro para pré-armazenar o nome de usuário e o campo de endereço de email da página de entrada do usuário, se souber o nome de usuário com antecedência. Muitas vezes, os aplicativos usam esse parâmetro durante a reautenticação, depois de já terem extraído a login_hint declaração opcional de uma entrada anterior. |
domain_hint |
Opcional | O realm do usuário em um diretório federado. Ele ignorará o processo de descoberta baseada em email que o usuário passa na página de entrada para uma experiência de usuário um pouco mais simples. Para locatários federados por meio de um diretório local, como AD FS, isso geralmente resulta em uma entrada direta devido à sessão de logon existente. |
Nesse ponto, será solicitado que o usuário insira suas credenciais e conclua a autenticação. A plataforma de identidade da Microsoft verifica se o usuário consentiu com as permissões indicadas no parâmetro de consulta scope
. Se o usuário não tiver dado nenhuma dessas permissões, a plataforma de identidade da Microsoft solicitará que o usuário dê as permissões necessárias. Você pode ler mais sobre aplicativos multilocatários, autorização e permissões.
Depois que o usuário se autentica e dá consentimento, a plataforma de identidade da Microsoft retorna uma resposta ao aplicativo no URI de redirecionamento indicado usando o método especificado no parâmetro response_mode
.
Resposta bem-sucedida
Uma resposta bem-sucedida quando você usa response_mode=form_post
é semelhante a:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNB...&state=12345
Parâmetro | Descrição |
---|---|
id_token |
O token de ID que o aplicativo solicitou. Você pode usar o parâmetro id_token para verificar a identidade do usuário e iniciar uma sessão com o usuário. Para obter mais informações sobre tokens de identificação e seus conteúdos, consulte a referência do token de ID. |
state |
Se um parâmetro state for incluído na solicitação, o mesmo valor deverá aparecer na resposta. O aplicativo deve verificar se os valores de estado na solicitação e na resposta são idênticos. |
Resposta de erro
As respostas de erros também podem ser enviadas para o URI de redirecionamento para que o aplicativo possa lidar com elas, por exemplo:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
error=access_denied&error_description=the+user+canceled+the+authentication
Parâmetro | Descrição |
---|---|
error |
Uma cadeia de caracteres de códigos de erro que você pode usar para classificar tipos de erro que ocorrem e para responder aos erros. |
error_description |
Uma mensagem de erro específica que pode ajudar você a identificar a causa raiz de um erro de autenticação. |
Códigos de erro para erros de ponto de extremidade de autorização
A tabela a seguir descreve os códigos de erro que podem ser retornados no parâmetro error
da resposta de erro:
Código do erro | Descrição | Ação do cliente |
---|---|---|
invalid_request |
Erro de protocolo, como um parâmetro obrigatório ausente. | Corrija e reenvie a solicitação. Esse erro de desenvolvimento deve ser capturado durante o teste de aplicativo. |
unauthorized_client |
O aplicativo cliente não pode solicitar um código de autorização. | Isso geralmente ocorre quando o aplicativo cliente não está registrado no Microsoft Entra ID ou não é adicionado ao locatário do Microsoft Entra do usuário. O aplicativo pode solicitar que o usuário instale o aplicativo e o adicione ao Microsoft Entra ID. |
access_denied |
O consentimento negado pelo proprietário do recurso. | O aplicativo cliente pode notificar o usuário de que não pode continuar, a menos que o usuário consinta. |
unsupported_response_type |
O servidor de autorização não dá suporte ao tipo de resposta na solicitação. | Corrija e reenvie a solicitação. Esse erro de desenvolvimento deve ser capturado durante o teste de aplicativo. |
server_error |
O servidor encontrou um erro inesperado. | Tente novamente a solicitação. Esses erros podem resultar de condições temporárias. O aplicativo cliente pode explicar para o usuário que sua resposta está atrasada devido a um erro temporário. |
temporarily_unavailable |
O servidor está temporariamente muito ocupado para tratar da solicitação. | Tente novamente a solicitação. O aplicativo cliente pode explicar para o usuário que sua resposta está atrasada devido a uma condição temporária. |
invalid_resource |
O recurso de destino é inválido porque ele não existe, o Microsoft Entra ID não consegue encontrá-lo ou ele não está configurado corretamente. | Esse erro indica que o recurso, se existir, não foi configurado no locatário. O aplicativo pode solicitar que o usuário instale o aplicativo e o adicione ao Microsoft Entra ID. |
Validar o token de ID
Receber um token de ID no aplicativo nem sempre é suficiente para autenticar totalmente o usuário. Talvez também seja necessário validar a assinatura do token de ID e verificar as declarações de acordo com os requisitos do aplicativo. Assim como todos os provedores OpenID, os tokens de ID da plataforma de identidade da Microsoft são JWTs (Tokens Web JSON) assinados usando criptografia por chave pública.
Os aplicativos Web e as APIs Web que usam tokens de ID para autorização devem validá-los porque esses aplicativos obtêm acesso aos dados. No entanto, outros tipos de aplicativo podem não se beneficiar da validação do token de ID. SPAs (aplicativos de página única) e aplicativos nativos, por exemplo, raramente se beneficiam da validação do token de ID, pois qualquer entidade com acesso físico ao dispositivo ou navegador pode ignorar a validação.
Dois exemplos de bypass de validação de token são:
- Fornecer tokens ou chaves falsos modificando o tráfego de rede para o dispositivo
- Depurar o aplicativo e substituir a lógica de validação durante a execução do programa.
Se você validar tokens de ID no aplicativo, recomendamos não fazê-lo manualmente. Em vez disso, use uma biblioteca de validação de token para analisar e validar tokens. As bibliotecas de validação de token estão disponíveis para a maioria dos idiomas, estruturas e plataformas de desenvolvimento.
O que validar em um token de ID
Além de validar a assinatura do token de ID, você deve validar diversas de suas declarações, conforme descrito em Validação de um token de ID. Confira também Informações importantes sobre como assinar a distribuição de chaves.
Várias outras validações são comuns e variam de acordo com o cenário do aplicativo, incluindo:
- Garantir que o usuário/organização tenha assinado para usar o aplicativo.
- Garantir que o usuário tenha autorização/privilégios adequados.
- Garantir uma certa força de autenticação ocorreu, como autenticação multifator.
Depois de validar o token de ID, você pode iniciar uma sessão com o usuário e usar as informações nas declarações do token para personalização do aplicativo, exibição ou armazenamento de dados.
Diagrama de protocolo: aquisição de token de acesso
Muitos aplicativos precisam não apenas entrar em um usuário, mas também acessar um recurso protegido, como uma API Web em nome do usuário. Esse cenário combina o OpenID Connect com o objetivo de obter um token de ID para autenticar o usuário e o OAuth 2.0 para obter um token de acesso para um recurso protegido.
O fluxo completo de entrada e aquisição de token do OpenID Connect é semelhante a este diagrama:
Obter um token de acesso para o ponto de extremidade de UserInfo
Além do token de ID, as informações do usuário autenticado também são disponibilizadas no ponto de extremidade de UserInfo do OIDC.
Para obter um token de acesso para o ponto de extremidade de UserInfo do OIDC, modifique a solicitação de entrada conforme descrito aqui:
// Line breaks are for legibility only.
GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444 // Your app registration's Application (client) ID
&response_type=id_token%20token // Requests both an ID token and access token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F // Your application's redirect URI (URL-encoded)
&response_mode=form_post // 'form_post' or 'fragment'
&scope=openid+profile+email // 'openid' is required; 'profile' and 'email' provide information in the UserInfo endpoint as they do in an ID token.
&state=12345 // Any value - provided by your app
&nonce=678910 // Any value - provided by your app
Você pode usar o fluxo do código de autorização, o fluxo de código do dispositivo ou um token de atualização no lugar do response_type=token
para obter um token de acesso para o aplicativo.
Resposta de token bem-sucedida
Uma resposta bem-sucedida usando response_mode=form_post
:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
access_token=eyJ0eXAiOiJKV1QiLCJub25jZSI6I....
&token_type=Bearer
&expires_in=3598
&scope=email+openid+profile
&id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI....
&state=12345
Os parâmetros de resposta significam a mesma coisa, independentemente do fluxo usado para adquiri-los.
Parâmetro | Descrição |
---|---|
access_token |
O token que é usado para chamar o ponto de extremidade UserInfo. |
token_type |
Sempre "Portador" |
expires_in |
O tempo até o token de acesso expirar, em segundos. |
scope |
As permissões concedidas no token de acesso. Como o ponto de extremidade de UserInfo está hospedado no Microsoft Graph, é possível que scope contenha outros anteriormente concedidos ao aplicativo (por exemplo, User.Read ). |
id_token |
O token de ID que o aplicativo solicitou. Você pode usar o token de ID para verificar a identidade do usuário e iniciar uma sessão com o usuário. Você encontrará mais detalhes sobre tokens de ID e seu conteúdo na referência do token de ID. |
state |
Se um parâmetro de estado for incluído na solicitação, o mesmo valor deverá aparecer na resposta. O aplicativo deve verificar se os valores de estado na solicitação e na resposta são idênticos. |
Aviso
Não tente validar nem ler tokens de APIs que não sejam suas em seu código, incluindo os tokens deste exemplo. Os tokens de serviços da Microsoft podem usar um formato especial que não será validado como um JWT e também podem ser criptografados para usuários do consumidor (conta Microsoft). Embora a leitura de tokens seja uma ferramenta útil de depuração e aprendizagem, não assuma dependências disso em seu código ou assuma informações específicas sobre tokens que não são de uma API que você controla.
Resposta de erro
As respostas de erro também podem ser enviadas ao URI de redirecionamento para que o aplicativo possa tratá-las adequadamente:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
error=access_denied&error_description=the+user+canceled+the+authentication
Parâmetro | Descrição |
---|---|
error |
Uma cadeia de caracteres de códigos de erro que você pode usar para classificar tipos de erro que ocorrem e para responder aos erros. |
error_description |
Uma mensagem de erro específica que pode ajudar você a identificar a causa raiz de um erro de autenticação. |
Para obter uma descrição dos possíveis códigos de erro e as respostas recomendadas do cliente, veja Códigos de erro para erros de ponto de extremidade de autorização.
Quando você tiver um código de autorização e um token de ID, poderá conectar o usuário e obter tokens de acesso em seu nome. Para conectar o usuário, você deve validar o token de ID, conforme descrito em validar tokens. Para obter tokens de acesso, siga as etapas descritas na documentação do fluxo de código OAuth.
Chamar o ponto de extremidade UserInfo
Revise a documentação de UserInfo para ver como chamar o ponto de extremidade de UserInfo com esse token.
Enviar uma solicitação de saída
Para desconectar um usuário, execute ambas as seguintes operações:
- Redirecione o agente de usuário do usuário para o URI de logoff da plataforma de identidade da Microsoft.
- Limpe os cookies do aplicativo ou encerre a sessão do usuário em seu aplicativo.
Se você não executar nenhuma dessas operações, o usuário poderá permanecer autenticado e não será solicitado a entrar na próxima vez que usar o aplicativo.
Redirecione o usuário-agente para end_session_endpoint
conforme mostrado no documento de configuração do OpenID Connect. O end_session_endpoint
é compatível com solicitações HTTP GET e POST.
GET https://login.microsoftonline.com/common/oauth2/v2.0/logout?
post_logout_redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
Parâmetro | Condição | Descrição |
---|---|---|
post_logout_redirect_uri |
Recomendadas | A URL para a qual o usuário é redirecionado após o logout bem-sucedido. Se o parâmetro não for incluído, o usuário receberá uma mensagem genérica gerada pela plataforma de identidade da Microsoft. Esta URL deve corresponder exatamente a um redirecionamento de URIs registrado para seu aplicativo no portal de registro de aplicativo. |
logout_hint |
Opcional | Permite se desconectar sem solicitar que o usuário selecione uma conta. Para usar logout_hint , habilite a login_hint declaração opcional no aplicativo cliente e use o valor da declaração opcional login_hint como o parâmetro logout_hint . Não use UPNs ou números de telefone como o valor do parâmetro logout_hint . |
Observação
Após a saída bem-sucedida, as sessões ativas serão definidas como inativas. Se um PRT (token de atualização primária) válido existir para o usuário desconectado e uma nova entrada for executada, o logoff único será interrompido e o usuário verá um prompt com um seletor de conta. Se a opção selecionada for a conta conectada que se refere ao PRT, a entrada ocorrerá automaticamente sem a necessidade de inserir novas credenciais.
Logout único
Quando você redireciona o usuário para o end_session_endpoint
em um aplicativo, a plataforma de identidade da Microsoft encerra a sessão do usuário para esse aplicativo. No entanto, o usuário pode ainda entrar em outros aplicativos que usam contas da Microsoft para autenticação.
Quando um usuário entra em vários aplicativos Web ou SPA registrados neste diretório (também chamado de locatário), o logout único permite que esse usuário saia de todos os aplicativos instantaneamente ao sair em qualquer um dos aplicativos.
Para habilitar o logoff único para seu aplicativo Entra, você deve usar o recurso de logout do canal frontal do OpenID Connect. Esse recurso permite que um aplicativo notifique outros aplicativos de que o usuário fez logoff. Quando o usuário faz logoff de um aplicativo, a plataforma de identidade da Microsoft envia uma solicitação HTTP GET para a URL de logoff de front-channel de cada aplicativo no qual o usuário está conectado no momento.
Esses aplicativos devem responder a essa solicitação executando as duas ações a seguir para que o logoff único seja bem-sucedido:
- Limpar qualquer sessão que identifique o usuário.
- Os aplicativos devem responder a essa solicitação, limpando as sessões que identificam o usuário e retornando uma resposta
200
.
O que é uma URL de logoff do front channel?
Um URL de logoff do front channel é onde seu aplicativo Web ou SPA recebe a solicitação de saída do servidor de autenticação do Entra e executa a funcionalidade de logoff único. Cada aplicativo tem uma URL de logoff do front channel.
Quando você deve definir uma URL de logoff do front channel?
Se você ou seu desenvolvedor determinou que o logoff único é necessário para um aplicativo, você deve definir o URL de logoff do front-channel para o registro desse aplicativo. Depois que a URL de logoff do front channel é definida para o registro do aplicativo desse aplicativo, a plataforma de identidade da Microsoft envia uma solicitação HTTP GET para a URL de logoff de front-channel desse aplicativo quando o usuário conectado sai de outro aplicativo.
Como configurar o logoff único usando o recurso de logoff do front channel
Para usar o recurso de logoff do front channel para um conjunto de aplicativos, você deve concluir as duas tarefas a seguir:
- Defina a URL de logoff do front channel no centro de administração do Microsoft Entra para todos os aplicativos que devem ser desconectados simultaneamente. Cada aplicativo normalmente tem sua própria URL de logoff do front channel dedicada.
- Edite o código dos aplicativos para que eles ouçam uma solicitação HTTP GET enviada pela plataforma de identidade da Microsoft para a URL de logoff do front channel e respondam a essa solicitação limpando qualquer sessão que identifique o usuário e retornando uma resposta 200.
Como escolher um URL de logoff do front channel
A URL de logoff do front channel deve ser uma URL capaz de receber e responder a solicitações HTTP GET e deve ser capaz de limpar qualquer sessão que identifique o usuário. Exemplos de uma URL de logoff do front channel podem ser, mas não estão limitados a, os seguintes:
Próximas etapas
- Examine a documentação do ponto de extremidade de UserInfo.
- Preencha valores de declaração em um token com os dados de sistemas locais.
- Inclua as próprias declarações em tokens.