Plataforma de identidade da Microsoft e fluxo de concessão implícitaMicrosoft identity platform and Implicit grant flow

Aplica-se a:Applies to:
  • ponto de extremidade da plataforma de identidade da MicrosoftMicrosoft identity platform endpoint

Com o ponto de extremidade da plataforma Microsoft Identity, você pode conectar os usuários em seus aplicativos de página única com contas pessoais e corporativas ou de estudante da Microsoft.With the Microsoft identity platform endpoint, you can sign users into your single-page apps with both personal and work or school accounts from Microsoft. Aplicativos de página única e outros aplicativos JavaScript executados principalmente em um navegador enfrentam desafios interessantes quando o assunto é autenticação:Single-page and other JavaScript apps that run primarily in a browser face a few interesting challenges when it comes to authentication:

  • As características de segurança desses aplicativos são consideravelmente diferentes dos aplicativos Web tradicionais baseados em servidor.The security characteristics of these apps are significantly different from traditional server-based web applications.
  • Muitos servidores de autorização e provedores de identidade não são compatíveis com solicitações CORS.Many authorization servers and identity providers do not support CORS requests.
  • Redirecionamentos para fora do aplicativo em páginas inteiras do navegador se tornam algo particularmente invasivo para a experiência do usuário.Full page browser redirects away from the app become particularly invasive to the user experience.

Para esses aplicativos (AngularJS, Ember. js, reajam. js e assim por diante), a plataforma de identidade da Microsoft dá suporte ao fluxo de concessão implícita do OAuth 2,0.For these applications (AngularJS, Ember.js, React.js, and so on), Microsoft identity platform supports the OAuth 2.0 Implicit Grant flow. O fluxo está descrito na Especificação do OAuth 2.0.The implicit flow is described in the OAuth 2.0 Specification. Seu principal benefício é que ele permite que o aplicativo obtenha tokens da plataforma de identidade da Microsoft sem executar uma troca de credenciais de servidor de back-end.Its primary benefit is that it allows the app to get tokens from Microsoft identity platform without performing a backend server credential exchange. Isso permite que o aplicativo autentique o usuário, mantenha a sessão e obtenha tokens para outras APIs da Web, tudo dentro do código JavaScript do cliente.This allows the app to sign in the user, maintain session, and get tokens to other web APIs all within the client JavaScript code. Há algumas considerações de segurança importantes que você deve levar em conta ao usar o fluxo implícito, especificamente sobre cliente e representação de usuário.There are a few important security considerations to take into account when using the implicit flow specifically around client and user impersonation.

Se você quiser usar o fluxo implícito e a plataforma de identidade da Microsoft para adicionar autenticação ao seu aplicativo JavaScript, recomendamos que você use a biblioteca JavaScript de software livre, MSAL. js.If you want to use the implicit flow and Microsoft identity platform to add authentication to your JavaScript app, we recommend you use the open-source JavaScript library, msal.js.

No entanto, se você preferir não usar uma biblioteca em seu aplicativo de página única e enviar mensagens de protocolo por conta própria, siga as etapas gerais a seguir.However, if you prefer not to use a library in your single-page app and send protocol messages yourself, follow the general steps below.

Observação

Nem todos os cenários e recursos do Azure Active Directory (AD do Azure) são suportados pelo ponto de extremidade da plataforma de identidade da Microsoft.Not all Azure Active Directory (Azure AD) scenarios and features are supported by the Microsoft identity platform endpoint. Para determinar se você deve usar o ponto de extremidade da plataforma de identidade da Microsoft, leia sobre as limitações da plataforma de identidade da Microsoft.To determine if you should use the Microsoft identity platform endpoint, read about Microsoft identity platform limitations.

Diagrama de protocoloProtocol diagram

O diagrama a seguir mostra a aparência de todo fluxo de entrada implícita e as seções a seguir descrevem cada etapa em mais detalhes.The following diagram shows what the entire implicit sign-in flow looks like and the sections that follow describe each step in more detail.

Diagrama mostrando o fluxo de entrada implícito

Enviar a solicitação de conexãoSend the sign-in request

Para conectar inicialmente o usuário em seu aplicativo, você pode enviar uma solicitação de autenticação do OpenID Connect e obter um id_token do ponto de extremidade da plataforma Microsoft Identity.To initially sign the user into your app, you can send an OpenID Connect authentication request and get an id_token from the Microsoft identity platform endpoint.

