AWS Cognito:如何强制用户所有设备登出以即时生效组权限变更?
Cognito用户组变更即时生效的解决方案
强制终止用户全设备会话的可行方案
你要的管理员强制用户所有设备登出、让用户组变更即时生效的功能,Cognito是支持的,具体可以这么做:
1. 调用AdminUserGlobalSignOut API
这是最直接的管理员操作接口,无需目标用户的access token,只需管理员权限即可执行:
- 作用:使该用户所有设备上的refresh token立即失效,用户现有access token即使未过期,后续请求时也会被Cognito拒绝验证(因为无法通过失效的refresh token获取新令牌),用户必须重新登录,新令牌会包含更新后的用户组信息。
- 权限要求:调用方需要拥有
cognito-idp:AdminUserGlobalSignOut的IAM权限。
2. 实时校验用户组信息(无需强制登出)
如果不想强制用户登出,也可以在后端对每个请求做增强校验:
- 每次验证用户的access token后,额外调用
AdminListGroupsForUserAPI,实时获取用户当前所属的组信息,替代令牌中携带的旧组声明。 - 优化:为了避免频繁调用API带来的性能损耗,可以给用户组信息加短时间缓存(比如5-10分钟),当管理员修改用户组时,主动清除该用户的缓存条目,确保下一次请求能拿到最新数据。
避坑提示
AdminForgetDevice仅用于管理用户的2FA信任设备,和会话失效完全无关,不用再尝试。logout/revoke端点需要用户的token,仅适用于用户主动登出场景,不适合管理员强制操作。- 对接谷歌OIDC登录的场景下,
AdminUserGlobalSignOut仅影响用户在Cognito的会话,谷歌端的会话不会被终止,但用户访问你的应用时会被Cognito要求重新授权,新授权后的会话会同步最新的用户组。
内容的提问来源于stack exchange,提问作者Pelicer
相关产品推荐
相关产品推荐

