Skip to main content
CheckTown
Validatori

Validatore JWT: Controlla struttura e claims dei JSON Web Token

Pubblicato 6 min di lettura
In questo articolo

Cos'è un JWT?

Un JWT (JSON Web Token) è un formato di token compatto e sicuro per URL utilizzato per trasmettere in modo sicuro informazioni tra le parti come oggetto JSON. Definito da RFC 7519, i JWT sono lo standard de facto per l'autenticazione e l'autorizzazione nelle applicazioni web moderne e nelle API.

I JWT sono autocontenuti — portano tutte le informazioni necessarie per verificare l'autenticità del token ed estrarre le claim utente senza interrogare un database. Questo li rende ideali per l'autenticazione senza stato nei sistemi distribuiti e nelle architetture a microservizi.

Struttura JWT

Un JWT è composto da tre parti codificate in Base64URL separate da punti: header.payload.signature.

  • Header — un oggetto JSON che specifica il tipo di token (JWT) e l'algoritmo di firma (es. HS256, RS256, ES256)
  • Payload — un oggetto JSON contenente claim: claim registrate (iss, sub, exp, iat), claim pubbliche e claim private
  • Firma — creata firmando l'header e il payload codificati con una chiave segreta (HMAC) o una chiave privata (RSA/ECDSA)

Prova gratuitamente — nessuna registrazione richiesta

Valida un JWT →

Come funziona la validazione JWT

La validazione JWT comporta controlli strutturali, verifica della firma e validazione delle claim.

  • Controllo della struttura — il token deve contenere esattamente tre segmenti codificati in Base64URL separati da due punti
  • Validazione dell'header — l'header deve contenere campi typ e alg validi. L'algoritmo deve corrispondere a quello che il server si aspetta
  • Verifica della firma — la firma viene ricalcolata usando l'header, il payload e la chiave di firma. Se la firma ricalcolata corrisponde, il token non è stato manomesso
  • Validazione delle claim — le claim exp (scadenza), nbf (non prima) e iss (emittente) vengono verificate rispetto all'ora corrente e ai valori attesi

Casi d'uso comuni

I JWT alimentano l'autenticazione e l'autorizzazione in tutto lo stack web moderno.

  • Autenticazione API — i client includono JWT negli header Authorization (schema Bearer) per autenticare le richieste API senza sessioni
  • Single sign-on (SSO) — i provider di identità emettono JWT che più applicazioni accettano, consentendo un'autenticazione senza interruzioni tra le applicazioni
  • Token di accesso OAuth 2.0 — molte implementazioni OAuth usano JWT come token di accesso, codificando ambiti e permessi direttamente nel token
  • Comunicazione tra microservizi — i servizi passano JWT per propagare il contesto utente e le decisioni di autorizzazione attraverso i confini dei servizi

Migliori pratiche di sicurezza JWT

I JWT sono potenti ma richiedono una gestione attenta per evitare le comuni insidie di sicurezza.

  • Valida sempre l'algoritmo — non permettere mai che il campo alg del token determini quale algoritmo usa il server. Questo previene l'attacco con algoritmo none
  • Imposta tempi di scadenza brevi — i JWT non possono essere revocati una volta emessi. Mantieni i tempi exp brevi (15 minuti per i token di accesso) e usa token di aggiornamento per le sessioni di lunga durata
  • Usa algoritmi asimmetrici per i sistemi distribuiti — RS256 o ES256 permettono ai servizi di verificare i token senza condividere il segreto di firma
  • Non archiviare mai dati sensibili nel payload — i JWT sono codificati, non cifrati. Chiunque può decodificare il payload. Conserva i segreti nel database, non nel token

Domande frequenti

Un JWT può essere decodificato senza la chiave segreta?

Sì. I payload JWT sono codificati in Base64URL, non cifrati. Chiunque può decodificare e leggere l'header e il payload. La chiave segreta è necessaria solo per verificare la firma — per confermare che il token non è stato alterato.

Qual è la differenza tra JWS e JWE?

JWS (JSON Web Signature) è ciò che la maggior parte delle persone intende per JWT — un token firmato. JWE (JSON Web Encryption) è un token cifrato in cui il payload non può essere letto senza la chiave di decifratura. La maggior parte dei JWT sono token JWS.

Devo archiviare i JWT in localStorage o nei cookie?

I cookie HttpOnly sono più sicuri perché non sono accessibili tramite JavaScript (prevenendo il furto XSS). localStorage è vulnerabile agli attacchi XSS. Per le applicazioni sensibili, usa i cookie HttpOnly Secure SameSite.

Strumenti correlati