Chapitre 1: Introduction de JWT

Qu’est ce qu’un token JWT ?

Le site Web officiel de JWT définit le comme suit:

Les jetons Web JSON sont un standard RFC 7519 ouvert, conforme aux normes de l’industrie, qui permet de représenter les revendications en toute sécurité entre deux parties.

Un JWT contient 3 parties: un header, une charge utile et une signature. Un JWT peut à son tour être représenté comme JWS ou JWE. JWS est l’acronyme de JSON Web Signature tel que défini dans la RFC 7515 et JWE signifie JSON Web Encryption tel que définie par la RFC 7516. Dans un JWS, la charge envoyée n’est pas cryptée, ce qui n’est pas le cas dans un JWE 1. Cet atelier traite uniquement du JWS.

Structure

Un JWT a la structure suivante:

La signature elle-même est générée en signant l’en-tête et la charge utile avec une clé, par exemple en utilisant l’algorithme HMAC-SHA256:

Un en-tête JWT est un objet JSON qui a généralement les valeurs suivantes:

  • alg – L’algorithme utilisé pour signer le jeton.
  • typ – Ce paramètre facultatif, défini sur JWT, déclare cet objet JSON en tant que JWT.

Un exemple d’en-tête JWT lorsque l’algorithme utilisé est HMA-SHA256:

Une charge utile JWT contient une série de revendications(communément appelés claims). Il existe un registre IANA « JSON Web Token Claims » qui contient un certain nombre de noms de revendications réservés à des fins spécifiques. Les applications sont libres d’utiliser d’autres noms, sauf ceux-ci pour leurs revendications. Les noms de revendication qui sont importants incluent exp qui représente l’heure d’expiration ou après laquelle le JWT NE DOIT PLUS être accepté pour le traitement. La charge utile suivante définit: l’émetteur, la date d’expiration et un nom d’utilisateur.

Générer un token JWT

Pour l’en-tête et la charge utile montrés ci-dessus, si nous devions générer un JWT avec l’algorithme HMAC256 et la clé secretKey, cela ressemblera à ceci:

Le jeton final aura la forme suivante:

Le guide abordera la génération et vérification d’un token JWT. Le code est disponible sur mon repos officiel. Jjwt est une implémentation plus complète de la RFC pour la JVM et le tutoriel sera basée celle-ci. Le site Web de JWT a un débogueur qui permet la création et la vérification des jetons, n’hésiter à y aller pour mieux visualiser les concepts présentés plus haut.