【问题标题】:AWS Cognito - Create user with External Identity using APIAWS Cognito - 使用 API 创建具有外部身份的用户
【发布时间】:2021-02-18 12:09:05
【问题描述】:

背景:我有一个使用受认知保护的 API 的网页(内部工具)。当前在池中创建用户的方式如下所示:

  1. 用户进入网页
  2. 使用 Google 登录
  3. Cognito 使用 External Provider - Google 在池中创建用户
  4. IT 将用户分配到适当的组 = 用户可以使用网页,具体取决于分配到的组。

现在,问题是前两个步骤。为了让用户出现在池中,他必须首先进入网页(在此用户被自动踢出后,因为他没有分配到任何组)并且需要等待有人将他分配到一个组。我想自动化这些步骤,以便用户可以输入该工具并立即使用它。

有没有办法在池中(使用外部身份提供者)创建(使用 API)用户,以便我可以在 Cognito 中自动创建条目并将他分配到组?

由于公司有 GSuite,我有可能从 cognito 和 google 检索所有必要的数据来创建它。有人知道怎么做吗?我想我通读了 boto3 文档和 cognito 文档,但找不到任何答案。

【问题讨论】:

    标签: boto3 amazon-cognito google-identity


    【解决方案1】:

    我正在尝试解决同样的问题。用户是通过 Cognito 外部提供程序创建的,但在有人手动将此生成的用户添加到分配了必要角色的用户组之前,他们无法访问。

    我正在考虑的一个潜在选择是一起消除用户组。在 Cognito 身份池中,有一个选项可以根据 Cognito 令牌中包含的声明分配角色。因此,您可以在用户首次登录之前以编程方式更新身份池上的规则,而不是 IT 将用户映射到具有所需角色的组。将规则添加到身份池以检查 userId 声明并映射适当的角色可以解决用例。请参阅 (https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html#using-rules-to-assign-roles-to-users)。 编辑:我意识到这行不通,因为身份池有 25 条规则的限制,因此为每个用户添加规则是不可行的。

    另一个选项可能是在 Cognito 用户池上使用 lambda 触发器,因为这允许更多自定义逻辑。 lambda 可以在登录时检查具有预定映射的数据库,并以编程方式将用户分配给用户组。对于我认为是一个非常常见的用例来说,这感觉就像是相当多的工作/组件。希望还有另一种我不知道的方法。

    这两个选项似乎都不像我预期的那样干净/简单,所以我很好奇您是否找到了更好的解决方案。

    【讨论】:

      猜你喜欢
      • 2017-04-23
      • 2020-08-14
      • 1970-01-01
      • 2016-10-29
      • 2016-03-25
      • 2017-01-02
      • 2018-10-08
      • 2019-10-31
      • 2021-10-26
      相关资源
      最近更新 更多