【问题标题】:Authorizing access to specific resources授权访问特定资源
【发布时间】:2020-05-21 21:19:47
【问题描述】:

我正在尝试使用调用一组 Lambda 函数的 AWS API Gateway 构建一个 REST API。

我现在已设置 API 网关以使用 Cognito 用户池作为授权方,但真正要做的只是对用户进行身份验证,因为我已将用户池附加到所有端点。我无法弄清楚如何在某些端点上专门允许某些方法。

例如,如果我的用户是123 并且属于组ABC,我只希望他们能够GET /users?group=ABCPATCH /users/123

是否可以实现这种级别的控制,或者我是否需要在 API Gateway 调用的 Lambda 函数中实施这些检查?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway amazon-cognito


    【解决方案1】:

    我正在开发类似的设置,但遇到了完全相同的问题。我的团队找不到解决方案,因此我们联系了 AWS 解决方案架构师。以下是他们解决此问题的方法的摘要。

    不幸的是,没有针对这个特定问题的默认内置解决方案。但是,您可以使用一些替代解决方案。

    1. 可以在 Cognito 用户池工作流程期间触发 Lambda 函数。您可以使用额外的 Lambda 函数通过检查用户-组关系来授权用户。
      Customizing User Pool Workflows with Lambda Triggers

    2. 您可以使用 API Gateway Lambda 授权方。在这种情况下,您将不得不放弃 Cognito 集成并在授权方 Lambda 中应用您的自定义授权逻辑。
      Use API Gateway Lambda authorizers

    3. 您可以通过检查用户-组关系,使用额外的查询在 lambda 函数中实现授权逻辑。您可以通过 Lambda 事件中的requestContext.authorizer.claims.* 来检查请求(Cognito)用户的身份。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      当然是的,你可以做到。这会对你有所帮助.. 如果你被卡住了.. 回复我

      https://aws.amazon.com/premiumsupport/knowledge-center/cognito-custom-scopes-api-gateway/

      【讨论】:

      • 我想这是我的新手,但我仍然不清楚两件事:您如何确定哪些用户有权使用哪些范围?在与范围相关的端点/方法中,根据路径/查询参数进行授权是否有区别?另外我正在使用自定义身份验证,我认为这没关系?
      • @wizplum 的评论有什么更新吗?我遇到了完全相同的问题,无法找到一种方法来根据路径/查询参数限制 cognito 用户的访问。
      • 这个我还没想通
      猜你喜欢
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      相关资源
      最近更新 更多