授权访问特定资源

时间:2020-05-03 04:05:03

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

我正在尝试使用AWS API Gateway构建REST API,该API调用一堆Lambda函数。

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

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

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

2 个答案:

答案 0 :(得分: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.*检查发出请求的用户(认知用户)的身份。

希望这会有所帮助。

答案 1 :(得分:0)

当然可以。这将对您有帮助。.如果您被卡住.. ping Me back

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