JWT
Signifie « JSON Web Token ».
Un JWT est un jeton conforme aux normes du secteur qui permet de partager des informations de sécurité entre deux parties. Les JWT sont compacts et compatibles avec les URL, ce qui permet aux serveurs web et aux clients de les échanger dans le cadre d’une requête HTTPS. L’utilisation la plus courante d’un JWT consiste à authentifier un utilisateur connecté à un site web ou à une application web, souvent par l’intermédiaire d’un service d’authentification unique (SSO).
Les JWT se composent de trois parties :
- L’en-tête contient des informations sur le type de jeton et l’algorithme utilisé pour générer la signature.
- La charge utile contient la liste des revendications formulées par le jeton. Ces revendications comprennent généralement des informations sur l’émetteur du jeton, le site web ou l’application web qui utilise le jeton, ainsi que l’utilisateur. Elles indiquent également l’heure à laquelle le jeton a été émis et celle à laquelle il expirera les deux étant exprimées avec l’(heure Unix). En plus de ces valeurs courantes, un JWT peut inclure des revendications arbitraires propres au site web ou à l’application web qui émet le jeton.
- La signature vérifie que le jeton n’a pas été modifié depuis son émission.
Les sites web et les applications web utilisent souvent les JWT comme méthode sans état pour authentifier un utilisateur. Ils n’obligent pas le serveur à conserver une session dans sa mémoire ou sa base de données, ce qui réduit les ressources nécessaires pour chaque utilisateur. À la place, le client et le serveur s’échangent le JWT avec chaque requête HTTPS, en vérifiant la signature pour s’assurer que le jeton n’a pas été modifié. Une fois le JWT expiré, l’utilisateur doit se connecter à nouveau pour qu’un nouveau jeton soit émis.
Création d’un JWT
L’en-tête et la charge utile d’un JWT sont tous deux constitués de texte écrit en JSON. L’en-tête et la charge utile sont chacun encodés séparément à l’aide d’un algorithme appelé base64, ce qui transforme plusieurs lignes de texte en une seule chaîne. Les chaînes correspondant à l’en-tête et à la charge utile encodés sont combinées et séparées par un caractère « . ».
La chaîne combinée, qui contient l’en-tête et la charge utile encodés, est à nouveau encodée à l’aide d’un algorithme de hachage et d’une clé secrète afin de créer la signature. La signature est ensuite ajoutée à la fin de l’en-tête et de la charge utile, séparée par un autre caractère « . », pour créer le JWT final.
Testez vos connaissances