Fluxo credenciais do cliente

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

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 e client_secret que você obteve conosco durante o registro para fazer a requisição para solicitar um token. Opcionalmente inclua o scope para acessar alguma informação em específico.
  • Gere um access_token fazendo uma requisição no Token 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.

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.

Atenção que somente alguns endpoints permitem o uso da autenticação usando este fluxo.