2017-02-15 15 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

私は申し訳ありませんが、私は間違った方法で行ってきました。私はすべてのユーザ認証とサインアップフロー(サインイン、リセットパスワード、確認など)を管理するために、ラムダを使用したservlessアーキテクチャを構築しようとしていました。私はコードを変更し、クライアントにいくつかの責任を与えます。 AWS API Gatewayがクライアントの資格情報をどのように検証するかを理解しようとします。 – blackjack

関連する問題