認証前の Lambda トリガー - Amazon Cognito

認証前の Lambda トリガー

Amazon Cognito は、ユーザーがサインインしようとするときにこのトリガーを呼び出し、カスタム検証が認証リクエストを承認または拒否できるようにします。

注記

トリガーは、トリガーがアクティブ化される前にユーザープールに存在するユーザーによって異なります。

認証前の Lambda フロー

クライアントの認証フロー


                    認証前の Lambda トリガー - クライアントフロー

サーバー認証フロー


                    認証前の Lambda トリガー - サーバーフロー

リクエストには、クライアントからの検証データが含まれています。このデータは、ユーザープールの InitiateAuth と AdminInitiateAuth の API メソッドに渡された ClientMetadata 値に基づきます。

詳細については、「Userプール認証フロー」を参照してください。

認証前の Lambda トリガーのパラメータ

これらは、一般的なパラメータに加えて、この Lambda 関数で必要となるパラメータです。

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "validationData": { "string": "string", . . . }, "userNotFound": boolean }, "response": {} }

認証前のリクエストパラメータ

userAttributes

ユーザー属性を表す 1 つ以上の名前 - 値ペア。

userNotFound

このブール値は、ユーザープールクライアントで PreventUserExistenceErrorsENABLED に設定されている場合に設定されます。

validationData

ユーザーサインインリクエストに検証データを含む 1 つ以上のキー - 値ペア。このデータは、InitiateAuth および AdminInitiateAuth API アクションで ClientMetadata パラメータを使用することによって Lambda 関数に渡すことができます。

認証前のレスポンスパラメータ

レスポンスで返される追加の情報は想定されていません。

認証チュートリアル

認証前の Lambda 関数は、Amazon Cognito が新しいユーザーをサインインする直前にトリガーされます。JavaScript、Android、iOS に関する以下のサインインチュートリアルを参照してください。

プラットフォーム チュートリアル
JavaScript ID SDK JavaScript でのユーザーのサインイン
Android ID SDK Android でのユーザーのサインイン
iOS ID SDK iOS でのユーザーのサインイン

事前認証の例

このサンプル関数は、特定のユーザープールのアプリのクライアントからのユーザーがユーザープールにサインインするのを防ぎます。

Node.js
exports.handler = (event, context, callback) => { if (event.callerContext.clientId === "user-pool-app-client-id-to-be-blocked") { var error = new Error("Cannot authenticate users from this user pool app client"); // Return error to Amazon Cognito callback(error, event); } // Return to Amazon Cognito callback(null, event); };
Python
def lambda_handler(event, context): if event['callerContext']['clientId'] == "<user pool app client id to be blocked>": raise Exception("Cannot authenticate users from this user pool app client") # Return to Amazon Cognito return event

Amazon Cognito は Lambda 関数にイベント情報を渡します。Lambda 関数はレスポンスで、同じイベントオブジェクトを変更と共に Amazon Cognito に返します。Lambda コンソールで、Lambda トリガーに関連するデータを使用したテストイベントをセットアップできます。以下は、このコードサンプルのテストイベントです。

JSON
{ "callerContext": { "clientId": "<user pool app client id to be blocked>" }, "response": {} }