免费JWT生成器

使用自定义头部和负载创建JSON Web Token。在您的浏览器中用HMAC-SHA256签名 · 任何数据都不会离开您的设备。

已生成的令牌

点击生成以创建JWT

JWT 实际上是什么

JSON Web Token(JWT),读作「jot」,是一种紧凑、URL 安全的、用于在两方之间传递断言的表示形式。其格式是三段 Base64url 编码的内容,由点分隔:header.payload.signatureheader 声明令牌类型(始终为 JWT)和签名算法(常用 HS256、RS256 或 ES256)。payload 承载断言,一个 JSON 对象,含 iss(签发者)、sub(主体)、aud(受众)、exp(以 Unix 时间戳表示的过期时间)、nbf(生效时间)、iat(签发时间)、jti(JWT 标识)等标准字段,以及签发者希望加入的任何应用专有断言。signature 是 header 与 payload 未被篡改的密码学证明,通过用 header 中声明的算法和密钥对拼接后的 base64url(header).base64url(payload) 字符串签名得到。JWT 由 Michael B. Jones、John Bradley 和 Nat Sakimura 于 2015 年 5 月作为 RFC 7519 制定,建立在 JOSE(JSON Object Signing and Encryption,RFC 7515 至 7520)的早前工作之上。该格式已成为现代 Web 身份验证中的主导令牌形式,被 OAuth 2.0 / OIDC 实现、API 网关、单页应用会话令牌、微服务到微服务身份验证以及大规模浏览器 cookie 会话管理所使用。

签名算法的选择,HS256 与 RS256 与 ES256

JWT 支持在 JOSE 算法注册表(RFC 7518)中登记的多种签名算法。HS256(HMAC-SHA256)最简单:一种对称算法,签名和验证使用同一个密钥。计算便宜、易于实现,并适合签名方与验证方为同一方的场景(例如,单个应用为自身签发会话令牌)。RS256(RSA-SHA256)是非对称的:私钥签名,公钥验证。用于签发者与验证者是不同方的场景,Auth0、Okta、Google Identity Platform、Microsoft Entra ID 以及大多数云身份提供商签发 RS256 签名的 JWT,因为客户端可以使用公开的 JWKS(JSON Web Key Set)端点验证签名,而无需共享密钥。ES256(ECDSA P-256 SHA-256)是 RS256 的椭圆曲线等价物,同样的公钥/私钥模型,密钥短得多(256 位对比 RSA 的 2048 位下限),验证更快。EdDSA(Ed25519)是 ES256 的现代继任者,略快且具有更干净的密码学性质;较新的 JWT 库已支持,但尚未普及。none 是 JWT 规范允许的「无签名」模式,曾在多个库中因实现未能拒绝 alg: none 令牌而引发安全事件,教训是 JWT 验证方必须显式检查算法与预期匹配。本生成器使用 HS256,因为它只需要共享密钥而不需要密钥生成;若要在生产中使用非对称算法,服务端的库才是合适的工具。

你需要手工生成 JWT 的场景

安全陷阱,JWT 出错的地方

JWT 有一段长长的实现错误史,它们造成了真实的安全事件。「alg: none」攻击:早期的 JWT 库会接受算法字段被设为「none」(无签名)的令牌,让攻击者能伪造任意令牌。验证方必须显式强制要求预期的算法。算法混淆:同时接受 RS256 和 HS256 的验证方,可被以将公开的 RSA 公钥用作 HMAC 密钥的方式欺骗,攻击者用公钥以 HS256 签名,验证方用 HMAC 用同一个公钥(错)验证。验证方必须钉死预期的算法。payload 中的敏感数据:JWT 断言是 Base64 编码的,但没有加密。持有令牌的任何人都能读取每一个断言。永远不要把密码、完整信用卡号或其他机密放进 payload。没有过期:没有 exp 断言的 JWT 永久有效。务必设置合理的过期(访问令牌取分钟级,刷新令牌取天级)。无法撤销:JWT 是自包含的,一旦签发,就在 exp 之前一直有效,与用户登出、改密、被封停无关。要么接受这一限制,要么维护一个撤销列表(这部分抵消了无状态令牌的意义),要么使用短寿命的访问令牌配合刷新令牌轮换。localStorage vs cookie 中存放:localStorage 中的 JWT 对页面上的任何 JavaScript 都可访问(XSS 风险);HttpOnly cookie 中的 JWT 则不可(但会随跨域请求自动发送,CSRF 风险)。两者各有取舍;现代最佳实践倾向于 HttpOnly cookie 加 SameSite 限制再加 CSRF 令牌。

JWT 与会话 cookie 与 PASETO

JWT 不是唯一选择。传统会话 cookie 存放一个不透明的会话 ID;服务器把真正的会话状态保存在数据库或缓存中。优点:撤销极易(删除服务端记录)、无断言数据外泄风险、无签名复杂度。缺点:每次请求都需要查询会话存储(延迟)、跨服务难以扩展。PASETO(Platform-Agnostic Security Tokens,Scott Arciszewski 2018)是 JWT 的替代品,旨在避免算法混淆与「none」陷阱,版本化格式、不进行算法协商、强制签名、密码套件选择受限。PASETO 在安全敏感领域已有进展,但在更广阔的生态中并未取代 JWT。Macaroons(Google,2014)是一种更灵活的令牌格式,支持链式能力限制,但 2026 年基本仍是研究主题。OAuth 2.1 整合了OAuth 2.0 的最佳实践,JWT 仍是典型的访问令牌格式。2026 年的务实选择仍然是:无状态微服务和 API 令牌用 JWT,传统服务端渲染 Web 应用用不透明会话 cookie,希望默认更强的全新项目用 PASETO 作为现代替代。

常见问题

我可以在没有密钥的情况下解码JWT吗?

可以。JWT的头部和负载部分仅使用Base64url编码,并未加密。您可以在没有密钥的情况下读取所有声明。密钥仅用于验证签名是否有效(即令牌未被篡改)。

在此粘贴生产环境JWT安全吗?

安全。此工具完全在您的浏览器中运行 , 不会向任何服务器发送数据。您的令牌和密钥仅在本地JavaScript环境中处理,绝不会被记录或传输。

HS256、RS256和ES256有什么区别?

HS256使用共享的HMAC密钥(对称)。RS256和ES256使用公钥/私钥对(非对称) , 私钥签名令牌,公钥验证令牌。此工具支持HMAC算法;对于RS256/ES256验证,请使用服务器端库。

相关工具

免费 JWT 解码器 免费哈希生成器 字符串哈希可视化器,免费 免费在线 Base64 编码器与解码器