🔐 Token 认证基础

第4章 · 无状态 · 结构 · 生命周期

1. Token 的概念与结构

Token(令牌)是一串携带用户身份与授权信息的密文或明文数据,通常由服务端签发,客户端在每次请求时携带,用于证明身份。Token 的核心是自包含:将用户标识、权限、有效期等信息编码在令牌内,服务端无需查询会话即可验证。

典型 Token 结构(JWT 示例)
Header.Payload.Signature —— 三段式,Base64 编码,用点号连接。
Header 算法 & 类型 Payload 声明 (claims) Signature 防篡改签名 . . Base64Url 编码 · 三段式

2. 无状态认证原理

服务端不保存 Token 或会话信息,仅通过验证签名和声明来判断请求是否合法。每次请求都是独立的,无需查询数据库或缓存,天然支持水平扩展。

客户端 服务端 ① 请求 + Token ② 验证签名,返回数据 无状态:服务端不保留会话

3. Token 与 Session 对比

维度Session-CookieToken (JWT)
状态有状态,服务端存储会话无状态,自包含
扩展性需共享 session 存储天然水平扩展
跨域受 Cookie 同源限制可通过 Header 携带,跨域友好
安全CSRF 风险需防范 XSS,签名防篡改
性能服务端查询开销验证签名,计算型
Session 有状态 服务端存储 · 共享 Token 无状态 自包含 · 签名验证

4. Token 的生命周期管理

Token 从生成到销毁经历:签发 → 传输 → 验证 → 刷新 → 撤销/过期。良好的生命周期管理是安全基石。

  • 签发 认证通过后,服务端生成带过期时间的 Token。
  • 传输 通过 HTTPS 的 Authorization Header 或 Cookie(HttpOnly)。
  • 验证 服务端校验签名、有效期、权限。
  • 刷新 使用 Refresh Token 获取新的 Access Token。
  • 撤销 黑名单 / 短有效期 + 刷新机制。
签发 传输 验证 刷新 撤销/过期
💡 最佳实践: Access Token 短期(15分钟~1小时),Refresh Token 长期(7~30天),并配合 Token 黑名单或版本号实现即时撤销。