本文目录
什么是 JWT?
JSON Web Token(JWT)是一种紧凑且 URL 安全的令牌,用于在双方之间表示声明(claims)。JWT 是现代身份认证与授权系统的支柱——它们由服务器在登录后签发,并随后续的 API 请求一同发送,以证明身份。
一个 JWT 由三个以点号分隔、经 Base64URL 编码的部分组成:头部(算法和令牌类型)、载荷(声明/数据)和签名(完整性校验)。签名使用密钥或私钥生成,使令牌具备防篡改特性。
JWT 解码的工作原理
解码 JWT 会在不校验签名的情况下揭示其内容——这对调试很有用,但不能用于安全决策。
- 头部解码——揭示签名算法(HS256、RS256 等)和令牌类型
- 载荷解码——暴露所有声明,包括用户 ID、角色、过期时间和自定义数据
- 过期检查——根据 exp 声明计算令牌是否已过期
免费试用 —— 无需注册
解码 JWT 令牌 →何时使用 JWT 解码
在 API 开发和调试工作流中,JWT 解码必不可少。
- API 调试——当请求以 401 或 403 错误失败时,查看令牌内容
- 集成测试——验证你的认证服务器是否在签发的令牌中嵌入了正确的声明
- 令牌过期诊断——快速检查身份认证失败是否由令牌过期引起
常见问题
我能信任解码后的 JWT 内容吗?
解码会揭示载荷,但不会校验签名。除非你已用正确的密钥或公钥校验过签名,否则切勿基于解码后的令牌内容做出安全决策。CheckTown 的解码器仅供查看之用。
我绝不应该在 JWT 载荷中放入什么?
切勿在 JWT 载荷中存放密码、信用卡号或私钥等敏感信息。JWT 是经过编码而非加密的——任何截获令牌的人都可以在没有签名密钥的情况下解码载荷。
HS256 和 RS256 有什么区别?
HS256(HMAC-SHA256)在签名和校验时使用同一个共享密钥。RS256(RSA-SHA256)使用私钥签名、公钥校验。在分布式系统中,当许多服务需要在无法访问签名密钥的情况下校验令牌时,RS256 更受青睐。