JWT: ¿Una solución para dejar que el token caduque después de un cierto tiempo de inactividad?

2

Tengo una aplicación web sin estado que utiliza un token JWT. Eventualmente vencerá, lo cual está bien, pero no quiero que caduque mientras el usuario está trabajando . En cambio, me gustaría que el token caduque después de un cierto tiempo de inactividad.

Digamos que mi token es válido por 60 minutos. ¿Puedo enviar un nuevo JWT en cada solicitud? De esa manera, mientras el usuario esté trabajando, su token será renovado (siempre que ya que hace una solicitud por hora), pero después de más de una hora de inactividad, el token caducará.

No quiero usar tokens de actualización con estado. Un temporizador en el lado del cliente eventualmente eliminaría el token tan pronto como caduque.

¿Me estoy perdiendo una falla importante con este enfoque? (excepto los impactos evidentes en el rendimiento debido a los accesos a bases de datos más frecuentes)

    
pregunta Tim 03.08.2017 - 16:57
fuente

1 respuesta

1

Los JWT son tokens comprobados de integridad de autodescripción. No están diseñados para el caso de uso que usted describió. Los JWT no pueden caducar a petición, ni puede extenderse su validez.

Lo que puedes hacer con estos tokens es emitir nuevos tokens, tal como lo describiste. Esto no invalidará los viejos. Terminarás generando muchos tokens que caducarán por sí mismos.

  

¿Me estoy perdiendo una falla importante con este enfoque?

Los JWT no están diseñados para una administración de sesiones en toda regla. Vienen con varias compensaciones. Uno de ellos es la incapacidad de actualizarlos o caducarlos a pedido. La solución que describiste funciona perfectamente. Escribí una breve publicación sobre gestión de sesión , que debería ayudarlo a decidir si realizar las concesiones.

En mi opinión, probablemente debería pasar al modelo de gestión de sesión "clásico". Admite tiempos de espera inactivos y tampoco terminarás con muchas "sesiones" (tokens).

    
respondido por el Daniel Szpisjak 03.08.2017 - 17:35
fuente

Lea otras preguntas en las etiquetas