0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
配置
使用 HS256、HS384、HS512、RS256 和 RS512 算法生成和解码 JSON Web Token (JWT)。在 生成 模式下,填写 JSON 负载和秘钥以创建令牌。在 读取 模式下,粘贴现有令牌以检查其头部、负载并验证签名。
HS256
HMAC 使用 SHA-256。共享对称密钥。推荐用于一般用途。
密码
输入
标题
有效载荷
工作原理
JSON Web Token(JWT)是一种紧凑的已签名令牌,在两方之间传递信息(声明)。它由用点分隔的三部分组成——头部、载荷和签名——,每部分都以 Base64URL 编码。
在生成模式下,你用 JSON 定义头部和载荷,并用密钥(HMAC)或私钥(RSA/ECDSA)签名。在读取模式下,你粘贴现有令牌以检查其内容并验证签名。
载荷未加密:任何人都能通过解码 Base64URL 读取它。签名仅保证令牌未被更改,并不会隐藏它。切勿在 JWT 中放置敏感数据。
示例
header{"alg":"HS256","typ":"JWT"} → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9payload{"sub":"1234567890","name":"John Doe","iat":1516239022} → eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQtokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c签名(第三部分)取决于算法和密钥;此示例使用 HS256 和密钥 "your-256-bit-secret"。使用场景
- 在 API 中认证用户:服务器签发已签名的令牌,并在每个请求中验证它,而无需保存会话。
- 检查和调试认证令牌,查看其声明(sub、exp、角色)和日期。
- 用密钥或公钥验证令牌的签名,以确认它未被篡改。
- 在开发认证流程时,使用不同算法(HMAC、RSA、ECDSA)生成测试令牌。
常见问题
JWT 的内容是加密的吗?
不是。头部和载荷只是经过 Base64URL 编码,任何人都能解码。签名保证的是完整性(未被更改),而非机密性。
HS256 和 RS256 有什么区别?
HS256 使用单一共享密钥进行签名和验证(HMAC)。RS256 是非对称的:用私钥签名、用公钥验证,适合许多服务需要验证但无需签发的场景。
iat、exp 和 nbf 声明是什么意思?
它们是标准时间戳:iat(签发时间)、exp(过期时间)和 nbf(在此之前无效)。以自 1970 年起的秒数表示(Unix 纪元)。
为什么不建议使用 "none" 算法?
因为它会生成未签名的令牌:任何人都可以修改载荷,而令牌仍会被接受。它只适合测试,绝不能用于生产。
我的令牌会发送到服务器吗?
不会。生成、解码和验证全部在你的浏览器中完成;令牌和密钥绝不会离开你的设备。