AWS Cognito - 使用 API 创建具有外部身份的用户

问题描述 投票:0回答:2

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

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

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

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

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

boto3 amazon-cognito google-identity
2个回答
1
投票

我正在尝试解决同样的问题。用户是通过 Cognito 外部提供商创建的,但只有有人手动将此生成的用户添加到分配了必要角色的用户组中后才具有访问权限。

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

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

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


0
投票

对于仍在搜索的人,AWS Cognito 用户身份池文档中的

AdminLinkProviderForUser
API 可能相关。检查此处的文档:AdminLinkProviderForUser

© www.soinside.com 2019 - 2024. All rights reserved.