首页 > 解决方案 > 如何使用 Cognito 控制 API 访问

问题描述

我们正在使用 API Gateway+lambda+DynamoDB 构建许多微服务。我们需要使用我们用于用户管理的 Cognito 来保护这些 API。我们将有一个用户池和两个组,每个组附加一个不同的 IAM 角色。需要的是一个组中的用户不应该能够访问所有服务,因此其他组中的用户。有什么建议,我们如何实施?问题是 Cognito 生成的 ID 令牌未经 API 网关验证以检查用户的访问级别。它只检查 Cognito ID 令牌是否有效。

标签: aws-lambdamicroservicesaws-api-gatewayamazon-cognito

解决方案


您可以使用 API Gateway 自定义授权方来验证附加到每个组的策略。

来自 AWS文档

您可以使用用户池中的组来控制 Amazon API Gateway 的权限。当用户登录时,用户所属的组包含在用户池提供的 ID 令牌中。您可以将这些 ID 令牌与请求一起提交到 Amazon API Gateway,使用自定义授权 Lambda 函数来验证令牌,然后检查用户属于哪些组。

实施的其他参考:

https://aws.amazon.com/blogs/compute/introducing-custom-authorizers-in-amazon-api-gateway/ https://aws.amazon.com/blogs/mobile/integrating-amazon-cognito-user-带有 API 网关的池/


推荐阅读