JWT在线解码与签名验证
粘贴JSON Web Token,即可查看头部和载荷、每个声明的含义以及过期时间。填入密钥或公钥还能验证签名。所有处理都在浏览器中完成,令牌不会离开你的设备。
免费 · 无需注册
使用方法
- 把JWT粘贴到“编码后的令牌”框中,开头的“Bearer ”会自动去掉。
- 查看解码后的头部和载荷。每个声明都有说明,exp、iat等时间会按你的时区显示。
- 通过过期提示查看令牌是有效、已过期还是尚未生效。
- 验证签名时,HS256、HS384、HS512令牌请输入共享密钥;RS、PS、ES或EdDSA令牌请粘贴公钥或JWKS。
为什么使用这个工具
即时解码
粘贴后立即解码头部和载荷,JSON分色显示,令牌三部分高亮标出。
声明一看就懂
解释标准声明和常见的OpenID Connect声明,并把时间戳转换为易读的日期。
过期检查
一眼看出令牌是否有效、是否过期或尚未生效,以及还有多久过期。
签名验证
支持用密钥、PEM公钥、JWK或JWKS验证HS256/384/512、RS256/384/512、PS256/384/512、ES256/384/512和EdDSA。
隐私优先
解码和验证使用浏览器内置加密功能,令牌和密钥不会被发送或保存。
清晰的错误提示
对截断的令牌、错误的Base64、加密的JWE、alg none以及类型不符的密钥给出明确提示。
什么是JWT?
JSON Web Token(JWT,RFC 7519)是一种在系统之间紧凑传递签名信息(例如用户身份)的方式。它由点分隔的三段Base64url组成:标明算法的头部、包含声明的载荷,以及签名。
头部和载荷只是编码,并没有加密。任何拿到令牌的人都能读取,这正是本解码器所做的事。让JWT可信的是签名:它证明令牌由持有密钥的一方创建,且未被修改。
常见签名算法
| 算法 | 密钥类型 | 验证所用 |
|---|---|---|
| HS256 / HS384 / HS512 | 共享密钥(HMAC) | 与签名时相同的密钥 |
| RS256 / RS384 / RS512 | RSA密钥对 | 签发方的RSA公钥 |
| PS256 / PS384 / PS512 | RSA密钥对(PSS填充) | 签发方的RSA公钥 |
| ES256 / ES384 / ES512 | 椭圆曲线密钥对 | 签发方的EC公钥 |
| EdDSA | Ed25519密钥对 | 签发方的Ed25519公钥 |
去哪里找公钥
Auth0、Okta、Microsoft Entra ID、Google、Keycloak等身份提供商会以JWKS形式公开密钥。打开提供商的/.well-known/openid-configuration地址,进入jwks_uri链接,把整段JSON粘贴到这里。工具会自动选择kid与令牌头部一致的密钥。
安全建议
- 不要把生产环境的令牌或密钥粘贴到会把数据发送到服务器的工具中。本页面加载后可离线使用。
- 不要在载荷中放密码等机密信息,因为任何拿到令牌的人都能读取。
- 在信任令牌之前,务必在服务器端验证签名、签发者、受众和过期时间。
- 拒绝alg none的令牌,并在代码中固定预期的算法,而不是从令牌中读取。
常见问题
把JWT粘贴到这里安全吗?
安全。令牌在你的浏览器中用JavaScript解码和验证,不会被上传、记录或保存。但仍应像对待密码一样对待有效令牌,不要随意分享。
没有密钥能解码JWT吗?
能。头部和载荷只是Base64url编码的JSON,任何人都能读取。只有验证签名或生成新令牌时才需要密钥。
为什么提示签名无效?
可能是密钥与签名时使用的不一致、令牌被修改过,或者密钥是Base64编码但没有勾选对应选项。对于RS和ES令牌,请使用签发方对应kid的公钥。
JWT中的exp是什么意思?
exp是以秒为单位的Unix时间戳形式的过期时间,超过这个时间令牌应被拒绝。iat是签发时间,nbf是在此之前不得接受令牌的时间。
能解码加密令牌(JWE)吗?
工具能识别由五部分组成的JWE并显示其头部。载荷是加密的,只能用接收方的私钥读取。
HS256和RS256有什么区别?
HS256用同一个共享密钥签名和验证,所有验证令牌的服务都必须知道这个密钥。RS256用私钥签名、用公钥验证,公钥可以安全地公开。
相关工具
想开发什么吗?
告诉我们你想构建什么。
告诉我们您需要构建什么:从简单的网站到完整应用、AI 解决方案、自动化或定制系统都可以。