Tipo de Concessão do Código de Autorização

Use esse tipo de concessão quando quiser obter um código de autorização usando um servidor de autorização como intermediário entre o aplicativo cliente e o proprietário do recurso usando domínios de identidades.

O diagrama a seguir exibe o fluxo Tipo de Concessão do Código de Autorização.

Um diagrama que ilustra o fluxo do tipo de concessão do código de autorização.
Neste fluxo OAuth:
  1. Um usuário clica em um link em um aplicativo cliente do servidor Web, solicitando acesso a recursos protegidos.

  2. O aplicativo cliente redireciona o browser para o ponto final de autorização oauth2/v1/authorize com uma solicitação de código de autorização.

  3. O Servidor de Autorização retorna um código de autorização ao aplicativo cliente por meio de um redirecionamento do navegador depois que o proprietário do recurso dá consentimento.

  4. O aplicativo cliente, então, troca o código de autorização por um token de acesso e, geralmente, um token de atualização.

  5. O Servidor de Autorização retorna o token de acesso ao aplicativo cliente.

  6. O aplicativo cliente usa o token de acesso em uma chamada de API para obter dados protegidos.
    Observação

    As credenciais do proprietário do recurso nunca são expostas ao cliente.
Função Disponíveis
Requer autenticação de cliente No
Exige que o cliente saiba as credenciais do usuário No
Interação do usuário final baseada em navegador Sim
Pode usar um Provedor de Identidades externo para autenticação Sim
O token de atualização é permitido Sim
O token de acesso está no contexto do usuário final Sim

Consulte um exemplo de Exemplo de Fluxo de Autorização do Tipo de Concessão do Código de Autorização.

Exemplo de Fluxo de Autorização do Tipo de Concessão do Código de Autorização

Este exemplo de fluxo de autorização orienta você por uma solicitação de login do OpenID Connect usando um código de autorização.

Esse fluxo é um fluxo OAuth de três etapas, que se refere a cenários nos quais o aplicativo chama as APIs do domínio de identidades em nome dos usuários finais e nos quais o consentimento do usuário às vezes é necessário. Esse fluxo mostra como configurar o Sign-On Único Federado entre um domínio de identidades e um aplicativo personalizado usando OAuth 2.0 e OpenID Connect.

Quando você cria um aplicativo usando o tipo de concessão Código de Autorização na Console do domínio de identidades:

  • Especifique Aplicativo Confiável como o tipo de aplicativo.

  • Selecione Código de Autorização como o tipo de concessão.

  • Especifique o URI de Redirecionamento, onde as respostas às solicitações de autenticação são enviadas.

  • Opcionalmente, selecione o tipo de concessão Token de Atualização para retornar um token de atualização com o token de acesso.

Consulte Tipo de Concessão do Código de Autorização para obter mais informações sobre o tipo de concessão do Código de Autorização e um fluxograma de autorização.

Fluxo de Autorização

  1. Um usuário clica em um link no aplicativo cliente do servidor Web (Cotas do Cliente), solicitando acesso a recursos protegidos.

  2. O aplicativo Cotações do Cliente redireciona o browser para o ponto final de autorização do domínio de identidades (oauth2/v1/authorize) com uma solicitação de código de autorização.

    O URL da solicitação contém parâmetros de consulta que indicam o tipo de acesso que está sendo solicitado.
    Observação

    Um valor nonce é uma string aleatória criptograficamente forte que você usa para evitar que respostas interceptadas sejam reutilizadas.

    Exemplo de Solicitação: Cliente Confidencial/Confiável

    GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234

    Exemplo de Solicitação: Cliente Confidencial/Confiável Incluindo Token de Atualização na Solicitação

    GET https://<domainURL>/oauth2/v1/authorize?client_id=<client-id&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid%20<Resource
    Server Scope>%20offline_access&nonce=<nonce-value>&state=1234

    Exemplo de Solicitação: Cliente Público

    GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=id_token&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234

    Exemplo de Solicitação Usando PKCE

    GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234&code_challenge=<code-challenge>&code_challenge_method=<plain|S256>'
  3. O domínio de identidades recebe a solicitação e identifica que o aplicativo Cotações do Cliente (identificado por seu client_id) está solicitando um código de autorização para obter mais informações sobre o proprietário do recurso (escopo openid).)

  4. Se o usuário ainda não tiver feito log-in, o serviço IAM desafiará o usuário a se autenticar. O serviço IAM verifica as credenciais do usuário.

  5. Se o log-in for bem-sucedido, o serviço IAM redirecionará o browser para o aplicativo Cotações do Cliente com um código de autorização.
    Observação

    Se o usuário não fizer a autenticação, será retornado um erro em vez do código de autorização.
  6. O aplicativo Cotações do Cliente extrai o código de autorização e faz uma solicitação a um domínio de identidades para trocar o código de autorização por um token de acesso.

    Exemplo de Solicitação: Cliente Confidencial/Confiável

       curl -i 
       -H 'Authorization: Basic <base64-clientid-secret>' 
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' 
       --request POST https://<domainURL>/oauth2/v1/token 
       -d 'grant_type=authorization_code&code=<authz-code>'

    Exemplo de Solicitação: Cliente Público

       curl -i 
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' 
       --request POST https://<domainURL>/oauth2/v1/token 
       -d 'grant_type=authorization_code&code=<authz-code>&redirect_uri=<client-redirect-uri>&client_id=<client-id>'

    Exemplo de Solicitação Usando PKCE

       curl -i
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'
       --request POST https://<domainURL>/oauth2/v1/token 
       -d 'grant_type=authorization_code&code=<authz-cod>e&redirect_uri=<client-redirect-uri>&client_id=<client-id>&code_verifier=<code-verifier>'
  7. O serviço IAM valida os dados de concessão e usuário associados ao código (client_id, client_secret e ao código de autorização).

  8. Um Token de Acesso e um Token de Identidade são retornados. O token de acesso contém informações sobre quais escopos o aplicativo Cotações do Cliente pode solicitar em nome do usuário. O aplicativo pode usar esse token ao solicitar APIs em nome do usuário.

    O Token de Identidade é recuperado somente quando você solicita o escopo openid. Esse token contém informações de identificação sobre o usuário e é usado para autenticação federada.

  9. O aplicativo Cotações do Cliente processa o id_token e extrai as informações do usuário retornadas do serviço IAM.

  10. Cotações do Cliente exibe a home page que contém informações sobre o usuário.