Un JWT (JSON Web Token) est un jeton compact et signé qui transporte une identité et ses attributs, appelés claims : qui l'a émis, pour qui, jusqu'à quand, et toute information utile au destinataire. Celui-ci vérifie la signature avec la clé publique de l'émetteur, sans session côté serveur ni base de données partagée.
Signé, Pas Chiffré
Un JWT se compose de trois parties encodées en base64 : un en-tête, les claims, et une signature. N'importe qui peut lire son contenu ; seule l'altération est impossible. On n'y place donc jamais de donnée confidentielle, et l'on vérifie systématiquement la signature, l'émetteur (iss), l'audience (aud) et l'expiration (exp).
Identité de Machine
Au-delà de l'authentification des utilisateurs d'une API, le JWT sert d'identité aux machines : un job GitLab CI reçoit un jeton qui décrit son projet, sa branche et son environnement, et un coffre comme HashiCorp Vault lui accorde ou refuse l'accès selon ces claims, sans aucun mot de passe stocké.
Un JWT ne se révoque pas nativement : une fois émis, il reste valide jusqu'à son expiration. Sa durée de vie courte est la première de ses protections.