1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 嗨Alan - 基于令牌的身份验证模型(就像Cognito正在做的),旨在是无状态的,没有传统基于会话的身份验证中跟踪会话的概念,该身份验证会话使用cookie来跟踪。换句话说,如果没有存储此信息并进行自己的会话管理解决方案,则无法知道用户已经登录。此外,令牌是自包含的,即使在注销或吊销令牌后,它们仍然有效,直到过期(由于大多数服务将在不调用发行者的情况下验证令牌,令牌将仅通过检查签名和过期时间进行验证)。
简单地说,如果您想强制实现每个用户的单个会话,则需要回退到基于会话的身份验证并维护服务器端管理的会话。一种使用Cognito进行此操作的方法是存储一些信息,即用户具有活动会话(例如,在Cognito后身份验证触发器中存储一些映射,在DynamoDB中,用户XYZ具有将在时间ABC到期的活动会话,或者在缓存层中存储此信息与与令牌到期相匹配的到期期间,不要存储令牌本身或任何敏感数据)。然后,在Pre-Auth触发器中,您可以检查用户名是否具有活动会话,并拒绝身份验证尝试。然后,您需要考虑如何在用户注销或希望在活动会话到期之前切换到另一台设备时使此会话无效。
