Fluxo de código de autorização do OAuth 2.0 no Azure Active Directory B2COAuth 2.0 authorization code flow in Azure Active Directory B2C

Você pode usar a concessão de código de autorização OAuth 2.0 em aplicativos instalados em um dispositivo para obter acesso a recursos protegidos, como APIs Web.You can use the OAuth 2.0 authorization code grant in apps installed on a device to gain access to protected resources, such as web APIs. Usando a implementação do Azure AD B2C (Azure Active Directory B2C) do OAuth 2.0, você pode adicionar tarefas de inscrição, entrada e outras de gerenciamento de identidade aos seus aplicativos móveis e da área de trabalho.By using the Azure Active Directory B2C (Azure AD B2C) implementation of OAuth 2.0, you can add sign-up, sign-in, and other identity management tasks to your mobile and desktop apps. Este artigo é independente de linguagem.This article is language-independent. No artigo, descreveremos como enviar e receber mensagens HTTP sem usar nenhuma biblioteca de software livre.In the article, we describe how to send and receive HTTP messages without using any open-source libraries.

O fluxo do código de autorização do OAuth 2.0 é descrito na seção 4.1 da especificação do OAuth 2.0.The OAuth 2.0 authorization code flow is described in section 4.1 of the OAuth 2.0 specification. É possível usá-lo para autenticação e autorização na maioria dos tipos de aplicativos, incluindo aplicativos Web e aplicativos instalados nativamente.You can use it for authentication and authorization in most application types, including web applications and natively installed applications. Você pode usar o fluxo do código de autorização OAuth 2.0 para adquirir com segurança tokens de acesso e atualizar tokens para os aplicativos, que podem ser usados para acessar recursos protegidos por um servidor de autorização.You can use the OAuth 2.0 authorization code flow to securely acquire access tokens and refresh tokens for your applications, which can be used to access resources that are secured by an authorization server. O token de atualização permite que o cliente adquirir novo acesso (e atualizar) tokens depois que o token de acesso expira, normalmente após uma hora.The refresh token allows the client to acquire new access (and refresh) tokens once the access token expires, typically after one hour.

Este artigo concentra-se no fluxo de código de autorização do OAuth 2.0 de clientes públicos.This article focuses on the public clients OAuth 2.0 authorization code flow. Um cliente público é qualquer aplicativo cliente que não é confiável para manter a integridade de uma senha secreta com segurança.A public client is any client application that cannot be trusted to securely maintain the integrity of a secret password. Isso inclui aplicativos móveis, aplicativos da área de trabalho e, basicamente, qualquer aplicativo que seja executado em um dispositivo e precise obter tokens de acesso.This includes mobile apps, desktop applications, and essentially any application that runs on a device and needs to get access tokens.

Observação

Para adicionar o gerenciamento de identidade em um aplicativo Web usando o Azure AD B2C, use o OpenID Connect em vez do OAuth 2.0.To add identity management to a web app by using Azure AD B2C, use OpenID Connect instead of OAuth 2.0.

O Azure AD B2C estende os fluxos padrão do OAuth 2.0 para fazer mais do que simples ações de autenticação e autorização.Azure AD B2C extends the standard OAuth 2.0 flows to do more than simple authentication and authorization. Ele apresenta o fluxo do usuário.It introduces the user flow. Com os fluxos do usuário, você pode usar o OAuth 2.0 para adicionar experiências do usuário ao seu aplicativo, como inscrição, entrada e gerenciamento de perfil.With user flows, you can use OAuth 2.0 to add user experiences to your application, such as sign-up, sign-in, and profile management. Os provedores de identidade que usam o protocolo OAuth 2.0 incluem Amazon, Azure Active Directory, Facebook, GitHub, Google e LinkedIn.Identity providers that use the OAuth 2.0 protocol include Amazon, Azure Active Directory, Facebook, GitHub, Google, and LinkedIn.

