使用方法
- 把令牌粘贴到“JWT”中。它由三部分组成,以点号分隔。
- 阅读“签名算法”,了解令牌声明的签名方式。
- 检查“过期时间”。绿色表示按您设备上的时间,令牌仍然有效。
- 阅读“声明”和“载荷”,了解令牌面向谁,以及它包含什么。
JWT 包含什么
JSON Web Token 由三部分组成,以点号分隔。前两部分是以 base64url 编码的 JSON 对象:头部说明令牌如何签名,载荷保存声明(即关于令牌面向谁、何时过期等内容的陈述)。第三部分是签名。
RFC 7519 定义了七个注册的声明名称:iss、sub、aud、exp、nbf、iat 和 jti。下表逐一说明,其中三个时间声明还会以本地日期格式显示。
解码不等于验证
本页面只解码令牌,不检查签名,因为检查需要签名所用的密钥,而验证密钥是保密的。解码后的令牌仍然可能被伪造,因此不要仅因为能在这里读到某个声明,就信任它。
要验证令牌,您的服务器或程序库必须用正确的密钥和预期的算法检查签名,并拒绝签名错误的令牌。
如何读取过期时间
exp 声明是自1970年1月1日00:00 UTC 起的秒数。RFC 7519 第4.1.4节规定,到达该时刻及之后,令牌不得被接受,因此在这一精确时刻,令牌就已算作过期。
没有 exp 声明的令牌永不过期。页面以红色显示这一点,因为永不过期的令牌是值得注意的风险。
示例:RFC 7519 的示例令牌
RFC 7519 第3.1节中的示例,其头部 alg 为 HS256,载荷含 iss 为 joe、exp 为1300819380,以及一个自定义声明。exp 对应2011年3月22日18:43 UTC,因此页面显示该令牌已过期。签名不做检查,所以对任何签名结果都相同。
| 声明 | 值 | 含义 |
|---|---|---|
| iss | joe | 签发者:创建令牌的一方 |
| exp | 1300819380(2011年3月22日18:43 UTC) | 过期时间 |
| http://example.com/is_root | true | 自定义声明 |
常见问题
我的令牌会被发送到服务器吗?
不会。令牌在您的浏览器中解码,页面既不存储也不发送它。您可以自己验证:页面加载完成后断开网络,再解码一个令牌。
本页面能检查令牌是否真实吗?
不能。它只读取头部和声明。检查签名需要签名所用的密钥,本页面从不索取密钥。这项检查必须由您的应用程序完成。
为什么页面说令牌已过期,而我的应用程序仍然接受它?
您的应用程序可能允许一段宽限期,或者它用自己的时钟检查过期时间。本页面按您设备上的时间比较 exp,因此设备时钟错误也会改变结果。
算法 none 是什么意思?
头部表示该令牌没有签名。任何人都能写出这样的令牌,因此服务不得为重要的事务接受它。本页面会用提示标出它。
为什么日期显示的时间与我预期的不同?
日期按您的语言和时区显示,末尾附有时区名称。前面的数字是令牌中保存的值:自1970年起、以 UTC 计算的秒数。
本页面能读取加密的令牌吗?
不能。加密令牌有五部分,没有密钥就无法读取其内容。本页面只读取已签名的令牌,它们有三部分。
资料来源
- RFC 7519:JSON Web Token (JWT)(英文)
- RFC 7518:JSON Web Algorithms,第3.1节中的 alg 值(英文)
- RFC 4648:第5节中的 base64url 编码(英文)
数据和文字最近核对于2026年11月10日星期二。