Actualmente estoy creando una API REST que se usará para una aplicación web y móvil. La autenticación a la API se realizará utilizando Tokens web JSON .
Al usar JWT, podemos usar el reclamo exp
para que expire el token después de un tiempo específico. Esto, combinado con la reclamación jti
es útil para evitar ataques de reproducción, y algo que se integrará en nuestra aplicación. Sin embargo, para comodidad del usuario, no queremos seguir pidiéndoles que inicien sesión con cada solicitud o después de intervalos cortos de 30 minutos.
Por lo tanto, estoy pensando en la siguiente situación:
- El usuario inicia sesión con su dirección de correo electrónico y contraseña
- El servidor devuelve un JWT con una caducidad en 1 hora
- El cliente realiza otra solicitud a la API, pasando el JWT en el encabezado
- Si el JWT es válido, la API devuelve los datos solicitados y otro JWT, que nuevamente caduca en 1 hora
Si el cliente no realiza más solicitudes dentro del tiempo de vencimiento de 1 hora asignado, una solicitud posterior le pedirá que vuelva a iniciar sesión.
Mi pregunta: ¿es esta la mejor solución de intercambio entre usabilidad y prevención de ataques de repetición?