1

私のユーザープールのためのAuth Challengeとして、私はラムダ機能を定義しました。この機能は、ワンタッチ認証を要求するために、Authyに要求を送信します。認証チャレンジトリガーはいつ実行されますか?

この設定では、Autogn Multi-Factor認証をCognitoログインプロセスに追加したいと考えています。

しかし、私が認証するときに、ユーザー名とパスワードでCognitoユーザーをログインしてください。このラムダ機能は起動しません!

どうしますか? Lambdaトリガは登録プロセス用にのみ定義されていますか?ありがとう

---------------------アップデート:----------------------ユーザー名とパスワードが必要です--------------------------

マイログインコード、:

authenticate(userName, userPassword) { 
    var userData = {Username: userName, Pool : CognitoUserPool} 
    var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData); 

    var authenticationData = {Username : userName, Password : userPassword}; 
    var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData); 

    cognitoUser.authenticateUser(authenticationDetails, { 
     onSuccess: function (session) { 
      AWSInitialize(cognitoUser, session); 
      face.showHome(); 
     }.bind(this), 

     mfaRequired: function(session){ 
      new MFAConfirmation(cognitoUser, 'login'); 
     }, 

     onFailure: function(err) { 
      alert(err); 
     } 
    }); 
}; 

トリガー定義されています

enter image description here

+0

あなたは正式なチャレンジを意味しますか?ユーザー認証のための新しいカスタム認証ステージですか?どのようにあなたがそれを呼び出しているか/ユーザを認証しているかを表示できますか? –

+0

@JeffBailey私の更新を参照してください、これはあなたの質問を理解するのに役立ちますか?ご協力いただきありがとうございます! –

答えて

3

あなたはPしなければならないので、認証チャレンジを定義し、ラムダはCUSTOM_AUTHフローのコンテキストでのみ動作します認証時にAuthFlowとしてCUSTOM_AUTHを使用してください。 Javascriptでは次の操作を行うことができます:

cognitoUser.setAuthenticationFlowType('CUSTOM_AUTH'); 

「Cognito AWS Lambda Triggersの開発者ガイド」の例は実際にそれを行います。ユーザー名とパスワードを使用して認証した後、別のチャレンジを定義できます。

Define Auth Challengeの例では、usernameとpasswordで認証した後に別のチャレンジを設定できます。チャレンジとしてCUSTOM_CHALLENGEを指定すると、Create Auth Challengeラムダトリガが呼び出されます。

exports.handler = function(event, context) { 
     if (event.request.session.length == 1 && event.request.session[0].challengeName == 'SRP_A') { 
      event.response.issueTokens = false; 
      event.response.failAuthentication = false; 
      event.response.challengeName = 'PASSWORD_VERIFIER'; 
     } else if (event.request.session.length == 2 &&  event.request.session[1].challengeName == 'PASSWORD_VERIFIER' && event.request.session[1].challengeResult == true) { 
      event.response.issueTokens = false; 
      event.response.failAuthentication = false; 
      event.response.challengeName = 'CUSTOM_CHALLENGE'; 
     } else if (event.request.session.length == 3 &&  event.request.session[2].challengeName == 'CUSTOM_CHALLENGE' && event.request.session[2].challengeResult == true) { 
      event.response.issueTokens = true; 
      event.response.failAuthentication = false; 
     } else { 
      event.response.issueTokens = false; 
      event.response.failAuthentication = true; 
     } 
     context.done(null, event); 
    } 
+1

親愛なる@IonutTrestianあなたの答えに感謝します。私のコードに 'setAuthenticationFlowType( 'CUSTOM_AUTH')文がありませんでした。今は完全に機能し、私はAuthyで多因子認証を開発することができました。他の関心のある開発者のために、Githubで私のセットアップを見せます。すてきな一日を! –

+0

恐ろしい!私は設定について興味があります、あなたはgithubに投稿するときに私にそれをリンクできますか? –

関連する問題