AWS Cognito用户无活动20分钟后登出方案有效性问询
方案可行性分析
你的方案无法实现用户无活动20分钟后自动登出的需求,核心问题出在Lambda的运行机制和触发器的定位上:
- Post Authentication Lambda触发器仅在用户完成认证的单次事件中触发,执行完毕后即终止,无法长期驻留以监听后续的API调用。Lambda是事件驱动的无服务器函数,没有持续运行的能力,没法全程跟踪用户的活动状态。
- 你无法在Lambda中实现“监听API调用”的逻辑——API调用的触发逻辑需要绑定到API网关的请求流程中(比如自定义授权器、请求前触发器),而不是依赖Post Auth这个一次性触发器。
- 基于上述两点,你无法在Lambda中持续统计20分钟内的无API调用情况,自然无法触发
RevokeToken操作。
可行的替代思路
要实现无活动自动登出,需要结合用户活动跟踪和令牌失效机制,常见的实现方式包括:
客户端主动跟踪+令牌刷新控制
- 在客户端记录用户最后交互时间,当用户无活动超过20分钟时,主动丢弃本地令牌并调用
RevokeToken。 - 配合后端的令牌过期策略:将ID Token的有效期设为20分钟,且不使用Refresh Token(或限制Refresh Token的使用场景),这样无活动时令牌自然过期,无法再访问受保护资源。
- 在客户端记录用户最后交互时间,当用户无活动超过20分钟时,主动丢弃本地令牌并调用
后端存储用户活动时间+定时校验
- 在每次用户调用API时,将用户ID和当前时间更新到分布式存储(如Redis)中。
- 部署一个定时任务(如CloudWatch Events触发的Lambda),定期扫描存储中的用户活动记录,对超过20分钟无更新的用户调用
RevokeToken,并清除对应的活动记录。
API网关自定义授权器校验
- 为API网关配置自定义Lambda授权器,每次API请求时,先校验用户令牌的有效性,同时检查该用户的最后活动时间(从存储中获取)。
- 如果距离最后活动时间超过20分钟,直接返回未授权,并调用
RevokeToken;反之则更新最后活动时间,允许请求通过。
内容的提问来源于stack exchange,提问作者i'i'i'i'i'i'i'i'i'i
相关产品推荐
相关产品推荐

