Skip to main content
UFOZoo

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. 1将 JWT Token(header.payload.signature)粘贴到输入区域,自动解析。
  2. 2查看解码后的头部和负载 JSON、声明摘要和签名字节。
  3. 3检查安全警告,如过期 Token 或弱算法。
  4. 4查看声明摘要表了解每个注册声明的值和当前有效性状态(有效、过期、未生效)。
  5. 5使用各段旁的复制按钮单独复制头部、负载或签名。
  6. 6在美化 JSON 视图中检查头部和负载的完整结构。
  7. 7查看签名段的十六进制字节,确认签名部分存在且解码正常。
  8. 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 为准。