Para experimentar as solicitações HTTP neste artigo:To try the HTTP requests in this article:

  1. Substitua {tenant} pelo nome de seu locatário do Azure AD B2C.Replace {tenant} with the name of your Azure AD B2C tenant.
  2. Substitua 90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 pela ID do aplicativo de um aplicativo que você registrou anteriormente em seu locatário Azure ad B2C.Replace 90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 with the app ID of an application you've previously registered in your Azure AD B2C tenant.
  3. Substitua {policy} pelo nome de uma política que você criou em seu locatário, por exemplo b2c_1_sign_in .Replace {policy} with the name of a policy you've created in your tenant, for example b2c_1_sign_in.

1. obter um código de autorização1. Get an authorization code

O fluxo do código de autorização começa com o cliente direcionando o usuário para o ponto de extremidade /authorize .The authorization code flow begins with the client directing the user to the /authorize endpoint. Essa é a parte interativa do fluxo, na qual o usuário entra em ação.This is the interactive part of the flow, where the user takes action. Nessa solicitação, o cliente indica no parâmetro scope as permissões que ele precisa adquirir do usuário.In this request, the client indicates in the scope parameter the permissions that it needs to acquire from the user. Cada um dos três exemplos a seguir (com quebras de linha para facilitar a leitura) usam um fluxo de usuário diferente.The following three examples (with line breaks for readability) each use a different user flow.

GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?
client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6
&response_type=code
&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob
&response_mode=query
&scope=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6%20offline_access
&state=arbitrary_data_you_can_receive_in_the_response
ParâmetroParameter Obrigatório?Required? DescriçãoDescription
vários{tenant} ObrigatórioRequired Nome do seu locatário de Azure AD B2CName of your Azure AD B2C tenant
regras{policy} ObrigatórioRequired O fluxo do usuário a ser executado.The user flow to be run. Especifique o nome de um fluxo de usuário que você criou em seu locatário Azure AD B2C.Specify the name of a user flow you've created in your Azure AD B2C tenant. Por exemplo: b2c_1_sign_in, b2c_1_sign_up ou b2c_1_edit_profileFor example: b2c_1_sign_in, b2c_1_sign_up, or b2c_1_edit_profile.
client_idclient_id ObrigatórioRequired A ID do aplicativo atribuída ao seu aplicativo no portal do Azure.The application ID assigned to your app in the Azure portal.
response_typeresponse_type ObrigatórioRequired O tipo de resposta, que deve incluir code para o fluxo do código de autorização.The response type, which must include code for the authorization code flow.
redirect_uriredirect_uri ObrigatórioRequired O URI de redirecionamento do seu aplicativo, no qual as respostas de autenticação são enviadas e recebidas pelo seu aplicativo.The redirect URI of your app, where authentication responses are sent and received by your app. Ele deve corresponder exatamente a um dos URIs de redirecionamento registrados no portal, exceto que ele deve ser codificado como URL.It must exactly match one of the redirect URIs that you registered in the portal, except that it must be URL-encoded.
scopescope ObrigatórioRequired Uma lista de escopos separados por espaços.A space-separated list of scopes. Um valor de escopo único indica ao Azure AD (Azure Active Directory) que ambas as permissões estão sendo solicitadas.A single scope value indicates to Azure Active Directory (Azure AD) both of the permissions that are being requested. O uso da ID do cliente como o escopo indica que seu aplicativo precisa de um token de acesso que possa ser usado em relação a seu próprio serviço ou API Web, representado pela mesma ID de cliente.Using the client ID as the scope indicates that your app needs an access token that can be used against your own service or web API, represented by the same client ID. O escopo offline_access indica que seu aplicativo precisa de um token de atualização para acesso de longa duração a recursos.The offline_access scope indicates that your app needs a refresh token for long-lived access to resources. Você também pode usar o escopo openid para solicitar um token de ID do Azure AD B2C.You also can use the openid scope to request an ID token from Azure AD B2C.
response_moderesponse_mode RecomendadoRecommended O método que você usa para enviar o código de autorização resultante para seu aplicativo.The method that you use to send the resulting authorization code back to your app. Pode ser query, form_post ou fragment.It can be query, form_post, or fragment.
statestate RecomendadoRecommended Um valor incluído na solicitação que pode ser uma cadeia de caracteres de qualquer conteúdo que você deseja usar.A value included in the request that can be a string of any content that you want to use. Geralmente, um valor exclusivo gerado aleatoriamente é usado para evitar ataques de solicitação intersite forjada.Usually, a randomly generated unique value is used, to prevent cross-site request forgery attacks. O estado também é usado para codificar informações sobre o estado do usuário no aplicativo, antes que a solicitação de autenticação tenha ocorrido.The state also is used to encode information about the user's state in the app before the authentication request occurred. Por exemplo, a página em que o usuário estava ou fluxo de usuário que estava sendo executado.For example, the page the user was on, or the user flow that was being executed.
promptprompt OpcionalOptional O tipo de interação do usuário que é necessário.The type of user interaction that is required. Atualmente, o único valor válido é login, que força o usuário a inserir suas credenciais nessa solicitação.Currently, the only valid value is login, which forces the user to enter their credentials on that request. O logon único não terá efeito.Single sign-on will not take effect.

