amazon-web-services - 如何在 AWS Lambda 函数中获取经过 Cognito 身份验证的用户信息?
问题描述
我正在为我的 Angular 应用程序开发一个无服务器后端。
用户使用 AWS Cognito 进行身份验证,并且可以通过 API Gateway 访问 AWS Lambda 函数(使用通过 API Gateway 控制台生成的开发工具包)。
问题:如何获取有关哪个用户正在调用 Lambda 函数的信息?Lambda 函数使用 python & boto3。
用例:我需要记录用户活动以符合 GDPR,因此我需要知道哪个用户正在调用 Lambda 函数。
解决方案
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 令牌中获取声明。
推荐阅读
- javascript - Google Analytics(分析)中两个独特事件之间的差异
- angular - 在 000webhost.com 上托管 Angular2 项目
- laravel - 雄辩的第一种方法返回带有模型变量的集合
- delphi - 如何在 Delphi 7 中将内存流转换为文件流?
- jquery - 使用带有媒体查询的 jquery 将 css 规则应用于选择器
- r - 将数据框输出保存到多个文件夹
- tensorflow - Keras 延迟数据增强
- mysql - MySQL - 选择 N 数量的不同记录所在的所有行
- mysql - 创建完整性验证流程
- android - Flutter - 在没有 UrlLauncher 的情况下拨打电话