Cos'è un JWT? Struttura, claim e decodifica

Cos'è un JWT

Cos'è un JWT? Struttura, claim e un decoder privato | We.Inc

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.

Domande frequenti

È sicuro decodificare un JWT online?

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 JWT è cifrato?

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.

In che formato sono exp e iat?

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.

Dovrei salvare un JWT in localStorage o in un cookie?

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.

Posso disconnettere un utente con un JWT?

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.

Le tre parti

Algoritmi di firma

Insidie che causano ancora violazioni

Decodificare e verificare nel codice

Decodificare un payload in JavaScript puro

Legge i claim senza verificarli. Va bene per mostrare un nome utente nella UI, mai per decidere l'accesso.

Verificare sul server con jose

jwtVerify controlla la firma, exp e nbf, e con queste opzioni anche l'emittente, l'audience e l'algoritmo ammesso.

Decoder JWT privato

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

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito