La differenza principale è la dimensione della memoria di sessione e di ricerca lavoro richiesto dal server:
Sul lato server, negozi di JWT un singolo tasto in memoria (o nel file di configurazione) - chiamato chiave segreta. Quella chiave ha due scopi, consente di creare nuovi token crittografati e funziona anche come una chiave master che "apre tutte le serrature" - o nella vita reale verifica tutti i token. Di conseguenza il server risponde molto più velocemente alle richieste di autenticazione, perché non importa se hai due o due milioni di utenti loggati - lo stesso numero di record (uno, quella chiave del server) sarà usato per autenticare tutte le richieste del client .
Autenticazione tradizionale che memorizza le sessioni utente in un database, crea un record nel db per ogni singolo utente, che risulta in chiavi multiple. Quindi, se si hanno due milioni di utenti connessi, il server creerà due milioni di record e con ogni richiesta del client il server dovrà individuare il record della sessione pertinente nel database *.
JWT lascia il lato client per archiviare e gestire l'intera sessione/oggetto utente. In realtà ha molto più senso perché ogni client gestisce solo i propri dati, quindi non provoca un sollevamento pesante per il lato client.
Per quanto riguarda ciò che hai scritto nel tuo ultimo paragrafo, non sono solo le chiamate db che salviamo qui. JWT è in realtà molto più scalabile a causa della sua natura indipendente e leggera, non fallisce quando le richieste di autenticazione si accumulano e consente al server di gestire l'autenticazione su più dispositivi e servizi senza gestire le sessioni sul lato server.
Sicurezza saggio, però, le sessioni di db ha senza dubbio il sopravvento: possono essere più sicuro perché di che la latenza, e sono anche meno vulnerabili agli dirottamento di sessione dopo il logout dell'utente.
* Il metodo delle sessioni memorizzate in db può essere ottimizzato con un caching efficace e memorizzando solo l'id di sessione (in contrapposizione all'intero oggetto utente) in un server chiave/valore veloce come Redis. Detto questo, sceglierei comunque il metodo JWT su db per la maggior parte dei casi.
Questi sono benefici che JWT fornisce sull'utilizzo dei cookie, lo capisco, ma chiedo dei token di sessione memorizzati in un db e generati da un server. –
Inoltre, questi sono token (sia JWT che opachi) che beneficiano dei cookie. –