当前位置: 首页 > 知识库问答 >
问题:

如何使用Cognito拒绝访问API网关上的终结点

欧镜
2023-03-14

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

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

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

然后,我将此策略附加到一个网络身份角色,并将此角色分配给我的用户池中的一个组。我将Cognito提供的身份令牌传递给Cognito授权程序,不幸的是,即使是该组中的用户也可以访问终结点。

有没有一种方法可以仅使用Cognito提供的ID或访问令牌来为API授予特定于用户的权限?如果没有,那我该怎么办?

共有1个答案

仲孙凡
2023-03-14

使用API网关(使用ID令牌)的Cognito授权程序不会检查分配给用户的声明或IAM策略。如果在向API发出请求时传递ID Token,API网关仅检查ID Token是否有效。对于您的使用情况,您可以在API上启用基于IAM的身份验证或使用Lambda授权程序。在Lambda授权程序中,您可以传递Cognito令牌,对其进行解码,并根据组信息为特定请求生成允许或拒绝策略。

 类似资料:
  • 我试图通过使用AWS Cognito、Api-Gateway和Lambda来实现电子商务应用程序后端。 要创建新项目,用户必须登录。创建项目后,记录的用户将成为项目的创建者。我已经创建了一个Item createendpoint,并为Apigatewayendpoint添加了Cognito JWT授权程序。 现在我需要实现项目更新终结点。相关的项目更新必须只允许项目的创建者使用。API可能是这样的

  • 我正在尝试使用Gmail REST API在Gmail邮箱中读/写电子邮件/文件夹。当添加以下Google auth作用域时,可以从Gmail REST API读取电子邮件,而不会出现任何问题: https://apps-apis.google.com/a/feeds/compliance/audit/, https://www.googleapis.com/auth/admin.director

  • 我使用委托权限来获得访问令牌授权。用户是全局管理员 权限范围是offline_访问用户。读写。所有文件。读写。所有 我请求API获取相同的租户子用户驱动器文件 https://graph.microsoft.com/v1.0/users/xxx/drive/root/children 返回访问拒绝 https://graph.microsoft.com/v1.0/me/drive/root/chi

  • 我想拒绝对AWS API网关的公共访问,只允许在使用特定角色调用API时进行访问。在我的测试中,有两个网关,一个网关调用另一个网关: 我希望能够在浏览器中访问公共网关endpoint并收到2xx响应,而当直接访问私有网关时,我应该收到4xx响应。访问私有网关的唯一方式应该是通过公共网关(它通过每个endpoint代理私有网关)。 我试过几种政策。所有这些都会导致公共网关错误日志,显示如下内容: 我

  • 问题内容: 我得到以下IOException: 尝试运行以下代码时: 在我看来,由于某种原因,JVM无法创建新文件。如果文件已经存在,则代码可以很好地运行。是否存在某种访问文件来指示JVM是否可以创建新文件还是我只是在做错什么? 任何帮助深表感谢 :-) 我正在运行Java 1.4,并且已经在Windows XP中的JDeveloper中进行了测试。 问题答案: 问题在于这些调用彼此接替: 创建操

  • 我有客户端发送给我的以下endpoint: 由于这个请求需要通过AWS授权过程来调用,所以我想使用API网关SDK,但是我找不到如何调用它的简单示例。我能够使用Postman成功地测试API调用(如AWS文档中所述),但我不知道如何使用SDK指定它。endpoint应该是完整的URL?我该如何在此代码之外进行呼叫?我尝试使用GetResourceRequest,但这似乎不对。如果是,我拥有的这个U