Mi chiedevo se potessi esaminare questo schema di autenticazione per l'applicazione web.
=== Pagina di accesso ===
Verifica delle credenziali = > Problemi del server JWT = > Memorizzato in un cookie
JWT contiene:
exp: timestamp
uid: UserID
HMAC-SHA512 Firma
Punti vendita Redis:
Chiave: UserID
Valore: SecretKey (inserito solo se non esiste)
=== Autenticazione delle richieste ===
JWT decodificato
$ uid = UserID
Redis gets:
Valore: SecretKey da
Chiave: $ uid
Verifica HMAC JWT utilizzando SecretKey
se verificato
se exp non scaduta
ALL OK
Quindi perché usare JWT quando questo è effettivamente uno schema di stato e non apolidi?
-
La verifica esegue solo una singola query su Redis, non è necessario eseguirne un'altra per ottenere l'ID utente
-
Non è necessario memorizzare SessionID per ogni sessione, Redis memorizza solo un record per sessioni illimitate di un determinato utente.
-
Non è necessario mantenere le sessioni scadute in Redis ed eliminarle.
-
Tutti i token di un singolo utente possono essere revocati in qualsiasi momento cambiando SecretKey
Per favore dimmi se è stupido o ci sono dei difetti di sicurezza quindi non attuare la merda.