¿Por qué se usan tokens de actualización?

8

Leyendo sobre JWT Veo que es una práctica común incluir un token de actualización junto con el token de vida corta. Por lo general, parece que tiene un token de corta duración que dura un breve período de tiempo, como 15 minutos, y un token de actualización que renueva este token cuando caduca. Según tengo entendido, si el token de vida corta ha caducado, la aplicación debe verificar que el token de actualización no haya sido revocado (verifique la base de datos). Si no lo ha hecho, emita un nuevo token de corta duración. Estoy tratando de entender por qué no tener un solo token de corta duración.

Supongamos que el token jwt contiene el nombre de usuario del usuario que usa el token y caduca en 1 hora. Cuando caduque, no puede mi servidor de aplicaciones verificar este token para asegurarse de que realmente haya caducado y haya sido emitido por mí, si es así, verifique (dentro de la base de datos) que este usuario pueda renovar y renovar su token. ¿No es esto esencialmente lo mismo que tener un token de actualización, pero es un poco más simple ya que el usuario solo tiene 1 token en lugar de 2? ¿No puedo ver la ventaja de tener un token de actualización?

    
pregunta user2924127 08.03.2016 - 01:12
fuente

1 respuesta

6

Supongo que está utilizando alguna solución de autenticación patentada, que utiliza JWT y tokens de actualización pero no tiene nada que ver con OpenID Connect.

Los tokens JWT son sin estado, los tokens de actualización generalmente son de estado completo.

Debería ver las ventajas y desventajas de los tokens de estado frente a los sin estado:

  • Los tokens sin estado se pueden validar sin una llamada adicional a la base de datos / servicio (por lo que son más rápidos / fáciles de validar) pero es imposible revocarlos (no se puede cerrar la sesión).
  • Los tokens de estado pueden ser revocados (cierre de sesión confiable) pero deben ser validados a través de la llamada DB / Service cada vez (para que sean más lentos).

Los tokens JWT de larga duración constituirían un mayor riesgo de seguridad: la ventana de ataque sería larga si se roba el token.

En combinación con los tokens de actualización, obtienes la solución en algún punto intermedio: la validación es rápida y el cierre de sesión es más confiable.

Dependiendo de dónde se use el token (cliente vs servidor), podría implementar la actualización automática. Sin embargo, para tal solución propietaria, de hecho podría usar un solo token con un caché de validación si es necesario debido a razones de rendimiento.

    
respondido por el Vilmantas Baranauskas 08.03.2016 - 15:01
fuente

Lea otras preguntas en las etiquetas