【发布时间】:2020-01-20 22:23:53
【问题描述】:
我有一个通过 AWS API Gateway 访问的 RESTful API。我希望两个人类用户(通过 Cognito 进行身份验证)和其他(内部)服务都能够调用 API。有很多关于如何做的文档,但没有关于如何做both的文档。
我尝试使用未经身份验证的 Cognito 联合身份来授权服务。我还使用 Cognito 用户池对 people 进行身份验证。但是,API Gateway 只允许一个授权者(在这种情况下,AWS_IAM 或一个 Cognito 授权者)。但是,我看不出两者兼得。
我想我需要一个自定义 Lambda 授权方,但我很难找到有关如何使用 IAM 或 Cognito 编写授权方的准确信息。
当然,我们不可能是第一个希望允许服务和人类访问 API 的人。这样做的文档缺乏使我相信我要么错过了一些非常明显的东西,要么这是一个最好避免的用例(在这种情况下,最佳实践是什么?)。
有什么办法可以同时做到这两点吗?是否有一个 Lambda 授权人示例可以为我指明正确的方向?有什么我缺少的内置功能吗?
我们拒绝“假装” Cognito 用户是人类的想法,而实际上它实际上是一项服务,因为在我们看来这似乎是对 Cognito 用户池和身份联合的滥用。同样,相反,Cognito 用户被联合起来充当用户和服务共享的 IAM 角色,这似乎是对用户身份验证的滥用。
有没有规范的方法可以做到这一点?如果没有,是否有现有文档说明如何编写自定义 Lambda 授权方来同时执行这两项操作?
【问题讨论】:
标签: amazon-web-services authorization aws-api-gateway amazon-cognito amazon-iam