Utilizzo da molto tempo la sessione passport JS
senza preoccuparmi seriamente dei problemi di sicurezza. Per il prossimo progetto ho pensato di sostituire session
con JWT
ma sorgono dubbi legati alla sicurezza mentre cerco di più su JWT
.
Quindi, se utilizzo JWT
per l'autenticazione, esistono due tipi di token, auth token
e refresh token
. Quando effettuo l'accesso, ottengo refresh token
e questo viene utilizzato per comunicare con il server di autenticazione per ricevere auth token
che verrà utilizzato per ottenere informazioni sensibili da data server
. Ma questo refresh token
che dovrebbe essere relativamente lungo vissuto rispetto a auth token
che è di breve durata per essere aggiornato da refresh token
dovrebbe essere memorizzato da qualche parte. Il suggerimento comune è stato localstorage
, ma un token che può generare un numero infinito di auth token
è esposto al lato client - questo non sembra sicuro.
Lo stesso vale per le sessioni. Quando archiviamo sessioni usando librerie come passport JS
. ID
(di solito) è serializzato in sessionStorage
. Poi un altro client può prendere la sessione serializzata e usarla per autenticare in un altro dispositivo (è vero?).
Quindi nessuno di questi due metodi sembra molto sicuro (se quello che ho detto sopra è corretto). Stiamo utilizzando JWT
e sessions
con i citati rischi per la sicurezza o sto comprendendo questo errore?