![translation](https://cdn.durumis.com/common/trans.png)
Questo è un post tradotto da IA.
Cos'è JWT (JSON Web Token)?
- Lingua di scrittura: Coreana
- •
-
Paese di riferimento: Tutti i paesi
- •
- Tecnologia dell'informazione
Seleziona la lingua
Testo riassunto dall'intelligenza artificiale durumis
- JSON Web Token (JWT) è uno standard per la trasmissione sicura di informazioni utilizzando oggetti JSON, incapsulando le informazioni necessarie nel token e crittografandole per l'utilizzo.
- JWT è composto da un'intestazione, un payload e una firma. L'intestazione contiene il tipo di token e l'algoritmo di firma utilizzato, mentre il payload memorizza le informazioni sul token in formato chiave-valore.
- La firma può essere decriptata solo dal server che ha emesso il token utilizzando la chiave privata. JWT contiene tutte le informazioni di cui ha bisogno, quindi non è necessario alcun archivio separato, il che aumenta la scalabilità nei sistemi distribuiti.
Cos'è JWT?
JSON Web Token (JWT) è uno standard aperto (RFC 7519) che fornisce un modo sicuro per trasferire informazioni come un oggetto JSON. In poche parole, le informazioni necessarie sono inserite nel token e crittografate per l'uso.
JWT è enfatizzato come un token firmato (token firmato). Quando si utilizza una coppia di chiavi pubblica/privata per la firma, questa firma garantisce che solo la parte in possesso della chiave privata abbia firmato il token. In altre parole, il server che possiede la chiave può sapere se questo token è valido.
Struttura JWT
JWT è composto da intestazione (Header), carico utile (Payload) e firma (Signature).
Ogni parte è codificata in Base64 ed è separata da un punto (.).
Intestazione
{
"alg": "HS256",
"typ": "JWT"
L'intestazione contiene due informazioni principali. Il tipo di token (typ) e l'algoritmo di firma utilizzato (alg). L'algoritmo di firma viene utilizzato per creare e verificare la firma.
typ è impostato su "JWT" e alg è scritto come HMAC, SHA256, ecc. Secondo l'esempio sopra, significa che l'algoritmo HS256 viene utilizzato con la chiave privata.
Carico utile
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
Il carico utile include le asserzioni che si desidera trasmettere nel token. Salva le informazioni di identificazione dell'utente o le proprietà relative al token in formato chiave-valore. In altre parole, lo sviluppatore può inserirlo a piacimento!
Secondo le specifiche standard, il nome della chiave è definito in modo compatto con 3 lettere.
Le asserzioni registrate sono le seguenti.
- iss (Issuer): emittente del token (include le informazioni di identificazione univoche dell'emittente del token)
- sub (Subject): entità a cui è destinato il token
- aud (Audience): destinatario del token
- exp (Expiration Time): ora di scadenza del token (dopo questa ora, non è più valido)
- nbf (Not Before): data di attivazione del token (il token non può essere utilizzato prima di questa ora)
- iat (Issued At): ora di emissione del token
- jti (JWT Id): identificatore del token JWT (valore utilizzato per distinguere gli emittenti se sono più di uno)
Se ci sono altri valori necessari tra questi valori, puoi aggiungerli e usarli.
Tuttavia, il carico utile non è un valore firmato non crittografato, quindi non contiene informazioni sensibili.
Può essere letto da chiunque se decodificato.jwt.io Puoi anche verificarlo direttamente sul sito.
Firma
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
Il valore codificato in base64 di Header e Payload è collegato da un punto (.) e firmato utilizzando your-256-bit-secret, la chiave privata posseduta dal server.
Pertanto, solo il server che ha emesso il token può decrittografare la firma (Signature) utilizzando la chiave privata.
Se si pensa alla decodifica, si può sapere se base64UrlEncode(header) corrisponde al valore di header di JWT e se base64UrlEncode(payload) corrisponde dopo aver decodificato la firma con la chiave privata.
L'intestazione e il carico utile esclusi la firma sono solo codificati, quindi è possibile visualizzare le informazioni nel corpo, ma l'integrità e la sicurezza delle informazioni sono mantenute dalla firma.
JWT è autonomo (Self-contained) che contiene tutte le informazioni necessarie e è stato creato per ovviare agli svantaggi della sessione che deve essere stateless. JWT non richiede un archivio separato.
Non è necessario mantenere la sessione sul lato server, quindi è stateless, il che aumenta la scalabilità nei sistemi distribuiti o nell'architettura dei microservizi.
La firma, la firma digitale, garantisce la sicurezza e l'integrità dei dati.