主流非 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分钟
相关推荐
假如让我当三天老蒯9 小时前
useCallback 详细解释(从原理到用法)(自学用)
前端·react.js
EasyGBS9 小时前
从“后厨黑箱”到“透明厨房”:国标GB28181视频平台EasyGBS平台AI视频分析如何守护舌尖上的安全
人工智能·安全·音视频
a1117769 小时前
粒子化系统(3D-Particles)THreeJS react
前端·html·jetson
Soari9 小时前
【硬核全面】Claude Code v2.1.160 & 2.1.161 发布:安全防御全面升级,大修 CJK 输入法与 WSL 剪贴板,性能再迎暴涨!
安全·claude.ai
网安小白的进阶之路9 小时前
B模块 安全通信网络 第二门课IPv6与WLAN 03
网络·安全
码农君莫笑9 小时前
深入理解 CSS Grid 布局:从入门到实战
前端·css
yingyima10 小时前
Azure Functions 定时触发器配置:Cron vs. TimerTrigger,谁主沉浮?
前端
TeamDev10 小时前
JxBrowser 9.1.1 版本发布啦!
java·前端·chromium·混合应用·jxbrowser·嵌入式浏览器·浏览器控件
爱勇宝10 小时前
如何评估 AI 大模型的商业价值?
前端·后端·程序员
黑巧克力可减脂10 小时前
慎御智能之变,方守数字安澜:AI Agent安全风险与全域防御体系
人工智能·安全