什么是 JWT 编码?
JWT 编码是创建 JSON Web Token 的过程,包括构建 Header、Payload,然后使用指定的算法和密钥对其进行签名。生成的 JWT 可用于身份验证和信息传输。
JWT 生成步骤
- 创建 Header:指定令牌类型(JWT)和签名算法
- 创建 Payload:添加声明(claims)和用户数据
- Base64 编码:对 Header 和 Payload 进行 Base64URL 编码
- 创建签名:使用指定算法和密钥对编码后的数据进行签名
- 组合令牌:将三部分用点(.)连接形成最终的 JWT
支持的签名算法
- HS256:HMAC SHA-256,最常用的对称加密算法
- HS384:HMAC SHA-384,更强的安全性
- HS512:HMAC SHA-512,最高级别的安全性
Payload 最佳实践
- 标准声明:使用 iss、sub、aud、exp、iat 等标准字段
- 自定义声明:添加应用特定的用户信息和权限
- 过期时间:始终设置合理的 exp(过期时间)
- 数据最小化:只包含必要的信息,避免敏感数据
安全建议
- 使用强密钥,至少 32 个字符的随机字符串
- 定期轮换密钥,提高安全性
- 设置合理的过期时间,通常不超过 24 小时
- 在生产环境中使用 HTTPS 传输 JWT
- 考虑使用 refresh token 机制