認証チャレンジの作成の Lambda トリガー - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

認証チャレンジの作成の Lambda トリガー

認証チャレンジ作成トリガーは、認証チャレンジ定義トリガーによって宣言された各チャレンジの詳細を持つ Lambda 関数です。これは、認証チャレンジ定義トリガーによって宣言されたチャレンジ名を処理し、アプリケーションpublicChallengeParametersがユーザーに提示する必要がある を返します。次に、この関数は、ユーザープールが認証チャレンジ検証トリガーに渡すチャレンジ privateChallengeParametersに対する回答をユーザープールに提供します。認証チャレンジ定義トリガーがチャレンジシーケンスを管理する場合、認証チャレンジ作成トリガーはチャレンジの内容を管理します。

チャレンジの Lambda トリガー
認証チャレンジの作成

認証チャレンジの定義トリガーの一部としてカスタムチャレンジが指定されている場合、Amazon Cognito は認証チャレンジの定義後にこのトリガーを呼び出します。これにより、カスタム認証フローを作成します。

この Lambda トリガーは、ユーザーに提示するチャレンジを作成するために呼び出されます。この Lambda トリガーのリクエストには challengeNamesession が含まれます。challengeName は文字列であり、ユーザーに対する次のチャレンジの名前です。この属性の値は、認証チャレンジの定義の Lambda トリガーに設定されています。

チャレンジループは、すべてのチャレンジに応答するまで繰り返されます。

認証チャレンジの作成 Lambda トリガーパラメータ

Amazon Cognito がこの Lambda 関数に渡すリクエストは、以下のパラメータと Amazon Cognito がすべてのリクエストに追加する共通パラメータを組み合わせたものです。

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "challengeName": "string", "session": [ ChallengeResult, . . . ], "clientMetadata": { "string": "string", . . . }, "userNotFound": boolean }, "response": { "publicChallengeParameters": { "string": "string", . . . }, "privateChallengeParameters": { "string": "string", . . . }, "challengeMetadata": "string" } }

認証チャレンジの作成のリクエストパラメータ

userAttributes

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

userNotFound

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

challengeName

新しいチャレンジの名前。

session

session 要素は ChallengeResult 要素の配列であり、それぞれに以下の要素が含まれます。

challengeName

チャレンジタイプ。"CUSTOM_CHALLENGE""PASSWORD_VERIFIER""SMS_MFA""DEVICE_SRP_AUTH""DEVICE_PASSWORD_VERIFIER""ADMIN_NO_SRP_AUTH" のいずれかです。

challengeResult

ユーザーが正常にチャレンジを完了した場合は true に、それ以外の場合は false に設定します。

challengeMetadata

カスタムチャレンジの名前を入力します。challengeName"CUSTOM_CHALLENGE" である場合にのみ使用されます。

clientMetadata

認証チャレンジの作成のトリガーに指定する Lambda 関数へのカスタム入力として提供できる 1 つ、または複数のキー/値ペア。AdminRespondToAuthChallenge および RespondToAuthChallengeAPIアクションの ClientMetadata パラメータを使用して、このデータを Lambda 関数に渡すことができます。create auth challenge 関数を呼び出すリクエストには、 AdminInitiateAuth および InitiateAuthAPIオペレーションの ClientMetadata パラメータに渡されたデータは含まれません。

認証チャレンジの作成のレスポンスパラメータ

publicChallengeParameters

クライアントアプリケーションでユーザーに提示されるチャレンジに使用する 1 つ以上のキー - 値ペア。このパラメータには、ユーザーにチャレンジを正確に提示するために必要なすべての情報を含める必要があります。

privateChallengeParameters

このパラメータは、認証チャレンジレスポンスの検証の Lambda トリガー以外では使用されません。このパラメータには、チャレンジに対するユーザーのレスポンスを検証するために必要な情報のすべてを含める必要があります。つまり、publicChallengeParameters には、ユーザーに示される質問が含まれ、privateChallengeParameters には、質問に対する有効な回答が含まれます。

challengeMetadata

カスタムチャレンジの名前 (カスタムチャレンジの場合)。

認証チャレンジの作成の例

CAPTCHA は、ユーザーへのチャレンジとして作成されます。CAPTCHA イメージURLの はcaptchaUrl「」としてパブリックチャレンジパラメータに追加され、予想される回答はプライベートチャレンジパラメータに追加されます。

Node.js
const handler = async (event) => { if (event.request.challengeName !== "CUSTOM_CHALLENGE") { return event; } if (event.request.session.length === 2) { event.response.publicChallengeParameters = {}; event.response.privateChallengeParameters = {}; event.response.publicChallengeParameters.captchaUrl = "url/123.jpg"; event.response.privateChallengeParameters.answer = "5"; } if (event.request.session.length === 3) { event.response.publicChallengeParameters = {}; event.response.privateChallengeParameters = {}; event.response.publicChallengeParameters.securityQuestion = "Who is your favorite team mascot?"; event.response.privateChallengeParameters.answer = "Peccy"; } return event; }; export { handler };