Client Secret Basic
Pré-requisitos:
- Configurações básicas
- Verificar se o método de autenticação é valido
- Valor "code" retornado pelo endpoint authorize
Token
URL de Documentação da API : /apidocs/#/OAuth2/post__application__oauth_token
Após o login do usuario com sucesso, voce deve pegar o valor do argumento code
e
dados do client cadastrado e consumir o endpoint https://[ip ou hostname (fqdn)]/<application name>/oauth/token
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:
- Obrigatório: Sim
- Tipo: String
- Localização: Header da requisição
- Descrição: ID do cliente a ser usado para autenticação
- client_secret:
- Obrigatório: Sim
- Tipo: String
- Localização: Header da requisição
- Descrição: Secret do cliente a ser usado para autenticação
- code:
- Obrigatório: Sim
- Tipo: String
- Localização: No corpo da requisição JSON.
- Descrição: Codigo retornado no endpoint
authorize
- grant_type:
- Obrigatório: Sim
- Tipo: String
- Localização: No corpo da requisição JSON.
- Descrição: Grant type configurado no client
- redirect_uri:
- Obrigatório: Sim
- Tipo: String
- Localização: No corpo da requisição JSON.
- Descrição: Redirect uri enviado como parâmetro do endpoint
authorize
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 seguindo o esquema: Authorization: Basic <base64(client_id:client_secret)>
- Gerando uma string codificada em base64 e armazenando-a em uma variável
export basic_auth=$(echo -ne client_id:client_secret | base64 --wrap 0)
- A requisição usando
curl
pode ser feita passando o parametro -u/--user seguido das credenciais, ou referenciando a variável criada anteriormente.- Exemplo:
-u client_id:client_secret
-H "Authorization: Basic $basic_auth"
- Exemplo:
- A requisição usando
Exemplo de uma requisição usando
client_secret_basic
para autenticaçãocurl -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:
{ "access_token": "eyJhbGciOiJSUz[...]EoULcOD4XZtfsTq1j95bg", "expires_in": 3600, "scope": "profile", "token_type": "Bearer" }
UserInfo
URL de Documentação da API : /apidocs/#/OAuth2/get__application__oauth_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>/oauth/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" }