Aws lambda 如何使用Lambda函数和AWS Cognito对用户进行身份验证?

Aws lambda 如何使用Lambda函数和AWS Cognito对用户进行身份验证?,aws-lambda,aws-cognito,Aws Lambda,Aws Cognito,我正在尝试使用AWS中Node.js中编写的Lambda函数对用户进行身份验证。我现在卡住了。 以下代码无法按预期工作: var AWS=require('AWS-sdk'); exports.handler=(事件、上下文、回调)=>{ AWS.config.region='us-east-1'; var authenticationData={ 用户名:“用户名”, 密码:“Password”, }; var authenticationDetails=new AWS.CognitoIde

我正在尝试使用AWS中Node.js中编写的Lambda函数对用户进行身份验证。我现在卡住了。 以下代码无法按预期工作:

var AWS=require('AWS-sdk');
exports.handler=(事件、上下文、回调)=>{
AWS.config.region='us-east-1';
var authenticationData={
用户名:“用户名”,
密码:“Password”,
};
var authenticationDetails=new AWS.CognitoIdentityServiceProvider.authenticationDetails(authenticationData);
var poolData={UserPoolId:'My Pool Id',
ClientId:“我的客户Id”
};
var userPool=new AWS.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData={
用户名:“用户名”,
池:用户池
};
var cognitoUser=new AWS.CognitoIdentityServiceProvider.cognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails{
onSuccess:函数(结果){
log('access token+'+result.getAccessToken().getJwtToken());
log('idToken+'+result.idToken.jwtToken);
},
onFailure:函数(err){
警惕(err);
},
});

};您使用的是
AWSCognito
,但未定义。将其更改为AWS


你想为cognito写一个包装器吗?您可以在客户端而不是Lambda中执行此身份验证。

Hi@doorstack,我已经更改为AWS,但我遇到了相同的错误。至于包装纸,我不确定,我是这方面的新手。我所做的只是在第一行代码中声明“var AWS=require('AWS-sdk');”。我只是内联编码,没有上传任何文件。我应该上传任何库吗?@blackjack我想知道为什么你要在后端而不是客户端写这个登录代码。通常情况下,我会编写客户端中的代码,然后使用从客户端获得的凭据调用其他AWS资源。您甚至可以使用在客户机中获得的凭据来调用API网关并对请求进行身份验证。这是内置到API网关中的。您能否将您的代码示例更改为
AWS.CognitoIdentityServiceProvider.AuthenticationDetails
。我很惊讶我走错了方向。我试图用lambda构建一个无服务架构来管理所有用户身份验证和注册流(登录、重置密码、确认等)。我会修改代码,给客户一些责任。我将尝试了解AWS API网关将如何验证客户端凭据。@blackjack下面介绍如何将cognito与API网关一起使用:。因此,客户端在授权头中发送JWT令牌(
idToken
),API网关将授权用户。然后将在lambda中的
event.authorizer
中找到用户。客户端通过使用上面的代码获取JWT令牌。为客户端使用合适的SDK(javascript、android、ios等),我会这么做的。谢谢