En mi arquitectura actual, mi backend emite un JWT de vuelta al cliente (móvil). La razón principal para optar por un JWT es la autenticación sin estado, es decir, el servidor no necesita almacenar datos en la sesión / base de datos, lo que significa menos problemas de sobrecarga y escalabilidad.
Una estrategia común es iniciar sesión en el usuario y devolver el JWT de corta duración (aproximadamente 15 minutos, mientras leo), junto con un token de actualización que el usuario almacena en el cliente. El token de actualización nunca caduca y solo se puede revocar. El propósito sería evitar el envío de un JWT de larga duración a través del cable demasiadas veces y solo actualizar el JWT cuando caduque; cuando un atacante consigue el token de corta duración, la ventana de tiempo de ataque es breve.
El problema es que esta historia parece estar llena de agujeros cuando lo pienso. Por favor ayúdame a aclarar.
- Un tiempo de caducidad de 15 minutos significaría que algunos usuarios también podrían enviar un token de actualización a través del cable 10 veces / día. Esa podría ser una frecuencia tan alta como la que haría un usuario con un token de acceso regular y de corta duración. Por lo tanto, el argumento del token de actualización parece cuestionable.
- Si cuestionas SSL, entonces no sé por qué tantas empresas usan autenticación básica. Para usar JWT con token de actualización, probablemente deberías usar HTTPS de todos modos.
- ¿Cuál es el beneficio de JWT si luego necesita almacenar un token de actualización en la sesión / base de datos para emitir un nuevo jwt al cliente? En este caso, el token de actualización actuaría como una especie de contraseña (aunque me doy cuenta de que no es exactamente la misma) que se almacena en el servidor. Esto hace que el flujo de autenticación sea esencialmente estable y parece eliminar el beneficio de usar JWT por completo. Además, con un breve período de caducidad de 15 minutos, significa que tiene una gran cantidad de gastos generales, por lo que necesita obtener un token de acceso actualizado casi cada vez que verifica su teléfono si hay un intervalo de 30 minutos. No solo existe la sobrecarga para verificar el token de actualización almacenado, sino que también debe verificar si la ficha de actualización está en la lista negra, lo que significa otra sobrecarga de rendimiento. (Editar: la última comprobación se puede eliminar simplemente eliminando el token de actualización de la base de datos cuando se revoca).
- Un token de actualización requiere varios viajes de ida y vuelta al servidor:
- Se devuelve 401 cuando el token de acceso ha caducado (servidor de recursos).
- Es necesario solicitar un nuevo token de acceso en el servidor de autenticación
- La solicitud al servidor de recursos debe reiniciarse.
¿Puede alguien explicarme lo que me estoy perdiendo aquí?