所以我在 AWS Cognito 上进行了以下设置:
AWS Cognito 用户池:UserPool_1
在这个用户池下我定义了 3 个用户:Mike、Sarah、John
我在这个用户池下有 3 个应用客户端:
WebClient_1
WebClient_2
WebClient_3
我希望 Mike 能够访问:WebClient_1、WebClient_2 和 WebClient_3
我希望Sarah只能访问:WebClient_3
并且John只能访问WebClient_2
目前所有用户都可以访问此用户池下定义的所有 3 个网络应用程序,这不是我想要的。
如何限制用户池中的用户访问特定应用客户端?
假设 Sarah 尝试访问 WebClient_1,我希望她收到一条消息:“用户未授权”
我如何实现这一目标?
答案 0 :(得分:2)
我解决这个问题的方法是使用 Cognito Pre Authentication Lambda。当用户请求身份验证时,Cognito 触发器运行自定义 Lambda 脚本。在您的 Lambda 脚本中,您将收到一个带有 common parameters 的事件。您可以取参数 callerContext.clientId
和 userName
并进行一些处理。对于少数用户,您可以只在脚本中保留用户-客户端映射,但更有可能的是,您希望在 DynamoDB 等数据库中查找映射。
编辑:要接受您执行的身份验证 callback(null, event);
并拒绝它您执行 callback("you are not coming in", null);