Un token Web JSON (JWT) è uno standard aperto (RFC 7519) che definisce un modo compatto e autonomo per la trasmissione sicura di informazioni tra le parti come oggetto JSON. Queste informazioni possono essere verificate e attendibili perché sono firmate digitalmente. I JWT possono essere firmati utilizzando una coppia di chiavi segreta o pubblica/privata.

Qual è la struttura del token Web JSON?,

  • Header
  • Payload
  • Signature

Header

L’intestazione consiste tipicamente di due parti: il tipo di token, che è JWT, e l’algoritmo di hashing utilizzato, come HMAC SHA256 o RSA.

Ad esempio:

{ "alg": "HS256", "typ": "JWT"}

Quindi, questo JSON è codificato in Base64Url per formare la prima parte del JWT.

Payload

La seconda parte del token è il payload, che contiene le attestazioni. Le affermazioni sono dichiarazioni su un’entità.,

  • Attestazioni registrate: si tratta di un insieme di attestazioni predefinite che non sono obbligatorie ma raccomandate, per fornire una serie di attestazioni utili e interoperabili. fare riferimento a questo per maggiori informazioni Nomi dei reclami registrati

  • Reclami pubblici: questi possono essere definiti a piacimento da coloro che utilizzano JWTs. Ma per evitare collisioni dovrebbero essere definite

  • Rivendicazioni private: queste sono le rivendicazioni personalizzate create per condividere informazioni tra le parti che concordano sul loro utilizzo e non sono né richieste registrate né pubbliche.,

Di seguito viene mostrato un esempio di payload:

{ "sub": "1234567890", "name": "John Doe", "admin": true}

Signature

Per creare la parte di firma, devi prendere l’intestazione codificata, il payload codificato, un segreto, l’algoritmo specificato nell’intestazione e firmarlo.

HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

Quindi, devi mettere tutto insieme. Quanto segue mostra un JWT con l’intestazione e il payload precedenti codificati ed è firmato con un segreto.

Se vuoi giocare con JWT e mettere in pratica questi concetti, puoi usare jwt.io.