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 logon único (SSO) entre seus aplicativos habilitados para OAuth usando um token de segurança chamado token de ID.

A especificação completa para OIDC está disponível no site da OpenID Foundation em OpenID Connect Core 1.0 especificação.

Fluxo de protocolo: Entrada

O diagrama a seguir mostra o fluxo básico de entrada do OpenID Connect. As etapas no fluxo são descritas com mais detalhes nas seções posteriores do artigo.

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

Ativar 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 ele.

Os tokens de ID não são emitidos por padrão para um aplicativo registrado na plataforma de identidade da Microsoft. Os tokens de ID para um aplicativo são habilitados usando um dos seguintes métodos:

  1. Inicie sessão no centro de administração do Microsoft Entra.
  2. Navegue até Aplicativos de identidade>>O aplicativo registra><sua autenticação de aplicativo.>>
  3. Em Configurações da plataforma, selecione Adicionar uma plataforma.
  4. No painel que se abre, selecione a plataforma apropriada para o seu aplicativo. Por exemplo, selecione Web para um aplicativo Web.
  5. Em Redirecionar URIs, adicione o URI de redirecionamento do seu aplicativo. Por exemplo, https://localhost:8080/.
  6. Em Concessão implícita e fluxos híbridos, marque a caixa de seleção Tokens de ID (usados para fluxos implícitos e híbridos).

Ou:

  1. Selecione Identity>Applications>App registra seu manifesto<> de aplicativo.>>
  2. Defina oauth2AllowIdTokenImplicitFlow como true no manifesto do aplicativo de registro do 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 unsupported_response erro semelhante a:

O valor fornecido para o parâmetro de entrada 'response_type' não é permitido para este cliente. O valor esperado é 'código'.

Solicitar um token de ID especificando um response_type de é explicado em Enviar a solicitação de id_token entrada mais adiante 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 publicamente contendo os pontos de extremidade OIDC do provedor, declarações suportadas e outros metadados. Os aplicativos cliente podem usar os metadados para descobrir as URLs a serem usadas para autenticação e as chaves de assinatura públicas do serviço de autenticação.

As bibliotecas de autenticação são os consumidores mais comuns do documento de configuração OpenID, que eles usam para descobrir URLs de autenticação, chaves de assinatura públicas 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 solicitações e respostas do ponto de extremidade do documento de configuração OpenID.

Encontre o URI do documento de configuração OpenID do seu aplicativo

Cada registro de aplicativo no Microsoft Entra ID é fornecido um ponto de extremidade acessível publicamente que serve seu documento de configuração OpenID. Para determinar o URI do ponto de extremidade do documento de configuração para seu aplicativo, acrescente o caminho de configuração OpenID conhecido à URL de autoridade do registro do aplicativo.

  • Caminho do documento de configuração bem conhecido: /.well-known/openid-configuration
  • URL da autoridade: https://login.microsoftonline.com/{tenant}/v2.0

O valor de varia com base no público de entrada do {tenant} aplicativo, conforme mostrado na tabela a seguir. O URL da autoridade também varia de acordo com a instância da nuvem.

valor Description
common Os utilizadores com uma conta Microsoft pessoal e uma conta escolar ou profissional do Microsoft Entra ID podem iniciar sessão na aplicação.
organizations Somente usuários com contas corporativas ou de estudante do Microsoft Entra ID podem entrar no aplicativo.
consumers Apenas os utilizadores com uma conta Microsoft pessoal podem iniciar sessão na aplicação.
Directory (tenant) ID ou contoso.onmicrosoft.com Somente usuários de um locatário específico do Microsoft Entra (membros do diretório com uma conta corporativa ou de estudante ou convidados do diretório com uma conta pessoal da Microsoft) 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.

Gorjeta

Observe que, ao usar a common autoridade ou consumers para contas pessoais da Microsoft, o aplicativo de recursos de consumo deve ser configurado para oferecer 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, inicie sessão no centro de administração do Microsoft Entra e, em seguida:

  1. Navegue até Identity>Applications>App registra><seus endpoints de aplicativo.>>
  2. Localize o URI em Documento de metadados do OpenID Connect.

Pedido de amostra

A solicitação a seguir obtém os metadados de configuração do OpenID do ponto de extremidade do documento de common configuração OpenID da autoridade na nuvem pública do Azure:

GET /common/v2.0/.well-known/openid-configuration
Host: login.microsoftonline.com

Gorjeta

Experimente! Para ver o documento de configuração do OpenID para a autoridade de common um aplicativo, navegue até https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration.

