Che cosa fa questo strumento
Entra un token, escono la sua intestazione e il suo payload in JSON.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.SflKxwRJSMeKKF2QT4fwpM
{
"header": {
"alg": "HS256",
"typ": "JWT"
},
"payload": {
"sub": "1234567890"
}
}
I due segmenti sono in Base64URL, che è una codifica e non una cifratura: chiunque abbia il token può leggerli, qui o con tre righe di codice. La firma non viene mostrata da nessuna parte perché non c’è nulla da leggerci — è una prova, e provare richiede una chiave.
Decodificare non è verificare
Il payload qui sopra dice che il soggetto è 1234567890. Che lo dica non prova niente: cambia il testo, ricodificalo, e avrai un token che si decodifica altrettanto pulito e che fallisce la verifica. Questa pagina non può accorgersene, e nessun decodificatore può — è proprio a questo che serve la firma.
Quindi: un decodificatore serve a vedere che cosa pretende un token, il tuo server e la tua chiave servono a decidere se crederci. Se un giorno i due si contraddicono, ha ragione la firma.
Tre segmenti, e soltanto tre
Not a JWT: expected header.payload.signature, found 2 segments
Un JWT compatto ne ha esattamente tre. Due o quattro venivano decodificati comunque: un token troncato da un copia e incolla tornava con un’aria perfettamente sana — un difetto trovato scrivendo questa pagina e corretto. Cinque segmenti sono un altro formato: un JWE, il cui payload è cifrato anziché codificato, e il messaggio lo dice invece di fallire sulla decodifica.
Leggere il payload
- Gli identificatori numerici lunghi sopravvivono. Un
subdi venti cifre passa cifra per cifra, invece di essere arrotondato a un vicino da un numero JavaScript. exp,iatenbfsono timestamp Unix. In secondi, non in millisecondi, come vuole la specifica. Lo strumento dei timestamp di questo sito li trasforma in date.- Le dichiarazioni sono ciò che l’emittente ci ha messo.
alg,typ,sub,isseaudsono standard; il resto è un accordo tra i tuoi due capi.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.