首页 > 解决方案 > 如何在 AWS Lambda 函数中获取经过 Cognito 身份验证的用户信息?

问题描述

我正在为我的 Angular 应用程序开发一个无服务器后端。

用户使用 AWS Cognito 进行身份验证,并且可以通过 API Gateway 访问 AWS Lambda 函数(使用通过 API Gateway 控制台生成的开发工具包)。

问题:如何获取有关哪个用户正在调用 Lambda 函数的信息?Lambda 函数使用 python & boto3。

用例:我需要记录用户活动以符合 GDPR,因此我需要知道哪个用户正在调用 Lambda 函数。

标签: amazon-web-servicesaws-lambdaaws-sdkaws-cognito

解决方案


API Gateway 最近推出了对 Cognito 用户池授权器的支持。使用 Cognito 用户池授权器配置 API 方法后,您可以将 Authorization 标头中未过期的 ID 令牌传递给您的 API 方法。

如果它是您的用户池用户的有效 ID 令牌,则您可以使用“$context.authorizer.claims”访问 API 中的所有 ID 令牌声明。

例如,“$context.authorizer.claims.email”将返回用户的电子邮件地址,“$context.authorizer.claims.sub”将返回您用户的唯一标识符。

如果 ID 令牌已过期或无效,Cognito 用户池授权方将向调用方发送未授权 (401) 响应。

正如您从他们的出版物中所读到的,您可以从授权标头的未过期 ID 令牌中获取声明。


推荐阅读