我正在尝试使用AWS API Gateway构建REST API,该API调用一堆Lambda函数。
我现在已经将API网关设置为使用Cognito用户池作为授权者,但是由于我已经将用户池附加到所有端点,所以实际上所做的就是对用户进行身份验证。我无法弄清楚如何在某些端点上专门允许某些方法。
例如,如果我的用户是123
并且属于ABC
组,我只希望他们能够GET /users?group=ABC
或PATCH /users/123
。
是否可以实现这种控制级别,还是需要在API网关调用的Lambda函数中实施这些检查?
答案 0 :(得分:1)
我正在开发类似的设置,并且遇到了完全相同的问题。我的团队无法找到解决方案,因此我们联系了AWS解决方案架构师。这是他们解决此问题的方法的摘要。
不幸的是,没有针对此特定问题的默认内置解决方案。但是,您可以使用其他替代解决方案。
在Cognito用户池工作流程中可以触发Lambda函数。您可以使用额外的Lambda函数通过检查用户与用户的关系来授权用户。
Customizing User Pool Workflows with Lambda Triggers
您可以使用API Gateway Lambda授权器。在这种情况下,您将不得不放弃Cognito集成,并在授权者Lambda内应用您的自定义授权逻辑。
Use API Gateway Lambda authorizers
您可以通过检查用户组关系来在lambda函数内部实现授权逻辑,并带有额外的查询。您可以在Lambda事件中通过requestContext.authorizer.claims.*
检查发出请求的用户(认知用户)的身份。
希望这会有所帮助。
答案 1 :(得分:0)
当然可以。这将对您有帮助。.如果您被卡住.. ping Me back
https://aws.amazon.com/premiumsupport/knowledge-center/cognito-custom-scopes-api-gateway/