Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

A la hora de gestionar una sesión deberemos tener en cuenta en nuestra aplicación cuándo debemos crearla, cuándo debemos usarla y cuándo debemos cargarla. El grafo que se muestra a continuación esquematiza el ciclo de vida que deben implementar los endpoints que requieran hacer uso de sesiones.

Estructura de base de datos

Cada aplicación de servicios en api.um.es tendrá que tener su propia tabla de sesiones que contendrá los siguientes campos:

  • ID: Será el valor del campo JTI que se encuentra en el token OAuth del usuario. Este valor es único por usuario por lo tanto identifica a la vez al usuario y a la sesión.
  • FECHA_EXPIRACION: Cuando expirará el token y, a su vez, la sesión del usuario. El tiempo de vida es fijo para el token OAuth y la sesión de usuario no podrá durar más que el token.
  • CONTENIDO_SESION: Un JSON con toda la información necesaria para restaurar la sesión.

Al mismo tiempo se deberá crear un JOB de base de datos que limpie esta tabla de las sesiones expiradas.

Detalle del ciclo de vida

Inicio de la sesión

La primera vez que el usuario acceda a la aplicación, si ésta requiere de sesión, la creará en el endpoint que reciba la acción de inicio del proceso del usuario. Este endpoint se deberá en cargar de: obtener los campos jti y exp del token OAuth ya validado, almacenar en la tabla de sesiones todos los datos requeridos y responder a la petición del frontend.

Desde el punto de vista del frontend la creación de sesiones, al basarse en el token OAuth, es totalmente transparente por lo que no afectará a las llamadas que se realicen.

Gestión de una petición que requiera sesión

El frontend llamará al servicio que requiera del backend pasándole el token OAuth y los parámetros que requiera dicha llamada. Una vez recibida esa petición en el endpoint y validado el token se extraerá el campo jti a partir del cual se recuperará la sesión del usuario en curso. En la lógica del endpoint se debe contemplar de manera explicita la recuperación de la sesión.

Una vez recuperado el JSON con los datos podrá ser mapeado a objetos java si se precisa y actuar en consecuencia. Tras realizar todas las acciones pertinentes, el endpoint deberá actualizar la sesión al estado que precise