使用CDK授权网关访问IAM和Cognito的最佳方式



使用CDK,我有一个网关rest api lambda,我想访问它;

  • cognito用户池的成员
  • 我堆栈中的其他Lambda

据我所知,没有办法向同一网关资源方法添加两个授权人?

这意味着我有两个选择;

  1. 创建自定义Lambda授权程序,用于验证cognito和IAM的令牌
  2. 在我的api中添加两个独立的资源,并从我的客户端调用与我的lambdas不同的端点。例如:

/external/route1与cognito授权人

/internal/route1与iam授权人

以下哪种方法更好?我想选项2更容易设置。有什么CDK的例子或构造可以帮助我吗?

您可以在整个堆栈中运行Cognito authorizers,然后检查每个内部服务的作用域。在网关上,Cognito授权者将验证令牌,并根据您指定的内容检查作用域。我不知道CDK,但如果你使用Pulumi Crosswalk,在APIGW中设置Cognito Authorizer真的很简单,比如这样:

const api = new awsx.apigateway.API(<NAME>, {
routes: [{
path: <PATH>,
method: <METHOD>,
eventHandler: <LAMBDA>,
authorizers: [awsx.apigateway.getCognitoAuthorizer({
providerARNs: [<USERPOOL>],
methodsToAuthorize: ['<RESOURCE>/<SCOPE>']
})]
}]
});

相关内容

  • 没有找到相关文章

最新更新