Français

Outils de développement · Décodeur JWT

JWT Les charges utiles ne sont pas cryptées : toute personne possédant le jeton peut les lire

· Pourquoi c'est important

jwt confidentialité sécurité

Une charge utile JWT codée ouvrant sur JSON lisible
Illustration vectorielle originale de ToolAcre

Base64url ressemble à du brouillage mais il s'agit d'un encodage réversible. Cet article montre à quel point les revendications d'un jeton signé sont lisibles, ce qui leur appartient et quand vous avez besoin de JWE à la place.

Cela semble crypté : le malentendu qui place les données personnelles dans des jetons

Les longs segments d'URL base64 semblent brouillés, ce qui incite les équipes à les traiter comme des données cachées. L'effet visuel est trompeur. Toute personne détenant un JWT signé peut inverser le codage public et lire une charge utile JSON sans posséder de clé de signature ou de vérification.

ToolAcre démontre cette propriété en décodant l'en-tête et la charge utile localement. Cela ne rompt pas le chiffrement car les charges utiles JWS ordinaires ne sont pas chiffrées. La facilité d’inspection devrait façonner la conception du jeton : coder uniquement les informations que tout détenteur légitime et tout destinataire accidentel peut voir.

Signé, non scellé : un JWS valide peut protéger l'intégrité, pas la confidentialité des données utiles.

Une signature ou MAC valide peut permettre à un vérificateur correctement configuré de détecter les modifications et d'associer le jeton à des éléments de clé fiables. Il s’agit d’une preuve d’intégrité et d’origine dans le cadre de la politique du vérificateur. Il ne cache pas le contenu protégé au client, à un proxy, à un enregistreur ou à toute autre personne qui obtient la chaîne compacte.

Le décodeur ne peut même pas établir cette intégrité car il ne vérifie jamais. Il montre ce que le jeton dit de lui-même et signale les octets de signature comme non vérifiés. Cette distinction évite deux erreurs opposées : supposer que lisible signifie faux, et supposer que signé signifie confidentiel.

Ce qu'affiche un décodeur : chaque réclamation, en clair JSON, sans clé requise

Pour l'en-tête et la charge utile, ToolAcre traduit base64url, restaure le remplissage, récupère les octets en tant que UTF-8 et analyse les objets JSON. Aucun secret n'y participe. Le tableau des revendications affiche ensuite directement les valeurs de chaîne et les valeurs structurées sous forme de texte JSON, avec des descriptions pour les noms enregistrés tels que `sub`, `aud` et `exp`.

Ce résultat est une aide à la transparence, pas un oracle de vérité. Un jeton fabriqué peut afficher le même sujet et le même rôle qu'un jeton légitime. La lecture d'une revendication ne nécessite aucune clé ; pensant que cela nécessite une vérification réussie ainsi que des contrôles de l’émetteur, de l’audience, du temps et de l’application dans le service consommateur.

Où les jetons fuient : journaux, URL, en-têtes de référence, historique du navigateur et scripts tiers

Les jetons peuvent fuir via les journaux d'application, les messages d'assistance copiés, les URL, la propagation des référents, l'historique du navigateur, les captures d'écran et les scripts pouvant accéder au champ. Les chemins exacts dépendent du système, mais la lisibilité de la charge utile signifie qu’un jeton expiré ou inutilisable peut toujours divulguer des informations personnelles ou opérationnelles.

Conservez les informations d'identification compactes hors des chaînes de requête d'URL et des journaux de routine. Rédigez-les avant de partager les diagnostics. Une signature ne nettoie pas les revendications et le chiffrement du transport protège uniquement les données lors du déplacement entre les points de terminaison ; les points de terminaison autorisés et le stockage accidentel peuvent toujours voir les caractères de jeton en texte clair.

Ce qui appartient à une charge utile – identifiants et données d'autorisation, jamais de secrets ou de données que le détenteur ne devrait pas voir

Les charges utiles ont généralement besoin d'identifiants et d'un contexte d'autorisation afin que les destinataires puissent prendre des décisions après vérification. Ils ne doivent pas contenir de mots de passe, de clés privées ou d'informations que le détenteur du jeton ne doit pas pouvoir lire. Minimisez les données personnelles et évitez la duplication pratique des champs de profil dont aucun service consommateur n’a besoin.

Les rôles et les étendues ne sont pas secrets simplement parce qu'ils sont codés, mais ils ne sont toujours pas fiables jusqu'à ce qu'ils soient vérifiés. Concevez l'ensemble des revendications autour de la moindre divulgation ainsi que du moindre privilège. Si un consommateur n'a pas besoin d'un champ pour effectuer son travail documenté, le fait de laisser ce champ de côté réduit toutes les conséquences de fuite.

Exemple concret : décoder un exemple de jeton et répertorier exactement ce qu'un spectateur apprendrait

Décodez une charge utile synthétique contenant `sub`, `email`, `tenant`, `roles`, `iat` et `exp`. Un spectateur apprend l'identifiant du compte nommé, l'adresse, le contexte de l'organisation, les autorisations revendiquées et le timing sans clé. Que ces affirmations soient authentiques est une autre question ; leur texte est déjà divulgué.

Répétez l'audit avec chaque profil de jeton produit par votre émetteur, en utilisant uniquement du matériel expiré ou de test. Enregistrez chaque champ et son consommateur. ToolAcre peut aider à énumérer le contenu visible, mais il ne peut pas décider des règles de traitement licite, de sensibilité ou de conservation pour votre organisation.

Les jetons compacts chiffrés comportent cinq parties, que ce décodeur JWS identifie plutôt que déchiffre

Lorsque les revendications doivent rester confidentielles vis-à-vis du titulaire ou des intermédiaires, une conception cryptée peut être exigée. Compact JWE comporte cinq parties et utilise des clés de déchiffrement du destinataire. ToolAcre identifie cinq segments comme entrée cryptée et explique qu'il ne peut pas révéler le contenu sans clé.

Le chiffrement introduit la distribution de clés, la politique d'algorithme et les modes de défaillance opérationnelle au-delà de ce décodeur. Cela ne supprime pas non plus la nécessité de contrôles d’intégrité et d’autorisation. Choisissez-le à partir d’un modèle de menace plutôt que comme une mise à niveau cosmétique vers une charge utile qui aurait dû contenir moins de données.

À retenir : supposez que la charge utile est publique : décodez l'un de vos propres jetons dans le décodeur ToolAcre JWT et auditez ce qu'il expose

Supposons qu'une charge utile JWT ordinaire soit lisible partout où le jeton se déplace. Utilisez la vue de décodage uniquement de ToolAcre pour auditer l'exposition des réclamations, et non pour prouver qui a émis les valeurs. Supprimez les secrets et les champs personnels inutiles au lieu de compter sur base64url pour les masquer.

Si la confidentialité est réellement requise, utilisez un mécanisme dont les propriétés de sécurité documentées l'incluent et gérez les clés en conséquence. Qu'elle soit signée ou chiffrée, la confiance vient toujours de la validation et de la politique cryptographiques configurées, jamais du fait qu'un décodeur affiche une sortie structurée.