Importante

Para solicitar um token de ID e/ou um token de acesso com êxito, o registro do aplicativo na página de portal do Azure registros de aplicativo deve ter o fluxo de concessão implícito correspondente habilitado, selecionando tokens de ID e tokens de acesso em a seção de concessão implícita .To successfully request an ID token and/or an access token, the app registration in the Azure portal - App registrations page must have the corresponding implicit grant flow enabled, by selecting ID tokens and.or access tokens under the Implicit grant section. Se não estiver habilitado, um erro de unsupported_response será retornado: o valor fornecido para o parâmetro de entrada ' response_type ' não é permitido para este cliente. O valor esperado é ' code 'If it's not enabled, an unsupported_response error will be returned: The provided value for the input parameter 'response_type' is not allowed for this client. Expected value is 'code'

// Line breaks for legibility only

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=id_token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&scope=openid
&response_mode=fragment
&state=12345
&nonce=678910

Dica

Para testar a entrada usando o fluxo implícito, clique em https://login.microsoftonline.com/common/oauth2/v2.0/authorize... Depois de entrar, seu navegador deve ser redirecionado para https://localhost/myapp/ com um id_token na barra de endereços.To test signing in using the implicit flow, click https://login.microsoftonline.com/common/oauth2/v2.0/authorize... After signing in, your browser should be redirected to https://localhost/myapp/ with an id_token in the address bar.

