Le tre parti di un JWT
Un JWT è una stringa con tre parti separate da punti: intestazione, contenuto e firma. L’intestazione indica l’algoritmo (per esempio HS256 o RS256) e il tipo. Il contenuto porta i dati, detti claim, come l’identificativo dell’utente, l’emittente o le date.
Le prime due parti sono JSON codificato in Base64URL. Non sono cifrate: chiunque abbia il token può leggerle. Per questo non devono includere password o dati che non vuoi mostrare.
Date e stato
I claim iat, exp e nbf sono date in secondi dal 1970 (tempo Unix). Snipshed le mostra in forma leggibile in UTC e confronta la scadenza con l’orologio del tuo dispositivo per indicare se il token è nel periodo di validità, scaduto o non ancora valido.
Se l’orologio del tuo computer è sfasato, lo stato può essere sbagliato. Un token senza exp non scade mai, aspetto da rivedere in un progetto di sicurezza.
Decodificare non è convalidare
La firma garantisce che il contenuto non sia stato modificato e che lo abbia emesso chi possiede la chiave. Verificarla richiede quella chiave e va fatto sul server che riceve il token. Un token con la firma alterata si decodifica comunque.
Usa lo strumento per fare il debug di un’integrazione, capire che cosa dichiara un token o preparare un test. Non usarlo per decidere se una richiesta è affidabile e tratta con cautela i token reali: incollarli in un sito esterno può dare accesso a qualcun altro.
- Incolla il token completo, con le sue tre parti.
- Decodifica e controlla algoritmo, emittente e dati dell’utente.
- Guarda le date di emissione e scadenza e lo stato.
- Ricorda che la firma non viene verificata; convalidala sul tuo server.
Criteri per la revisione e la consegna del risultato
Se lavori spesso con i token, abituati a controllare tre cose: l’algoritmo, la scadenza e il destinatario. Un token con scadenza molto lunga, o senza scadenza, aumenta il danno se viene divulgato. Evita di incollare token di produzione in strumenti esterni e usa token di prova nei tuoi esempi. Se sospetti che un token sia stato esposto, revocalo nel servizio che lo ha emesso invece di aspettare che scada.
Leggere un token di esempio
Premi Prova esempio e poi Decodifica token. L’esempio è un token di prova che contiene un nome, una data di emissione e una di scadenza.
Vengono mostrati l’intestazione con l’algoritmo HS256, il contenuto con i dati e le date in UTC e lo stato Scaduto, perché il token di esempio è scaduto nel 2018.
Cambia una lettera della firma e decodifica di nuovo: funziona ancora, il che dimostra che decodificare non convalida. Cambia una lettera del contenuto e osserva l’errore o il cambio dei dati.