5. JOSE Header (En-tête JOSE)
Pour un objet JWT, les membres de l'objet JSON représenté par le JOSE Header décrivent les opérations cryptographiques appliquées au JWT et, optionnellement, les propriétés supplémentaires du JWT. Selon que le JWT est un JWS ou un JWE, les règles correspondantes pour les valeurs du JOSE Header s'appliquent.
Cette spécification précise en outre l'utilisation des paramètres d'en-tête (Header Parameters) suivants dans les deux cas où le JWT est un JWS et où il est un JWE.
5.1. "typ" (Type) Header Parameter (Paramètre d'en-tête de type)
Le paramètre d'en-tête "typ" (type) défini par [JWS] et [JWE] est utilisé par les applications JWT pour déclarer le type de média [IANA.MediaTypes] de ce JWT complet. Ceci est destiné à être utilisé par l'application JWT lorsque des valeurs qui ne sont pas des JWT pourraient également être présentes dans une structure de données d'application pouvant contenir un objet JWT ; l'application peut utiliser cette valeur pour lever l'ambiguïté entre les différents types d'objets qui pourraient être présents. Il ne sera généralement pas utilisé par les applications lorsque le type d'objet est déjà connu. Ce paramètre est ignoré par les implémentations JWT ; tout traitement de ce paramètre est effectué par l'application JWT. S'il est présent, il est recommandé (RECOMMENDED) que sa valeur soit "JWT" pour indiquer que cet objet est un JWT. Bien que les noms de types de médias ne soient pas sensibles à la casse, il est recommandé (RECOMMENDED) que "JWT" soit toujours épelé en utilisant des caractères majuscules pour la compatibilité avec les implémentations héritées. L'utilisation de ce paramètre d'en-tête est optionnelle (OPTIONAL).
5.2. "cty" (Content Type) Header Parameter (Paramètre d'en-tête de type de contenu)
Le paramètre d'en-tête "cty" (content type) défini par [JWS] et [JWE] est utilisé par cette spécification pour transmettre des informations structurelles sur le JWT.
Dans le cas normal où des opérations de signature ou de chiffrement imbriquées ne sont pas utilisées, l'utilisation de ce paramètre d'en-tête n'est pas recommandée (NOT RECOMMENDED). Dans le cas où une signature ou un chiffrement imbriqué est utilisé, ce paramètre d'en-tête doit être présent (MUST) ; dans ce cas, la valeur doit être (MUST) "JWT", pour indiquer qu'un JWT imbriqué (Nested JWT) est porté dans ce JWT. Bien que les noms de types de médias ne soient pas sensibles à la casse, il est recommandé (RECOMMENDED) que "JWT" soit toujours épelé en utilisant des caractères majuscules pour la compatibilité avec les implémentations héritées. Voir l'annexe A.2 pour un exemple de JWT imbriqué.
5.3. Replicating Claims as Header Parameters (Réplication des revendications en tant que paramètres d'en-tête)
Dans certaines applications, il est utile que certaines revendications soient directement visibles au logiciel traitant le JWT, sans avoir à déchiffrer ou vérifier d'abord le JWT. Cela peut être accompli en répliquant les valeurs de revendication en tant que valeurs de paramètres d'en-tête.
Cette spécification n'exige ni n'interdit la réplication des revendications dans les paramètres d'en-tête. Cependant, les applications choisissant de le faire doivent (MUST) suivre ces règles :
-
La présence de la revendication et la sémantique de valeur doivent (MUST) être préservées, que la revendication soit dans le JWT Claims Set ou en tant que paramètre d'en-tête.
-
Si la même information est présente aux deux endroits, leurs valeurs doivent (MUST) être identiques. Les implémentations doivent (MUST) vérifier cette cohérence et rejeter le JWT si elles sont incohérentes.