JWT 解码(查看内容・过期时间・验证签名)
粘贴 JWT 即可解析头部和载荷,并把过期时间显示成日期时间。填入密钥还能验证签名。
JWT
0 个字符・0 行
处理全部在本设备上完成,输入的内容不会发送到任何地方。
JWT 往往相当于登录凭证。请不要粘贴到不可信的其他网站。
解析结果
结果会显示在这里
觉得好用的话,欢迎分享
使用方法
1. 粘贴 JWT
点按上方输入框的“粘贴”,即可放入复制好的 JWT。带“Bearer”或前后有引号也没关系。只想试试的话,点按“示例”。
点击左侧输入框上方的“粘贴”,即可放入复制好的 JWT。带“Bearer”或前后有引号也没关系。只想试试的话,点击“填入示例”。
2. 查看内容
下方的“解析结果”中会显示“未过期”“已过期”等标签,下面按本设备的时间列出过期时间和签发时间,并附上“◯年后”“◯小时前”。再往下是头部和载荷的 JSON,点按“复制载荷”即可复制格式化后的 JSON。
右侧结果框上方会显示“未过期”“已过期”等标签,下面按本设备的时间列出过期时间和签发时间,并附上“◯年后”“◯小时前”。再往下是头部和载荷的 JSON,点击“复制载荷”即可复制格式化后的 JSON。
3. 验证签名
在最下方的“验证签名”栏中,HS256 等填入密钥,RS256・ES256 等填入公钥。填入后会立即显示“签名正确”或“签名不匹配”。示例令牌的密钥是 papatto-sample-secret。
在左下方的“验证签名”栏中,HS256 等填入密钥,RS256・ES256 等填入公钥。填入后会立即显示“签名正确”或“签名不匹配”。示例令牌的密钥是 papatto-sample-secret。
适合这些场景
想查清登录为什么突然失效
粘贴令牌后,会按本设备的时间显示过期时间(exp)和签发时间(iat),并附上“◯分钟前”。过期了一看标签就知道,时钟不准或有效期设得太短也很容易发现。
Web 工程师・客服人员
想确认令牌里装了什么
用户(sub)・签发者(iss)・接收方(aud),以及权限等自定义声明,都能以格式化后的 JSON 查看。从开发者工具复制的带“Bearer”的字符串也能直接粘贴。
开发或测试 API 的人
想确认签名密钥对不对
填入 HS256 的密钥,或 RS256・ES256 的公钥(PEM・JWK),就能立即确认签名是否由这把密钥生成。认证因密钥配置不一致而失败时,可以用来排查问题。
开发认证功能的工程师
不想把真实令牌发到外面
解析和验证全部在本设备的浏览器中完成。令牌和密钥不会发送到服务器,不必把认证信息交给别人的服务器。
注重安全的人
使用前须知
- JWT 的内容没有加密,任何人都能读取。请不要放入密码等不想被看到的信息。
- 加密的 JWT(JWE)无法读取内容,只能看到头部。
- 没有自动获取公钥的功能(从 JWKS 的 URL 读取)。请自己粘贴密钥(因为本页面不与外部通信)。
关于 JWT
JWT(JSON Web Token)是用“头部.载荷.签名”3 个部分来表示登录用户的信息和权限的字符串。头部和载荷只是把 JSON 转成了 {tool:base64} 的 URL 安全形式,任何人都能还原读取。防止篡改的是最后的签名。
本工具会把载荷中的 exp(过期时间)・nbf(生效时间)・iat(签发时间)按本设备时区的日期时间和“◯小时后”这样的说法显示出来,过期时会用标签提醒。纯数字的时间也可以用 {tool:unix-time} 转换。填入密钥后,还能只在浏览器中验证 HS256・RS256・PS256・ES256・EdDSA 等签名是否正确。
常见问题
整理了使用前容易在意的问题。
粘贴的 JWT 会被发送到哪里吗?
不会。解析和验证签名都只在你设备的浏览器中进行,JWT 和密钥都不会发送到服务器。JWT 往往相当于登录凭证,请不要粘贴到来历不明的其他网站。
过期时间(exp)该怎么看?
从“解析结果”上方的标签可以看出“未过期”“已过期”“尚未生效”“不过期”。下方的列表会按本设备的时区显示过期的日期时间,并附上“3 小时后”“2 天前”这样距现在的时间。
能验证签名吗?
可以。HS256・HS384・HS512 填入密钥(文本或 Base64),RS256・PS256・ES256・EdDSA 等填入公钥,就会立即显示“签名正确”或“签名不匹配”。
支持哪些格式的公钥?
支持以“-----BEGIN PUBLIC KEY-----”开头的 PEM、“-----BEGIN RSA PUBLIC KEY-----”、证书(-----BEGIN CERTIFICATE-----)、JWK、JWK Set({"keys": […]})。使用 JWK Set 时,会选择与头部 kid 相同的密钥。
带着“Bearer”也能读取吗?
可以。带“Authorization: Bearer”的整行,以及前后的空格・换行・引号,都会自动去掉后再读取。
显示“这是没有签名的 JWT(alg: none)”
这是没有签名、任何人都能篡改内容的令牌。如果不是测试用的,请检查服务器的设置。用于登录等用途的服务器,不应接受 alg 为 none 的 JWT。
显示“这是加密的 JWT(JWE)”
用“.”分成 5 个部分的 JWT,是内容经过加密的 JWE。没有接收方的私钥就无法读取,所以本工具只显示头部(加密算法等)。
显示“无法作为 JWT 读取”
可能是复制时漏掉了一部分,或者混入了 JWT 不能使用的字符。工具会指出哪个部分无法读取,并在输入框的对应位置标上橙色记号,请检查那里。
JWT 的内容是加密的吗?
不是。头部和载荷只是按固定的表换成了文字(base64url),任何人都能读取。请不要放入密码或个人信息。
可以免费使用吗?
免费。无需注册,也没有广告。