【问题标题】:How to deny access to an endpoint on API Gateway using Cognito如何使用 Cognito 拒绝访问 API Gateway 上的端点
【发布时间】:2020-10-01 19:27:15
【问题描述】:

是否可以通过使用“拒绝”策略并将其附加到具有身份池的角色来使用 Cognito 授予用户特定权限?

我有一个 API,我想限制我的用户池中特定用户对某些端点的访问。我创建了以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "execute-api:Invoke"
            ],
            "Resource": [
                "arn:aws:execute-api:REGION:*:API_ID/*/*/*"
            ]
        }
    ]
}

然后我将此策略附加到 Web 身份角色,并将此角色分配给我的用户池中的一个组。我将 Cognito 提供的 Identity Token 传递给 Cognito 授权方,不幸的是,即使该组中的用户仍然可以访问端点。

有没有办法只使用 Cognito 提供的 ID 或访问令牌为 API 授予用户特定权限?如果没有,那我该怎么办?

【问题讨论】:

    标签: amazon-web-services jwt authorization aws-api-gateway amazon-cognito


    【解决方案1】:

    具有 API 网关(使用 ID 令牌)的 Cognito Authorizer,检查分配给用户的声明或 IAM 策略。如果您在向 API 发出请求时传递 ID 令牌,API 网关仅检查 ID 令牌是否有效。 对于您的用例,您可以enable IAM based authentication on your API 或使用Lambda authorizer。在 Lambda 授权方中,您可以传递 Cognito 令牌 decode it 并根据组信息为特定请求生成允许或拒绝策略。

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 2022-11-15
      • 2016-08-24
      • 2021-10-25
      • 2017-11-28
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多