【问题标题】:Authorize id token using Custom Authorizer with Lambda and Boto3使用带有 Lambda 和 Boto3 的自定义授权器授权 id 令牌
【发布时间】:2018-11-21 20:58:38
【问题描述】:

我在 3 个不同的用户池中注册了一堆用户。我想授予 2 个用户池的用户访问权限并拒绝另一个用户池的权限。 API Gateway 允许使用 id 令牌来验证用户是否属于用户池授权方,并通过查看我们登录后获得的 id 令牌来授予访问权限。我想知道是否有任何方法可以在 boto3 中复制它?

我想要做的是在我的 lambda 授权程序中接收 id 令牌,检查它属于哪个用户池,然后允许访问我的集成请求中配置的 AWS 资源。我不想在授权后从我的 lambda 进行任何 api 调用。这可能吗?

【问题讨论】:

    标签: aws-lambda aws-api-gateway boto3 amazon-cognito


    【解决方案1】:

    Cognito ID 令牌采用 JWT(JSON Web 令牌)的形式。 ISS 声明的格式为 https://cognito-idp.{region}.amazonaws.com/{userPoolId}

    每个用户池都有一个对应的JWK,可以在https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json找到。

    所以你需要在你的 Lambda 授权器中做的是从 ID 令牌中获取 ISS 声明(任何像样的 JWT 库都应该这样做)并计算出 UserPoolId。然后,如果它来自有效的用户池,则使用该用户池的 JWK 和合适的 JWT 库来验证令牌。因此,如果用户在相关用户池之一中并且令牌有效,则您授予访问权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2014-01-13
      • 2021-04-15
      • 2021-10-05
      • 2019-08-28
      相关资源
      最近更新 更多