【问题标题】:Best way to authorize gateway access to IAM and Cognito using CDK使用 CDK 授权网关访问 IAM 和 Cognito 的最佳方式
【发布时间】:2021-03-19 10:50:39
【问题描述】:

使用 CDK,我有一个我希望可以访问的网关 rest api lambda;

  • 认知用户池的成员
  • 我的堆栈中的其他 lambdas

据我所知,没有办法将 2 个授权方添加到同一个网关资源方法中?

所以这意味着我有两个选择;

  1. 创建自定义 Lambda authoriser,用于验证 cognito 和 IAM 的令牌
  2. 向我的 api 添加 2 个单独的资源,并从我的客户端与我的 lambda 调用不同的端点。例如:

/external/route1cognito authorizer

/internal/route1 与 iam 授权人

这些方法中哪一种更好?我想选项 2 更容易设置。是否有任何 CDK 示例或结构可以帮助我解决这个问题?

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cloudformation aws-api-gateway aws-cdk


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2019-11-18
      • 2023-03-27
      • 1970-01-01
      • 2023-02-12
      • 2017-09-04
      • 2018-11-19
      • 2020-03-31
      • 2019-02-01
      相关资源
      最近更新 更多