JWT 解码

在浏览器中解码 JSON Web Token:查看 header 与 payload,把 iat、nbf、exp 转成日期并判断是否过期,也能验证 HS256、HS384、HS512 签名。

JWT 只在你的浏览器中解码,不会发送到服务器,离开页面后也不会被记住。

验证签名

时间字段

字段 时间戳 日期时间(本机时区) 相对时间
签名

JWT 是什么?

JWT(JSON Web Token)是常见的登录凭证格式,由三段以 . 分隔的 Base64URL 组成:header.payload.signature。header 说明签名算法,payload 是用户数据与过期时间等「声明」(claim),signature 用来确认内容没有被篡改。

如何使用

  1. 把 JWT 粘贴到左边,可以包含开头的 Bearer ,右边会立即显示 header、payload 与过期状态。
  2. iat(签发)、nbf(生效)、exp(过期)会转成你所在时区的日期时间。
  3. 如果是 HS256、HS384、HS512,输入密钥即可验证签名是否正确。

示例

点「载入示例」载入的 JWT,payload 解码后是:

{
  "sub": "1234567890",
  "name": "Mike",
  "role": "admin",
  "iat": 1700000000,
  "exp": 4102444800
}

它是以密钥 toolpivo-secret 签出的 HS256 token。

常见问题

JWT 的内容是加密的吗?

不是。header 与 payload 只是 Base64URL 编码,任何人拿到 token 都能看到内容,所以不要在 payload 放密码等机密。签名只能证明内容没有被改过,不能隐藏内容。

把 token 粘贴到这里安全吗?

解码与验证都在你的浏览器中完成,token 与密钥不会发送到服务器,也不会保存到浏览器里。不过生产环境的 token 仍建议用完就让它过期。

为什么 RS256 不能验证?

RS256、ES256 等算法用私钥签名、公钥验证,需要取得签发方的公钥;本工具目前只支持用同一把密钥签名与验证的 HS256、HS384、HS512。

exp 的单位是什么?

按照 JWT 标准(RFC 7519),exp、iat、nbf 都是以「秒」为单位的 Unix 时间戳,不是毫秒。