Cos'è JSON Web Token?
Un JSON Web Token (JWT) è un formato di token compatto e URL-safe definito dall'RFC 7519 che rappresenta claim tra due parti come oggetto JSON firmato digitalmente, abilitando l'autenticazione stateless e lo scambio di informazioni.
Noto anche come: JSON Web Token, JWTs
Un JWT è composto da tre parti codificate in base64url separate da punti: un header (che specifica l'algoritmo di firma), un payload (che contiene i claim — coppie chiave-valore come ID utente, ruoli e tempo di scadenza) e una firma (calcolata su header e payload usando un segreto o una chiave privata). La firma consente a qualsiasi parte che possieda la chiave di verifica di confermare che il token non è stato manomesso.
I JWT sono ampiamente usati come bearer token nell'autenticazione API. Dopo il login, il server emette un JWT contenente l'identità e i permessi dell'utente. Il client include questo JWT nelle richieste successive (tipicamente nell'header Authorization), e il server verifica la firma senza dover interrogare un database o uno session store. Questa proprietà stateless rende i JWT attraenti per i sistemi distribuiti e le architetture a microservizi dove condividere lo stato di sessione tra servizi è impraticabile.
I JWT portano con sé importanti considerazioni di sicurezza. Poiché il payload è solo codificato in base64 (non cifrato), chiunque intercetti un JWT può leggerne il contenuto — non inserire mai segreti nei payload JWT a meno di usare JWE (JSON Web Encryption). I token devono avere brevi tempi di scadenza perché non possono essere facilmente revocati una volta emessi. Gli attacchi di algorithm confusion, in cui un attaccante modifica l'header in "none" o scambia la verifica asimmetrica con quella simmetrica, sono stati una vulnerabilità ricorrente nelle librerie JWT.
Come Vaulted usa JSON Web Token
Vaulted non usa JWT per l'autenticazione o la gestione delle sessioni, poiché non ha account utente. Tuttavia, i JWT e altri bearer token sono credenziali condivise frequentemente che necessitano di una trasmissione sicura — ad esempio, condividere un token API longevo o un secret JWT service-to-service con un collega durante un incidente. Vaulted fornisce una consegna cifrata e autodistruttiva per questi token, assicurando che non persistano nei canali di comunicazione.