← 中文资源

简体中文版本

用令牌吊销支持全局登出

跟踪令牌家族或每用户令牌版本,在全局登出与改密时吊销,并在每请求校验版本。

阅读英文原文

概述

用户改密或报失设备后,若 JWT 仍有效到自然过期,攻击者就继续持有访问权。全局登出需要服务端可主动吊销:用每用户令牌版本或令牌家族列表,在每请求校验,配合短生命周期访问令牌把窗口压小。

关键步骤

  1. 保存每用户令牌版本或活跃令牌家族列表。
  2. 全局登出或改密时提升版本或吊销家族。
  3. 每请求校验令牌版本,立即拒绝已吊销令牌。
  4. 让访问令牌短生命周期,即使无存储校验也把影响窗口压小。

验证

  • 全局登出后旧令牌立即失效。
  • 改密会使所有其他会话失效。
  • 新签发的令牌可正常使用。
  • 吊销窗口被短生命周期约束。

注意事项

  • 除非访问令牌很短,逐请求吊销校验会增加一次存储查询。
  • 刷新令牌需单独的吊销策略,通常采用轮换与重放检测。

适用范围

本条目围绕「用令牌吊销支持全局登出」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

const user = await users.get(payload.sub);
if (payload.ver !== user.tokenVersion) {
  throw new Unauthorized('token revoked');
}