Nesse ponto, o usuário é solicitado a concluir o fluxo de trabalho do fluxo de usuário.At this point, the user is asked to complete the user flow's workflow. Isso pode exigir que o usuário insira seu nome de usuário e senha, entre com uma identidade social, inscreva-se no diretório ou realize outras etapas.This might involve the user entering their username and password, signing in with a social identity, signing up for the directory, or any other number of steps. As ações do usuário dependem de como o fluxo de usuário é definido.User actions depend on how the user flow is defined.

Depois que o usuário completar o fluxo de usuário, o Azure AD retornará uma resposta ao seu aplicativo no valor usado para redirect_uri.After the user completes the user flow, Azure AD returns a response to your app at the value you used for redirect_uri. Ele usa o método especificado no parâmetro response_mode.It uses the method specified in the response_mode parameter. A resposta é exatamente a mesma para cada um dos cenários de ação do usuário, independentemente de qual fluxo de usuário foi executado.The response is exactly the same for each of the user action scenarios, independent of the user flow that was executed.

Uma resposta bem-sucedida que usa response_mode=query tem esta aparência:A successful response that uses response_mode=query looks like this:

GET urn:ietf:wg:oauth:2.0:oob?
code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...        // the authorization_code, truncated
&state=arbitrary_data_you_can_receive_in_the_response                // the value provided in the request
ParâmetroParameter DescriçãoDescription
codecode O código de autorização que o aplicativo solicitou.The authorization code that the app requested. O aplicativo pode usar o código de autorização para solicitar um token de acesso para um recurso de destino.The app can use the authorization code to request an access token for a target resource. Os códigos de autorização têm uma duração muito curta.Authorization codes are very short-lived. Normalmente, eles expiram depois de cerca de 10 minutos.Typically, they expire after about 10 minutes.
statestate Consulte a descrição completa na tabela na seção anterior.See the full description in the table in the preceding section. Se um parâmetro state for 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 state 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.

As respostas de erro também podem ser enviadas ao URI de redirecionamento, de modo que o aplicativo possa tratá-las adequadamente:Error responses also can be sent to the redirect URI so that the app can handle them appropriately:

GET urn:ietf:wg:oauth:2.0:oob?
error=access_denied
&error_description=The+user+has+cancelled+entering+self-asserted+information
&state=arbitrary_data_you_can_receive_in_the_response
ParâmetroParameter DescriçãoDescription
erroerror Uma cadeia de caracteres de código de erro que você pode usar para classificar os tipos de erros que ocorrem.An error code string that you can use to classify the types of errors that occur. Você também pode usar a cadeia de caracteres para reagir a erros.You also can use the string to react to errors.
error_descriptionerror_description Uma mensagem de erro específica que pode ajudar você a identificar a causa raiz de um erro de autenticação.A specific error message that can help you identify the root cause of an authentication error.
statestate Consulte a descrição completa na tabela anterior.See the full description in the preceding table. Se um parâmetro state for 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 state 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.

2. obter um token2. Get a token

Agora que você adquiriu um código de autorização, será possível resgatar o code de um token para o recurso desejado enviando uma solicitação POST para o ponto de extremidade /token.Now that you've acquired an authorization code, you can redeem the code for a token to the intended resource by sending a POST request to the /token endpoint. No Azure AD B2C, você pode solicitar tokens de acesso para outras APIs como de costume, especificando seus escopos na solicitação.In Azure AD B2C, you can request access tokens for other API's as usual by specifying their scope(s) in the request.

