aws-lambda - 如何使用 Cognito 控制 API 访问
问题描述
我们正在使用 API Gateway+lambda+DynamoDB 构建许多微服务。我们需要使用我们用于用户管理的 Cognito 来保护这些 API。我们将有一个用户池和两个组,每个组附加一个不同的 IAM 角色。需要的是一个组中的用户不应该能够访问所有服务,因此其他组中的用户。有什么建议,我们如何实施?问题是 Cognito 生成的 ID 令牌未经 API 网关验证以检查用户的访问级别。它只检查 Cognito ID 令牌是否有效。
解决方案
您可以使用 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 网关的池/
推荐阅读
- ios - 将持久存储迁移到新位置
- r - R,在面板回归中找到最坏的预测案例
- php - 如何使用 Symfony 4 更改用户区域设置?
- reactjs - 不变违规:在“连接(AddTodo)”的上下文中找不到“商店”。执行 npm 测试时
- spring-boot - 使用 maven 作为构建工具时,通过 /actuator/info 端点提供 Spring Boot git 和构建信息
- android - XML 中的数组:将一个数组作为一部分插入另一个数组
- javascript - Mongo shell db.model.find() 未显示所有文档
- javascript - 如何在 Vuetify v-treeview 中使用复合项目键
- activerecord - 如何在 yii2 中使用参数构造或初始化一个 activerecord 对象?
- arrays - 用于将 2 列相乘的 Google Sheets ArrayFormula 解决方案,其中之一是一列数字列表