¿Es una buena estrategia actualizar un token JWT caducado?

25

Si entiendo las mejores prácticas, JWT generalmente tiene una fecha de caducidad que es de corta duración (~ 15 minutos). Entonces, si no quiero que mi usuario inicie sesión cada 15 minutos, debo actualizar mi token cada 15 minutos.

Necesito mantener una sesión válida durante 7 días (punto de vista de UX), así que tengo dos soluciones:

  • use el token web de json de larga duración (1 semana) - ¿mala práctica?
  • obtener un nuevo token web json después de que caduque el anterior (JWT 15min, actualización permitida durante 1 semana)

Estoy forzando el uso de HTTPS.

El JWT standard no habla sobre la actualización de tokens. ¿Es una buena estrategia actualizar una ficha caducada?

    
pregunta Guillaume Vincent 03.04.2016 - 13:09
fuente

4 respuestas

18

La actualización de un token se realiza para confirmar con el servicio de autenticación que el titular del token still tiene derechos de acceso. Esto es necesario porque la validación del token se realiza a través de medios criptográficos, sin la necesidad de contactar con el servicio de autenticación. Esto hace que la evaluación de los tokens sea más eficiente, pero hace que sea imposible retraer los derechos de acceso durante la vida útil de un token.

Sin una actualización frecuente, es muy difícil eliminar los derechos de acceso una vez que se han otorgado a un token. Si obtiene la vida útil de un token a la semana, es probable que necesite implementar otros medios para manejar, por ejemplo, la eliminación de una cuenta de usuario, el cambio de una contraseña (u otro evento que requiera el inicio de sesión) y un cambio en los permisos de acceso. para el usuario.

Así que quédate con los frecuentes intervalos de actualización. Una vez cada 15 minutos no debería ser suficiente para dañar el rendimiento de su servicio de autenticación.

    
respondido por el Neil Smithline 03.04.2016 - 20:50
fuente
8

Debes actualizar el token cada 15 minutos, pero no necesitas permitir que el usuario se autentique nuevamente para hacerlo.

  • Después de la autenticación, reparta un JWT que sea válido por 15 minutos.
  • Deje que el cliente actualice el token cuando caduque. Si esto se realiza en un plazo de siete días, se puede obtener un nuevo JWT sin volver a autenticarse.
  • Después de que una sesión esté inactiva durante siete días, requiere autenticación antes de entregar un nuevo token JWT.

De esta manera, por ejemplo, puede requerir autenticación después de que un usuario cambió su contraseña.

    
respondido por el Sjoerd 12.04.2016 - 11:10
fuente
5

Puede configurar el token de acceso durante 7 días cuando el usuario se autentique. Sin embargo, no será la mejor práctica desde el punto de vista de la seguridad, ya que sería más difícil revocar el acceso si fuera necesario. Por supuesto, depende de sus necesidades, pero la mejor práctica es también obtener el token de actualización y utilizarlo para actualizar el token de acceso en cada período.

    
respondido por el Igor Liv 04.04.2016 - 15:49
fuente
2

Mi configuración es ...

Cuando alguien inicie sesión, genere un JWT con una exp de 5 días, con un campo personalizado, use Exp de 10 minutos

Cuando alguien realiza una solicitud autenticada, useExp en el futuro, a menos que solicite un nuevo token

Cuando alguien realiza una solicitud autenticada de un token nuevo, el useExp puede ser en el pasado, pero la exp debe ser en el futuro. Si es válido, les generaré un token nuevo como si acabaran de iniciar sesión.

Si ambas exp están en el pasado, deben realizar una solicitud no autenticada para iniciar sesión con su correo electrónico y contraseña.

    
respondido por el Michael Baldry 14.09.2017 - 14:43
fuente

Lea otras preguntas en las etiquetas