Gallery
Documentación Front-End
Share
Explore
Documentación Front-End
Libreria de APIs

icon picker
Solicitud de Token y ejecución de API con JWT.

Login y Generación de Token JWT

Desde el FrontEnd se debe enviar en formato JSON a Servidor BackEnd la siguiente solicitud:
{
"login_usuario": "nombre de usuario",
"password_usuario":"Contraseña de usuario"
}

Si la respuesta es correcta, el servidor deberá responder:
Desde Base de Datos a BackEnd:
{
"usuario_valido": true, //devuelve true si el usuario se autentica correctamente
"primer_ingreso": true, // indica si este es el primer ingreso del usuario al sistema
"usuario": {
"id":0, // id del usuario
"nombres": "", // nombre del usuario
"primer_apellido": "", // primer apellido del usuario
"segundo_apellido": "", // Segundo apellido del usuario
"correo": "", // correo institucional del usuario
"telefono": "+56...", // teléfono del usuario: (cod País)(cod Ciudad)(numero)
"area": "", // area donde trabaja el usuario
"departamento": "", // departamento al cual pertenece el usuario
"cargo": "", // cargo que desenpeña el usuario
"imagen": "", // imagen de Avatar del usuario
"bloqueo":false,
"tipo_usuario": 0 // indica que tipo de usuario es (1 = interno, 2 = externo)
"id_tipo_usurio": 1,
"nombre_tipo_usuario": "INTERNO",
"intentos": 0,
}
}

Desde BackEnd a FrontEnd

{
"token": "${Token}", // token en Formato JWT
"refresh_token": "${refresh_token}", // token de Refresco JWT
"usuario_valido": true,
"primer_ingreso": true,
"usuario": {
"nombres": "",
"primer_apellido": "",
"segundo_apellido": "",
"correo": "",
"telefono": "+56...",
"area": "",
"departamento": "",
"cargo": "",
"imagen": "",
"tipo_usuario": ""
}
}

El token generado será con
donde el payload deberá contener la siguiente informacion:
{
"id_usuario": "111",
"roles": [
{
"id_rol": 1,
"nombre_rol": "Administrador"
}
]
}

Si la respuesta es un error, el servidor deberá responder con el siguiente JSON:

{
"usuario_valido":false,
"error":{
"titulo_error":"",
"mensaje_error":"",
"codigo_error":"",
"descripcion_error":"",
}
}

Procedimiento de Consultas API protegidas con JWT

Siempre deberá ser envia la consulta API con el header :
Header -> "Authorization Bearer ${token}"

Si el token es correcto, el sistema debe generar la siguiente respuesta :
{
"$ENTIDAD":{ // corresponde a la entidad consultada ( usuarios, roles, minutas, etc...)
...
}
}

Si el token es incorrecto el servidor debiese responder :
estado HTTP unouthorized (401)
{
{
"usuario_valido":false,
"error":{
"titulo_error":"Error de autenticacion",
"mensaje_error": ${mensaje de sistema},
"codigo_error":"401",
"descripcion_error":${mensaje de sistema},
}
}

Actualziacion del token de Acceso:

En el caso de que el token esté expirado, el sistema debe realizar una consulta al servidor para realizar el refresco del token. Si el token se refresca correctamente, el sistema deberá guardar el nuevo token y continuar con la operación. En lo posible, todo este proceso debe ser agnóstico para el usuario.
Respuesta Token expirado
estado HTTP unouthorized (401)
{
{
"usuario_valido":false,
"error":{
"titulo_error":"Error de autenticacion",
"mensaje_error": ${mensaje de sistema},
"codigo_error":"401",
"descripcion_error":${mensaje de sistema},
}
}


En el caso de que el token no pueda ser refrescado correctamente el sistema debera Informar al usuario a travez de un error indicando que el proceso de “refresh” ha fallado, para identificar de manera facil en que parte el proceso ha fallado y se debe enviar al usuario a la pagina de “No Autorizado”.
estado HTTP "el que corresponda"
{
"status": "${el estado que corresponda}",
"data": {
"code": "${el estado que corresponda}",
"message": "No se ha podido refrescar el token de acceso, favor loguearse nuevamente, si el error persiste, favor contactarse con la mesa de ayuda"
}
}

Manejo de Errores API

Si cualquier respuesta de api genera error el sistema debera responder:
{
"error": {
"titulo_error": "", // titulo que identifique el error de manera clara
"mensaje_error": "", // Mensaje descriptivo del error ocurrido
"codigo_error": "", // El codigo que identifique al error
"descripcion_error": "" // mensaje de error enfocado al area de soporte para analisis
}
}

En el caso de que el error sea no controlado el sistema deberia manejar los errores de esta manera:
Atributo
Base de Datos
BackEnd -> BD
FrontEnd -> BackEnd
1
titulo_error
Error en base de datos
Error al conectarse a la base de datos
Error de conexion a Servidor
2
mensaje_error
Se ha producido un error en base de datos
Se ha producido un error al conectarse a la base de datos
Se ha producido un error al conectarse al servidor
3
codigo_error
“Codigo de Error en BD”
"Codigo de Error en BackEnd”
"Codigo de Error en FrontEnd”
4
descripcion_error
“Mensaje de sistema”
“Mensaje de sitema”
"Mensaje de sistema”
5
There are no rows in this table


Share
 
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.