JWT认证指南 📜🔐
JWT(JSON Web Token)是一种用于身份验证和信息传递的开放标准,常用于Web应用和API安全。以下是关键要点:
1. JWT核心概念
- 令牌结构:由三部分组成:Header(头部)、Payload(载荷)、Signature(签名)
- 📌 Header: 定义令牌类型和签名算法(如
HS256
) - 📌 Payload: 包含声明(claims),如用户ID、权限、过期时间等
- 📌 Signature: 通过密钥对前两部分加密,确保数据完整性
- 📌 Header: 定义令牌类型和签名算法(如
2. JWT工作流程
- 用户登录 → 服务器生成JWT
- 客户端存储令牌(如
localStorage
或sessionStorage
) - 请求接口时携带
Authorization: Bearer <token>
- 服务器验证签名并解析令牌内容
3. 实现步骤
- 生成令牌:使用
jsonwebtoken
库(Node.js)或java-jwt
(Java)jwt.sign({ user: 'example' }, 'secret_key', { expiresIn: '1h' });
- 验证令牌:
jwt.decode(token, 'secret_key', algorithms=['HS256'])
- 安全性建议
- 使用HTTPS传输
- 设置合理过期时间(
exp
声明) - 避免敏感信息明文存储
4. 常见问题
- ❓ 令牌泄露怎么办?
- 立即吊销并生成新令牌
- ❓ 如何防止重放攻击?
- 添加
iat
(签发时间)和nbf
(不可用于时间)声明
- 添加
- ❓ JWT是否需要刷新?
✅ 是的,可通过refresh_token
机制实现