Appendix A. JWT Examples (JWT示例)
本附录提供了JWT的示例。
A.1. Example Encrypted JWT (加密JWT示例)
本节提供了加密JWT的示例。加密JWT使用JWE紧凑序列化表示。
以下示例JOSE Header声明:
- 编码的对象是JWT
- JWT被加密
- 使用RSA-OAEP算法加密Content Encryption Key (CEK)
- 使用AES GCM算法加密JWT Claims Set
{"alg":"RSA-OAEP","enc":"A256GCM"}
以下是加密JWT的JWT Claims Set的示例:
{"iss":"joe",
"exp":1300819380,
"http://example.com/is_root":true}
JWE紧凑序列化的格式为:
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 (嵌套JWT示例)
本节提供了嵌套JWT的示例,演示了嵌套签名和加密。在本示例中,JWT Claims Set首先被签名,然后对生成的JWS进行加密。
第一步,创建包含声明的JWT Claims Set并对其进行签名,创建JWS。第二步,将此JWS用作JWE的明文进行加密。
内部JWT(JWS)的JOSE Header:
{"alg":"RS256"}
外部JWT(JWE)的JOSE Header包含"cty" (content type) 值"JWT",表明携带嵌套JWT:
{"alg":"RSA-OAEP","enc":"A256GCM","cty":"JWT"}
JWT Claims Set与之前示例相同。生成的嵌套JWT是先签名后加密的JWT。