

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

# 認証チャレンジレスポンスの検証の Lambda トリガー
<a name="user-pool-lambda-verify-auth-challenge-response"></a>

認証チャレンジの検証トリガーは、ユーザーが提供したレスポンスを既知のレスポンスと比較する Lambda 関数です。この関数は、ユーザーがチャレンジに正しく応答したかどうかをユーザープールに伝えます。認証チャレンジの検証トリガーが `true` の `answerCorrect` で応答すると、認証シーケンスは続行できます。

![\[チャレンジの Lambda トリガー\]](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/images/lambda-challenges3.png)


**認証チャレンジレスポンスの検証**  
Amazon Cognito は、このトリガーが呼び出して、カスタム認証チャレンジに対するユーザーからのレスポンスが有効であるかどうかを検証します。これはユーザープールの[カスタム認証フロー](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html#amazon-cognito-user-pools-custom-authentication-flow)の一環です。

このトリガーのリクエストには `privateChallengeParameters` および `challengeAnswer` パラメータが含まれます。`privateChallengeParameters` 値は、認証チャレンジの作成の Lambda トリガーによって返され、ユーザーからの期待されるレスポンスが含まれます。`challengeAnswer` パラメータには、チャレンジに対するユーザーのレスポンスが含まれます。

レスポンスには、`answerCorrect` 属性が含まれます。ユーザーがチャレンジを正常に完了すると、Amazon Cognito は属性値を `true` に設定します。ユーザーがチャレンジを正常に完了しなかった場合、Amazon Cognito は値を `false` に設定します。

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

**Topics**
+ [認証チャレンジの検証の Lambda トリガーのパラメータ](#cognito-user-pools-lambda-trigger-syntax-verify-auth-challenge)
+ [認証チャレンジレスポンスの確認の例](#aws-lambda-triggers-verify-auth-challenge-response-example)

## 認証チャレンジの検証の Lambda トリガーのパラメータ
<a name="cognito-user-pools-lambda-trigger-syntax-verify-auth-challenge"></a>

Amazon Cognito がこの Lambda 関数に渡すリクエストは、以下のパラメータと Amazon Cognito がすべてのリクエストに追加する[共通パラメータ](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared)を組み合わせたものです。

------
#### [ JSON ]

```
{
    "request": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "privateChallengeParameters": {
            "string": "string",
            . . .
        },
        "challengeAnswer": "string",
        "clientMetadata": {
            "string": "string",
            . . .
        },
        "userNotFound": boolean
    },
    "response": {
        "answerCorrect": boolean
    }
}
```

------

### 認証チャレンジの検証のリクエストパラメータ
<a name="cognito-user-pools-lambda-trigger-syntax-verify-auth-challenge-request"></a>

**userAttributes**  
このパラメータには、ユーザー属性を表す 1 つ以上の名前-値ペアが含まれます。

**userNotFound**  
Amazon Cognito がユーザープールクライアントの `PreventUserExistenceErrors` を `ENABLED` に設定すると、Amazon Cognito はこのブール値を入力します。

**privateChallengeParameters**  
このパラメータは、認証チャレンジの作成トリガーから取得されます。ユーザーがチャレンジに合格したかどうかを判断するために、Amazon Cognito はパラメータをユーザーの **challengeAnswer** パラメータと比較します。  
このパラメータには、チャレンジに対するユーザーのレスポンスを検証するために必要な情報のすべてが含まれます。その情報には、Amazon Cognito がユーザーに提示する質問 (`publicChallengeParameters`) と、その質問に対する有効な回答 (`privateChallengeParameters`) が含まれます。認証チャレンジレスポンスの検証の Lambda トリガーのみがこのパラメータを使用します。

**challengeAnswer**  
このパラメータ値は、チャレンジに対するユーザーの回答です。

**clientMetadata**  
このパラメータには、認証チャレンジの検証のトリガーの Lambda 関数へのカスタム入力として提供できる 1 つまたは複数のキーバリューペアが含まれています。このデータを Lambda 関数に渡すには、[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) および [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) API オペレーションで ClientMetadata パラメータを使用します。Amazon Cognito は、認証チャレンジの検証関数に渡すリクエストの [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) および [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) API オペレーションの ClientMetadata パラメータからのデータを含めません。

### 認証チャレンジの検証のレスポンスパラメータ
<a name="cognito-user-pools-lambda-trigger-syntax-verify-auth-challenge-response"></a>

**answerCorrect**  
ユーザーがチャレンジを正常に完了した場合、Amazon Cognito はこのパラメータを `true` に設定します。ユーザーがチャレンジを正常に完了しなかった場合、Amazon Cognito はパラメータを `false` に設定します。

## 認証チャレンジレスポンスの確認の例
<a name="aws-lambda-triggers-verify-auth-challenge-response-example"></a>

この認証チャレンジの確認関数は、チャレンジに対するユーザーのレスポンスが、想定されたレスポンスと一致するかどうかを確認します。ユーザーの回答はアプリケーションからの入力によって定義され、推奨される回答は [認証チャレンジの作成トリガーレスポンス](user-pool-lambda-create-auth-challenge.md#aws-lambda-triggers-create-auth-challenge-example)からのレスポンスの `privateChallengeParameters.answer` によって定義されます。正しい回答と与えられた回答は、どちらもこの関数への入力イベントの一部となります。

この例では、ユーザーのレスポンスが想定されたレスポンスと一致した場合、Amazon Cognito は `answerCorrect` パラメータを `true` に設定します。

------
#### [ Node.js ]

```
const handler = async (event) => {
  if (
    event.request.privateChallengeParameters.answer ===
    event.request.challengeAnswer
  ) {
    event.response.answerCorrect = true;
  } else {
    event.response.answerCorrect = false;
  }

  return event;
};

export { handler };
```

------