Aller au contenu principal

Appendix A. JWT Examples (Exemples de JWT)

Cette annexe fournit des exemples de JWT.

A.1. Example Encrypted JWT (Exemple de JWT chiffré)

Cette section fournit un exemple de JWT chiffré. Le JWT chiffré utilise la sérialisation compacte JWE.

L'exemple d'en-tête JOSE suivant déclare que :

  • L'objet encodé est un JWT
  • Le JWT est chiffré
  • La clé de chiffrement de contenu (CEK) est chiffrée à l'aide de l'algorithme RSA-OAEP
  • Le JWT Claims Set est chiffré à l'aide de l'algorithme AES GCM
{"alg":"RSA-OAEP","enc":"A256GCM"}

Voici un exemple de JWT Claims Set pour le JWT chiffré :

{"iss":"joe",
"exp":1300819380,
"http://example.com/is_root":true}

Le format de sérialisation compacte JWE est :

BASE64URL(UTF8(JWE Protected Header)) || '.' ||
BASE64URL(JWE Encrypted Key) || '.' ||
BASE64URL(JWE Initialization Vector) || '.' ||
BASE64URL(JWE Ciphertext) || '.' ||
BASE64URL(JWE Authentication Tag)

A.2. Example Nested JWT (Exemple de JWT imbriqué)

Cette section fournit un exemple de JWT imbriqué, démontrant la signature et le chiffrement imbriqués. Dans cet exemple, le JWT Claims Set est d'abord signé, puis le JWS résultant est chiffré.

Dans la première étape, un JWT Claims Set contenant les revendications est créé et signé, créant un JWS. Dans la deuxième étape, ce JWS est utilisé comme texte en clair pour un JWE à chiffrer.

L'en-tête JOSE pour le JWT interne (JWS) :

{"alg":"RS256"}

L'en-tête JOSE pour le JWT externe (JWE) contient une valeur "cty" (content type) de "JWT", indiquant qu'un JWT imbriqué est transporté :

{"alg":"RSA-OAEP","enc":"A256GCM","cty":"JWT"}

Le JWT Claims Set est le même que dans l'exemple précédent. Le JWT imbriqué résultant est un JWT signé puis chiffré.