OpenID Connect na plataforma de identidade da Microsoft

O OpenID Connect (OIDC) estende o protocolo de autorização OAuth 2.0 para uso como um protocolo de autenticação adicional. 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.

Diagrama de raia mostrando o fluxo de entrada do protocolo OpenID Connect.

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:

  1. Entre no Centro de administração do Microsoft Entra.
  2. Navegue até Identidade>Aplicativos>Registros de aplicativo><seu aplicativo>>Autenticação.
  3. Em Configurações da plataforma, selecione Adicionar uma plataforma.
  4. No painel que é aberto, selecione a plataforma apropriada para seu aplicativo. Por exemplo, selecione Web para um aplicativo Web.
  5. Em URIs de Redirecionamento, adicione o URI de redirecionamento do seu aplicativo. Por exemplo, https://localhost:8080/.
  6. 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:

  1. Selecione Identidade>Aplicativos>Registros de aplicativo><seu aplicativo>>Manifesto.
  2. Defina oauth2AllowIdTokenImplicitFlow como true 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:

  1. Navegue até Identidade>Aplicativos>Registros de aplicativo><seu aplicativo>>Pontos de extremidade.
  2. 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âmetro scope.
  • Especifique id_token no response_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 também será retornado 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 SSO silencioso, mas permitindo que o usuário escolha em qual conta ele 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 preencher previamente o campo de nome de usuário/endereço de email da página de entrada do usuário, se você 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_hintdeclaraçã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. Leia 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. SPA (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 que uma determinada intensidade de autenticação tenha ocorrido, 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:

 Protocolo OpenID Connect: aquisição de token

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 será usado para chamar o ponto de extremidade de 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 operações:

  • Redirecionar 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 no aplicativo.

Se você não executar nenhuma das operações, o usuário poderá permanecer autenticado e talvez não receba uma solicitação para entrar na próxima vez que usar seu 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_hintdeclaraçã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 SSO 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, a plataforma de identidade da Microsoft limpa a sessão do usuário do navegador. No entanto, o usuário pode ainda entrar em outros aplicativos que usam contas da Microsoft para autenticação. Para permitir que esses aplicativos desconectem o usuário simultaneamente, a plataforma de identidade da Microsoft envia uma solicitação HTTP GET ao LogoutUrl registrado de todos os aplicativos aos quais o usuário está atualmente conectado. Os aplicativos devem responder a essa solicitação, limpando as sessões que identificam o usuário e retornando uma resposta 200. Se você deseja dar suporte um logout único em seu aplicativo, deve implementar um LogoutUrl no código do aplicativo. Você pode configurar a LogoutUrl no portal de registro do aplicativo.

Próximas etapas