Outils de développement · Décodeur JWT
Les sept revendications JWT enregistrées : iss, sub, aud, exp, nbf, iat et jti
· Contexte
jwt formats de données authentification
RFC 7519 réserve sept noms de revendications avec des significations et des types définis. Cet article explique chacun d'entre eux, les types StringOrURI et NumericDate qui les sous-tendent, et comment les revendications enregistrées, publiques et privées coexistent.
Quels noms de revendications dois-je utiliser ? — la question de conception à laquelle répond le registre
Le choix des noms de revendications est en partie une décision d'interopérabilité. La réutilisation d'un nom enregistré donne aux lecteurs et aux bibliothèques une signification établie, tandis que les noms spécifiques à l'application nécessitent une documentation locale. ToolAcre reconnaît sept noms principaux dans sa table de description et laisse les autres revendications visibles sans attribuer de sémantique.
Un nom familier n'est pas automatiquement digne de confiance. Le décodeur lit n'importe quel objet contenu dans le jeton et ne vérifie jamais sa signature. Le vocabulaire enregistré aide les humains à classer les données ; seul un vérificateur de confiance peut établir qu'un émetteur a fourni la valeur protégée.
iss et sub sont affichés sous forme de chaînes ; cette implémentation n'applique pas la syntaxe StringOrURI
`iss` identifie de qui le jeton prétend qu'il l'a émis, et `sub` identifie de qui ou de quoi il s'agit. ToolAcre décrit les deux et affiche leurs valeurs, mais son implémentation ne valide pas une grammaire StringOrURI ni ne compare l'un ou l'autre des champs avec la configuration du service.
Un vérificateur doit lier l'émetteur attendu à des éléments de clé fiables et interpréter le sujet sous l'espace de noms de cet émetteur. La copie d'une chaîne d'émetteur connue dans une charge utile fabriquée donne au décodeur un aspect convaincant sans établir l'origine. Utilisez ces champs uniquement après vérification cryptographique.
aud — les destinataires prévus, sous forme de chaîne ou de tableau
`aud` décrit les destinataires prévus et peut être représenté sous la forme d'une valeur ou d'une liste selon les règles de jeton applicables. Le tableau des revendications génériques de ToolAcre conserve les tableaux sous forme de texte JSON mais ne décide pas si le service actuel y apparaît.
L'audience est contextuelle. Le même jeton authentifié peut être approprié pour une API et inapproprié pour une autre. Un serveur de ressources a besoin d'un identifiant attendu dans une configuration approuvée et doit rejeter une incompatibilité plutôt que de laisser le jeton définir où il doit être accepté.
exp, nbf et iat — les trois revendications NumericDate qui limitent un jeton dans le temps
`exp`, `nbf` et `iat` sont des revendications NumericDate. ToolAcre traite les nombres finis comme des secondes depuis l'époque, multiplié par 1,000 pour l'affichage de la date et l'expiration des étiquettes ou pas avant par rapport à l'horloge du navigateur. Il ne définit pas de marge de manœuvre et n'impose pas l'acceptation du serveur.
Une expiration marque une limite de fin revendiquée, et non une preuve que le jeton a toujours été valide. Pas avant marque une limite de départ revendiquée et émis à enregistre une heure de création revendiquée. Chacun peut être forgé dans une charge utile, le calcul du temps doit donc suivre la vérification de la signature dans un flux fiable.
jti — un identifiant unique pour la détection de relecture et les listes de refus
`jti` est un identifiant de jeton. Les systèmes peuvent utiliser un identifiant authentifié et généré de manière appropriée pour le suivi des réexécutions ou l'état de révocation, mais la revendication à elle seule ne fournit aucune de ces propriétés. ToolAcre le décrit comme un identifiant de jeton pour la détection de relecture et affiche sa valeur exacte.
L'unicité, le stockage et le comportement de recherche appartiennent à l'architecture de l'émetteur et du vérificateur. Un décodeur ne peut pas déterminer si un autre jeton a réutilisé l'identifiant ou si une liste de refus le contient. Traitez-la comme une valeur de corrélation candidate jusqu'à ce que le système de confiance environnant fournisse des preuves.
Descriptions enregistrées et revendications spécifiques à l'application dans l'affichage ToolAcre
L'implémentation distingue les noms enregistrés uniquement par un texte explicatif. Chaque propriété de charge utile est toujours renvoyée par `listClaims` ; les noms inconnus reçoivent une description nulle et l'interface utilisateur les étiquette en fonction de l'application. Il ne consulte pas de registre public et n'empêche pas les collisions de noms privés.
Cette limite évite de revendiquer plus que ce que la source prouve. Les équipes doivent documenter leurs revendications privées et choisir des noms résistants aux collisions lorsque l'interopérabilité est importante. L’absence de description du décodeur signifie « pas dans cette table locale de sept noms », ni « invalide » ni « sûr à ignorer ».
Exemple concret : lire une charge utile réaliste et classer chaque réclamation
Considérez `{"iss":"https://issuer.example","sub":"user-7","aud":["orders"],"exp":1717246800,"nbf":1717243100,"iat":1717243200,"jti":"demo-9","tenant":"north"}`. ToolAcre décrit les sept champs et étiquettes enregistrés `tenant` spécifiques à l'application lors du formatage des trois heures numériques.
Cette classification permet de revoir la conception de la charge utile. Il n'authentifie pas l'URL, le sujet, l'audience, les dates, l'identifiant ou le locataire. Un jeton contrefait peut reproduire exactement l’objet. Introduisez uniquement les réclamations vérifiées dans la logique d’autorisation, puis appliquez les valeurs attendues du service consommateur.
À retenir : utilisez les noms enregistrés lorsqu'ils conviennent – le décodeur ToolAcre JWT affiche la charge utile afin que vous puissiez voir quelles revendications un véritable émetteur définit
Utilisez des noms enregistrés lorsque leurs significations définies correspondent, car un vocabulaire reconnaissable réduit les traductions inutiles. Gardez les champs privés documentés et minimes. Ne surchargez pas `sub`, `aud` ou une revendication de temps avec une signification locale différente simplement parce que le code en aval analyse déjà cette clé.
ToolAcre peut montrer quels noms porte un jeton sécurisé et comment ses revendications numériques s'affichent. Il ne peut certifier aucune valeur. Le résultat utile du décodage est un inventaire à réviser ; le résultat utile de la vérification et de la politique est une décision, et celles-ci restent distinctes.