首页 文章

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

提问于
浏览
1

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

1 回答

  • 0

    使用 aws-api-gateway-client 修改发送到Lambda函数的请求,以在标头中传递JWT AccessToken . 你可能需要ensure your API gateway is configured to pass headers .

    您应该使用外部服务的共享密钥加密此令牌 . 然后,您必须在lambda处理函数中对其进行解码 .

    apigClient.invokeApi(
      params,
      pathTemplate, 
      method,
      { { headers: { accessToken } } }, 
      body);
    

    Note that using the AccessToken makes sense here因为我们不为用户的其他细节烦恼 .

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

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

    import { util } from 'aws-sdk/global';
    
    exports.handler = function(event, context) {
      // parse access Token from request header
      const headers = event.headers;
      const payload = headers.accessToken.split('.')[1];
    
      const { username } = JSON.parse(
         util.base64.decode(
           payload
         )
         .toString('utf8')
      );
    
      ...
    };
    

相关问题