JWT RFC 7519: JSON Web Token per identità e autorizzazione

JSON Web Token RFC 7519 (maggio 2015): standard IETF per token di autorizzazione firmati/crittografati JSON. Header, payload, signature. Usati in OpenID Connect, OAuth 2.0, API stateless, session alternative.

Open SourceWebCyber Security JWTRFC 7519JOSEIETFTokenAuthenticationOpen SourceSecurity

Il bisogno di token portabili

Le applicazioni web moderne necessitano di un meccanismo stateless per trasportare identità e claims: un utente autentica, il server emette un token che il client presenta ad ogni richiesta; API verifica il token senza consultare DB. Deve essere firmabile, verificabile, compatto, URL-safe.

Il rilascio

RFC 7519 (JWT) è pubblicato dall’IETF nel maggio 2015. Editor: Michael B. Jones (Microsoft), John Bradley, Nat Sakimura. Parte del family JOSE (JSON Object Signing and Encryption):

  • RFC 7515 — JWS (Web Signature)
  • RFC 7516 — JWE (Web Encryption)
  • RFC 7517 — JWK (Web Key)
  • RFC 7518 — JWA (Web Algorithms)
  • RFC 7519 — JWT

Formato

Un JWT è una stringa composta da 3 parti base64url-encoded separate da punti:

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiQWRhIn0.SflKxwRJSMeKKF2...
↓ decoded
Header:    {"alg":"HS256","typ":"JWT"}
Payload:   {"sub":"123","name":"Ada","exp":1735689600}
Signature: HMAC-SHA256(base64url(header).base64url(payload), secret)

Claims

  • Registratiiss (issuer), sub (subject), aud (audience), exp (expiration), nbf (not before), iat (issued at), jti (unique id)
  • Custom — qualsiasi campo JSON

Algoritmi

  • HS256/384/512 — HMAC simmetrico
  • RS256/384/512 — RSA asimmetrico (comune in OIDC)
  • ES256/384/512 — ECDSA su curve ellittiche
  • EdDSA — Ed25519 (più moderno)
  • PS256/384/512 — RSA-PSS
  • none — vulnerabilità storica, da rifiutare sempre

Vulnerabilità comuni

  • Alg confusionnone acceptance, RS256 → HS256 con public key come HMAC secret
  • Weak secrets — HMAC con password debole
  • No expiration — token validi per sempre
  • Sensitive payload — JWT firmato ma non crittografato è leggibile; PII nel payload pericoloso
  • No revocation — stateless = difficile revocare prima di expiration

Uso tipico

  • OpenID Connectid_token è un JWT
  • OAuth 2.0 — access token spesso JWT
  • API stateless — bearer token in Authorization: Bearer <jwt>
  • SSO federato — asserzioni tra domini
  • Short-lived signed URLs

Best practice 2026

  • Access token corti (5-15 min), refresh token longer
  • Firma asimmetrica (RS256/EdDSA) per micro-servizi
  • JWKS rotation — chiavi pubbliche pubblicate con kid
  • Non mettere PII nel payload
  • Rejettare alg: none esplicitamente
  • Per sessione web, considerare cookie session opachi (più sicuri di JWT in localStorage)

Nel contesto italiano

JWT è fondamento di:

  • SPID/CIE — parti dei flussi
  • API PA digitale — PagoPA, ANPR, INPS
  • SaaS italiani B2B — autenticazione API REST
  • Banking API PSD2 — stato stateless sessioni

Riferimenti: RFC 7519 (maggio 2015). IETF JOSE working group. Michael B. Jones, John Bradley, Nat Sakimura. Format header.payload.signature base64url. Algoritmi HS256, RS256, ES256, EdDSA. Famiglia RFC 7515-7519 JOSE.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi