【问题标题】:Check whether CognitoUser has specific permission检查 CognitoUser 是否具有特定权限
【发布时间】:2020-11-05 11:00:49
【问题描述】:

我正在尝试在我的 web 应用上设置受保护的路由。为此,我在我的用户池中创建了一个组Admins。我已将此组分配给 WebappAdmins 角色,其中包含自定义策略:

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": "webapp:*",
        "Resource": "*"
    }]
}

我如何——从 webapp——辨别登录的 CognitoUser 是否具有webapp:ViewUploadDocumentsPage 权限?由于属于Admins 组的所有CognitoUsers 都具有webapp:* 权限,因此如果我没记错的话,他们应该具有webapp:ViewUploadDocumentsPage 权限。我知道验证他们在 webapp 上的权限是不安全的,但这并不重要,因为我计划为 WebappAdmins 角色添加特定的 lambda 权限,以防止其他用户造成任何实际伤害。

我期待某种端点,我可以代表 CognitoUser 向其发出经过身份验证的发布请求,并将 webapp:ViewUploadDocumentsPage 传递到正文中。在我广泛的研究中,我没有发现任何暗示这一点的东西,所以我认为我错了。

我能否创建一个带有授权方的 API 网关,该授权方只接受来自 CognitoUsers 且具有 webapp:ViewUploadDocumentsPage 权限的请求?我真的不确定该怎么做。

【问题讨论】:

    标签: amazon-web-services aws-api-gateway amazon-cognito amazon-iam aws-userpools


    【解决方案1】:

    与其验证用户拥有哪些 IAM 权限,不如只检查用户所在的组不是更简单吗?如果用户在 Admins 组中,那么您就知道他们拥有您感兴趣的权限。您可以通过多种方式获取用户的组成员资格,具体取决于您使用的语言以及您要在哪里进行检查。

    【讨论】:

    • 你说得对,我现在是用组来判断用户是否应该能够查看路线。对于后端,我使用的是 lambda 授权器。我之所以坚持使用自定义策略,是因为对应该如何使用 Cognito 存在误解。
    猜你喜欢
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2023-02-20
    • 2016-04-23
    • 2010-12-08
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    相关资源
    最近更新 更多