onesait Platform está preparada para trabajar con autenticación OAuth2. A continuación se explica el flujo de gestión de los tokens Oauth2.
1. Parametros de configuración Oauth2 de los Realms
A la hora de crear o modificar un Realm, existen dos parámetros que se pueden configurar asociados a los tokens de autenticación dentro de cada Realm.
- Clave (Secret): Se utilizará para la autenticación de los clientes.
- Tiempo de validez de token (S): periodo de tiempo configurable (en segundos) durante el que un token generado es válido.
Son atributos opcionales. En caso de no informarse, tomarán valores por defecto definidos en el despliegue de la plataforma (onesaitplatform y 43200 (12 horas)).
2. Generación de Tokens
Hay un endpoint que permite generar tokens Oauth2. Su URL es:
https://www.onesaitplatform.online/oauth-server/oauth/token
Se trata de una petición POST, y debe incluir:
- Headers:
- Authorization: (client:secret b64)
- Content-Type: application/x-www-form-urlencoded
- Body:
- grant_type: password (para peticiones User/Password)
- username: id de usuario
- password: contraseña de usuario
- clientId: id del cliente que solicita el token
- scope: ambito del token
Utilizando Postman para realizar esta petición:
La respuesta tendrá esté formato:
A destacar:
- access_token: Token de acceso
- refresh_token: Token de refresco (de un solo uso)
- expires_in: Tiempo restante de validez (segundos)
- authorities: Roles asignados al usuario
3. Chek Token
Servicio que verifica la validez de un token. El endpoint sería:
https://www.onesaitplatform.online/oauth-server/openplatform-oauth/check_token
La petición debe incluir:
- Headers:
- Authorization: (client:secret b64)
- Parameter:
- token: token a validar
Usando postman:
...
Si el token es válido, se obtendrá una respuesta de la forma:
A destacar:
- principal/name: usuario para el que se generó el token.
- exp: Fecha de expiración.
- client_id: Cliente para el que se generó el token.
- authorities: Roles asignados al usuario en el Realm.
4. Refresh Token
Servicio que refresca el token de acceso para obtener uno nuevo. El endpoint será:
https://www.onesaitplatform.online/oauth-server/oauth/token
(el mismo que para obtener un nuevo token, cambia el atributo grant-type).
La request debe incluir:
- Headers:
- Authorization: (client:secret b64)
- Content-Type: application/x-www-form-urlencoded
- Body:
- grant_type: refresh_token (indica la operación)
- refresh_token: token de refresco obtenido cuando se generó el token de acceso
Utilizando Postman:
El resultado tendrá la misma estructura que cuando se hace una petición de generación de token.
El token de refresco es de un solo uso. Después de utilizarlo, se proporcionará uno nuevo junto al nuevo token de acceso.
5. Revoke Token
Como servicio adicional, se incluye un servicio de revocación de token. Permite revocar un token de acceso asociado a un usuario determinado.
El endpoint será:
https://www.onesaitplatform.online/oauth-server/openplatform-oauth/revoke_token
La petición debe incluir:
Headers:
- Authorization: (cliente:secret en b64)
- Content-Type: application/x-www-form-urlencoded
Query Param:
- token: (token de acceso a revocar)
En Postman:
El resultado indicará que el token de acceso ha dejado de ser válido.