2017-02-15 15 views
0

Я пытаюсь аутентифицировать пользователей, используя функцию Lambda, написанную в Node.js в AWS. Я застрял сейчас. Следующий код не работает, как ожидалось:Как аутентифицировать пользователей, используя функции лямбда-функции и 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); 
 
     }, 
 

 
    }); 
 

 
};

Код выше приведен в Cognito Documentation page

Но все, что я получил это следующее сообщение об ошибке:

TypeError: AWS.CognitoIdentityServiceProvider.AuthenticationDetails is not a function 

У кого-нибудь есть представление о том, что я должен делать сейчас? Спасибо

ответ

1

Вы используете AWSCognito, но это не определено. Измените его на AWS.

Вы пытаетесь написать обертку для cognito? Вы можете сделать эту аутентификацию на клиенте, а не в Лямбде.

+0

Hi @doorstuck, я уже перешел на AWS, но у меня такая же ошибка. Что касается обертки, я не уверен, я новичок в этом. Все, что я сделал, это объявить это «var AWS = require (« aws-sdk »)» в первой строке кода. Я только что закодировал inline и не загружал файлы. Должен ли я загружать любую библиотеку? – blackjack

+1

@blackjack Я пытался выяснить, почему вы пишете этот код входа на сервере, а не на клиенте. Обычно я пишу код, который у вас есть на клиенте, а затем использую учетные данные, которые вы получаете от него, для вызова других ресурсов AWS. Вы даже можете использовать учетные данные, которые вы получаете в клиенте, для вызова API-шлюза и аутентификации запроса. И это встроено в API Gateway. Можете ли вы обновить свой пример кода с изменением на 'AWS.CognitoIdentityServiceProvider.AuthenticationDetails'. – doorstuck

+0

Я боюсь, что я ошибся. Я пытался создать безмозглую архитектуру с лямбдой, чтобы управлять всеми аутентификациями пользователей и сигналами регистрации (вход в систему, сброс пароля, подтверждение и т. Д.). Я изменю код и даю клиенту некоторые обязанности. Я попытаюсь понять, как AWS API Gateway будет проверять учетные данные клиента. – blackjack

 Смежные вопросы

  • Нет связанных вопросов^_^