具有授权的 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 用户数据