Definición de servicios Token digital
A continuación, describimos los endpoints que contiene cada servicio desarrollado para Token Digital:
Detalle de endpoints
El detalle que se muestra es el camino deseado (happy path) de los endpoints desarrollados.
El código esperado es un 200 + un body, en estos casos
Ejemplo de body - EnableToken (POST /tokens/key):
Body - Request
{
"deviceId": "15703c1c-352a-11ee-be56-0242ac120002",
"keyId": "05616256-352a-11ee-be56-0242ac120002",
"publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCR9+qdg/HrRLzgkbphCnQpN+NscOEY8vQO/M+/U4erX3ZK9IcV9MulLyY4faIBV2LeJpeUDzemFygjz/e+as6gKjbrJ7jHldl0stpfyUv6Se5iwC2wunevURLjnyk31Af9QtJr5KGsNrtyVzNYis92LGUY64tHEVNoL6DmrD/JJwIDAQAB",
"publicKeyAlgorithm": "RSA"
}
Body - Response
{
"seed": "PGh9l4M6kfEWQPSAlB2ELD9p1GTMZ/lQSzkBg2n/lhTOsZtNh2lvhoRkCCBnsGuZgjBGPIfHFye3yi/b5YUKl+2CA673Fg66WruKTU58ywk/rZYUKXOku2NI8PliZG9P9/nrgrZ75D5SxsuUv0DIj8A0WfdYu16PLFnH4MGhD6A="
}
Token-service
Gestiona la generación y validación del token digital
EnableToken (POST /tokens/key)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Habilita la autenticación de toquen digital basada en TOTP. Internamente el servicio genera y almacena una semilla usando HSM, la vincula al usuario y la retorna al cliente. | keyId: Clave de consulta de la cuenta deviceId: Identificador del dispositivo publicKeyAlgorithm: Algoritmo usado por el cliente para generar la clave pública publicKey: Clave pública generada por el cliente | seed: Semilla generada cifrada con la llave publica suministrada | 200: Generación exitosa. 403: keyId ya registrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles
|
DisableToken (DELETE /tokens/key)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Deshabilita la autenticación de token digital en caso de eliminación de cuenta o deseo del usuario mediante la eliminación del registro asociado al usuario en HSM. | keyId: Clave de consulta de la cuenta
| Result: Resultado de la operación | 200: Eliminación exitosa. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles.
|
RefreshToken (PUT /tokens/key)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Actualiza la semilla asociada a la cuenta del usuario generando una nueva y retornándola | keyId: Clave de consulta de la cuenta deviceId: Identificador del dispositivo publicKeyAlgorithm: Algoritmo usado por el cliente para generar la clave pública publicKey: Clave pública generada por el cliente | seed: Semilla generada cifrada con la llave publica suministrada | 200: Generación exitosa. 403: keyId ya registrada. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles
|
GenerateToken (POST /tokens/key/server-totp)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Genera token digital basado en TOTP | keyId: Clave de consulta de la cuenta. deviceId: Identificador del dispositivo.
| totp: token generado para ser enviado al cliente | 200: Generación exitosa. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles.
|
ValidateToken (POST /tokens/key/totp)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Valida token digital generado por el usuario en el tiempo definido para ello, verificando que corresponde a la misma semilla almacenada en HSM. | keyId: Clave de consulta de la cuenta. deviceId: Identificador del dispositivo. totp: Token generado por el cliente timeWindow: ventana de tiempo para validar totp | result: Resultado de la operación | 200: Generación exitosa. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles.
|
VerifyAccount (POST /tokens/account)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Verifica que la cuenta asociada a la calve de usuario se encuentre registrada en la base de datos de token digital. | keyId: Clave de consulta de la cuenta. | result: Resultado de la operación | 200: Generación exitosa. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles.
|
VerifyDevice (POST /tokens/device)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Valida el dispositivo enviado por el cliente para identificar si está registrado en la base de datos de token digital. | keyId: Clave de consulta de la cuenta. deviceId: Identificador del dispositivo. | result: Resultado de la operación | 200: Generación exitosa. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles.
|
https://fintechdigital.atlassian.net/browse/PALO-37
Token-activation-service
GenerateActivationKey (POST/activations/activation-keys)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Genera el token de activación | keyId: Clave de consulta de la cuenta.
| activationToken: Token para ser enviado al dispositivo | 200: Generación exitosa. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles.
|
Enroll (POST /activations/enrollment)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Verifica el token de activación y si es válido | keyId: Clave de consulta de la cuenta deviceId: Identificador del dispositivo activationToken: Token para ser enviado al dispositivo. publicKeyAlgorithm: Algoritmo usado por el cliente para generar la clave pública. publicKey: Clave pública generada por el cliente. | seed: Semilla generada cifrada con la llave publica suministrada | 200: Generación exitosa. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles.
|
HSM-adapter
createKey (POST /hsm-adapter/keys)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Genera una clave criptográfica usando el módulo HSM, la almacena y la retorna | keyId: Identificador de la clave * seedAlgorithm: Algoritmo a usar para generar clave publicKeyAlgorithm: Algoritmo usado por el cliente para generar la clave pública publicKey: Clave pública generada por el cliente | clientKey: Clave generada cifrada con la llave publica suministrada. serverKey: Clave cifrada en AES256 para ser almacenada en la base de datos. | 200: Generación exitosa. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles.
|
validateTotp (GET /hsm/keys/totp)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Verifica si se ha registrado una clave con el identificador suministrado | serverKey: Semilla cifrada en AES256 totp: TOTP a validar timeWindow: ventana de tiempo para validar TOTP | result: Resultado de la operación | 200: Generación exitosa. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles.
|
GenerateTotp (POST /hsm/keys/totp)
Descripción | Request | Response | HTTP Codes |
---|---|---|---|
Genera un TOTP para la semilla suministrada | serverKey: Semilla cifrada en AES256
| totp: Time based one time password | 200: Generación exitosa. 404: Cuenta no encontrada. 406: Parámetros de solicitud incorrectos. 408: Tiempo de espera excedido. 500: Servicios no disponibles.
|
Secuencia de servicios
Orden de despliegue
Aunque no hay dependencia entre servicios, es recomendable desplegarlos en el siguiente orden para realizar las pruebas de cada uno: