JSON Web Token
JSON Web Token (spesso abbreviato in JWT) è uno standard web per lo scambio di dati definito dalla RFC 7519 proposto nel 2015. Un token JWT è composto da 3 sezioni: l'header, che contiene i dati relativi al tipo di algoritmo usato per la codifica, il payload, che contiene i dati in formato JSON codificati e una signature (firma) che garantisce la veridicità del token.
Struttura
[modifica | modifica wikitesto]Come accennato prima, un token JWT è composto da 3 sezioni
Intestazione
[modifica | modifica wikitesto]Dall'inglese header, l'intestazione contiene un oggetto rappresentato con JSON e codificato in base64 che segue lo schema seguente:
{"alg":"HS256","typ":"JWT"}
La proprietà alg
indica quale algoritmo è stato usato per generare la firma, la proprietà typ
indica, invece, il tipo del token, in questo caso sarà sempre 'JWT'
Payload
[modifica | modifica wikitesto]Il payload contiene i dati chiamati claims, esistono 7 claims registrati e sono i seguenti:
iss
: sta per issuer, dall'inglese emittente, ovvero specifica chi ha emesso il token, è solito specificare l'hostname.sub
: è solito indicare consub
il soggetto che può essere un utente.aud
: l'audience, ovvero il pubblico, indica a chi è rivolto il token.exp
: conexp
si indica la data di scadenza del token.nbf
: viene indicata la data in cui il token inizierà a valere.iat
: indica la data di creazione del token.jti
: viene utilizzato per identificare il token univocamente.
Oltre a questi 7 claims è possibile aggiungere altre proprietà in base all'uso del token.
Come l'intestazione, il payload è un oggetto JSON codificato in base64.
Firma
[modifica | modifica wikitesto]Serve per confermare la veridicità del token. Viene generata codificando, con l'algoritmo specificato dall'intestazione, l'intestazione già codificata in base64 concatenata con un punto .
concatenato con il payload anch'esso già codificato in base64.
Bibliografia
[modifica | modifica wikitesto]- (EN) RFC 7519 — JSON Web Token (JWT), su datatracker.ietf.org, Internet Engineering Task Force.