AWS API Gateway / Cognito Userpools / Lambdas无法传递呼叫者凭据

时间:2016-09-06 15:45:17

标签: amazon-web-services aws-lambda amazon-cognito aws-api-gateway

我正在使用Lambda后端开发AWS API Gateway实现。我使用API​​ Gateway与Cognito Userpools(相当新的)集成,而不是使用Lambda构建自定义授权器(这是在集成之前的推荐方式)。

我创建了一个概念验证(javascript),用于使用Cognito对用户进行身份验证,然后使用这些凭据调用API网关。因此,基本上,对API网关的结束调用是使用我在Authorization标头中从Cognito(result.idToken.jwtToken)收到的JWT令牌。这一切都有效,我可以验证只有这个令牌才能访问API。

一切正常,但现在我希望能够访问Lambda中的Cognito身份;例如身份ID或姓名或电子邮件。我已经阅读了如何映射所有参数,但实际上我只是在集成请求中使用标准的“Method Request Passthrough”模板。我记录了lambda中的所有参数,所有'cognito'参数都是空的。

我查看了很多类似的问题,他们都建议在集成请求中启用“使用调用者凭据调用”复选框。这很有道理。

,只有在您使用 AWS_IAM 作为授权时才能启用此复选框,如果您选择了您的cognito UserPool,则只能。因此,无法选择它并且实际上已禁用。

在这种情况下有人知道该怎么做吗?这仍然在进行中,还是有理由不能启用此功能并在Lambda中获取认证凭据?

非常感谢。

1 个答案:

答案 0 :(得分:3)

如果您需要在后端记录用户信息,可以使用$context.authorizer.claims.sub$context.authorizer.claims.email获取电子邮件您的Cognito用户池。

以下是有关API网关中Use Amazon Cognito Your User Pool的文档