Fluxo de autenticação por concessão de credenciais do cliente (client credentials flow)
A concessão de credenciais do cliente (client credentials flow) é usada quando os aplicativos solicitam um token de acesso para acessar seus próprios recursos, não em nome de um usuário.
Na Kobana esse fluxo é usado quando a autenticação precisa ser feita por um aplicativo OAuth cadastrado e aprovado no sistema.
Bibliotecas
Há bibliotecas OAuth2 para quase todas as linguagens visto que é um protocolo amplamente utilizado na industria de software e por empresas como Google e Facebook.
Escolha uma biblioteca antes de começar.
Registro da Aplicação
Para começar você precisa cadastrar a sua aplicação. Nós te forneceremos um client_id
e client_secret
.
Nesse caso não é necessário nos fornecer uma URL de Redirecionamento redirect_uri
.
Endpoints
Ambiente | URL |
---|---|
Sandbox | POST https://app-sandbox.kobana.com.br/oauth/token |
Produção | POST https://app.kobana.com.br/oauth/token |
Resumo do funcionamento
O fluxo de credenciais do cliente busca um token a partir das credenciais de um aplicativo cadastrado e aprovado. Para requisitar o token:
- Use o
client_id
eclient_secret
que você obteve conosco durante o registro para fazer a requisição para solicitar um token. Opcionalmente inclua oscope
para acessar alguma informação em específico. - Gere um
access_token
fazendo uma requisição noToken URL
usando o tipo de permissãoclient_credentials
. - Use o
access_token
receebido para fazer as requisições na API.
Somente alguns endpoints aceitam a autenticação desta forma.
Passo a Passo detalhado
1. Considerando as seguintes informações:
* **Client ID** -> fc4e525ff3
* **Client Secret** -> 95ea9a477d
2. Faça uma requisição POST
para o endereço abaixo para receber o access token.
POST
para o endereço abaixo para receber o access token.https://app-sandbox.kobana.com.br/oauth/token?grant_type=client_credentials&scope=write&client_id=fc4e525ff3&client_secret=95ea9a477d
curl -i \
-d 'grant_type=client_credentials&scope=write&client_id=fc4e525ff3&client_secret=95ea9a477d' \
-H 'User-Agent: MyApp ([email protected])' \
-X POST 'https://app-sandbox.kobana.com.br/oauth/token'
require 'boletosimples'
BoletoSimples.configure do |c|
c.environment = :sandbox
c.application_id = 'fc4e525ff3'
c.application_secret = '95ea9a477d'
end
puts BoletoSimples.configuration.client_credentials
Resposta em caso de erro:
HTTP/1.1 401 Unauthorized
Date: Fri, 17 Oct 2014 18:39:47 GMT
Status: 401 Unauthorized
Content-Type: application/json; charset=utf-8
...
{"error":"invalid_client","error_description":"Autenticação do cliente falhou devido a um cliente desconhecido, a falta de inclusão da autenticação do cliente, ou a um método não suportado de autenticação."}
Resposta em caso de sucesso:
HTTP/1.1 200 OK
Date: Fri, 17 Oct 2014 18:39:47 GMT
Status: 200 OK
Content-Type: application/json; charset=utf-8
...
{"access_token":"ada046e3cc","token_type":"bearer","scope":"write","created_at":1434463054}
Você pode salvar esse access token por tempo indeterminado. O token não expira.
3. Agora você pode usar o access_token
para realizar chamadas a API.
access_token
para realizar chamadas a API.Atenção que somente alguns endpoints permitem o uso da autenticação usando este fluxo.