本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立驗證挑戰 Lambda 觸發程序
![挑戰 Lambda 觸發程序](images/lambda-challenges2.png)
- 建立驗證挑戰
-
如果自訂挑戰已指定為 Define Auth Challenge (定義驗證挑戰) 觸發程序的一部分,Amazon Cognito 就會在 Define Auth Challenge (定義驗證挑戰) 之後叫用此觸發程序。它會建立自訂身分驗證流程。
叫用此 Lambda 觸發程序可以建立要向使用者提出的挑戰。此 Lambda 觸發程序的請求包含 challengeName
和 session
。challengeName
是要向使用者提出之下一個挑戰的名稱字串。此屬性的值是設定在「定義驗證挑戰 Lambda 觸發程序」中。
除非所有挑戰都已回答,否則挑戰迴圈會不斷重複。
建立驗證挑戰 Lambda 觸發程序參數
Amazon Cognito 傳遞至此 Lambda 函數的請求,是以下參數和 Amazon Cognito 新增至所有請求的常用參數之組合。
建立驗證挑戰請求參數
- userAttributes
-
代表使用者屬性的一或多組名稱/值。
- userNotFound
-
當您的使用者集區用戶端的
PreventUserExistenceErrors
設定為ENABLED
時,將會填入此布林值。 - challengeName
-
新挑戰的名稱。
- 工作階段
-
工作階段元素是
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 函數的自訂輸入提供的一個或多個鍵值組,該函數是您用於建立驗證挑戰觸發程序所指定。您可以使用 AdminRespondToAuthChallenge 和 RespondToAuthChallenge API 動作中的 ClientMetadata 參數,將此資料傳遞至您的 Lambda 函數。叫用建立身分驗證挑戰函數的請求不包含傳遞至 AdminInitiateAuth 和 InitiateAuth API 操作的 ClientMetadata 參數中的資料。
建立驗證挑戰回應參數
- publicChallengeParameters
-
可讓用戶端應用程式用在要向使用者提出的挑戰中的一或多個鍵值組。此參數應包含所有必要資訊,以準確地向使用者提出挑戰。
- privateChallengeParameters
-
此參數僅供「確認驗證挑戰回應 Lambda 觸發程序」使用。此參數應包含驗證使用者對挑戰的回應時,所有必要的資訊。換言之,
publicChallengeParameters
參數包含向使用者提出的問題,而privateChallengeParameters
包含問題的有效答案。 - challengeMetadata
-
您的自訂挑戰名稱 (如果這是自訂挑戰)。
建立驗證挑戰範例
建立 CAPTCHA 以做為對使用者的挑戰。CAPTCHA 影像的 URL 會以 "captchaUrl
" 新增至公有挑戰參數,而預期的答案會新增至私有挑戰參數。