![translation](https://cdn.durumis.com/common/trans.png)
Ceci est un post traduit par IA.
Qu'est-ce que JWT (JSON Web Token) ?
- Langue de rédaction : Coréen
- •
-
Pays de référence : Tous les pays
- •
- Technologies de l'information
Choisir la langue
Texte résumé par l'IA durumis
- JSON Web Token (JWT) est un jeton chiffré qui permet de transmettre des informations en toute sécurité.
- JWT est composé d'un en-tête, d'une charge utile et d'une signature, la signature garantissant l'intégrité des données.
- JWT ne nécessite pas de gestion d'état séparée, ce qui le rend hautement évolutif dans un environnement distribué.
Qu'est-ce que JWT ?
JSON Web Token (JWT) est une norme ouverte (RFC 7519) qui définit une manière standardisée de transférer en toute sécurité des informations sous forme d'objets JSON. En d'autres termes, il s'agit d'une manière d'emballer les informations nécessaires dans un jeton et de les chiffrer pour une utilisation ultérieure.
JWT est souvent présenté comme un jeton signé (signed token). Lorsque vous utilisez une paire de clés publique/privée pour la signature, cette signature garantit que seul celui qui possède la clé privée a signé ce jeton. En d'autres termes, le serveur qui possède la clé peut savoir si ce jeton est valide.
Structure de JWT
JWT est composé de trois parties : l'en-tête (Header), la charge utile (Payload) et la signature (Signature).
Chaque partie est codée en Base64 et séparée par un point (.).
En-tête
{
"alg": "HS256",
"typ": "JWT"
L'en-tête contient deux informations principales : le type de jeton (typ) et l'algorithme de signature utilisé (alg). L'algorithme de signature est utilisé pour générer et vérifier la signature.
typ est défini sur "JWT", et alg est HMAC, SHA256, etc. Dans l'exemple ci-dessus, cela signifie qu'une clé privée est utilisée avec l'algorithme HS256.
Charge utile
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
La charge utile contient les revendications (Claims) que vous souhaitez transmettre dans le jeton. Vous stockez les informations d'identification de l'utilisateur ou les propriétés relatives au jeton sous forme de paires clé-valeur. En d'autres termes, vous pouvez y mettre ce que vous voulez !
Selon les spécifications standard, les noms des clés sont définis de manière compacte, avec trois lettres.
Les revendications enregistrées sont les suivantes :
- iss (Issuer) : Émetteur du jeton (contient des informations d'identification uniques de l'émetteur du jeton)
- sub (Subject) : Sujet auquel le jeton est destiné
- aud (Audience) : Destinataire du jeton
- exp (Expiration Time) : Expiration du jeton (le jeton n'est plus valide après cette heure)
- nbf (Not Before) : Date d'activation du jeton (le jeton ne peut pas être utilisé avant cette heure)
- iat (Issued At) : Heure d'émission du jeton
- jti (JWT Id) : Identifiant du jeton JWT (valeur utilisée pour différencier les émetteurs en cas de plusieurs émetteurs)
Vous pouvez ajouter d'autres valeurs nécessaires et les utiliser si nécessaire.
Cependant, la charge utile n'est pas une valeur signée chiffrée, elle ne contient donc pas d'informations sensibles.
N'importe qui peut la décoder. jwt.io Vous pouvez également vérifier immédiatement sur le site.
Signature
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
L'en-tête et la charge utile sont codées en Base64, puis concaténées avec un point (.) comme séparateur, puis signées à l'aide de la clé privée your-256-bit-secret détenue par le serveur.
Par conséquent, seule le serveur qui a émis le jeton peut déchiffrer la signature (Signature) avec la clé privée.
En ce qui concerne le décryptage, vous pouvez déchiffrer la signature avec la clé privée, puis vérifier si base64UrlEncode(header) correspond à la valeur d'en-tête de JWT et si base64UrlEncode(payload) correspond.
À l'exception de la signature, l'en-tête et la charge utile sont simplement codées, vous pouvez donc voir les informations du corps, mais la signature garantit l'intégrité et la sécurité des informations.
JWT est auto-contenu (Self-contained), il contient toutes les informations nécessaires en soi, et il a été conçu pour pallier les inconvénients des sessions qui doivent être générées par le serveur. JWT ne nécessite pas de stockage séparé.
Le serveur n'a pas besoin de maintenir de session, ce qui rend le système sans état (stateless) et améliore l'extensibilité dans les systèmes distribués et les architectures de microservices.
Il est protégé par une signature numérique (Signature), ce qui garantit l'intégrité des données.