Authorization Code Grant Type
Pré-requisitos:
- Uma aplicação devidamente configurada
- Usuário valido
- Credenciais de um client valido
- JWKs configurada para geração do
access_token
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 endpointuserinfo
)
- 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"
}