ParâmetroParameter DESCRIÇÃODescription
tenant obrigatóriorequired O valor {tenant} no caminho da solicitação pode ser usado para controlar quem pode entrar no aplicativo.The {tenant} value in the path of the request can be used to control who can sign into the application. Os valores permitidos são common, organizations, consumers e identificadores de locatário.The allowed values are common, organizations, consumers, and tenant identifiers. Para obter mais detalhes, consulte noções básicas de protocolo.For more detail, see protocol basics.
client_id obrigatóriorequired A ID do aplicativo (cliente) que a página de portal do Azure registros de aplicativo atribuída ao seu aplicativo.The Application (client) ID that the Azure portal - App registrations page assigned to your app.
response_type obrigatóriorequired Deve incluir id_token para conexão do OpenID Connect.Must include id_token for OpenID Connect sign-in. Também pode incluir o response_type token.It may also include the response_type token. O uso de token aqui permitirá que seu aplicativo receba imediatamente um token de acesso do ponto de extremidade de autorização sem precisar fazer uma segunda solicitação ao ponto de extremidade de autorização.Using token here will allow your app to receive an access token immediately from the authorize endpoint without having to make a second request to the authorize endpoint. Se você usar o response_type de token, o parâmetro scope deverá conter um escopo indicando para qual recurso emitir o token (por exemplo, User. Read on Microsoft Graph).If you use the token response_type, the scope parameter must contain a scope indicating which resource to issue the token for (for example, user.read on Microsoft Graph).
redirect_uri recomendávelrecommended O redirect_uri do seu aplicativo, onde as respostas de autenticação podem ser enviadas e recebidas pelo aplicativo.The redirect_uri of your app, where authentication responses can be sent and received by your app. Ele deve corresponder exatamente a um dos redirect_uris que você registrou no portal, com exceção de que ele deve ser codificado por url.It must exactly match one of the redirect_uris you registered in the portal, except it must be url encoded.
scope obrigatóriorequired Uma lista de escopos separados por espaços.A space-separated list of scopes. Para o OpenID Connect (id_tokens), ele deve incluir o escopo openid, que se traduz com a permissão "entrar" na interface do usuário de consentimento.For OpenID Connect (id_tokens), it must include the scope openid, which translates to the "Sign you in" permission in the consent UI. Opcionalmente, talvez você também queira incluir os escopos email e profile para obter acesso a dados de usuário adicionais.Optionally you may also want to include the email and profile scopes for gaining access to additional user data. Você também pode incluir outros escopos nesta solicitação para solicitar o consentimento para vários recursos, se um token de acesso for solicitado.You may also include other scopes in this request for requesting consent to various resources, if an access token is requested.
response_mode opcionaloptional Especifica o método que deve ser usado para enviar o token resultante de volta ao aplicativo.Specifies the method that should be used to send the resulting token back to your app. O padrão é consultar apenas um token de acesso, mas fragmentar se a solicitação incluir uma id_token.Defaults to query for just an access token, but fragment if the request includes an id_token.
state recomendávelrecommended Um valor incluído na solicitação também será retornado na resposta do token.A value included in the request that will also be returned in the token response. Pode ser uma cadeia de caracteres de qualquer conteúdo desejado.It can be a string of any content that you wish. Um valor exclusivo gerado aleatoriamente normalmente é usado para impedir ataques de solicitação intersite forjada.A randomly generated unique value is typically used for preventing cross-site request forgery attacks. 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.The state is also used to encode information about the user's state in the app before the authentication request occurred, such as the page or view they were on.
nonce obrigatóriorequired Um valor incluído na solicitação, gerado pelo aplicativo, que será incluído no id_token resultante como uma declaração.A value included in the request, generated by the app, that will be included in the resulting id_token as a claim. O aplicativo pode verificar esse valor para reduzir os ataques de reprodução de token.The app can then verify this value to mitigate token replay attacks. Normalmente, o valor é uma cadeia de caracteres aleatória e exclusiva que pode ser usada para identificar a origem da solicitação.The value is typically a randomized, unique string that can be used to identify the origin of the request. Necessário somente quando um id_token é solicitado.Only required when an id_token is requested.
prompt opcionaloptional Indica o tipo de interação do usuário que é necessário.Indicates the type of user interaction that is required. Os únicos valores válidos no momento são 'login', 'none', 'select_account' e 'consent'.The only valid values at this time are 'login', 'none', 'select_account', and 'consent'. prompt=login forçará o usuário a inserir suas credenciais na solicitação, negando o logon único.prompt=login will force the user to enter their credentials on that request, negating single-sign on. prompt=none é o oposto, ele garantirá que o usuário não seja apresentado a nenhum prompt interativo.prompt=none is the opposite - it will ensure that the user isn't presented with any interactive prompt whatsoever. Se a solicitação não puder ser concluída silenciosamente por meio de logon único, o ponto de extremidade da plataforma de identidade da Microsoft retornará um erro.If the request can't be completed silently via single-sign on, the Microsoft identity platform endpoint will return an error. prompt=select_account envia o usuário para um seletor de conta em que todas as contas lembradas na sessão serão exibidas.prompt=select_account sends the user to an account picker where all of the accounts remembered in the session will appear. prompt=consent irá disparar a caixa de diálogo de consentimento do OAuth depois que o usuário iniciar a sessão, solicitando que ele conceda permissões ao aplicativo.prompt=consent will trigger the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app.
login_hint opcionaloptional Pode ser usado 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.Can be used to pre-fill the username/email address field of the sign in page for the user, if you know their username ahead of time. Geralmente, os aplicativos usarão esse parâmetro durante a reautenticação, após já terem extraído o nome de usuário de uma entrada anterior usando a declaração preferred_username.Often apps will use this parameter during re-authentication, having already extracted the username from a previous sign-in using the preferred_username claim.
domain_hint opcionaloptional Se for incluído, ele ignorará o processo de descoberta baseado em email que o usuário passa na página de entrada, levando a uma experiência de usuário um pouco mais simplificada.If included, it will skip the email-based discovery process that user goes through on the sign in page, leading to a slightly more streamlined user experience. Isso é normalmente usado para aplicativos de linha de negócios que operam em um único locatário, no qual eles fornecerão um nome de domínio dentro de um determinado locatário.This is commonly used for Line of Business apps that operate in a single tenant, where they will provide a domain name within a given tenant. Isso encaminhará o usuário para o provedor de Federação para esse locatário.This will forward the user to the federation provider for that tenant. Observe que isso impedirá convidados de entrar neste aplicativo.Note that this will prevent guests from signing into this application.

Nesse ponto, será solicitado que o usuário insira suas credenciais e conclua a autenticação.At this point, the user will be asked to enter their credentials and complete the authentication. O ponto de extremidade da plataforma Microsoft Identity também garantirá que o usuário tenha consentido as permissões indicadas no parâmetro de consulta scope.The Microsoft identity platform endpoint will also ensure that the user has consented to the permissions indicated in the scope query parameter. Se o usuário não consentir a nenhuma dessas permissões, ele será solicitado a consentir às permissões necessárias.If the user has consented to none of those permissions, it will ask the user to consent to the required permissions. Para obter mais informações, consulte permissões, consentimento e aplicativos multilocatários.For more info, see permissions, consent, and multi-tenant apps.

