Development

Token JWT: cosa sono e come usarli

X Xuvero Team 6 marzo 2026 5 min di lettura 640 visualizzazioni
Token JWT: cosa sono e come usarli

JSON Web Token (JWT) รจ uno standard aperto (RFC 7519) per il trasferimento sicuro di informazioni tra parti sotto forma di oggetto JSON. JWT รจ ampiamente utilizzato per l'autenticazione e l'autorizzazione nelle moderne applicazioni Web e API. In questo articolo, daremo uno sguardo dettagliato a come funzionano i token JWT, di cosa sono fatti e come usarli in sicurezza.

Cos'รจ JWT?

JWT (pronunciato "jot") รจ un modo compatto e sicuro per gli URL per rappresentare i reclami tra due parti. Il token รจ composto da tre parti separate da punti: Header.Payload.Signature. Ogni parte รจ codificata in Base64URL.

A differenza delle sessioni tradizionali, in cui il server memorizza lo stato dell'utente, JWT รจ stateless: tutte le informazioni necessarie sono contenute nel token stesso. Ciรฒ rende JWT ideale per sistemi distribuiti e architetture di microservizi.

Struttura token JWT

Intestazione (Intestazione)

L'intestazione solitamente contiene due campi: tipo di token (typ) e algoritmo di firma (alg). Gli algoritmi piรน comuni sono HS256 (HMAC con SHA-256) e RS256 (RSA con SHA-256).

Intestazione di esempio:

{
  "alg": "HS256",
  "typ": "JWT"
}

Carico utile (Carico utile)

Payload contiene affermazioni: dichiarazioni sull'utente e metadati aggiuntivi. Esistono tre tipi di reclami:

  • Sinistri registrati โ€” campi standard: iss (emittente), exp (data di scadenza), sub (oggetto), aud(pubblico), iat (ora di creazione)
  • Affermazioni pubbliche - definite nel registro IANA o dotate di un URI per evitare collisioni
  • Reclami privati โ€” campi arbitrari concordati tra le parti (ad es. user_id, role)

Esempio di carico utile:

{
  "sub": "1234567890",
  "name": "John Doe",
  "role": "admin",
  "iat": 1516239022,
  "exp": 1516242622
}

Firma (Firma)

La firma viene creata codificando Header e Payload in Base64URL, unendoli con un punto e firmando con una chiave segreta. La firma garantisce che il token non sia stato modificato dopo la creazione.

Per HS256, la formula รจ simile a questa:

HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

Come funziona l'autenticazione JWT

Il processo di autenticazione con JWT solitamente si presenta cosรฌ:

  1. Login: L'utente invia le sue credenziali (email + password) al server
  2. Generazione del token: Il server controlla i dati e, se sono corretti, crea un JWT con le attestazioni necessarie
  3. Archiviazione: Il client memorizza il token (solitamente in localStorage o nel cookie httpOnly)
  4. Invio di richieste: Ad ogni richiesta, il client aggiunge un token all'intestazione Authorization: Bearer <token>
  5. Verifica: Il server verifica la firma del token ed estrae i dati utente dal payload

Vantaggi di JWT

  • Stateless: Il server non ha bisogno di archiviare le sessioni nel database o nella memoria
  • Scalabilitร : Ideale per i microservizi: qualsiasi servizio puรฒ verificare il token
  • Interdominio: JWT รจ facile da usare tra diversi domini e servizi
  • Compattezza: Le dimensioni ridotte consentono il passaggio di token nell'URL, parametri POST o intestazioni
  • Autosufficienza: Tutte le informazioni per l'autorizzazione sono contenute nel token

JWT Sicurezza: migliori pratiche

1. Imposta sempre una data di scadenza

Non creare mai token senza reclamo exp. La durata consigliata di un token di accesso รจ compresa tra 15 minuti e 1 ora. Per sessioni piรน lunghe, utilizza i token di aggiornamento.

2. Utilizza httpSolo cookie

Invece di localStorage, รจ meglio archiviare JWT nei cookie httpOnly, che non sono accessibili a JavaScript. Questo protegge dagli attacchi XSS. Inoltre, seleziona le caselle Secure e SameSite.

3. Non archiviare dati sensibili nel payload

Payload รจ codificato solo Base64, non crittografato. Chiunque puรฒ decodificarlo. Non includere mai password, numeri di carta di credito o altre informazioni sensibili.

4. Utilizza algoritmi affidabili

Evita l'algoritmo none. Per una firma simmetrica, utilizzare HS256 con un segreto lungo (minimo 256 bit).Per asimmetrico โ€” RS256 o ES256.

5. Convalida tutte le rivendicazioni

Quando verifichi un token, controlla sempre: exp (non scaduto), iss (emittente corretto), aud (destinatario corretto). Non fidarti di un token solo se ha una firma valida.

6. Implementa il ritiro del token

Sebbene JWT sia stateless, a volte รจ necessario revocare il token (ad esempio, quando ti disconnetti o cambi la password). A tale scopo, utilizza una lista nera di token o una durata breve con token di aggiornamento.

Errori tipici quando si lavora con JWT

  • La mancanza di verifica della firma รจ l'errore piรน pericoloso che ti consente di falsificare un token
  • Utilizzo di un segreto debole: segreti brevi o prevedibili possono essere rilevati con la forza bruta
  • Archiviazione in localStorage โ€” Vulnerabilitร  agli attacchi XSS
  • Scadenza troppo lunga: aumenta la finestra di attacco quando il token viene compromesso
  • Trasmissione tramite URL: il token potrebbe finire nei registri del server e nella cronologia del browser

JWT vs Sessioni: quando utilizzare cosa

JWT รจ ideale per:

  • Applicazioni a pagina singola (SPA) con un'API separata
  • Architettura di microservizi
  • App mobili
  • Sistemi con Single Sign-On(SSO)

Le sessioni tradizionali sono migliori per:

  • Applicazioni web server (Laravel, Rails, Django)
  • Applicazioni che richiedono la revoca immediata dell'accesso
  • Progetti semplici senza architetture complesse

Esercitazione: decodifica JWT

Vuoi vedere cosa c'รจ dentro un token JWT? Utilizza il nostro JWT decoder โ€” smonta il token in componenti, mostra l'intestazione, il payload e controlla la firma. Questo รจ uno strumento utile per gli sviluppatori durante il debug dell'autenticazione.

Conclusione

I token

JWT sono un potente meccanismo di autenticazione per le applicazioni moderne. They provide stateless authorization, are easily scalable and work between different services. La cosa principale รจ seguire le regole di sicurezza: impostare la data di scadenza, utilizzare algoritmi affidabili, archiviare i token in modo sicuro e convalidare tutte le richieste. Se utilizzato correttamente, JWT semplifica notevolmente l'architettura e migliora le prestazioni dell'applicazione.

Commenti (0)

Per lasciare un commento, per favore accedi

Ancora nessun commento. Sii il primo!

Resta aggiornato

Ricevi una notifica quando pubblichiamo nuovi articoli, strumenti e aggiornamenti.

โœ“

Iscrizione completata! Grazie per esserti unito.

IA Xuvero
Ciao! Sono IA Xuvero โ€” un'intelligenza artificiale creata dal team Xuvero. Posso trovare lo strumento giusto, spiegare come funzionano le cose, scrivere codice, rispondere a qualsiasi domanda o semplicemente chiacchierare. Come posso aiutarti?