Me preguntaba si podría revisar este esquema de autenticación para la aplicación web.
=== Página de inicio de sesión ===
Verificación de credenciales = > Problemas del servidor JWT = > Almacenado en una cookie
JWT contiene:
exp: timestamp
uid: ID de usuario
Firma HMAC-SHA512
Redis tiendas:
Clave: UserID
Valor: SecretKey (solo se inserta si no existe)
=== Autenticación de solicitudes ===
JWT descodificado
$ uid = ID de usuario
Redis obtiene:
Valor: SecretKey de
Clave: $ uid
Verificación JWT HMAC mediante SecretKey
si se verifica
si exp no ha caducado
TODO BIEN
Entonces, ¿por qué usar JWT cuando este es realmente un esquema con estado y no apátrida?
-
La verificación realiza solo una consulta a Redis, no hay necesidad de hacer otra para obtener el ID de usuario
-
No es necesario almacenar SessionID para cada sesión, Redis almacena solo un registro para sesiones ilimitadas de un usuario determinado.
-
No es necesario mantener las sesiones caducadas en Redis y eliminarlas.
-
Todos los tokens de un solo usuario pueden ser revocados en cualquier momento cambiando SecretKey
Por favor, dime si es estúpido o si hay fallas de seguridad, así que no implemento basura.