Depois que o usuário autenticar e conceder consentimento, o ponto de extremidade da plataforma de identidade da Microsoft retornará uma resposta ao seu aplicativo no redirect_uriindicado, usando o método especificado no parâmetro response_mode.Once the user authenticates and grants consent, the Microsoft identity platform endpoint will return a response to your app at the indicated redirect_uri, using the method specified in the response_mode parameter.

Resposta bem-sucedidaSuccessful response

Uma resposta bem-sucedida usando response_mode=fragment e response_type=id_token+token é semelhante ao seguinte (com quebras de linha para legibilidade):A successful response using response_mode=fragment and response_type=id_token+token looks like the following (with line breaks for legibility):

GET https://localhost/myapp/#
&token_type=Bearer
&expires_in=3599
&id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
&state=12345
ParâmetroParameter DESCRIÇÃODescription
access_token Incluído se response_type incluir token.Included if response_type includes token. O token de acesso que o aplicativo solicitou.The access token that the app requested. O token de acesso não deve ser decodificado ou inspecionado de outra forma, ele deve ser tratado como uma cadeia de caracteres opaca.The access token shouldn't be decoded or otherwise inspected, it should be treated as an opaque string.
token_type Incluído se response_type incluir token.Included if response_type includes token. Sempre será Bearer.Will always be Bearer.
expires_in Incluído se response_type incluir token.Included if response_type includes token. Indica o número de segundos durante os quais o token é válido, para fins de caching.Indicates the number of seconds the token is valid, for caching purposes.
scope Incluído se response_type incluir token.Included if response_type includes token. Indica os escopos para os quais access_token será válido.Indicates the scope(s) for which the access_token will be valid. Pode não incluir todos os escopos solicitados, se eles não forem aplicáveis ao usuário (no caso de escopos somente AD do Azure serem solicitados quando uma conta pessoal for usada para fazer logon).May not include all of the scopes requested, if they were not applicable to the user (in the case of Azure AD-only scopes being requested when a personal account is used to log in).
id_token Um JWT (Token Web JSON) assinado.A signed JSON Web Token (JWT). O aplicativo pode decodificar os segmentos desse token para solicitar informações sobre o usuário que fez login.The app can decode the segments of this token to request information about the user who signed in. O aplicativo pode armazenar em cache os valores e exibi-los, mas não deve depender deles para qualquer autorização ou limites de segurança.The app can cache the values and display them, but it shouldn't rely on them for any authorization or security boundaries. Para obter mais informações sobre id_tokens, veja a id_token reference.For more information about id_tokens, see the id_token reference.
Observação: somente fornecido se o escopo openid for solicitado.Note: Only provided if openid scope was requested.
state Se um parâmetro de estado estiver incluído na solicitação, o mesmo valor deverá aparecer na resposta.If a state parameter is included in the request, the same value should appear in the response. O aplicativo deve verificar se os valores de estado na solicitação e na resposta são idênticos.The app should verify that the state values in the request and response are identical.

Resposta de erroError response

As respostas de erro também podem ser enviadas ao redirect_uri para que o aplicativo possa tratá-las adequadamente:Error responses may also be sent to the redirect_uri so the app can handle them appropriately:

GET https://localhost/myapp/#
error=access_denied
&error_description=the+user+canceled+the+authentication
ParâmetroParameter DESCRIÇÃODescription
error Uma cadeia de caracteres de códigos de erro que pode ser usada para classificar tipos de erro que ocorrem e pode ser usada para responder aos erros.An error code string that can be used to classify types of errors that occur, and can be used to react to errors.
error_description Uma mensagem de erro específica que pode ajudar um desenvolvedor a identificar a causa raiz de um erro de autenticação.A specific error message that can help a developer identify the root cause of an authentication error.

Obtendo tokens de acesso silenciosamente em segundo planoGetting access tokens silently in the background

Agora que você assinou o usuário em seu aplicativo de página única, você pode obter silenciosamente tokens de acesso para chamar APIs da Web protegidas pela plataforma de identidade da Microsoft, como o Microsoft Graph.Now that you've signed the user into your single-page app, you can silently get access tokens for calling web APIs secured by Microsoft identity platform, such as the Microsoft Graph. Mesmo se já tiver recebido um token usando o response_type token, você poderá usar esse método para adquirir tokens para recursos adicionais sem precisar redirecionar o usuário para entrar novamente.Even if you already received a token using the token response_type, you can use this method to acquire tokens to additional resources without having to redirect the user to sign in again.