Você também pode solicitar um token de acesso para a própria API Web de back-end do seu aplicativo por convenção de usar a ID do cliente do aplicativo como o escopo solicitado (o que resultará em um token de acesso com essa ID de cliente como o "público"):You can also request an access token for your app's own back-end Web API by convention of using the app's client ID as the requested scope (which will result in an access token with that client ID as the "audience"):

POST https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1

Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6&scope=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...&redirect_uri=urn:ietf:wg:oauth:2.0:oob

ParâmetroParameter Obrigatório?Required? DescriçãoDescription
vários{tenant} ObrigatórioRequired Nome do seu locatário de Azure AD B2CName of your Azure AD B2C tenant
regras{policy} ObrigatórioRequired O fluxo de usuário que foi usado para adquirir o código de autorização.The user flow that was used to acquire the authorization code. Você não poderá usar um fluxo de usuário diferente nessa solicitação.You cannot use a different user flow in this request.
client_idclient_id ObrigatórioRequired A ID do aplicativo atribuída ao seu aplicativo no portal do Azure.The application ID assigned to your app in the Azure portal.
client_secretclient_secret Sim, em aplicativos WebYes, in Web Apps O segredo do aplicativo que foi gerado no portal do Azure.The application secret that was generated in the Azure portal. Os segredos do cliente são usados nesse fluxo para cenários de aplicativos Web, em que o cliente pode armazenar com segurança um segredo do cliente.Client secrets are used in this flow for Web App scenarios, where the client can securely store a client secret. Para cenários de aplicativo nativo (cliente público), os segredos do cliente não podem ser armazenados com segurança e, portanto, não são usados nesta chamada.For Native App (public client) scenarios, client secrets cannot be securely stored, and therefore are not used in this call. Se você usar um segredo do cliente, altere-o periodicamente.If you use a client secret, please change it on a periodic basis.
grant_typegrant_type ObrigatórioRequired O tipo de concessão.The type of grant. Para o fluxo de código de autorização, o tipo de concessão deve ser authorization_code.For the authorization code flow, the grant type must be authorization_code.
scopescope RecomendadoRecommended Uma lista de escopos separados por espaços.A space-separated list of scopes. Um valor de escopo único indica ao Azure AD que ambas as permissões estão sendo solicitadas.A single scope value indicates to Azure AD both of the permissions that are being requested. O uso da ID do cliente como o escopo indica que seu aplicativo precisa de um token de acesso que possa ser usado em relação a seu próprio serviço ou API Web, representado pela mesma ID de cliente.Using the client ID as the scope indicates that your app needs an access token that can be used against your own service or web API, represented by the same client ID. O escopo offline_access indica que seu aplicativo precisa de um token de atualização para acesso de longa duração a recursos.The offline_access scope indicates that your app needs a refresh token for long-lived access to resources. Você também pode usar o escopo openid para solicitar um token de ID do Azure AD B2C.You also can use the openid scope to request an ID token from Azure AD B2C.
codecode ObrigatórioRequired O código de autorização que você adquiriu no primeiro segmento do fluxo.The authorization code that you acquired in the first leg of the flow.
redirect_uriredirect_uri ObrigatórioRequired O URI de redirecionamento do aplicativo em que você recebeu o código de autorização.The redirect URI of the application where you received the authorization code.

