什么是JWT?
JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在各方之间安全地传输信息。它是一个紧凑的、自包含的字符串,由三部分组成:Header(头部)、Payload(载荷)和Signature(签名),每部分之间用点号(.)分隔。JWT广泛应用于Web应用的认证和授权场景。
JWT的工作原理很简单:服务器在用户登录成功后生成一个JWT返回给客户端。客户端将JWT保存在localStorage或Cookie中,之后的每次请求都在HTTP Header中携带这个JWT。服务器收到请求后验证JWT的签名和有效期,确认用户身份。这种方式比传统的Session+Cookie方案更轻量,特别适合前后端分离架构和微服务架构。
JWT的结构
Header(头部)
Header通常包含两个信息:令牌类型(typ,通常是JWT)和签名算法(alg,如HS256、RS256等)。Header是一个JSON对象,经过Base64Url编码后形成JWT的第一部分。
Payload(载荷)
Payload包含你想要传输的声明信息(Claims)。标准声明包括:iss(签发者)、sub(主题/用户ID)、aud(接收者)、exp(过期时间)、iat(签发时间)、nbf(生效时间)等。你也可以添加自定义声明。
Signature(签名)
Signature是JWT安全性的关键。它由Header和Payload的Base64Url编码拼接后,使用服务器密钥通过指定算法计算得出。注意:Payload中的信息虽然经过Base64Url编码,但并非加密——任何人都可以解码查看。因此,JWT中不应存储敏感信息。
JWT解析工具功能
Token解码
粘贴JWT字符串后,工具会自动将其拆分为Header、Payload和Signature三部分,分别解码并格式化显示。
过期时间检测
如果Payload中包含exp(过期时间)字段,工具会自动计算并显示过期时间,同时告诉你该Token当前是否已经过期。
常见使用场景
接口调试
在前后端对接或排查认证问题时,你需要查看JWT中的内容来确认Token是否正确。使用本工具可以快速解码JWT,无需编写代码。
问题排查
当遇到401 Unauthorized错误时,通常是因为JWT过期或无效。使用本工具查看Token的过期时间,可以快速确认是否是过期导致的问题。
学习JWT结构
如果你正在学习JWT的工作原理,本工具可以帮你直观地理解JWT的三段式结构,查看实际的Header和Payload内容。
使用教程
步骤一:粘贴JWT
将JWT Token字符串粘贴到输入框中。JWT通常从Authorization Header中获取,格式为 Bearer eyJhbGciOi...,复制Bearer后面的部分即可。
步骤二:解析
点击「解析」按钮,工具会显示解码后的Header和Payload。如果Token包含过期时间,还会显示过期状态。
常见问题 FAQ
JWT安全吗?
JWT的签名可以防止数据被篡改,但Payload部分是Base64编码而非加密,任何人都可以解码查看。因此不要在JWT中存储密码、密钥等敏感信息。对于高安全要求的场景,应使用JWE(JSON Web Encryption)对JWT进行加密。
JWT和Session有什么区别?
Session将用户状态存储在服务器端,客户端只保存Session ID。JWT将用户状态存储在客户端(Token本身),服务器无状态。JWT更适合分布式系统和微服务架构。但JWT也有一些缺点:无法主动撤销(除非使用黑名单)、Token体积较大等。
JWT过期了怎么办?
通常的解决方案是使用Refresh Token机制。Access Token的过期时间较短(如15分钟),Refresh Token的过期时间较长(如7天)。Access Token过期后,客户端用Refresh Token向服务器请求新的Access Token。