raatools/

JWT Decoder

Incolla un JWT per decodificare e ispezionare header, payload e claim.

Cos'è un JWT?

Un JSON Web Token (JWT, pronunciato "jot") è un formato token compatto e URL-safe definito in RFC 7519. I JWT sono lo standard di settore per trasmettere informazioni di autenticazione e autorizzazione tra le parti. Sono ampiamente usati nei sistemi di single sign-on (SSO), nei flussi OAuth 2.0 e nell'autenticazione API.

Un JWT è composto da tre parti codificate in Base64URL separate da punti: un header, un payload e una firma. L'header specifica l'algoritmo di firma (es. HS256, RS256). Il payload contiene i claim — coppie chiave-valore con informazioni come l'ID utente, i permessi e il tempo di scadenza. La firma garantisce che il token non sia stato manomesso.

Claim JWT comuni

  • sub: sub (Soggetto): Identifica il principale — di solito un ID utente o un indirizzo email.
  • iat: iat (Emesso il): Timestamp Unix che indica quando il token è stato creato.
  • exp: exp (Scadenza): Timestamp Unix dopo il quale il token non è più valido.
  • iss: iss (Emittente): Identifica chi ha emesso il token (es. il server di autenticazione).
  • aud: aud (Pubblico): Identifica il destinatario previsto del token (es. la tua API).

Come usare questo strumento

Incollare un JWT nel campo di input. Lo strumento decodifica immediatamente l'header e il payload, visualizzando i claim in un formato leggibile. I tempi di scadenza vengono convertiti in date leggibili dall'utente. Lo strumento verifica anche la struttura del token e indica se il formato non è valido.

È sicuro incollare il JWT qui?

Sì. Questo strumento decodifica il JWT interamente nel browser usando JavaScript. Nessun dato viene inviato a alcun server. Tuttavia, i JWT dovrebbero sempre essere trattati come credenziali sensibili — non condividere mai i token di produzione pubblicamente, non pubblicarli in messaggi di chat e non includerli nel controllo di versione.

Come funziona l'autenticazione JWT

Quando un utente effettua il login, il server crea un JWT contenente l'identità e i permessi dell'utente, lo firma con una chiave segreta e lo restituisce al client. Il client include questo token nell'intestazione Authorization delle successive richieste API. Il server verifica la firma per assicurarsi che il token sia autentico e non sia stato modificato.

Questo approccio è stateless — il server non ha bisogno di memorizzare i dati di sessione in un database. Tutte le informazioni necessarie sono incorporate nel token stesso. Questo rende i JWT ideali per i sistemi distribuiti, le architetture a microservizi e le applicazioni serverless dove lo stato condiviso è difficile da gestire.

Errori comuni con i JWT

Archiviare dati sensibili (password, numeri di carta di credito) nel payload JWT è un errore critico. Il payload è solo codificato in Base64, non cifrato — chiunque abbia il token può decodificarlo e leggerlo. Memorizzare solo identificatori e claim non sensibili nei JWT.

Usare tempi di scadenza eccessivamente lunghi è un altro errore comune. Un token valido per 30 giorni dà a un attaccante 30 giorni per usare un token rubato. Mantenere brevi i tempi di vita dei token di accesso (5–15 minuti) e usare i refresh token per le sessioni di lunga durata.

Domande frequenti

Qual è la differenza tra HS256 e RS256?

HS256 usa un segreto simmetrico condiviso — la stessa chiave firma e verifica il token. RS256 usa una coppia di chiavi asimmetriche — una chiave privata firma e una chiave pubblica verifica. RS256 è preferito per i sistemi distribuiti perché la chiave di verifica può essere condivisa pubblicamente senza compromettere la sicurezza.

Un JWT può essere revocato?

I JWT sono stateless, quindi non possono essere revocati direttamente. Le soluzioni comuni includono il mantenimento di una blocklist lato server degli ID dei token revocati, l'uso di brevi tempi di scadenza o la rotazione delle chiavi di firma. Per esigenze di revoca immediata, considerare l'uso di token opachi con archiviazione di sessione lato server.