Uma resposta de token bem-sucedido tem esta aparência:A successful token response looks like this:

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access",
    "expires_in": "3600",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
}
ParâmetroParameter DescriçãoDescription
not_beforenot_before A hora em que o token é considerado válido, nos valores de hora da época.The time at which the token is considered valid, in epoch time.
token_typetoken_type O valor do tipo de token.The token type value. O único tipo com suporte do Azure AD é PortadorThe only type that Azure AD supports is Bearer.
access_tokenaccess_token O JWT (Token Web JSON) assinado que você solicitou.The signed JSON Web Token (JWT) that you requested.
scopescope Os escopos para os quais o token é válido.The scopes that the token is valid for. Você também pode usar os escopos para armazenar tokens em cache para uso posterior.You also can use scopes to cache tokens for later use.
expires_inexpires_in O período de tempo pelo qual o token é válido (em segundos).The length of time that the token is valid (in seconds).
refresh_tokenrefresh_token Um token de atualização do OAuth 2.0.An OAuth 2.0 refresh token. O aplicativo pode usar esse token para adquirir tokens de acesso adicionais depois que o atual expirar.The app can use this token to acquire additional tokens after the current token expires. Os tokens de atualização têm uma vida longa.Refresh tokens are long-lived. Você pode usá-los para manter o acesso aos recursos por longos períodos de tempo.You can use them to retain access to resources for extended periods of time. Para obter mais informações, consulte a Referência de token do Azure AD B2C.For more information, see the Azure AD B2C token reference.

As respostas de erro tem esta aparência:Error responses look like this:

{
    "error": "access_denied",
    "error_description": "The user revoked access to the app.",
}
ParâmetroParameter DescriçãoDescription
erroerror Uma cadeia de caracteres de código de erro que você pode usar para classificar os tipos de erros que ocorrem.An error code string that you can use to classify the types of errors that occur. Você também pode usar a cadeia de caracteres para reagir a erros.You also can use the string to react to errors.
error_descriptionerror_description Uma mensagem de erro específica que pode ajudar você a identificar a causa raiz de um erro de autenticação.A specific error message that can help you identify the root cause of an authentication error.

3. usar o token3. Use the token

Agora que adquiriu um token de acesso com êxito, você poderá usá-lo em solicitações às suas APIs Web de back-end incluindo-o no cabeçalho Authorization:Now that you've successfully acquired an access token, you can use the token in requests to your back-end web APIs by including it in the Authorization header:

GET /tasks
Host: mytaskwebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...

4. atualizar o token4. Refresh the token

Os tokens de acesso e os tokens de ID tem curta duração.Access tokens and ID tokens are short-lived. Depois que eles expirarem, você deverá atualizá-los para continuar a acessar recursos.After they expire, you must refresh them to continue to access resources. Para fazer isso, envie outra solicitação POST para o ponto de extremidade /token.To do this, submit another POST request to the /token endpoint. Dessa vez, forneça o refresh_token em vez do code:This time, provide the refresh_token instead of the code:

POST https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1

Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6&scope=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access&refresh_token=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...&redirect_uri=urn:ietf:wg:oauth:2.0:oob
ParâmetroParameter Obrigatório?Required? DescriçãoDescription
vários{tenant} ObrigatórioRequired Nome do seu locatário de Azure AD B2CName of your Azure AD B2C tenant
regras{policy} ObrigatórioRequired O fluxo de usuário que foi usado para adquirir o token de atualização original.The user flow that was used to acquire the original refresh token. Você não poderá usar um fluxo de usuário diferente nessa solicitação.You cannot use a different user flow in this request.
client_idclient_id ObrigatórioRequired A ID do aplicativo atribuída ao seu aplicativo no portal do Azure.The application ID assigned to your app in the Azure portal.
client_secretclient_secret Sim, em aplicativos WebYes, in Web Apps O segredo do aplicativo que foi gerado no portal do Azure.The application secret that was generated in the Azure portal. Os segredos do cliente são usados nesse fluxo para cenários de aplicativos Web, em que o cliente pode armazenar com segurança um segredo do cliente.Client secrets are used in this flow for Web App scenarios, where the client can securely store a client secret. Para cenários de aplicativo nativo (cliente público), os segredos do cliente não podem ser armazenados com segurança e, portanto, não são usados nesta chamada.For Native App (public client) scenarios, client secrets cannot be securely stored, and therefore are not used in this call. Se você usar um segredo do cliente, altere-o periodicamente.If you use a client secret, please change it on a periodic basis.
grant_typegrant_type ObrigatórioRequired O tipo de concessão.The type of grant. Para este segmento do fluxo de código de autorização, o tipo de concessão deve ser refresh_token.For this leg of the authorization code flow, the grant type must be refresh_token.
scopescope RecomendadoRecommended Uma lista de escopos separados por espaços.A space-separated list of scopes. Um valor de escopo único indica ao Azure AD que ambas as permissões estão sendo solicitadas.A single scope value indicates to Azure AD both of the permissions that are being requested. O uso da ID do cliente como o escopo indica que seu aplicativo precisa de um token de acesso que possa ser usado em relação a seu próprio serviço ou API Web, representado pela mesma ID de cliente.Using the client ID as the scope indicates that your app needs an access token that can be used against your own service or web API, represented by the same client ID. O escopo offline_access indica que o aplicativo precisará de um token de atualização para acessar os recursos de longa duração.The offline_access scope indicates that your app will need a refresh token for long-lived access to resources. Você também pode usar o escopo openid para solicitar um token de ID do Azure AD B2C.You also can use the openid scope to request an ID token from Azure AD B2C.
redirect_uriredirect_uri OpcionalOptional O URI de redirecionamento do aplicativo em que você recebeu o código de autorização.The redirect URI of the application where you received the authorization code.
refresh_tokenrefresh_token ObrigatórioRequired O token de atualização original que você adquiriu na segunda ramificação do fluxo.The original refresh token that you acquired in the second leg of the flow.

