安全的本地 JWT 编码器
这款 jwt 编码器 可让开发者直接在浏览器中快速编写、修改和签名 JSON Web Token。无论您是在构建身份验证流程、测试 API 接口,还是调试微服务,都能即时生成有效的 Token,无需编写自定义脚本,也不会将凭证暴露给第三方服务器。
由于本工具依赖浏览器原生的 Web Crypto API,所有数据处理和加密签名均完全在您的设备上本地完成。您的 JSON 负载和密钥绝不会被上传、存储或记录。这种本地优先的机制确保了在线签名 JWT 的安全性,即使处理敏感的开发或测试环境凭证也安全无忧。
如何生成 JWT 令牌
要生成 JWT 令牌,你需要三个组成部分:头部(Header,用于定义算法)、载荷(Payload,包含你的数据)以及密钥(Secret Key,用于保障令牌安全)。
首先,选择你要使用的算法。本工具是一个强大的 HS256 JWT 生成器,同时也支持 HS384 和 HS512。这些都是对称 HMAC 算法,这意味着签名和后续验证令牌时使用的是完全相同的密钥。数字越大(例如 512),生成的哈希值就越大,加密安全性也更高,代价是令牌字符串会稍长一些。
接下来,在提供的文本框中定义你的载荷。载荷必须是有效的 JSON 格式。当你编辑 JSON 或更新密钥时,工具会实时重新计算签名;如果 JSON 结构存在语法错误,也会立即给出提示。设置好载荷和密钥后,即可复制最终生成的令牌,并将其用于应用程序的 Authorization 请求头或 Cookie 中。
生成 Token 的常见应用场景
在现代 Web 开发中,手头有一个可靠的 JWT 生成器是必不可少的。开发者经常在各种测试和调试场景中使用此工具:
测试 API 接口: 在使用 Postman 或 Insomnia 等 API 客户端时,通常需要一个有效的 Bearer Token 来访问受保护的路由。您无需运行整个前端应用来登录并获取 Token,只需在此处手动生成一个包含特定用户 ID 和角色的 Token 即可。
调试身份验证逻辑: 如果您的后端拒绝接受 Token,手动生成 Token 有助于定位问题。您可以借此验证问题是否源于密钥错误、Payload 格式不正确或签名算法不匹配。
构造边界情况: 测试后端如何处理过期的 Token、缺失的 Claim 或未授权的角色对于安全性至关重要。您可以在此处轻松修改 JSON Payload 来构造这些边界情况,确保服务器返回正确的 HTTP 状态码。
管理时间戳与声明
JSON Web Token 使用特定字段(称为“声明”或 claims)来传递有关 Token 生命周期及其代表的用户信息。最常见的时间相关声明是 iat(签发时间)和 exp(过期时间)。这两个声明都需要 Unix 时间戳,即自 1970 年 1 月 1 日起经过的秒数。
在测试时手动计算这些时间戳非常繁琐。为了提高效率,本工具在 Payload 编辑器上方提供了快捷按钮。
- 点击 iat = now 可立即使用当前 Unix 时间填入或更新
iat字段。 - 点击 exp = +1h 或 exp = +24h 会自动计算未来的时间戳,并相应地更新
exp字段。
这能确保您生成的 Token 立即生效,避免被服务器的时间验证逻辑过早拒绝。
处理 Base64 密钥
在线签发 JWT 时,处理密钥编码是一个容易踩坑的地方。许多后端系统和教程建议为 HMAC 密钥生成一个高强度的随机字节数组,并将其以 Base64 字符串的形式存储在环境变量中。
如果你的服务器在签发或验证 Token 前会将该 Base64 字符串解码为原始字节,那么直接将 Base64 字符串粘贴到普通的生成器中会导致签名无效。因为生成器会把 Base64 字符当作纯文本处理,从而导致签名不匹配。
要解决这个问题,只需勾选 密钥为 Base64 编码(Secret is Base64 encoded)选项。工具会在进行 HMAC 哈希计算前,将密钥字符串解码为原始字节,确保生成的签名与你的后端环境完全一致。
了解 JWT 结构
生成 Token 后,输出结果会以不同颜色进行高亮区分,帮助您直观理解其结构。标准的 JWT 由三个部分组成,各部分之间用英文句号(.)分隔:
- 头部(红色): 包含 Token 的元数据,主要是签名算法(例如
{"alg":"HS256","typ":"JWT"})。该部分会根据您选择的算法自动生成,并进行 Base64-URL 编码。 - 载荷(蓝色): 实际的 JSON 数据,同样经过 Base64-URL 编码。任何人截获 Token 后都能轻松读取这部分内容,因此切勿在载荷中存放密码或高度敏感的数据。
- 签名(绿色): 对编码后的头部和载荷进行加密哈希处理,并使用您的密钥进行签名。这能确保 Token 在传输过程中未被篡改。
如果您已有 Token,且想在没有密钥的情况下查看其内容,可以将其粘贴到我们的 JWT 解码器 中,安全地查看头部和载荷信息。