概述
用户改密或报失设备后,若 JWT 仍有效到自然过期,攻击者就继续持有访问权。全局登出需要服务端可主动吊销:用每用户令牌版本或令牌家族列表,在每请求校验,配合短生命周期访问令牌把窗口压小。
关键步骤
- 保存每用户令牌版本或活跃令牌家族列表。
- 全局登出或改密时提升版本或吊销家族。
- 每请求校验令牌版本,立即拒绝已吊销令牌。
- 让访问令牌短生命周期,即使无存储校验也把影响窗口压小。
验证
- 全局登出后旧令牌立即失效。
- 改密会使所有其他会话失效。
- 新签发的令牌可正常使用。
- 吊销窗口被短生命周期约束。
注意事项
- 除非访问令牌很短,逐请求吊销校验会增加一次存储查询。
- 刷新令牌需单独的吊销策略,通常采用轮换与重放检测。
适用范围
本条目围绕「用令牌吊销支持全局登出」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
const user = await users.get(payload.sub);
if (payload.ver !== user.tokenVersion) {
throw new Unauthorized('token revoked');
}