Cognito中撤销refresh token与作废token的区别及接口使用疑问
AWS Cognito Token 常见疑问解答
1. token 作废(invalidating)与撤销(revoking)的核心差异
两者的核心区别是生效范围和校验逻辑:
- 作废(就是
AdminUserGlobalSignOut执行的操作):仅限制refresh token的换发能力,被作废的refresh token不能再用来申请新的access/id token,但已经签发、还在有效期内的access/id token不受影响,Cognito不会校验这些短时效token的作废状态,它们依然可以正常访问授权的资源接口。 - 撤销(就是专门的token撤销接口执行的操作):会把目标refresh token,以及这个refresh token签发的所有未过期access token统一加入Cognito全局黑名单,后续不管是用refresh token换发新token,还是用已有的access/id token请求资源,都会被Cognito直接拒绝,哪怕这些token还没到自然过期时间。
2. 撤销token接口的适用场景
只有当你有即时回收所有访问权限的需求时,才需要调用撤销接口,典型场景包括:
- 检测到用户账号存在安全风险(比如被盗、异常登录),需要立刻终止该用户所有设备的访问权限
- 用户的权限发生了敏感变更(比如移除管理员权限、禁用账号),需要避免旧的高权限token还能继续使用
- 合规要求用户退出后所有访问凭证必须立刻失效,不能接受最长1小时的access token自然过期窗口期
如果没有即时回收需求,比如用户正常主动退出、业务允许短时间内旧token还能使用,直接调用AdminUserGlobalSignOut就足够了。
3. 调用AdminUserGlobalSignOut是否需要额外主动撤销refresh token
是的,如果你的业务需要实现和Amplify登出接口一致的全token即时失效效果,调用AdminUserGlobalSignOut之后需要额外主动调用token撤销接口。
要明确两个逻辑的差异:
AdminUserGlobalSignOut仅作废了refresh token的换发能力,没有触发撤销流程,已有的access/id token在有效期内依然可用- Amplify的登出逻辑默认封装了「撤销refresh token + 清空本地token存储」的完整流程,所以会同步让关联的access token立刻失效,原生AWS SDK的
AdminUserGlobalSignOut没有包含撤销步骤,需要你自己补充实现。
内容的提问来源于stack exchange,提问作者systemdebt
相关产品推荐
相关产品推荐

