Capisco che JWT sono token stateless che memorizzano le informazioni firmate sulla richiesta del cliente e vengono passati a un server tramite l'intestazione HTTP di autorizzazione.Perché abbiamo bisogno di JWT quando abbiamo sessioni client?
La mia domanda è, perché abbiamo bisogno di JWT quando abbiamo già sessioni client (https://github.com/mozilla/node-client-sessions)? Le sessioni client sono concettualmente le stesse. Si tratta di cookie che contenevano informazioni firmate che, una volta verificato, significa che il cookie non è stato mitigato. Inoltre, le sessioni client sono memorizzate in un cookie e passate tramite l'intestazione HTTP Cookie. È la stessa cosa usando solo parole diverse. Ho sbagliato?
Quindi, perché JWT è ancora in circolazione? Potrei capire che forse il punto è standardizzare il modo in cui funzionano i token di autenticazione, ma siamo andati d'accordo senza uno standard basato su ID di sessione (ogni implementazione ha fatto le cose a modo suo). Inoltre, perché il JWT non utilizza i cookie come mezzo di trasferimento. Con i cookie, non è necessario inviare esplicitamente l'intestazione corretta per ogni richiesta (semplificando le richieste Ajax).
Mi manca qualcosa?
Nota: Secondo i ragazzi di Stormpath qui (https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/) - I token JWT sono vulnerabili agli attacchi CSRF se memorizzato nei cookie. –
Certo, se si memorizza il JWT in un cookie e lo si utilizza per autenticare l'API, si torna con l'autenticazione implicita. I token JWT in genere non sono memorizzati nei cookie, ma inviati come token bearer nell'intestazione HTTP 'Authorization'. Vedi anche questo articolo: http://leastprivilege.com/2015/04/01/implicit-vs-explicit-authentication-in-browser-based-applications/ – MvdD