Sono l'autore di una libreria di nodi che gestisce l'autenticazione in modo abbastanza approfondito, express-stormpath , quindi inserirò alcune informazioni qui.
Prima di tutto, i JWT in genere NON sono crittografati. Mentre esiste un modo per crittografare i JWT (vedi: JWE ), questo non è molto comune nella pratica per molte ragioni.
Successivamente, qualsiasi forma di autenticazione (utilizzando o meno JWT) è soggetta agli attacchi MitM (man-in-the-middle). Questi attacchi si verificano quando un utente malintenzionato può VISUALIZZARE il traffico della TUA RETE mentre si effettuano richieste su Internet. Questo è ciò che il tuo ISP può vedere, l'NSA, ecc.
Questo è ciò che SSL aiuta a prevenire: crittografando il tuo traffico di RETE dal tuo computer -> alcuni server durante l'autenticazione, una terza parte che sta monitorando il tuo traffico di rete NON può vedere i tuoi token, password o cose del genere a meno che non siano in qualche modo in grado per ottenere una copia della chiave SSL privata del server (improbabile). Questo è il motivo per cui SSL è OBBLIGATORIO per tutte le forme di autenticazione.
Diciamo, tuttavia, che qualcuno è in grado di sfruttare il tuo SSL ed è in grado di visualizzare il tuo token: la risposta alla tua domanda è che SÌ , l'aggressore sarà in grado di utilizzare quel token per impersonare te e fare richieste al tuo server.
Ora è qui che entrano in vigore i protocolli.
I JWT sono solo uno standard per un token di autenticazione. Possono essere usati praticamente per qualsiasi cosa. Il motivo per cui i JWT sono in qualche modo interessanti è che puoi incorporare informazioni extra in essi e puoi confermare che nessuno ha incasinato (firma).
TUTTAVIA, i JWT stessi non hanno nulla a che fare con la "sicurezza". A tutti gli effetti, i JWT sono più o meno la stessa cosa delle chiavi API: solo stringhe casuali che usi per autenticarti su qualche server da qualche parte.
Ciò che rende la tua domanda più interessante è il protocollo utilizzato (molto probabilmente OAuth2).
Il modo in cui OAuth2 funziona è che è stato progettato per fornire ai client token TEMPORANEI (come i JWT!) Per l'autenticazione SOLO PER UN BREVE PERIODO DI TEMPO!
L'idea è che se il token viene rubato, l'attaccante può usarlo solo per un breve periodo di tempo.
Con OAuth2, devi autenticarti di nuovo con il server ogni tanto fornendo il tuo nome utente / password o le credenziali API e quindi ottenere un token in cambio.
Poiché questo processo si verifica di tanto in tanto, i token cambieranno frequentemente, rendendo più difficile per gli aggressori impersonare costantemente senza affrontare grossi problemi.
Speriamo che questo aiuti ^^