如何在 AWS Lambda 中获取当前用户名?

Ild*_*dar 7 amazon-web-services aws-lambda aws-cognito

我使用 AWS Lambda + Cognito(用户池 + 联合身份)+ API 网关。用户使用amazon-cognito-identity-js在 WEB 应用程序中进行身份验证,并使用aws-api-gateway-client调用 API 。API 网关方法具有 AWS_IAM 授权方。如何在 Lambda 函数中获取用户名(来自用户池)?

Olu*_*ule 2

使用在请求标头中aws-api-gateway-client传递 JWT 来修改发送到 Lambda 函数的请求。ID Token您可能需要确保您的 API 网关配置为转发标头

apigClient.invokeApi(
  params,
  pathTemplate, 
  method,
  { { headers: { IDToken } } }, 
  body);
Run Code Online (Sandbox Code Playgroud)

此处应使用 ID 令牌,因为其有效负载包含cognito:username字段

ID Token使用 进行身份验证后获得amazon-cognito-identity-js

您可以在 lambda 处理程序函数中从请求标头解析此字段。

在信任其有效负载的内容之前验证其签名。

import { util } from 'aws-sdk/global';

exports.handler = function(event, context) {
  // Parse ID Token from request header
  const headers = event.headers;
  const idToken = headers.IDToken;

  ...
};
Run Code Online (Sandbox Code Playgroud)