Resposta da amostra

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 em detalhes 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 o pedido de início de sessão

Para autenticar um usuário e solicitar um token de ID para uso em seu aplicativo, direcione seu agente de usuário para o ponto de extremidade /authorize da plataforma de identidade da Microsoft. A solicitação é semelhante à primeira etapa do fluxo do código de autorização OAuth 2.0, mas com estas distinções:

  • Inclua o openid escopo no scope parâmetro.
  • Especifique id_token no response_type parâmetro.
  • Inclua o nonce parâmetro.

Exemplo de pedido de início de sessão (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 Description
tenant Obrigatório Você pode usar o {tenant} valor no caminho da solicitação para controlar quem pode entrar no aplicativo. Os valores permitidos são common, organizations, consumerse identificadores de locatário. Para obter mais informações, consulte Noções básicas de protocolo. Essencialmente, para cenários de convidado em que você assina um usuário de um locatário para outro locatário, você deve fornecer o identificador de locatário para conectá-los corretamente ao locatário de recurso.
client_id Necessário A ID do Aplicativo (cliente) que o Centro de administração do Microsoft Entra – Registros de aplicativo experiência atribuída ao seu aplicativo.
response_type Necessário Deve incluir id_token para login no OpenID Connect.
redirect_uri Recomendado O URI de redirecionamento do seu aplicativo, onde as respostas de autenticação podem ser enviadas e recebidas pelo seu aplicativo. Ele deve corresponder exatamente a um dos URIs de redirecionamento que você registrou no portal, exceto que ele deve ser codificado por URL. Se não estiver presente, o endpoint escolherá um registrado redirect_uri aleatoriamente para enviar o usuário de volta.
scope Necessário Uma lista de escopos separados por espaços. Para o OpenID Connect, ele deve incluir o escopo openid, que se traduz na permissão Entrar na interface do usuário de consentimento. Você também pode incluir outros escopos nesta solicitação para solicitar consentimento.
nonce Necessário Um valor gerado e enviado pelo seu aplicativo em sua solicitação de um token de ID. O mesmo nonce valor é incluído no token de ID retornado ao seu aplicativo pela plataforma de identidade da Microsoft. Para atenuar os ataques de repetição de token, seu aplicativo deve verificar se o nonce valor no token de ID é o mesmo valor enviado ao solicitar o token. O valor é normalmente uma cadeia de caracteres aleatória exclusiva.
response_mode Recomendado Especifica o método que deve ser usado para enviar o código de autorização resultante de volta para seu aplicativo. Pode ser form_post ou fragment. Para aplicações Web, recomendamos o uso response_mode=form_postdo , para garantir a transferência mais segura de tokens para seu aplicativo.
state Recomendado Um valor incluído na solicitação que também será retornado na resposta do token. Pode ser uma sequência de qualquer conteúdo que você quiser. Um valor exclusivo gerado aleatoriamente normalmente é usado para evitar ataques de falsificação de solicitação entre sites. O estado também é usado para codificar informações sobre o estado do usuário no aplicativo antes da solicitação de autenticação ocorrer, como a página ou exibição em que o usuário estava.
prompt Opcional Indica o tipo de interação do usuário necessária. Os únicos valores válidos neste momento são login, none, consent, e select_account. A prompt=login declaração força o usuário a inserir suas credenciais nessa solicitação, o que nega o logon único. O prompt=none parâmetro é o oposto e deve ser emparelhado com um login_hint para indicar qual usuário deve estar conectado. Esses parâmetros garantem que o usuário não receba nenhum prompt interativo. Se a solicitação não puder ser concluída silenciosamente por meio do 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 prompt=consent declaração aciona a caixa de diálogo de consentimento OAuth depois que o usuário faz login. A caixa de diálogo solicita que o usuário conceda permissões ao aplicativo. Finalmente, select_account mostra ao usuário um seletor de conta, negando o SSO silencioso, mas permitindo que o usuário escolha com qual conta pretende entrar, sem exigir a entrada de credenciais. Você não pode usar ambos login_hint e select_account.
login_hint Opcional Você pode usar esse parâmetro para preencher previamente o campo de nome de usuário e endereço de e-mail 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á extrair a login_hintdeclaração opcional de uma entrada anterior.
domain_hint Opcional O reino do usuário em um diretório federado. Isso ignora o processo de descoberta baseado em email pelo qual o usuário passa na página de entrada, para uma experiência de usuário um pouco mais simplificada. Para locatários federados por meio de um diretório local, como o AD FS, isso geralmente resulta em uma entrada contínua devido à sessão de logon existente.

Neste ponto, o usuário é solicitado a inserir suas credenciais e concluir a autenticação. A plataforma de identidade da Microsoft verifica se o usuário consentiu com as permissões indicadas no scope parâmetro de consulta. Se o usuário não tiver consentido com nenhuma dessas permissões, a plataforma de identidade da Microsoft solicitará que o usuário consinta com as permissões necessárias. Você pode ler mais sobre permissões, consentimento e aplicativos multilocatário.

Depois que o usuário autentica e concede consentimento, a plataforma de identidade da Microsoft retorna uma resposta ao seu aplicativo no URI de redirecionamento indicado usando o método especificado no response_mode parâmetro.

Resposta com êxito

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 Description
id_token O token de ID que o aplicativo solicitou. Você pode usar o id_token parâmetro para verificar a identidade do usuário e iniciar uma sessão com o usuário. Para obter mais informações sobre tokens de ID e seu conteúdo, consulte a referência de token de ID.
state Se um state parâmetro 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 erro também podem ser enviadas para o URI de redirecionamento para que o aplicativo possa manipulá-las, 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 Description
error Uma cadeia de caracteres de código de erro que você pode usar para classificar tipos de erros que ocorrem e para reagir a erros.
error_description Uma mensagem de erro específica que pode ajudá-lo 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 error códigos de erro que podem ser retornados no parâmetro da resposta de erro:

Código de erro Description Ação do cliente
invalid_request Erro de protocolo como um parâmetro necessário ausente. Corrija e reenvie a solicitação. Esse erro de desenvolvimento deve ser detetado durante o teste do aplicativo.
unauthorized_client O aplicativo cliente não pode solicitar um código de autorização. Este erro pode ocorrer quando o aplicativo cliente não está registrado na ID do Microsoft Entra ou não é adicionado ao locatário do Microsoft Entra do usuário. O aplicativo pode solicitar ao usuário instruções para instalar o aplicativo e adicioná-lo ao Microsoft Entra ID.
access_denied O proprietário do recurso negou o consentimento. 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 suporta o tipo de resposta na solicitação. Corrija e reenvie a solicitação. Esse erro de desenvolvimento deve ser detetado durante o teste do aplicativo.
server_error O servidor encontrou um erro inesperado. Repita o pedido. Estes erros podem resultar de condições temporárias. O aplicativo cliente pode explicar ao usuário que sua resposta está atrasada devido a um erro temporário.
temporarily_unavailable O servidor está temporariamente muito ocupado para lidar com a solicitação. Repita o pedido. O aplicativo cliente pode explicar ao usuário que sua resposta está atrasada devido a uma condição temporária.
invalid_resource O recurso de destino é inválido porque não existe, o ID do Microsoft Entra não consegue encontrá-lo ou está configurado incorretamente. Esse erro indica que o recurso, se existir, não foi configurado no locatário. O aplicativo pode solicitar ao usuário instruções para instalar o aplicativo e adicioná-lo ao Microsoft Entra ID.

Validar o token de ID

Receber um token de ID em seu aplicativo nem sempre é suficiente para autenticar totalmente o usuário. Também pode ser necessário validar a assinatura do token de ID e verificar suas declarações de acordo com os requisitos do seu aplicativo. Como todos os provedores OpenID, os tokens de ID da plataforma de identidade da Microsoft são JSON Web Tokens (JWTs) assinados usando criptografia de chave pública.

Aplicativos Web e APIs da Web que usam tokens de ID para autorização devem validá-los porque esses aplicativos têm acesso aos dados. No entanto, outros tipos de aplicativo podem não se beneficiar da validação do token de ID. Aplicativos nativos e de página única (SPAs), por exemplo, raramente se beneficiam da validação de token de ID porque qualquer entidade com acesso físico ao dispositivo ou navegador pode potencialmente 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 passar por cima da lógica de validação durante a execução do programa.

Se você validar tokens de ID em seu 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 das linguagens de desenvolvimento, estruturas e plataformas.

O que validar em um token de ID

Além de validar a assinatura do token de ID, você deve validar várias de suas declarações, conforme descrito em Validando um token de ID. Consulte também Informações importantes sobre como assinar a substituiçã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 se inscreveu no aplicativo.
  • Garantir que o usuário tenha autorização/privilégios adequados
  • Garantir que ocorreu uma certa força de autenticação, como a 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, exibição ou armazenamento de dados do aplicativo.

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 da Web, em nome do usuário. Este cenário combina o OpenID Connect para 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 tokens do OpenID Connect é semelhante a este diagrama:

Protocolo OpenID Connect: Aquisição de tokens

Obter um token de acesso para o ponto de extremidade UserInfo

Além do token de ID, as informações do usuário autenticado também são disponibilizadas no ponto de extremidade UserInfo do OIDC.

Para obter um token de acesso para o ponto de extremidade OIDC UserInfo, 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 de código de autorização, o fluxo de código de dispositivo ou um token de atualização no lugar de para obter um token de response_type=token acesso para seu aplicativo.

Resposta de token bem-sucedida

Uma resposta bem-sucedida do uso response_mode=form_postde :

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 Description
access_token O token que será usado para chamar o ponto de extremidade UserInfo.
token_type Sempre "Portador"
expires_in Quanto tempo até o token de acesso expirar, em segundos.
scope As permissões concedidas no token de acesso. Como o ponto de extremidade UserInfo está hospedado no Microsoft Graph, é possível scope conter outros concedidos anteriormente 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 de 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 ou ler tokens para qualquer API que você não possua, incluindo os tokens neste exemplo, em seu código. Os tokens para 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 consumidores (conta da Microsoft). Embora a leitura de tokens seja uma ferramenta útil de depuração e aprendizagem, não dependa disso em seu código ou assuma especificidades sobre tokens que não são para uma API que você controla.

Resposta de erro

As respostas de erro também podem ser enviadas para o URI de redirecionamento para que o aplicativo possa manipulá-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 Description
error Uma cadeia de caracteres de código de erro que você pode usar para classificar tipos de erros que ocorrem e para reagir a erros.
error_description Uma mensagem de erro específica que pode ajudá-lo a identificar a causa raiz de um erro de autenticação.

Para obter uma descrição de possíveis códigos de erro e respostas recomendadas do cliente, consulte Códigos de erro para erros de ponto de extremidade de autorização.

Quando você tem um código de autorização e um token de ID, você pode entrar no usuário e obter tokens de acesso em seu nome. Para entrar o usuário, você deve validar o token de ID conforme descrito nos tokens de validação. Para obter tokens de acesso, siga as etapas descritas na documentação de fluxo de código OAuth.

Chamando o ponto de extremidade UserInfo

Revise a documentação do UserInfo para ver como chamar o ponto de extremidade UserInfo com esse token.

Enviar uma solicitação de saída

Para sair de um usuário, execute estas duas operações:

  • Redirecionar o agente do usuário para o URI de logout da plataforma de identidade da Microsoft
  • Limpe os cookies do seu aplicativo ou encerre a sessão do usuário em seu aplicativo.

Se você não conseguir executar qualquer uma das operações, o usuário poderá permanecer autenticado e não ser solicitado a entrar na próxima vez que usar seu aplicativo.

Redirecione o user-agent para o end_session_endpoint conforme mostrado no documento de configuração do OpenID Connect. O end_session_endpoint suporta 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 Description
post_logout_redirect_uri Recomendadas A URL para a qual o usuário é redirecionado depois de sair com êxito. Se o parâmetro não estiver incluído, será mostrada ao usuário uma mensagem genérica gerada pela plataforma de identidade da Microsoft. Esse URL deve corresponder a um dos URIs de redirecionamento registrados para seu aplicativo no portal de registro do aplicativo.
logout_hint Opcional Permite que a saída ocorra sem solicitar que o usuário selecione uma conta. Para usar logout_hinto , habilite alogin_hint declaração opcional em seu aplicativo cliente e use o login_hint valor da declaração opcional como parâmetrologout_hint. Não use UPNs ou números de telefone como o valor do logout_hint parâmetro.

Nota

Após a saída bem-sucedida, as sessões ativas serão definidas como inativas. Se existir um PRT (Token de Atualização Primária) válido para o usuário desconectado e um novo login for executado, 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, o login prosseguirá automaticamente sem a necessidade de inserir novas credenciais.

Fim de sessão ú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 ainda pode estar conectado a outros aplicativos que usam contas da Microsoft para autenticação. Para permitir que esses aplicativos saiam do usuário simultaneamente, a plataforma de identidade da Microsoft envia uma solicitação HTTP GET para o registrado LogoutUrl de todos os aplicativos nos quais o usuário está conectado no momento. Os aplicativos devem responder a essa solicitação limpando qualquer sessão que identifique o usuário e retornando uma 200 resposta. Se você deseja oferecer suporte à saída única em seu aplicativo, você deve implementá-lo LogoutUrl no código do seu aplicativo. Você pode definir o LogoutUrl a partir do portal de registro do aplicativo.

Próximos passos