Authorization Code Grant Type

Pré-requisitos:

Authorize

URL de Documentação da API : /apidocs/#/OpenID/get__application__connect_authorize

A chamada deve ser feita direto na barra de busca/url do navegador

Parâmetros:

  • application:
    • Obrigatório: Sim
    • Tipo: String
    • Localização: Caminho da URL (Path)
    • Descrição: Nome da aplicação a ser usada.
  • client_id:
    • Tipo: String
    • Localização: Caminho da URL (Path).
    • Descrição: ID do cliente a ser usado no fluxo
  • scope:
    • Tipo: String
    • Localização: Caminho da URL (Path).
    • Descrição: Quais escopos seram adicionados no access_token (iram refletir também no retorno dos dados do usuario no endpoint userinfo)
  • response_type:
    • Tipo: String
    • Localização: Caminho da URL (Path).
    • Descrição: Qual o padrão de resposta que o IDP deve responder [code, token, id_token, ...]
  • redirect_uri:
    • Tipo: String
    • Localização: Caminho da URL (Path).
    • Descrição: Qual o caminho/endpoint que o IDP deve enviar a resposta
  • nonce:
    • Tipo: String
    • Localização: Caminho da URL (Path).
    • Descrição: Preenchido somente se o parametro nonce estiver habilitado na aplicação
  • code_challenge:
    • Tipo: String
    • Localização: Caminho da URL (Path).
    • Descrição: Preenchido somente se o parametro PKCE estiver habilitado na aplicação
  • code_challenge_method:
    • Tipo: String
    • Localização: Caminho da URL (Path).
    • Descrição: Preenchido somente se o parametro PKCE estiver habilitado na aplicação

Exemplos:

  • URL:
      https://[ip ou hostname (fqdn)]/<application name>/oauth/authorize?client_id=<client id>&scope=<scope>&response_type=<response_type>&redirect_uri=<redirect uri>
    

O retorno desta chamada deve ser similar ao exemplo abaixo:

  https://[ip ou hostname (fqdn)]/?code=<authorization_code>

Posteriormente o valor code será usado no token endpoint junto com algum método de autenticação para ser trocado por um access token


No exemplo abaixo iremos utilizar o fluxo com o grant_type sendo authorization_code e o response_type como code

Como o Token Endpoint Auth Method foi definido no exemplo como client_secret_basic, as credenciais do cliente devem ser enviadas no header da requisição

Exemplo:

  • URL:
    curl -X POST "[ip ou hostname (fqdn)]/<application name>/oauth/token" \
    -H "accept: application/json" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -u <client_id:client_secret> \
    -d code=<auth_code> \
    -d redirect_uri=<redirect_uri> \
    -d grant_type=authorization_code
    

O retorno desta chamada deve ser similar ao exemplo abaixo:

https://[ip ou hostname (fqdn)]/#token_type=Bearer&access_token=<access_token>&expires_in=3600&scope=profile&id_token=<id_token>


UserInfo

URL de Documentação da API : /apidocs/#/OpenID/get__application__connect_userinfo

Para recuperar as informações do usuário, utilize o access_token retornado pelo endpoint acima como valor do header Authorization: Bearer <access_token>

Parâmetros:

  • application name:
    • Obrigatório: Sim
    • Tipo: String
    • Localização: Caminho da URL (Path)
    • Descrição: O nome da aplicação a ser usada.

Exemplos:

  • Curl:
      curl -X GET "https://[ip ou hostname (fqdn)]/<application name>/connect/userinfo" \
      -H "accept: application/json" \
      -H "Authorization: Bearer <access_token>"
    

O retorno desta chamada deve ser similar ao exemplo abaixo:

{
  "id": "09d97a66-da69-4049-9123-3fdd7c2c2738",
  "name": "userdocs",
  "sub": "09d97a66-da69-4049-9123-3fdd7c2c2738",
  "username": "userdocs"
}

results matching ""

    No results matching ""