具有授权的 AWS Cognito 用户(如何从应用程序将用户添加到用户组?)

Posted

技术标签:

【中文标题】具有授权的 AWS Cognito 用户(如何从应用程序将用户添加到用户组?)【英文标题】:AWS Cognito Users with Authorization (how to add a user to a user group from the application?) 【发布时间】:2020-06-01 09:44:02 【问题描述】:

我正在构建一个应用程序,在前端使用 react 并在后端使用 aws dynamodb + labmda 来保存数据。我正在使用放大来处理用户身份验证,但我正在努力寻找一种处理授权的好方法。

我想使用 Cognito 用户池组,但似乎没有办法从我的应用程序管理用户,因为 amplify 不支持更新用户以将其放入组中。我真的不想将aws控制台登录暴露给应用程序管理员,所以我似乎需要在应用程序本身中找到一种方法来处理这个问题。

我可以在 dynamodb 本身中创建一个用户表来保存一个用户配置文件,该配置文件可以有一个字段来保存我希望用户能够执行的角色,然后为管理员用户添加一个 CRUD 页面以更新其配置文件非管理员用户。但是,我不是特别喜欢这个选项,因为它实际上是数据重复,而且它也不支持(轻松)禁用用户的方法。

看起来 dynamodb 表更新可以触发 lambda 函数,所以我还考虑以某种方式在 CRUD 页面上由管理员用户更新表时触发用户的 cognito userpool 角色添加,但我连接触发器上的所有点、功能和所需的权限时遇到了一点问题。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

您可以使用 aws-sdk 的 adminAddUserToGroup 将用户添加到组。您可以在 Lambda 中执行此操作,然后根据需要调用该 lambda(使用 Cognito 授权方的 API 网关,直接调用 lambda,从 DynamoDB Stream 事件调用)。 docs.aws.amazon.com/AWSjavascriptSDK/latest/AWS/… 【参考方案1】:

感谢 Dylan,这正是我所做的。我曾错误地认为,我的用户无法做到这一点,但在尝试此操作并跟踪失败后,我能够确定如何将正确的策略应用于执行 addToGroup 和 removeFromGroup 的角色。

再次感谢, 迈克

【讨论】:

以上是关于具有授权的 AWS Cognito 用户(如何从应用程序将用户添加到用户组?)的主要内容,如果未能解决你的问题,请参考以下文章

使用多个用户池的具有 Cognito 授权的 AWS API 网关

具有 Cognito 联合身份的 AWS AppSync IAM 授权

如何在 API 网关上的 cognito 授权方保护的 lambda 函数中获取 AWS Cognito 用户数据

如何从 AWS cognito 授权代码获取访问和刷新令牌

AWS Amplify (AppSync + Cognito) 使用每个组织/租户的动态组进行授权

如何利用 AWS Cognito 托管 UI 进行授权代码授予流程