首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AWS Lambda中获取当前用户用户名?

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

Stack Overflow用户
提问于 2017-09-09 07:00:34
回答 2查看 7.1K关注 0票数 7

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

EN

回答 2

Stack Overflow用户

发布于 2017-09-09 11:01:07

使用aws-api-gateway-client修改发送到Lambda函数的请求,以在请求报头中传递JWT ID Token。您可能需要ensure your API gateway is configured to forward headers

代码语言:javascript
复制
apigClient.invokeApi(
  params,
  pathTemplate, 
  method,
  { { headers: { IDToken } } }, 
  body);

ID令牌应该在这里使用,因为它的有效负载包含cognito:用户名字段

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

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

Verify its signature,然后再信任其有效负载的内容。

代码语言:javascript
复制
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;

  ...
};
票数 2
EN

Stack Overflow用户

发布于 2020-11-05 19:15:20

您可以使用event.identity.username

代码语言:javascript
复制
exports.handler = async (event, _, callback) => {
   try {
        console.log('event', event);
        console.log('event.identity.username', event.identity.username);
        const userId = event.identity.username;
        console.log('userId', userId);

        callback(null, true);
   } catch(e) {
       console.log(e);
       callback(e);
   }
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46125535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档