AWS API 网关/Cognito 用户池/Lambda 无法传递调用方凭据
AWS API Gateway / Cognito Userpools / Lambdas not able to pass caller credentials
我正在使用 Lambda 后端开发 AWS API 网关实现。我使用 API 网关与 Cognito Userpools 集成(相当新),而不是使用 Lambda 构建自定义授权方(这是集成之前的推荐方式)。
我创建了一个概念证明 (javascript),它使用 Cognito 对用户进行身份验证,然后使用这些凭据调用 API 网关。因此,基本上,对 API 网关的结束调用是使用我在授权 header 中从 Cognito (result.idToken.jwtToken) 收到的 JWT 令牌。这一切都有效,我可以验证只有使用此令牌才能访问 API.
一切正常,但现在我想在我的 Lambda 中访问 Cognito 身份;例如身份 ID 或姓名或电子邮件。我已经阅读了如何映射所有参数,但实际上我只是在集成请求中使用标准 'Method Request Passthrough' 模板。我在 lambda 中记录了所有参数,并且所有 'cognito' 参数都是空的。
我查看了许多类似的问题,他们都建议在集成请求上启用 'Invoke with caller credentials' 复选框。这是完全有道理的。
但是,此复选框只有在您使用 AWS_IAM 作为授权且 时才能启用如果您 select 编辑了您的 Cognito 用户池,则不会。所以它不可能 select 它实际上被禁用了。
有人知道在这种情况下该怎么办吗?这是否仍在进行中,或者是否有原因导致您无法启用它并在您的 Lambda 中获取认知凭证?
非常感谢。
如果需要在后台记录用户信息,可以使用$context.authorizer.claims.sub
和$context.authorizer.claims.email
获取sub和email 用于您的 Cognito 用户池。
这是 API 网关
中关于 Use Amazon Cognito Your User Pool 的文档
我正在使用 Lambda 后端开发 AWS API 网关实现。我使用 API 网关与 Cognito Userpools 集成(相当新),而不是使用 Lambda 构建自定义授权方(这是集成之前的推荐方式)。
我创建了一个概念证明 (javascript),它使用 Cognito 对用户进行身份验证,然后使用这些凭据调用 API 网关。因此,基本上,对 API 网关的结束调用是使用我在授权 header 中从 Cognito (result.idToken.jwtToken) 收到的 JWT 令牌。这一切都有效,我可以验证只有使用此令牌才能访问 API.
一切正常,但现在我想在我的 Lambda 中访问 Cognito 身份;例如身份 ID 或姓名或电子邮件。我已经阅读了如何映射所有参数,但实际上我只是在集成请求中使用标准 'Method Request Passthrough' 模板。我在 lambda 中记录了所有参数,并且所有 'cognito' 参数都是空的。
我查看了许多类似的问题,他们都建议在集成请求上启用 'Invoke with caller credentials' 复选框。这是完全有道理的。
但是,此复选框只有在您使用 AWS_IAM 作为授权且 时才能启用如果您 select 编辑了您的 Cognito 用户池,则不会。所以它不可能 select 它实际上被禁用了。
有人知道在这种情况下该怎么办吗?这是否仍在进行中,或者是否有原因导致您无法启用它并在您的 Lambda 中获取认知凭证?
非常感谢。
如果需要在后台记录用户信息,可以使用$context.authorizer.claims.sub
和$context.authorizer.claims.email
获取sub和email 用于您的 Cognito 用户池。
这是 API 网关
中关于 Use Amazon Cognito Your User Pool 的文档