跳到主要内容

6. 未保护的 JWT (Unsecured JWTs)

为支持 JWT 内容通过 JWT 内部签名和/或加密以外的方式获得保护的用例 (例如对包含 JWT 的数据结构进行签名), JWT 也可以在没有签名或加密的情况下创建 (MAY). 未保护 JWT 是一种 JWS, 它使用 "alg" 头部参数值 "none", 并使用空字符串作为其 JWS 签名值, 如 JWA 规范 [JWA] 所定义; 它是以 JWT 声明集作为 JWS 载荷的未保护 JWS.

6.1. 未保护 JWT 示例 (Example Unsecured JWT)

下面的 JOSE 头部示例声明被编码对象是未保护 JWT:

{"alg":"none"}

对 JOSE 头部 UTF-8 表示的字节进行 Base64url 编码, 得到以下编码后的 JOSE 头部值:

eyJhbGciOiJub25lIn0

下面是一个 JWT 声明集示例:

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

对 JWT 声明集 UTF-8 表示的字节进行 Base64url 编码, 得到以下编码后的 JWS 载荷 (换行仅用于显示):

eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt
cGxlLmNvbS9pc19yb290Ijp0cnVlfQ

编码后的 JWS 签名为空字符串.

按此顺序将这些编码部分用句点 ('.') 字符连接, 得到完整 JWT (换行仅用于显示):

eyJhbGciOiJub25lIn0
.
eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt
cGxlLmNvbS9pc19yb290Ijp0cnVlfQ
.