Qu'est-ce qu'un JSON Web Token (JWT) ?
Le JWT est un standard ouvert (RFC 7519) qui définit un moyen compact et autonome de transmettre de manière sécurisée des informations entre deux parties sous la forme d'un objet JSON. Il est massivement utilisé aujourd'hui pour l'Authentification des API (REST/GraphQL) et l'autorisation des utilisateurs sur les applications modernes (Single Page Applications).
La structure d'un Token
Un JWT est toujours constitué de 3 parties distinctes, séparées par un point (.) :
- Le Header (Entête) : Contient généralement le type de token ("JWT") et l'algorithme de signature utilisé (ex: HMAC SHA256 ou RSA).
- Le Payload (Charge utile) : Contient les "revendications" (claims). Ce sont les informations sur l'utilisateur, comme son ID, son rôle (Admin/User), et la date d'expiration du token (exp).
- La Signature : C'est la partie de sécurité. Elle est créée par le serveur en hachant le Header, le Payload et un Secret. Elle permet au serveur de vérifier que le token n'a pas été altéré par un hacker en cours de route.
Attention : Un JWT n'est pas chiffré !
C'est une erreur très commune de penser qu'un JWT est "crypté". Le Header et le Payload sont simplement encodés en Base64Url. Comme vous pouvez le voir grâce à cet outil, n'importe qui interceptant le token peut le lire facilement. Ne placez jamais de mots de passe ou de données sensibles dans le Payload d'un JWT ! Ce qui rend le JWT sûr, ce n'est pas le secret de son contenu, mais sa Signature qui empêche sa falsification.