Flujo de credenciales del cliente
Flujo de autenticación por concesión de credenciales del cliente (client credentials flow)
La concesión de credenciales del cliente (client credentials flow) se utiliza cuando las aplicaciones solicitan un token de acceso para acceder a sus propios recursos, no en nombre de un usuario.
En Kobana este flujo se utiliza cuando la autenticación necesita realizarse por una aplicación OAuth registrada y aprobada en el sistema.
Bibliotecas
Hay bibliotecas OAuth2 para casi todos los lenguajes ya que es un protocolo ampliamente utilizado en la industria de software y por empresas como Google y Facebook.
Elige una biblioteca antes de comenzar.
Registro de la Aplicación
Para comenzar necesitas registrar tu aplicación. Te proporcionaremos un client_id y client_secret.
En este caso no es necesario que nos proporciones una URL de Redirección redirect_uri.
Endpoints
| Ambiente | URL |
|---|---|
| Sandbox | POST https://app-sandbox.kobana.com.br/oauth/token |
| Producción | POST https://app.kobana.com.br/oauth/token |
Resumen del funcionamiento
El flujo de credenciales del cliente solicita un token a partir de las credenciales de una aplicación registrada y aprobada. Para solicitar el token:
- Usa el
client_idyclient_secretque obtuviste de nosotros durante el registro para hacer la solicitud para solicitar un token. Opcionalmente incluye elscopepara acceder a información específica. - Genera un
access_tokenhaciendo una solicitud a laToken URLusando el tipo de permisoclient_credentials. - Usa el
access_tokenrecibido para hacer solicitudes a la API.
Solo algunos endpoints aceptan la autenticación de esta forma.
Paso a Paso detallado
1. Considerando la siguiente información:
* **Client ID** -> xxxxxxxxxx
* **Client Secret** -> yyyyyyyyyy
2. Realiza una solicitud POST a la dirección a continuación para recibir el token de acceso.
https://app-sandbox.kobana.com.br/oauth/token?grant_type=client_credentials&scope=write&client_id=xxxxxxxxxx&client_secret=yyyyyyyyyy
- Shell
- Ruby
curl -i \
-d 'grant_type=client_credentials&scope=write&client_id=xxxxxxxxxx&client_secret=yyyyyyyyyy' \
-H 'User-Agent: MyApp (myapp@example.com)' \
-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
Respuesta en caso de error:
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":"La autenticación del cliente falló debido a un cliente desconocido, la falta de inclusión de la autenticación del cliente, o un método no soportado de autenticación."}
Respuesta en caso de éxito:
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}
Puedes guardar este token de acceso por tiempo indefinido. El token no expira.
3. Ahora puedes usar el access_token para realizar llamadas a la API.
Atención que solo algunos endpoints permiten el uso de la autenticación usando este flujo.