Azure Active Directory B2C: fluxo de código de autorização OAuth 2.0Azure Active Directory B2C: OAuth 2.0 authorization code flow

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. Você pode usá-lo para autenticação e autorização na maioria dos tipos de aplicativo, incluindo aplicativos Web e aplicativos instalados nativamente.You can use it for authentication and authorization in most app types, including web apps and natively installed apps. Você pode usar o fluxo de código de autorização OAuth 2.0 para adquirir tokens de acesso com segurança para seus 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 for your apps, which can be used to access resources that are secured by an authorization server.

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 apps, 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 parâmetro de política.It introduces the policy parameter. Com políticas internas, 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 built-in policies, you can use OAuth 2.0 to add user experiences to your app, such as sign-up, sign-in, and profile management. Neste artigo, mostramos como usar políticas e o OAuth 2.0 para implementar cada uma dessas experiências em seus aplicativos nativos.In this article, we show you how to use OAuth 2.0 and policies to implement each of these experiences in your native applications. Também mostramos como obter tokens de acesso para acessar APIs Web.We also show you how to get access tokens for accessing web APIs.

Nas solicitações HTTP de exemplo neste artigo, usamos o diretório do Azure AD B2C de exemplo, fabrikamb2c.onmicrosoft.com. Também usamos nosso aplicativo de exemplo e políticas.In the example HTTP requests in this article, we use our sample Azure AD B2C directory, fabrikamb2c.onmicrosoft.com. We also use our sample application and policies. Você pode tentar as solicitações sozinho usando esses valores ou substituindo-os pelos seus próprios valores.You can try the requests yourself by using these values, or you can replace them with your own values. Saiba como obter seus próprios diretório, aplicativo e políticas do Azure AD B2C.Learn how to get your own Azure AD B2C directory, application, and policies.

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. No parâmetro p, ele indica que a política a ser executada.In the p parameter, it indicates the policy to execute. Cada um dos três exemplos a seguir (com quebras de linha para facilitar a leitura) usam uma política diferente.The following three examples (with line breaks for readability) each use a different policy.

Usar uma política de entradaUse a sign-in policy

GET https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/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
&p=b2c_1_sign_in

Usar uma política de inscriçãoUse a sign-up policy

GET https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/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
&p=b2c_1_sign_up

Usar uma política de edição de perfilUse an edit-profile policy

GET https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/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
&p=b2c_1_edit_profile
ParâmetroParameter Obrigatório?Required? DescriçãoDescription
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 RecomendadasRecommended 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 RecomendadasRecommended Um valor incluído na solicitação que retorna na resposta do token.A value included in the request that is returned in the token response. Pode ser uma cadeia de caracteres de qualquer conteúdo que você deseje usar.It 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 em ou a política que estava sendo executada.For example, the page the user was on, or the policy that was being executed.
pp ObrigatórioRequired A política que é executada.The policy that is executed. É o nome de uma política que é criada no diretório do Azure AD B2C.It's the name of a policy that is created in your Azure AD B2C directory. O valor de nome da política deve começar com b2c_1_.The policy name value should begin with b2c_1_. Para saber mais sobre políticas, consulte Políticas internas do Azure AD B2C.To learn more about policies, see Azure AD B2C built-in policies.
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 momento, é solicitado que o usuário conclua o fluxo de trabalho da política.At this point, the user is asked to complete the policy'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 a política é definida.User actions depend on how the policy is defined.

Depois que o usuário completar a política, o Azure AD retornará uma resposta ao seu aplicativo no valor usado para redirect_uri.After the user completes the policy, 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 política foi executada.The response is exactly the same for each of the user action scenarios, independent of the policy 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
códigocode 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 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 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
errorerror 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 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 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, o único recurso para o qual você pode solicitar um token é a própria API Web de back-end do seu aplicativo.In Azure AD B2C, the only resource that you can request a token for is your app's own back-end web API. A convenção usada para solicitar um token para si mesmo é usar a ID do cliente do aplicativo como o escopo:The convention that's used for requesting a token to yourself is to use your app's client ID as the scope:

POST fabrikamb2c.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_sign_in HTTP/1.1
Host: https://login.microsoftonline.com
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
pp ObrigatórioRequired A política que foi usada para adquirir o código de autorização.The policy that was used to acquire the authorization code. Você não poderá usar uma política diferente nessa solicitação.You cannot use a different policy in this request. Observe que esse parâmetro é adicionado à cadeia de caracteres de consultae não ao corpo do POST.Note that you add this parameter to the query string, not in the POST body.
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.
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 RecomendadasRecommended 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.
códigocode 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
errorerror 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: https://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 fabrikamb2c.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_sign_in HTTP/1.1
Host: https://login.microsoftonline.com
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
pp ObrigatórioRequired A política que foi usada para adquirir o token de atualização original.The policy that was used to acquire the original refresh token. Você não poderá usar uma política diferente nessa solicitação.You cannot use a different policy in this request. Observe que esse parâmetro é adicionado à cadeia de caracteres de consultae não ao corpo do POST.Note that you add this parameter to the query string, not in the POST body.
client_idclient_id RecomendadasRecommended A ID do aplicativo atribuída ao seu aplicativo no portal do Azure.The application ID assigned to your app in the Azure portal.
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 RecomendadasRecommended 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
errorerror 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 suas regras para obter os nomes de política.Create your policies to obtain your policy names.