【问题标题】:Deleting cognito user & identity has no affect on user access删除 cognito 用户和身份对用户访问没有影响
【发布时间】:2018-12-21 02:13:53
【问题描述】:

我正在尝试使用带有 Cognito 联合的 AWS Cognito 用户池作为我在 api-gateway 上的 API 的身份验证。我让身份验证和授权部分(使用角色)工作,但现在坚持如何撤销访问。登录并获得联合身份后,我从身份浏览器(控制台)中删除了身份并从 cognito 用户池中删除了用户。但这不会使使用较早生成的令牌的访问无效,直到它们过期(至少 1 小时)。

我也尝试将 ServerSideTokenCheck 设置为 true,但这也不起作用。 “撤销”访问权限的唯一方法似乎是this。但这对我们不起作用,因为我们的用例将角色分配给一个组。我不能让一组用户失去撤销/拒绝一个用户的访问权限。

为了完成这项工作,我有什么遗漏吗?我无法理解无法让我轻松撤销对用户的访问权限的身份验证服务。

【问题讨论】:

    标签: amazon-web-services aws-cognito


    【解决方案1】:

    这是使用 Cognito 颁发的用于身份验证的无状态 JWT 令牌的常见情况。

    一旦用户获得有效期为 1 小时的令牌,令牌本身就充当身份验证的证明。令牌由 AWS 签名和发布,为了验证它只需要使用公钥进行签名验证。

    您可以处理此问题的方法是在应用程序的授权层,您可以在用户成功通过身份验证后检查用户在您的数据库中是否处于活动状态。您可以进一步从 Cognito 中删除无法再次登录的用户。

    【讨论】:

    • 这就是我们所考虑的。感谢您确认我们的想法。
    【解决方案2】:

    我明白你在说什么,正如颁发令牌时解释的另一个答案,用户可以使用令牌直到其到期日。可以通过两种方式解决您的问题:

    Cognito 方式:为此,您对 Cognito 进行两次调用,首先如果用户已启用,第二次如果启用,则验证其令牌。

    DB 方式:您有一个 DB,它充当“黑名单”持有者,因此当您想要禁用用户时,应用程序会将用户的用户名添加到 DB。因此,当用户想要进行身份验证时,您首先检查数据库(如果用户已启用),然后检查其 cookie 以进行身份​​验证/授权。

    注意:如果您的用户群较小,您可以采用 Cognito 方式,但如果您的用户群较大,则 Cognito 调用有限制;你应该考虑第二种方法。

    【讨论】:

    • 我不知道 Cognito 的限制。感谢您提供有用的信息。
    • @ASR 不用担心。很高兴我能帮上忙。
    猜你喜欢
    • 2018-02-11
    • 2021-06-19
    • 2021-03-15
    • 2017-10-15
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2020-04-21
    相关资源
    最近更新 更多