JWT解码 在线解析调试JWT令牌签名验证
jwt解码器在线工具:粘贴JWT即可解析头部、载荷和签名,自动转换过期时间并给出安全警告,适合OAuth与SSO调试、开发和排障。
更新于 2026-08-26
相关工具
功能特性
- 即时解码 JWT 头部、负载和签名
- 检查注册声明,时间戳自动转为可读日期
- 安全警告:过期 Token、缺少 exp、alg: none
- 美化的 JSON 格式显示头部和负载
- 签名以十六进制字节显示
- 常见注册声明徽章:iss、sub、aud、exp、iat、nbf,时间戳显示为可读日期
- 解析 JWS 格式 Token(header.payload.signature):段数不对时给出明确的解析错误
- 头部、负载、签名逐一复制
使用方法
- 1将 JWT Token(header.payload.signature)粘贴到输入区域,自动解析。
- 2查看解码后的头部和负载 JSON、声明摘要和签名字节。
- 3检查安全警告,如过期 Token 或弱算法。
- 4查看声明摘要表了解每个注册声明的值和当前有效性状态(有效、过期、未生效)。
- 5使用各段旁的复制按钮单独复制头部、负载或签名。
- 6在美化 JSON 视图中检查头部和负载的完整结构。
- 7查看签名段的十六进制字节,确认签名部分存在且解码正常。
- 8用开发环境中的示例 Token 测试你的 JWT 实现。
常见问题
什么是 JWT?
JSON Web Token (JWT) 是一种紧凑、URL 安全的令牌格式,用于在双方之间传递声明。它由三个 Base64URL 编码的部分组成,用点号分隔:头部(算法和令牌类型)、负载(声明/数据)和签名(加密验证)。JWT 常用于 API 认证(OAuth 2.0、OpenID Connect)。
把我的 JWT 粘贴到工具中安全吗?
安全。解析完全在浏览器本地通过 JavaScript 完成,Token 不会被上传到任何服务器。
解码 JWT 意味着它是真实的吗?
不是。解码 JWT 仅读取其内容:头部和负载是 Base64URL 编码的,而不是加密的。任何人都可以解码 JWT。要验证真实性,必须使用颁发者的密钥或公钥检查签名。本工具有助于检查内容,但签名验证应在服务端完成。
exp、iat 和 nbf 是什么意思?
exp(过期时间):Token 在此时间戳后过期。iat(签发时间):Token 的签发时间。nbf(生效时间):Token 在此时间戳之前无效。本工具将这些 Unix 时间戳转换为可读日期,并在 Token 过期或尚未生效时发出警告。
alg: none 是什么意思?
alg: "none" 表示 JWT 没有签名:第三部分为空。这是安全风险,因为任何人都可以伪造带有任意声明的 Token。在生产环境中应始终拒绝 alg: none 的 Token。
如何验证 JWT 签名?
本工具仅解码和显示 JWT 内容,不验证签名。要验证 JWT 需要:(1)Token 头部(alg、kid),(2)负载声明,(3)Token 签名,(4)颁发者的公钥(RS/ES 算法)或密钥(HS 算法)。使用后端库如 jsonwebtoken(Node.js)、PyJWT(Python)或框架内置的 JWT 中间件。不验证签名就信任解码后的 JWT 是危险的。
没有密钥如何解码 JWT?
JWT 头部和负载是 Base64URL 编码而非加密的。无需密钥即可解码:粘贴 Token 即可查看解码后的 JSON。但解码不等于验证真实性。只有签名验证(需要密钥或公钥)才能确认 Token 来自可信源。
JWT、JWS 和 JWE 有什么区别?
JWT 是总标准。JWS(JSON Web Signature)是带签名的 JWT,最常见类型,第三段是签名。JWE(JSON Web Encryption)是加密的 JWT,负载被加密。本工具只解析 JWS Token:JWE 有五个段,会直接显示解析错误。OAuth 2.0 和 OpenID Connect 中的 Token 通常是 JWS。
头部中的 kid 字段是什么?
kid(Key ID)是可选头部参数,提示 Token 使用哪个密钥签名。颁发者轮换密钥或有多个签名密钥时使用。验证库通过 kid 从 JWKS 端点查找正确的公钥。没有匹配的 kid 会导致验证失败。
可以用此工具调试 OAuth 2.0 / OpenID Connect Token 吗?
可以。本工具非常适合检查 Google、Auth0、Keycloak、Azure AD 等 OAuth 2.0 / OpenID Connect 提供者的 ID Token 和访问令牌。解码后可验证 iss(颁发者)、aud(受众)、sub(主体)、email 和过期时间。
iat 和 nbf 对 Token 有效期意味着什么?
iat(签发时间):Token 的创建时间,仅供参考。nbf(生效时间):此时间之前不应接受该 Token。与 exp(过期时间)一起定义 Token 的有效时间窗口。正确配置的服务器检查:当前时间 >= nbf 且当前时间 < exp。本工具显示可读日期并在 Token 超出有效期时发出警告。
为什么这个工具不验证我的 JWT 签名?
签名验证需要签发方的密钥(HS256 用共享密钥,RS256/ES256 用公钥),而密钥绝不能暴露在浏览器页面中:任何查看源码的人都能读到。因此验证必须在后端进行:jsonwebtoken(Node.js)、PyJWT(Python)或框架自带的中间件。本工具解码并展示三个段,供你检查 claims、有效期和算法,但它不能也不应该验证真实性。
为什么我的 Token 显示解析错误或解码出乱码?
有效的 JWT 由 3 个点分隔的段组成(header.payload.signature)。解析错误的常见原因:输入根本不是 JWT(许多 OAuth 2.0 的 access token 是随机不透明字符串)、复制时带入了换行或引号、或内容被双重 URL 编码。去掉空白和引号,粘贴原始 Token,并确认它恰好包含两个点。
为什么 jwt 解码器显示过期时间是数字而不是日期?
JWT 中的时间声明(exp、iat、nbf)是 Unix 时间戳(1970-01-01 以来的秒数),所以原始负载 JSON 里永远是数字。任何 jwt 解码器(包括本工具)都会在摘要视图中转换成可读日期,但如果你复制原始负载,看到的就是数字。把它乘以 1000 就能得到 JavaScript 的 Date 毫秒值,或者用 Unix 时间戳转换工具。
为什么用 jwt在线解码器 解析时,Token 显示已过期但应用里还能登录?
可能的原因:服务器允许时钟偏移(通常 30-60 秒);应用使用 refresh token 或滑动会话,access token 过期也不会登出;或你的设备时钟不准。请把 exp 声明与当前 UTC 时间对比:Token 的过期判断始终以 UTC 为准。