Qu'est-ce qu'un JSON Web Token (JWT) ?
Un JSON Web Token (JWT) est un standard ouvert (RFC 7519) qui définit un moyen compact et autonome de transmettre des informations de manière sécurisée entre des parties sous la forme d'un objet JSON. Ces informations peuvent être vérifiées et fiables car elles sont signées numériquement. Les JWT peuvent être signés à l'aide d'un secret (avec l'algorithme HMAC) ou d'une paire de clés publique/privée utilisant RSA ou ECDSA.
Structure d'un JWT
Les JWT sont composés de trois parties séparées par des points (.). Lorsque vous voyez un token, il ressemble à ceci : xxxxx.yyyyy.zzzzz.
- En-tête : Se compose généralement de deux parties : le type de token, qui est JWT, et l'algorithme de signature utilisé, tel que HMAC SHA256 ou RSA. Il est encodé en Base64Url.
- Données utiles : Contient les revendications. Les revendications sont des déclarations concernant une entité (généralement l'utilisateur) et des données supplémentaires (comme le rôle, l'ID utilisateur, l'email et la date d'expiration `exp`). Elles sont également encodées en Base64Url.
- Signature : Pour créer la signature, vous devez prendre l'en-tête encodé, les données utiles encodées, un secret, l'algorithme spécifié dans l'en-tête, et signer le tout. Cela garantit que le token n'a pas été modifié en transit.
Le danger des décodeurs JWT en ligne
Les JWT sont extrêmement sensibles. Si un acteur malveillant intercepte un JWT valide appartenant à un administrateur, il peut facilement détourner la session de cet utilisateur et accéder à des systèmes privés. Vous ne devriez jamais coller des JWT de production dans des outils en ligne aléatoires. De nombreux décodeurs en ligne envoient silencieusement votre token collé à un serveur backend pour journalisation, analyse, ou pire.
Notre outil est différent. Nous avons écrit ce décodeur en utilisant du JavaScript frontend pur. Le processus de décodage (simplement l'analyse des chaînes Base64) se déroule entièrement dans la mémoire de votre navigateur web. Essayez de vous déconnecter d'Internet et de coller votre token—il se décodera toujours parfaitement, prouvant que vos données ne quittent jamais votre machine.
Les JWT sont-ils chiffrés ?
Une idée fausse courante chez les développeurs juniors est que les JWT sont chiffrés et cachent les données dans les données utiles. Ce n'est pas le cas. Les JWT standard (JWS) sont simplement encodés (Base64Url) et signés cryptographiquement. Quiconque intercepte le token peut le décoder (à l'aide d'un outil comme celui-ci) et lire les revendications. Par conséquent, vous ne devez jamais mettre de mots de passe, numéros de carte de crédit ou secrets d'API dans les données utiles.