Structure et fonctionnement d'un JSON Web Token (JWT)
Un JSON Web Token (JWT) est un standard ouvert (RFC 7519) utilisé pour transférer des informations de manière compacte et autonome entre deux parties. Un JWT se compose de trois parties distinctes, séparées par des points (.):
- Le Header (en-tête): Il contient généralement le type de jeton (généralement JWT) et l'algorithme de signature utilisé (par exemple, HS256 ou RS256).
- Le Payload (charge utile): Il contient les revendications (claims), qui sont des déclarations sur une entité (souvent l'utilisateur) et des données supplémentaires.
- La Signature: Elle permet de vérifier que le jeton n'a pas été modifié en cours de route.
Chacune de ces parties est encodée individuellement en utilisant le format Base64URL avant d'être assemblée. Le format Base64URL est une variante du Base64 classique qui remplace les caractères non sécurisés pour les URL (comme + et /) par - et _, et supprime le rembourrage =.
Le rôle du Header et du Payload
Le Header fournit les métadonnées nécessaires au traitement du jeton. On y retrouve des clés standardisées telles que:
alg: L'algorithme de chiffrement ou de signature (par exemple, HMAC SHA256 ou RSA).typ: Le type de jeton, qui est presque toujours configuré surJWT.
Le Payload contient les données applicatives et les informations de contrôle. Ces informations sont structurées sous forme de paires clé-valeur en JSON. On y distingue trois types de revendications: enregistrées (registered), publiques (public) et privées (private). Les revendications enregistrées les plus courantes incluent:
iat(issued at): La date et l'heure auxquelles le jeton a été généré.exp(expiration time): La date et l'heure à partir desquelles le jeton ne doit plus être accepté.sub(subject): L'identifiant unique de l'utilisateur ou du sujet du jeton.
Différence entre décodage et vérification de signature
Il est crucial de distinguer le simple décodage d'un JWT de sa vérification:
- Le décodage consiste uniquement à traduire les chaînes de caractères Base64URL du Header et du Payload en texte clair au format JSON. Cette opération ne nécessite aucune clé secrète ni certificat. N'importe qui possédant le jeton peut en lire le contenu.
- La vérification consiste à recalculer la signature du jeton à l'aide de l'algorithme spécifié et de la clé secrète (pour les algorithmes symétriques) ou de la clé publique (pour les algorithmes asymétriques) de l'émetteur. Cette étape garantit que le contenu du Header et du Payload n'a pas été altéré après sa génération.
L'utilisation d'un JWT sans vérifier sa signature présente des risques de sécurité majeurs, car un utilisateur malveillant pourrait modifier le Payload (par exemple, changer son rôle pour devenir administrateur) et soumettre le jeton modifié.
Fonctionnalités et règles de validation du Décodeur JWT
Cet outil permet de coller un JWT pour analyser instantanément sa structure et ses métadonnées. Lors de la saisie, l'outil applique des règles strictes pour valider la structure du jeton:
- Format attendu: Le jeton doit comporter exactement trois parties séparées par des points. Si ce n'est pas le cas, l'outil affiche le message:
Ce n’est pas un JWT valide — trois parties séparées par des points sont attendues.. - Longueur maximale: Si la chaîne saisie dépasse les limites normales d'un jeton d'authentification, le message
C’est trop long pour être un vrai JWT.apparaît. - Décodage Base64URL: Si le Header ou le Payload comporte des caractères incompatibles avec l'encodage Base64URL, l'outil affiche respectivement
Impossible de décoder le header — Base64URL invalide.ouImpossible de décoder le payload — Base64URL invalide.. - Validation du format JSON: Une fois décodées, les données doivent correspondre à des objets JSON valides. En cas d'erreur de syntaxe JSON, les messages
Le header n’est pas un JSON valide.ouLe payload n’est pas un JSON valide.sont générés.
Lorsqu'une erreur est détectée, les zones d'affichage des données décodées sont masquées pour éviter toute confusion. Si le champ de saisie est vide, l'outil reste dans l'état Prêt. Collez un JWT pour le décoder.. Lorsque vous cliquez sur le bouton Effacer, le focus est automatiquement renvoyé vers le champ de saisie Collez votre JWT.
L'outil extrait et affiche les informations suivantes:
- Header et Payload formatés en JSON.
- Algorithme et Type.
- Émis le et Expire (traduits depuis les valeurs temporelles
iatetexp). - Caractères: Le nombre total de caractères du jeton saisi.
- Statut: Un badge de validité temporelle basé sur la revendication
exp. Ce statut peut êtreValide,Expiré,Pas encore valideouSans expiration(si le jeton ne contient pas de champexp).
Confidentialité et traitement des données
Le traitement de vos données est local. Le décodage de votre jeton s'effectue directement dans votre navigateur web. Aucune donnée saisie ou décodée n'est envoyée à BroBroGo. L'outil ne vous demandera jamais de saisir une clé secrète ou une clé publique, car il ne procède pas à la vérification de la signature cryptographique.
FAQ
Est-ce sûr de coller mon JWT ici?
Oui. Le décodage se fait entièrement dans votre navigateur — votre token n’est jamais envoyé à BroBroGo.
Est-ce que ça vérifie la signature?
Non. Cet outil décode uniquement le header et le payload pour que vous puissiez les lire. Vérifier une signature demande la clé secrète ou publique de l’émetteur, que cet outil ne demande jamais.
Comment savoir si mon token a expiré?
Le décodeur lit le champ exp et affiche un badge de statut à côté du token décodé — valide, expiré, pas encore valide, ou sans expiration.
Pourquoi l'outil affiche-t-il une erreur de format?
Un JWT valide doit obligatoirement être constitué de trois parties distinctes séparées par des points (représentant le Header, le Payload et la Signature). Si votre saisie ne respecte pas cette structure, l'outil ne pourra pas la décoder.