解析JWT结构:三个base64url编码的部分用点分隔(header.payload.signature)。解码每个部分并漂亮打印JSON。支持HS256(HMAC-SHA256)和RS256(RSA-SHA256)签名验证——贴你的令牌和密钥/公钥来验证。显示令牌过期时间、发行者和所有标准claims。
JWT 解码器
即时解码和验证 JWT 令牌。查看标头、载荷和签名。检查令牌过期时间。开发者专用的免费在线 JWT 解码器。
常见问题
什么是JWT令牌,它是如何工作的?
JWT(JSON Web Token,RFC 7519)是一种在双方之间传递声明的紧凑型URL安全方式。它通常用于Web应用程序中的身份验证和授权。结构:JWT由三个部分组成,用点分隔:header.payload.signature。每个部分都是Base64URL编码的。标头(算法和令牌类型):{"alg":"HS256","typ":"JWT"}——指定签名算法(HS256、RS256、ES256等)和令牌类型。载荷(声明):包含关于实体(通常是用户)的陈述和附加元数据。标准声明包括:iss(发行者)、sub(主题/用户ID)、aud(受众)、exp(过期时间)、nbf(不早于)、iat(签发时间)、jti(JWT ID)。签名:用于验证消息在传输过程中未被更改。对于HMAC算法,secret = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)。对于RSA/ECDSA,使用私钥签名,使用公钥验证。我们的解码器解析所有三个部分,验证Base64URL编码,检查过期声明,并以人类可读的格式显示内容。常见用例:用户登录后,服务器创建包含用户ID和声明的JWT,客户端存储JWT(localStorage/cookie),客户端在后续请求的Authorization标头中发送JWT,服务器验证签名并提取声明。
如何解码和检查JWT令牌?
只需将您的JWT令牌粘贴到输入区域。该工具将自动解码并显示:标头部分——算法(alg)、令牌类型(typ)、密钥ID(kid,如果存在)。载荷部分——从Base64URL解码的所有声明,高亮显示的标准声明(iss、sub、exp、iat、nbf、aud),显示其值的自定义声明,以Unix纪元和人类可读的UTC格式显示的时间戳。签名部分——接收到的编码签名,验证状态(需要密钥才能完全验证)。颜色编码:有效令牌(绿色)、过期令牌(黄色)、无效结构(红色)、签名验证结果。该工具完全在您的浏览器中使用JavaScript的atob()和TextDecoder进行Base64URL解码。它处理填充和未填充的Base64URL字符串。示例令牌:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
在线解码JWT令牌安全吗?安全性和隐私如何?
是的,解码JWT是安全的,因为JWT不是加密的——它们是编码的,而不是加密的。任何拥有JWT的人都可以通过Base64解码来读取其载荷。我们的工具增加了安全性:所有解码都在您的浏览器中本地使用客户端JavaScript进行,您的令牌永远不会发送到任何服务器,没有数据离开您的设备,工具在初始页面加载后离线工作,HTTPS确保工具本身未被篡改。安全最佳实践:永远不要通过不受信任的渠道共享包含敏感信息的令牌,在粘贴包含PII(个人身份信息)或机密的令牌时要小心,请记住载荷是任何人都可以读取的——不要在JWT声明中存储敏感数据,传输令牌时始终使用HTTPS,即使客户端检查过期也要在服务器端验证令牌,实施短过期时间(访问令牌为15-30分钟),对长期会话使用刷新令牌,永远不要在JWT载荷中包含密码或API密钥。我们的工具对于调试和开发是安全的,但对于包含高度敏感数据的生产令牌,请考虑使用离线工具。
我可以验证JWT令牌签名是否有效吗?
我们的解码器显示令牌结构和过期时间,但有一些限制:解码与验证——我们可以在没有密钥的情况下解码任何JWT,但签名验证需要原始密钥。我们显示的内容:过期时间(exp声明)与当前时间比较,令牌年龄(iat声明)显示它何时签发,不早于时间(nbf声明,如果存在),使用的算法(alg)以验证它是否符合预期(避免'none'算法)。如果没有您的密钥,我们无法验证的内容:加密签名的完整性、令牌是否被篡改、发行者的真实性。要完全验证,您需要:对于HS256(使用SHA-256的HMAC):服务器用于签名令牌的共享密钥字符串。对于RS256/RS384/RS512(RSA):发行者的公钥或证书。对于ES256/ES384/ES512(ECDSA):来自发行者的公钥。验证过程:解码标头和载荷,重建签名验证输入,使用密钥/秘密计算预期签名,与接收到的签名进行比较。始终在生产环境中在服务器端验证令牌——客户端检查很容易被绕过。
有哪些不同的JWT算法,我应该使用哪种?
JWT支持多种具有不同安全属性的签名算法:HS256(使用SHA-256的HMAC)——对称、共享密钥、最快、最简单,最适合:服务对服务通信、内部微服务、您控制双方的情况。HS384/HS512——更强的HMAC变体,很少需要,使用SHA-384/SHA-512而不是SHA-256。RS256(使用SHA-256的RSA签名)——非对称、公钥/私钥,最适合:第三方身份验证、身份提供者(Auth0、Firebase、Okta)、令牌发行者和验证者是不同方的场景。RS384/RS512——更强的RSA变体,更大的签名,验证更慢。ES256(使用P-256和SHA-256的ECDSA)——非对称、比RSA更小的签名,最适合:移动应用程序(更小的令牌大小)、带宽有限的IoT设备、签名大小很重要的环境。EdDSA(Ed25519签名)——现代、快速、安全、小签名,越来越建议在ECDSA上使用。none(未签名)——危险,永远不要在生产中使用,任何人都可以伪造令牌。建议:对受信任方的简单应用使用HS256。对具有第三方访问的面向公众的应用程序使用RS256或ES256。完全避免'none'算法。我们的解码器识别算法并在检测到'none'时发出警告。
标准JWT声明是什么,它们是什么意思?
标准声明(注册声明)提供了互操作性和定义的行为:iss(发行者)——标识发布JWT的主体(例如,'https://auth.example.com')。sub(主题)——标识作为JWT主题的主体(例如,用户ID '1234567890')。aud(受众)—标识JWT预期的接收者(例如,['api.example.com'])。exp(过期时间)—标识JWT不得被接受处理的过期时间或之后时间(NumericDate)。nbf(不早于)—标识不得接受处理JWT的时间。iat(签发时间)—标识JWT的签发时间(NumericDate,Unix时间戳)。jti(JWT ID)—为JWT提供唯一标识符,可用于防止重放攻击。自定义声明:特定于应用程序的数据,如用户角色、权限、个人资料数据。示例载荷:{"iss":"https://auth.example.com","sub":"1234567890","aud":["api.example.com"],"exp":1516239022,"nbf":1516239022,"iat":1516239022,"jti":"abc123","name":"John Doe","role":"admin"}。我们的解码器高亮显示标准声明,并单独显示自定义声明。
如何处理JWT过期和令牌刷新?
JWT过期(exp声明)对安全至关重要。我们的解码器显示:Unix纪元和人类可读格式的过期时间戳、距离过期的时间(例如,'5分钟后过期')、如果当前时间>exp则显示过期状态。令牌生命周期的最佳实践:访问令牌——短期(15-30分钟)、包含最少的声明、用于API身份验证。刷新令牌——长期(数天/数周)、安全存储(httpOnly cookie)、用于获取新的访问令牌、可以撤销。轮换策略:在过期之前自动刷新(当生命周期的75%已过时)、在后台静默刷新、如果刷新令牌过期则强制重新认证。实现流程:1) 用户使用凭据进行身份验证,2) 服务器颁发访问令牌(15分钟)+ 刷新令牌(7天),3) 客户端使用访问令牌进行API调用,4) 在访问令牌过期之前,客户端使用刷新令牌获取新的访问令牌,5) 如果刷新令牌过期,用户必须重新认证。安全注意事项:安全存储令牌(首选httpOnly cookie而不是localStorage)、为注销实施令牌撤销、通过监控使用模式检测令牌盗窃、使用短过期时间来限制泄露令牌的损害。我们的工具通过显示精确的时间戳帮助调试过期问题。
常见的JWT安全漏洞有哪些,如何预防?
常见的JWT漏洞和缓解措施:None算法攻击——攻击者将alg设置为'none'并删除签名,预防:始终验证alg不是'none',拒绝带有'none'算法的令牌。算法混淆——攻击者将RS256令牌转换为HS256并使用公钥签名,预防:明确验证算法是否符合预期,不要为同一密钥支持多种算法。弱密钥——HS256的短秘密使暴力破解成为可能,预防:使用具有>= 256位熵的秘密(32+个随机字符),定期轮换密钥。令牌泄漏——暴露在URL、日志或JavaScript中,预防:永远不要在URL参数中传递令牌,清理日志以删除令牌,使用httpOnly cookie而不是localStorage。缺少过期——令牌永不过期,允许无限期访问,预防:始终设置exp声明,使用短过期时间,实施刷新令牌轮换。重放攻击—捕获的令牌被重用,预防:使用jti声明进行唯一标识,为撤销的令牌维护令牌黑名单,实施短过期。计时攻击——签名验证时间变化,预防:对签名验证使用恒定时间比较。我们的解码器通过以下方式帮助识别漏洞:如果检测到'none'算法则发出警告、显示缺少的exp声明、突出显示弱算法选择、突出显示异常的载荷结构。
深入了解更多使用技巧和高级功能
使用场景
了解如何在您的日常工作流程中使用此工具
API 调试
检查 API 响应中的 JWT 负载。
- 解码认证令牌
- 验证用户声明
- 检查令牌过期时间
- 调试认证流程
安全测试
验证 JWT 签名并检测篡改。
- 签名验证
- 算法混淆测试
- 声明验证
- 令牌安全审计
开发
理解 JWT 结构以便实现。
- 学习 JWT 格式
- 测试令牌生成
- 调试 OAuth 流程
- 检查 ID 令牌
关于此工具
JWT(JSON Web Token)看着像乱码,直到你解码它。这个工具把它分成header、payload和signature——不需要服务器,这点很重要因为JWT经常包含敏感信息。调试你的认证令牌,看里面有什么claims,验证签名(如果你有密钥)。调试认证流程的时候省了很多时间。
技术细节
隐私承诺
🔒 **隐私优先**:与基于服务器的工具不同,AI-TOL 在您的浏览器中本地处理所有内容 - 您的数据永远不会离开您的设备。没有上传,没有跟踪,完全私密。