I JSON Web Token spiegati: header, payload e firma, i sette claim registrati di RFC 7519, le insidie di sicurezza e un decoder che non invia mai il tuo token da nessuna parte.
Un JWT (JSON Web Token) è una stringa compatta e sicura per gli URL, formata da tre parti base64url separate da punti: un header che indica l'algoritmo, un payload di claim come sub ed exp, e una firma. Chiunque può decodificare e leggere il payload; solo la firma, verificata con la chiave giusta, dimostra che nessuno lo ha modificato.
Nomi dei claim registrati (RFC 7519, sezione 4.1)
Incolla un token nel decoder qui sotto per vederne header e payload, con ogni claim registrato spiegato e ogni timestamp trasformato in una data leggibile. La decodifica avviene nel JavaScript di questa pagina, quindi il token non viene mai caricato online. Questo è importante, perché un token valido è una chiave per l'account di qualcuno.
Solo se la decodifica avviene nel tuo browser. Il token è una credenziale: chiunque ne possieda uno valido può chiamare l'API come quell'utente finché non scade. Il decoder di questa pagina gira in locale e non invia nulla, ma per i token di produzione l'abitudine più sicura è decodificare solo token di test.
Un normale JWT firmato (un JWS) no. Il suo payload è solo codificato in base64url, cosa che chiunque può invertire. I token cifrati esistono come JWE, con cinque parti separate da punti invece di tre, ma la maggior parte dei token di login e API è firmata, non cifrata.
NumericDate: secondi interi dal 1970-01-01T00:00:00Z, ignorando i secondi intercalari. Date.now() di JavaScript restituisce millisecondi, quindi dividi per 1000 prima di confrontare, un bug molto comune.
Qualsiasi script in esecuzione sulla pagina può leggere localStorage, quindi un solo bug di cross-site scripting può rubare il token. Un cookie HttpOnly, Secure, SameSite lo tiene lontano dagli script, al costo di dover gestire il CSRF. Molti team scelgono il cookie per le sessioni nel browser.
Non da solo, perché il token resta valido fino a exp. Usa scadenze brevi più refresh token che puoi revocare, oppure tieni una lista di blocco dei valori jti per i token che devono scadere prima.
Legge i claim senza verificarli. Va bene per mostrare un nome utente nella UI, mai per decidere l'accesso.
jwtVerify controlla la firma, exp e nbf, e con queste opzioni anche l'emittente, l'audience e l'algoritmo ammesso.
Incolla un token per leggerne header e payload. La decodifica avviene nel tuo browser; il token non viene inviato, salvato né registrato.
Chi ha emesso il token
A chi si riferisce il token, di solito un id utente
Quali destinatari devono accettarlo
Rifiutalo a partire da questo momento
Rifiutalo prima di questo momento
Quando è stato creato il token
Un id univoco, utile per impedirne il riuso
JWT
Carica un token di esempio
Cancella
Header
Payload
Firma (non verificata qui)
Claim spiegati
Claim
Valore
Significato
Claim personalizzato
Un JWT firmato ha 3 parti separate da punti; questo ne ha {n}.
5 parti indicano un JWE cifrato, che non si può leggere senza la chiave.
La parte {n} non è JSON base64url valido.
Scaduto {v}
Valido fino a {v}
Non valido fino a {v}
alg è none: questo token non ha firma e deve essere rifiutato.
Decodificato in locale. Nulla lascia questa pagina.
Inizia gratis · Nessuna carta di credito richiesta