OAuth M2M

Oauth es una nueva forma de autenticación que se habilitó para acceder vía API, funciona bajo el protocolo OAuth 2.0 Machine to Machine (M2M) utilizando Auth0 como proveedor. A continuación se detalla una guía para su uso.

¿Por qué usar OAuth?

  • Mayor seguridad: La aplicación no necesita manejar ni almacenar credenciales de usuarios, reduciendo el riesgo de filtraciones.
  • Uso de estándares de la industria: OAuth 2.0 es un protocolo ampliamente adoptado, lo que garantiza compatibilidad, buenas prácticas y soporte a largo plazo.
  • Autenticación centralizada: La autenticación es gestionada por Auth0, permitiendo un control unificado de accesos, permisos y políticas de seguridad.
  • Uso de tokens con expiración: Los Access Tokens tienen una validez limitada, lo que reduce el impacto en caso de exposición.
  • Escalabilidad: Facilita la autenticación entre múltiples servicios y APIs sin necesidad de compartir credenciales.
  • Integración simplificada con APIs y API Gateways: Los tokens pueden ser validados directamente por servicios backend o gateways como Kong, sin lógica adicional de autenticación.
  • Reducción de complejidad en el desarrollo: El manejo de autenticación, seguridad y sesiones es delegado a un proveedor especializado.

¿Cómo funciona la autenticación con OAuth?

Para consumir la API, se utiliza el protocolo OAuth 2.0, el cual permite obtener un token de acceso seguro que debe ser enviado en cada request.

El flujo funciona de la siguiente manera:

  • El cliente recibe un conjunto de credenciales de Auth0, compuestas por un client_id y un client_secret.
  • Utilizando estas credenciales, el cliente debe realizar una petición al endpoint de autenticación de Auth0. Auth0 se encarga de validar las credenciales y, si son correctas, genera un Access Token (JWT) con un tiempo de expiración limitado.
  • Como resultado, el cliente obtiene un Bearer Token, el cual representa su autorización para consumir la API.
  • Para acceder a la API de Toku (api.trytoku.com), el cliente debe incluir este token en el header Authorization de cada request, utilizando el siguiente formato:
Authorization: Bearer <access_token>
  • La API validará el token recibido y, si es válido, permitirá el acceso al recurso solicitado.a

Todo el proceso de validación de credenciales y generación del token es gestionado por Auth0, un proveedor externo que implementa los estándares de seguridad definidos por OAuth 2.0.

Guía para activar OAuth

Siga los siguientes pasos para habilitar y utilizar autenticación mediante OAuth:

1. Solicitar habilitación

Contactar a la contraparte operativa de Toku para solicitar la habilitación de OAuth para su organización.

2. Recepción de credenciales

Una vez habilitado OAuth:

  • Si posee autenticación mediante API Key, se deshabilitará la autenticación mediante API Key.
  • Se le entregarán nuevas credenciales de autenticación:
    • client_id
    • client_secret

Estas credenciales le permitirán solicitar tokens de acceso a través de Auth0.

3. Solicitar Access Token a Auth0

Para solicitar los JWT se debe realizar la solicitud directamente a Auth0

Para obtener un Access Token (JWT), debe realizar una petición HTTP POST al endpoint de Auth0:

curl --request POST \
  --url https://toku-prod.us.auth0.com/oauth/token \
  --header 'content-type: application/json' \
  --data '{
    "client_id":"<client_id>",
    "client_secret":"<client_secret>",
    "audience":"https://toku-prod.us.auth0.com/api/v2/",
    "grant_type":"client_credentials"
  }'

Auth0 validará las credenciales y retornará un Access Token con tiempo de expiración limitado.

Utilizar el token para consumir la API

Una vez obtenido el Access Token, podrá consumir la API de Toku incluyendo el token en el header Authorization de cada request:

Header:

Authorization: Bearer <access_token>

La API validará el token y permitirá el acceso a los recursos autorizados.