確認驗證挑戰回應 Lambda 觸發程序 - Amazon Cognito

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

確認驗證挑戰回應 Lambda 觸發程序

挑戰 Lambda 觸發程序
確認驗證挑戰回應

Amazon Cognito 會叫用此觸發程序來驗證使用者對自訂驗證挑戰的回應是否有效。這屬於使用者集區自訂身分驗證流程的一部分。

此觸發程序的請求包含 privateChallengeParameterschallengeAnswer 參數。「建立驗證挑戰 Lambda 觸發程序」傳回 privateChallengeParameters 值,其中包含預期的使用者回應。challengeAnswer參數包含使用者對挑戰的回應。

回應包含 answerCorrect 屬性。如果使用者成功完成挑戰,Amazon Cognito 會將屬性值設定為 true。如果使用者未能成功完成挑戰,Amazon Cognito 會將此值設定為 false

除非使用者已回答所有挑戰,否則挑戰迴圈會不斷重複。

確認驗證挑戰 Lambda 觸發程序參數

Amazon Cognito 傳遞至此 Lambda 函數的請求,是以下參數和 Amazon Cognito 新增至所有請求的常用參數之組合。

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

確認驗證挑戰請求參數

userAttributes

此參數包含代表使用者屬性的一或多個名稱/值對。

userNotFound

當 Amazon Cognito 將您的使用者集區用戶端的 PreventUserExistenceErrors 設定為 ENABLED 時,Amazon Cognito 會填入此布林值。

privateChallengeParameters

此參數來自建立身分驗證挑戰觸發程序。為了確定使用者是否已通過挑戰,Amazon Cognito 會將此參數與使用者的 challengeAnswer 進行比較。

此參數包含驗證使用者對挑戰的回應時,所有必要的資訊。此訊息包含亞 Amazon Cognito 向使用者提出的問題 (publicChallengeParameters),以及問題的有效答案 (privateChallengeParameters)。只有「確認身分驗證挑戰回應 Lambda 觸發程序」會使用此參數。

challengeAnswer

此參數值是使用者對挑戰回應的答案。

clientMetadata

此參數包含您可以做為 Lambda 函數的自訂輸入提供的一個或多個鍵值組,該函數是您用於確認身分驗證挑戰觸發程序所指定。若要將此資料傳遞至您的 Lambda 函數,您可以使用 AdminRespondToAuthChallengeRespondToAuthChallenge API 操作中的 ClientMetadata 參數。Amazon Cognito 不包含其傳遞至確認身分驗證挑戰函數之請求中的 AdminInitiateAuthInitiateAuth API 操作中的 ClientMetadata 參數的資料。

確認驗證挑戰回應參數

answerCorrect

如果使用者成功完成挑戰,Amazon Cognito 會將此參數設定為 true。如果使用者未能成功完成挑戰,Amazon Cognito 會將此參數設定為 false

確認驗證挑戰回應範例

在這個範例中,Lambda 函數會檢查使用者對挑戰的回應是否符合預期的回應。如果使用者的回應符合預期的回應,則 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 };