AWS:将用户授权给特定客户端

Eri*_*man 2 javascript amazon-web-services reactjs vue.js amazon-cognito

所以我在 AWS Cognito 上进行了以下设置:

AWS Cognito 用户池:UserPool_1

在此用户池下,我定义了 3 个用户:Mike、Sarah、John

我在此用户池下有 3 个应用程序客户端:

网络客户端_1

网络客户端_2

网络客户端_3

我希望Mike能够访问:WebClient_1WebClient_2WebClient_3

我希望Sarah只能访问:WebClient_3

John只能访问WebClient_2

目前所有用户都可以访问此用户池下定义的所有 3 个 Web 应用程序,这不是我想要的。

如何限制用户池中的用户访问特定应用程序客户端?

假设Sarah尝试访问WebClient_1,我希望她收到一条消息:“用户未授权

我该如何实现这一目标?

F_S*_*O_K 6

我解决这个问题的方法是使用Cognito Pre Authentication Lambda。当用户请求身份验证时,Cognito 触发器会运行自定义 Lambda 脚本。在您的 Lambda 脚本中,您将收到一个带有一些常用参数的事件。您可以获取参数callerContext.clientIduserName进行一些处理。对于少数用户,您可以仅将用户-客户端映射保留在脚本中,但更有可能您希望在 DynamoDB 等数据库中查找映射。

编辑:接受您所做的身份验证callback(null, event);并拒绝您所做的身份验证callback("you are not coming in", null);

  • 您可以为客户端创建 Cognito 组,并将用户添加到这些组中。您仍然需要在 lambda 脚本中做一些工作来查找用户并检查他们所在的组。 (2认同)