2017-02-15 5 views
0

AWS의 Node.js로 작성된 람다 함수를 사용하여 사용자를 인증하려고합니다. 나는 지금 붙어있다. 다음 코드는 예상대로 작동하지 않습니다람다 함수와 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으로 변경하십시오.

시가 래퍼를 작성 하시겠습니까? 람다 대신 클라이언트에서이 인증을 할 수 있습니다.

+0

안녕하세요 @ doorsstuck, 이미 AWS로 변경했지만 동일한 오류가 발생했습니다. 래퍼에 관해서는 잘 모르겠다. 나는 이것에 초보자이다. 내가 한 모든 것은이 코드를 "var AWS = require ('aws-sdk');라고 선언하는 것이 었습니다. 방금 인라인으로 코딩했는데 파일을 업로드하지 않았습니다. 라이브러리를 업로드해야합니까? – blackjack

+1

@blackjack 왜 내가이 로그인 코드를 클라이언트가 아닌 백엔드에 쓰는지 알아 내려고했습니다. 일반적으로 클라이언트에있는 코드를 작성한 다음 다른 AWS 리소스를 호출하는 데 사용하는 자격 증명을 사용합니다. 클라이언트에서 얻은 자격 증명을 사용하여 API 게이트웨이를 호출하고 요청을 인증 할 수도 있습니다. 그리고 그것은 API 게이트웨이로 구축됩니다. 'AWS.CognitoIdentityServiceProvider.AuthenticationDetails'로 변경하여 코드 예제를 업데이트 할 수 있습니까? – doorstuck

+0

나는 틀린 방법으로 갔다 나는 affraid이다. 나는 람다 (lambda)를 사용하는 servless 아키텍처를 구축하여 모든 사용자 인증 및 가입 플로우 (로그인, 재설정 passord, 확인 및 기타)를 관리하려고했습니다. 코드를 변경하고 클라이언트에게 몇 가지 책임을 전하겠습니다. AWS API 게이트웨이가 클라이언트 자격 증명의 유효성을 검사하는 방법을 이해하려고 노력할 것입니다. – blackjack

관련 문제