0
我试图使用在AWS中的Node.js中编写的Lambda函数来验证用户。我现在卡住了。 预期下面的代码不起作用:如何使用Lambda函数和AWS Cognito认证用户?
var AWS = require('aws-sdk');
exports.handler = (event, context, callback) => {
AWS.config.region = 'us-east-1';
var authenticationData = {
Username : 'username',
Password : 'password',
};
var authenticationDetails = new AWS.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
var poolData = { UserPoolId : 'My-Pool-Id',
ClientId : 'My-Client-Id'
};
var userPool = new AWS.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
Username : 'username',
Pool : userPool
};
var cognitoUser = new AWS.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
console.log('access token + ' + result.getAccessToken().getJwtToken());
console.log('idToken + ' + result.idToken.jwtToken);
},
onFailure: function(err) {
alert(err);
},
});
};
提供的代码,但我得到的是以下错误:
TypeError: AWS.CognitoIdentityServiceProvider.AuthenticationDetails is not a function
有人对我现在应该做什么有一些想法吗? 谢谢
嗨@doorstuck,我已经更改为AWS,但我得到了同样的错误。至于包装,我不确定,我是一个新手。我所做的只是在第一行代码中声明这个“var AWS = require('aws-sdk');”。我刚刚编码内联,并没有上传任何文件。我应该上传任何图书馆吗? – blackjack
@blackjack我试图弄清楚为什么你在后端编写这个登录代码,而不是在客户端。通常情况下,我会将您拥有的代码写入客户端,然后使用从其获取的凭据来调用其他AWS资源。您甚至可以使用您在客户端获得的凭据来调用API网关并验证请求。这是构建到API网关。 您可以更新您的代码示例并更改为AWS.CognitoIdentityServiceProvider.AuthenticationDetails。 – doorstuck
我很害怕我走错了路。我正尝试构建一个使用lambda的无服务器体系结构来管理所有用户身份验证和注册流程(登录,重置密码,确认以及其他)。我会更改代码并给客户一些责任。我将尝试了解AWS API Gateway如何验证客户端凭据。 – blackjack