标准答案
- JWT 验签只证明令牌由可信方签发且未被篡改,不能证明当前用户仍未注销、设备仍可信或权限仍未改变。
- 短有效期访问令牌可以缩小泄露窗口,但会增加刷新频率;刷新令牌应保存更严格的服务端状态并支持轮换、设备绑定和重复使用检测。
- 黑名单或撤销列表能实现即时失效,但会重新引入服务端查询和存储成本;可用于高风险令牌、用户主动注销和安全事件。
- 权限变化频繁或要求强制下线时,可使用会话版本、令牌内省或短令牌加集中状态校验。
- 任何方案都要处理刷新并发、旧刷新令牌复用、密钥轮换、时钟偏差和审计记录。
题目解析
撤销是安全、可用性和性能之间的取舍。访问令牌越长,验证越便宜但泄露窗口越大;状态越集中,撤销越及时但依赖越多。
刷新令牌不是“更长的 JWT”那么简单。它通常拥有更高权限,应只在受控通道和安全存储中使用。
常见误区
- 认为给 JWT 设置 exp 后就已经具备注销和踢下线能力。
- 把长期刷新令牌放在可被脚本轻易读取的位置。
- 用户修改密码或权限后不使已有会话和令牌失效。