【问题标题】:AWS: Authorize users to specific clientsAWS:授权用户访问特定客户端
【发布时间】:2021-04-21 01:15:58
【问题描述】:

所以我在 AWS Cognito 上有以下设置:

AWS Cognito 用户池:UserPool_1

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

我在这个用户池下有 3 个应用客户端:

WebClient_1

WebClient_2

WebClient_3

我希望 Mike 能够访问:WebClient_1WebClient_2WebClient_3

我希望 Sarah 能够访问:WebClient_3

John只能访问WebClient_2

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

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

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

我如何做到这一点?

【问题讨论】:

    标签: javascript reactjs amazon-web-services vue.js amazon-cognito


    【解决方案1】:

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

    编辑:要接受身份验证,您执行 callback(null, event); 并拒绝它,您执行 callback("you are not coming in", null);

    【讨论】:

    • 感谢您的建议,我希望亚马逊为我们提供一种方法来设置哪些用户或组可以访问哪个客户端,而不是让我们维护一个单独的发电机数据库,然后每次用户都调用它尝试唱歌
    • 您可以为客户端创建 Cognito 组,并将用户添加到这些组中。您仍然需要在 lambda 脚本中做一些工作来查找用户并检查他们所在的组。
    猜你喜欢
    • 1970-01-01
    • 2018-12-01
    • 2019-10-15
    • 2011-06-04
    • 2021-09-23
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 2021-01-02
    相关资源
    最近更新 更多