Autenticazione JWT
JSON Web Token (JWT) è un formato compatto per la rappresentazione delle richieste, destinato ad ambienti con limiti di spazio, come le intestazioni di autorizzazione HTTP e i parametri delle query URI. Una richiesta è rappresentata come una coppia nome - valore che contiene un nome richiesta e un valore richiesta.
Le richieste in un JWT sono codificate come un oggetto JSON che viene utilizzato come payload di una struttura JWS (JSON Web Signature) o come testo semplice di una struttura JWE (JSON Web Encryption). Le richieste JWT possono essere firmate digitalmente o protette dall'integrità con un MAC (Message Authentication Code) e possono anche essere crittografate.
Panoramica su JWT
JWT rappresenta una serie di richieste come un oggetto JSON codificato in una struttura JWS o JWE. Questo oggetto JSON è la serie di richieste JWT. L'oggetto JSON è composto da zero o più coppie nome - valore (o membri), dove i nomi sono stringhe e i valori sono valori JSON arbitrari. Questi membri sono le rivendicazioni rappresentate dal JWT. I nomi membro all'interno della serie di richieste JWT vengono indicati come nomi richiesta. I valori corrispondenti vengono indicati come valori di richiesta.
Un JWT è rappresentato come una sequenza di parti URL separate da caratteri di punto ('.'). Ogni parte contiene un valore base64url-encoded. Il numero di parti nel JWT dipende dalla rappresentazione del JWS risultante che utilizza la serializzazione JWS Compact o JWE che utilizza la serializzazione JWE Compact.
Tipi di JWT
Esempio JWT
Il formato di un tipico JWS è <Base 64 URL codificato Header json>.<Base 64 URK codificato Payload json>.<Base 64 URL codificato signature>
Header
{
"alg": "RS256",
"typ": "JWT",
"kid": "a1"
}
Payload
{
"sub": "1234567890",
"name": "John Doe",
"admin": true,
"iat": 1516239022,
"exp": 1531762065
}eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0
.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ
.z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT
5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDkCome illustrato nell'esempio, JWS ha le seguenti parti ed è separato da "." carattere.
- Intestazione =
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0 - Carico utile =
G4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ - Firma =
z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDk