主流非 JWT 式 Access Token 方案

一、核心结论

JWT 无状态无法主动吊销 ,只能短时效;有状态 Token 可随时吊销,是企业级常用替代方案。


二、主流 Access Token 方案(非 JWT)

1. 数据库/缓存存储式 Token(最主流)

原理

  • 下发随机字符串(UUID、雪花ID、随机串)作为 AccessToken
  • 服务端存入 Redis/MySQL:token -> 用户ID、权限、过期时间、设备信息
  • 校验:请求带 token,服务端查缓存判断是否有效、是否拉黑

优点

  • 支持主动吊销(删 Redis 键即可)
  • 时效灵活,可长可短
  • 权限可动态变更
    缺点
  • 每次请求需查缓存,有网络/IO开销
    适用:后台管理、APP、小程序、电商、企业系统

2. OAuth2 标准令牌(原生非JWT)

标准 OAuth2 原生令牌就是随机字符串,不是 JWT:

  • AccessToken:随机短串(缓存存状态)
  • RefreshToken:长时效随机串
  • 主流授权平台早期均为此方案,后来才兼容 JWT

3. Session 令牌(传统服务端会话)

原理

  • Cookie 下发 SESSION_ID
  • 服务端 Session 池存储会话信息
    优点 :最简、天然可注销
    缺点:跨域、移动端适配差,多用于传统 Web 站点

4. PASETO(安全替代 JWT)

定位 :JWT 安全升级版,无状态

  • 解决 JWT 签名漏洞、载荷明文风险
  • 依旧无状态不能主动吊销,和 JWT 通病一致
  • 只能缩短有效期缓解,不能根治吊销问题

5. Macaroon 令牌(分布式/权限细粒度)

去中心化可委派令牌,支持逐层授权,多用于云服务、分布式系统,小众但专业。

6. 加密二进制令牌(自研二进制Token)

二进制序列化+对称加密,体积更小、防篡改,私有业务自研常用。


三、解决 JWT 无法吊销的工业级通用方案

即使还用 JWT,搭配这套架构即可实现吊销:

  1. AccessToken(JWT) 极短有效期:5~15分钟
  2. RefreshToken 用【有状态随机串】:存入Redis,支持注销
  3. 登出/踢人:直接拉黑 RefreshToken,用户无法续期
  4. 维护黑名单 Redis:临时拉黑未过期 JWT(短时兜底)

四、选型对比

方案 无状态 可吊销 性能 适用场景
随机串+Redis 中等 绝大多数业务首选
JWT 对外开放接口、高并发无注销场景
PASETO 追求安全无状态
SessionId 传统网页

五、最佳实践推荐

  1. 对内业务系统 / APP / 小程序
    优先:随机字符串 AccessToken + Redis 存储,自由吊销、可控性最强
  2. 对外开放 API、高并发网关
    短时效 JWT + 有状态 RefreshToken 组合架构
  3. 严禁长时效 JWT,最长不超过30分钟
相关推荐
ZC跨境爬虫1 小时前
跟着 MDN 学 HTML day_57:(HTML 表格进阶特性与无障碍实践)
java·前端·javascript·ui·html·音视频
Moment1 小时前
刷 Reddit 1 小时没结果?我用这个方法 10 秒挖出真实需求
前端·javascript·后端
折翅嘀皇虫1 小时前
【无标题】steal_work_thread_pool
服务器·前端·算法
w_t_y_y1 小时前
VUE组件配置项(零)概述
前端·javascript·vue.js
水云桐程序员1 小时前
Web应用的分类
前端·javascript·vue.js·react.js·webkit
Jack N1 小时前
2026 Web 网站性能优化指南
前端·性能优化
UXbot1 小时前
支持移动端原型绘制的 AI 工具核心功能对比(2026):5 款主流平台能力横向评测
前端·低代码·ui·交互·原型模式·web app
云水一下1 小时前
华为防火墙安全区域与NAT实战:基于eNSP的企业边界网完整部署
安全·华为·nat·下一代防火墙
ZC跨境爬虫2 小时前
跟着 MDN 学 HTML day_54:(深入掌握 XSLTProcessor API)
前端·javascript·ui·html·媒体