【问题标题】:AWS Cognito based Authentication for API Gateway API'SAPI Gateway API 的基于 AWS Cognito 的身份验证
【发布时间】:2020-01-05 17:28:09
【问题描述】:

我在不同组下的 cognito 用户池中有一些用户。示例:管理员组中有 5 个用户,主管组中有 20 个用户。我在 cognito 中创建了应用程序客户端,并启用了一些内置的 Oauth2 范围和自定义范围。 现在我有 API 网关 API,其中 COGNITO AUTHORIZER 启用了身份验证。这些 api 工作正常。

面临的问题: 使用上述方法,我可以访问我的 api,但是如何根据用户范围控制 API 访问。 池中的所有用户都启用了所有范围。唯一可以区分用户的是 cognito:group ,在 api auth setting 中,我只能设置范围,在这种情况下,所有用户(无论组)都具有所有范围,因此他们正在获得身份验证。如何根据用户类型控制流量?

【问题讨论】:

    标签: api authorization


    【解决方案1】:

    当您创建用户组时,您会附加一个 IAM 角色。

    您可以通过设置执行 api 的权限来控制对 API 的访问:

    arn:aws:execute-api:{region}:{account}:{apiId}/{stage}/{method}/{ressource}
    

    其中所有 {parameter} 可以是通配符 * 以匹配所有。

    您可以在他的描述中找到您的用户组的 IAM 角色 ARN,然后进入 IAM 控制台并更新此角色权限

    所以你的政策可以是这样的:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "execute-api:Invoke",
                "Resource": "arn:aws:execute-api:eu-central-1:1564543246:badfg687e/*/*/petstore"
            },
            {
                "Effect": "Deny",
                "Action": "execute-api:Invoke",
                "Resource": "arn:aws:execute-api:eu-central-1:1564543246:badfg687e/*/*/*"
            }
        ]
    }
    

    例如,此权限允许附加到此 IAM 角色的组中的用户执行 API badfg687e 的资源 petstore 上的所有方法并拒绝所有其他访问。

    【讨论】:

    • 此方法适用于在 IAM 中创建的用户组和用户。就我而言,所有用户都是 cognito 用户池的一部分。
    • @AravindC 是的,我不是在谈论 IAM 用户。您的 cognito 用户是 cognito 用户组的一部分。并且这个 cognito 用户组附加到一个 IAM 角色。您可以控制对此 IAM 角色的访问。您可以在您的 cognito 用户组中找到此角色
    猜你喜欢
    • 2016-08-20
    • 2022-01-15
    • 2016-04-11
    • 2019-12-14
    • 2017-11-24
    • 2017-03-12
    • 2019-12-31
    • 2016-03-25
    • 1970-01-01
    相关资源
    最近更新 更多