No fluxo normal do OpenID Connect/OAuth, você faria isso fazendo uma solicitação para o ponto de extremidade de /token da plataforma de identidade da Microsoft.In the normal OpenID Connect/OAuth flow, you would do this by making a request to the Microsoft identity platform /token endpoint. No entanto, o ponto de extremidade da plataforma Microsoft Identity não oferece suporte a solicitações CORS, portanto, fazer chamadas AJAX para obter e atualizar tokens está fora da pergunta.However, the Microsoft identity platform endpoint does not support CORS requests, so making AJAX calls to get and refresh tokens is out of the question. Em vez disso, você pode usar o fluxo implícito em um iframe oculto para obter novos tokens para outras APIs da Web:Instead, you can use the implicit flow in a hidden iframe to get new tokens for other web APIs:

// Line breaks for legibility only

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read 
&response_mode=fragment
&state=12345
&nonce=678910
&prompt=none
&login_hint=myuser@mycompany.com

Para obter detalhes sobre os parâmetros de consulta na URL, consulte enviar a solicitação de entrada.For details on the query parameters in the URL, see send the sign in request.

Dica

Tente copiar e colar a solicitação abaixo em uma guia do navegador!Try copy & pasting the below request into a browser tab! (Não se esqueça de substituir os valores login_hint pelos valores corretos para o seu usuário)(Don't forget to replace the login_hint values with the correct value for your user)

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=6731de76-14a6-49ae-97bc-6eba6914391e&response_type=token&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F&scope=https%3A%2F%2Fgraph.microsoft.com%2user.read&response_mode=fragment&state=12345&nonce=678910&prompt=none&login_hint={your-username}

Graças ao parâmetro prompt=none , essa solicitação terá êxito ou falhará imediatamente e retornará ao seu aplicativo.Thanks to the prompt=none parameter, this request will either succeed or fail immediately and return to your application. Uma resposta bem-sucedida será enviada ao seu aplicativo no redirect_uri indicado, usando o método especificado no parâmetro response_mode.A successful response will be sent to your app at the indicated redirect_uri, using the method specified in the response_mode parameter.

Resposta bem-sucedidaSuccessful response

Uma resposta bem-sucedida usando response_mode=fragment tem a seguinte aparência:A successful response using response_mode=fragment looks like:

GET https://localhost/myapp/#
access_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
&state=12345
&token_type=Bearer
&expires_in=3599
&scope=https%3A%2F%2Fgraph.windows.net%2Fdirectory.read
ParâmetroParameter DESCRIÇÃODescription
access_token Incluído se response_type incluir token.Included if response_type includes token. O token de acesso solicitado pelo aplicativo, nesse caso para o Microsoft Graph.The access token that the app requested, in this case for the Microsoft Graph. O token de acesso não deve ser decodificado ou inspecionado de outra forma, ele deve ser tratado como uma cadeia de caracteres opaca.The access token shouldn't be decoded or otherwise inspected, it should be treated as an opaque string.
token_type Sempre será Bearer.Will always be Bearer.
expires_in Indica o número de segundos durante os quais o token é válido, para fins de caching.Indicates the number of seconds the token is valid, for caching purposes.
scope Indica os escopos para os quais access_token será válido.Indicates the scope(s) for which the access_token will be valid. Pode não incluir todos os escopos solicitados, se eles não forem aplicáveis ao usuário (no caso de escopos somente AD do Azure serem solicitados quando uma conta pessoal for usada para fazer logon).May not include all of the scopes requested, if they were not applicable to the user (in the case of Azure AD-only scopes being requested when a personal account is used to log in).
id_token Um JWT (Token Web JSON) assinado.A signed JSON Web Token (JWT). Incluído se response_type incluir id_token.Included if response_type includes id_token. O aplicativo pode decodificar os segmentos desse token para solicitar informações sobre o usuário que fez login.The app can decode the segments of this token to request information about the user who signed in. O aplicativo pode armazenar em cache os valores e exibi-los, mas não deve depender deles para qualquer autorização ou limites de segurança.The app can cache the values and display them, but it shouldn't rely on them for any authorization or security boundaries. Para obter mais informações sobre id_tokens, veja a referência id_token.For more information about id_tokens, see the id_token reference.
Observação: somente fornecido se o escopo openid for solicitado.Note: Only provided if openid scope was requested.
state Se um parâmetro de estado estiver incluído na solicitação, o mesmo valor deverá aparecer na resposta.If a state parameter is included in the request, the same value should appear in the response. O aplicativo deve verificar se os valores de estado na solicitação e na resposta são idênticos.The app should verify that the state values in the request and response are identical.

Resposta de erroError response

As respostas de erro também podem ser enviadas ao redirect_uri para que o aplicativo possa tratá-las adequadamente.Error responses may also be sent to the redirect_uri so the app can handle them appropriately. No caso de prompt=none, um erro esperado será:In the case of prompt=none, an expected error will be:

GET https://localhost/myapp/#
error=user_authentication_required
&error_description=the+request+could+not+be+completed+silently
ParâmetroParameter DESCRIÇÃODescription
error Uma cadeia de caracteres de códigos de erro que pode ser usada para classificar tipos de erro que ocorrem e pode ser usada para responder aos erros.An error code string that can be used to classify types of errors that occur, and can be used to react to errors.
error_description Uma mensagem de erro específica que pode ajudar um desenvolvedor a identificar a causa raiz de um erro de autenticação.A specific error message that can help a developer identify the root cause of an authentication error.

Se você receber esse erro na solicitação do iframe, o usuário deverá entrar novamente de forma interativa para recuperar um novo token.If you receive this error in the iframe request, the user must interactively sign in again to retrieve a new token. Você pode escolher lidar com isso da maneira que fizer mais sentido para seu aplicativo.You can choose to handle this case in whatever way makes sense for your application.

Atualizando tokensRefreshing tokens

A concessão implícita não fornece tokens de atualização.The implicit grant does not provide refresh tokens. id_tokens e access_tokens expirarão após um curto período. Portanto, seu aplicativo deve estar preparado para atualizar esses tokens periodicamente.Both id_tokens and access_tokens will expire after a short period of time, so your app must be prepared to refresh these tokens periodically. Para atualizar qualquer tipo de token, você pode executar a mesma solicitação de iframe oculto acima usando o parâmetro prompt=none para controlar o comportamento da plataforma de identidade.To refresh either type of token, you can perform the same hidden iframe request from above using the prompt=none parameter to control the identity platform's behavior. Se você quiser receber uma nova id_token, certifique-se de usar id_token no response_type e scope=openid, bem como um parâmetro de nonce.If you want to receive a new id_token, be sure to use id_token in the response_type and scope=openid, as well as a nonce parameter.

Enviar uma solicitação de desconexãoSend a sign out request

O end_session_endpoint OpenID Connect permite que seu aplicativo envie uma solicitação ao ponto de extremidade da plataforma Microsoft Identity para encerrar a sessão de um usuário e limpar os cookies definidos pelo ponto de extremidade da plataforma Microsoft Identity.The OpenID Connect end_session_endpoint allows your app to send a request to the Microsoft identity platform endpoint to end a user's session and clear cookies set by the Microsoft identity platform endpoint. Para desconectar por completo um usuário de um aplicativo Web, seu aplicativo deve encerrar sua própria sessão com o usuário (normalmente, limpando o cache de token ou removendo cookies) e, depois, redirecionar o navegador para:To fully sign a user out of a web application, your app should end its own session with the user (usually by clearing a token cache or dropping cookies), and then redirect the browser to:

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/logout?post_logout_redirect_uri=https://localhost/myapp/
ParâmetroParameter DESCRIÇÃODescription
tenant obrigatóriorequired O valor {tenant} no caminho da solicitação pode ser usado para controlar quem pode entrar no aplicativo.The {tenant} value in the path of the request can be used to control who can sign into the application. Os valores permitidos são common, organizations, consumers e identificadores de locatário.The allowed values are common, organizations, consumers, and tenant identifiers. Para obter mais detalhes, consulte noções básicas de protocolo.For more detail, see protocol basics.
post_logout_redirect_uri recomendávelrecommended A URL para a qual o usuário deve retornar após a conclusão do logoff.The URL that the user should be returned to after logout completes. Esse valor deve corresponder a um dos URIs de redirecionamento registrados no aplicativo.This value must match one of the redirect URIs registered for the application. Se não estiver incluído, o usuário receberá uma mensagem genérica do ponto de extremidade da plataforma Microsoft Identity.If not included, the user will be shown a generic message by the Microsoft identity platform endpoint.

Próximas etapasNext steps