Uma resposta de token bem-sucedido tem esta aparência:A successful token response looks like this:

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access",
    "expires_in": "3600",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
}
ParâmetroParameter DescriçãoDescription
not_beforenot_before A hora em que o token é considerado válido, nos valores de hora da época.The time at which the token is considered valid, in epoch time.
token_typetoken_type O valor do tipo de token.The token type value. O único tipo com suporte do Azure AD é PortadorThe only type that Azure AD supports is Bearer.
access_tokenaccess_token O JWT assinado que você solicitou.The signed JWT that you requested.
scopescope Os escopos para os quais o token é válido.The scopes that the token is valid for. Você também pode usar os escopos para armazenar tokens em cache para uso posterior.You also can use the scopes to cache tokens for later use.
expires_inexpires_in O período de tempo pelo qual o token é válido (em segundos).The length of time that the token is valid (in seconds).
refresh_tokenrefresh_token Um token de atualização do OAuth 2.0.An OAuth 2.0 refresh token. O aplicativo pode usar esse token para adquirir tokens de acesso adicionais depois que o atual expirar.The app can use this token to acquire additional tokens after the current token expires. Os tokens de atualização têm longa duração e podem ser usados para reter acesso a recursos por períodos estendidos.Refresh tokens are long-lived, and can be used to retain access to resources for extended periods of time. Para obter mais informações, consulte a Referência de token do Azure AD B2C.For more information, see the Azure AD B2C token reference.

As respostas de erro tem esta aparência:Error responses look like this:

{
    "error": "access_denied",
    "error_description": "The user revoked access to the app.",
}
ParâmetroParameter DescriçãoDescription
erroerror Uma cadeia de caracteres de código de erro que você pode usar para classificar os tipos de erros que ocorrem.An error code string that you can use to classify types of errors that occur. Você também pode usar a cadeia de caracteres para reagir a erros.You also can use the string to react to errors.
error_descriptionerror_description Uma mensagem de erro específica que pode ajudar você a identificar a causa raiz de um erro de autenticação.A specific error message that can help you identify the root cause of an authentication error.

Use seu próprio diretório do Azure AD B2CUse your own Azure AD B2C directory

Para testar essas solicitações, conclua as etapas a seguir.To try these requests yourself, complete the following steps. Substitua os valores de exemplo que usamos neste artigo pelos seus próprios valores.Replace the example values we used in this article with your own values.

  1. Criar um diretório do Azure AD B2C.Create an Azure AD B2C directory. Use o nome do seu diretório nas solicitações.Use the name of your directory in the requests.
  2. Criar um aplicativo para obter uma ID de aplicativo e um URI de redirecionamento.Create an application to obtain an application ID and a redirect URI. Inclua um cliente nativo em seu aplicativo.Include a native client in your app.
  3. Criar os fluxos dos usuários para obter os nomes do fluxo de usuário.Create your user flows to obtain your user flow names.