Loading...
Loading...
免费在线 JWT 解析与生成工具——解码、验证和创建 HS256、RS256 签名的 JSON Web Token。即时查看头部、载荷和签名。
Header
Payload
密钥
JSON Web Token(JWT)是一个开放标准(RFC 7519),用于在各方之间以 JSON 对象形式安全地传输信息。JWT 由三个 base64url 编码的段组成,由点分隔:头部(包含算法和令牌类型)、载荷(包含用户 ID、过期时间和权限等声明)和签名(用于验证令牌未被篡改)。
载荷包含声明——关于实体(通常是用户)的陈述和额外的元数据。有三种类型的声明:注册声明(iss、sub、exp、iat 等——由标准定义)、公共声明(由使用者定义,应具有防冲突性)和私有声明(各方之间约定的自定义声明,如用户角色或权限)。
JWT 支持无状态认证——服务器无需存储会话数据,因为所有必要信息都包含在令牌本身中。这使得 JWT 非常适合分布式系统和微服务架构,避免在每个请求时查询中央会话存储。
然而,无状态化有其代价。在令牌过期前撤销它需要黑名单机制。令牌比会话 ID 更大,会影响带宽。由于载荷仅经过 base64 编码(而非加密),敏感信息绝不能存储在 JWT 中。始终使用 HTTPS 并保持令牌生命周期短暂。
此工具可以解码任何有效的 JWT 以检查其头部和载荷内容,或生成用于测试的新 JWT。生成时,你可以自定义头部算法(HS256、RS256 等)、添加自定义载荷声明并设置令牌过期时间。生成的令牌包含使用提供的密钥或密钥对计算的正确签名。
JWT 默认被签名但未加密。载荷是 base64url 编码的,这是可逆的——任何人都可以解码并读取内容。切勿在 JWT 载荷中存储敏感数据(密码、信用卡号)。始终使用 HTTPS 防止令牌在传输中被窃取。
JWT 是无状态的——服务器不存储任何信息;令牌本身包含所有用户信息。会话将用户数据存储在服务器端,只将会话 ID(通常是 cookie)传递给客户端。JWT 水平扩展性更好但更难撤销。会话更容易失效但在分布式系统中需要共享会话存储。
使用短期访问令牌(如 15 分钟)配合长期刷新令牌(如 7 天)。当访问令牌过期时,客户端将刷新令牌发送到专用端点以获取新的访问令牌。刷新令牌可以在服务器端撤销,在无状态效率和安全性之间取得平衡。
常见算法:HS256(HMAC-SHA256,对称——签名和验证使用相同密钥)、RS256(RSA-SHA256,非对称——私钥签名,公钥验证)和 ES256(ECDSA-SHA256,非对称)。生产环境建议使用非对称算法(RS256/ES256),这样签名密钥可以保密而任何人都可以验证。
签名验证失败的原因:密钥不匹配、令牌被篡改、或头部中的算法与验证器期望的不符。切勿在生产环境中使用「none」算法——始终验证算法是否符合预期。