我收到多重要素驗證 (MFA) 錯誤,必須在 Amazon Cognito 使用者集區中解決這些錯誤。
簡短描述
為您的 Amazon Cognito 使用者集區設定 MFA 時,可能會遇到多種類型的錯誤。如果您要設定 MFA 的簡訊服務 (SMS) 訊息,請檢閱下列章節: 為 MFA 設定 SMS 和 SMS MFA 錯誤之前。如果您為 MFA 設定以時間為基礎的一次性密碼 (TOTP),請檢閱下列章節: 為 MFA 設定 TOTP 和 TOTP MFA 錯誤之前。
解決方法
為 MFA 設定 SMS 之前
設定 SMS 為 MFA 因素之前,您必須採取額外步驟才能首次傳送 SMS 訊息。如需詳細資訊,請參閱在 Amazon Cognito 使用者集區中首次設定 SMS 訊息。
當您啟用 MFA 並選擇 SMS 作為第二個因素時,Amazon Cognito 可以將 SMS 傳送至未驗證的電話號碼。使用者完成簡訊 MFA 驗證後,Amazon Cognito 會將 phone_number_verified 屬性設定為 ** true**。
SMS MFA 錯誤
InvalidSmsRoleAccessPolicyException
SMS 組態的 AWS Identity and Access Management (IAM) 角色沒有使用 Amazon Simple Notification Service (Amazon SNS) 發佈的權限。
若要解決此錯誤,務必將 sns:Publish 權限附加至 IAM 角色。此外,請確定該服務控制政策 (SCP) 不會封鎖 sns:Publish 動作。
InvalidSmsRoleTrustRelationshipException
當 IAM 角色沒有允許 Amazon Cognito 擔任該角色的有效信任關係時,就會發生此錯誤。當 cognito-idp.amazonaws.com 未受信任,或角色政策中的外部 ID 與使用者集區的 SMS 組態中的內容不符時,就會發生這種情況。
若要解決此錯誤,請確認已正確設定 IAM 角色的信任政策。如需詳細資訊,請參閱在 Amazon Cognito 使用者集區中首次設定 SMS 訊息。
InvalidParameterException
當 Amazon Cognito 遇到無效的參數時,就會發生此錯誤。
若要解決此錯誤,請確保在為 MFA 設定 SMS 時將所有必要的值都傳遞給 SetUserPoolMfaConfig API 的** SmsMfaConfiguration** 參數。
在為 MFA 設定 TOTP 之前
在您的 Amazon Cognito 使用者集區中設定 TOTP 軟體權杖 MFA 時,請先將 MFA 新增至您的使用者集區,然後再設定 TOTP 權杖。
除非使用者已通過驗證,否則在使用者嘗試登入您的應用程式之前,您無法將 TOTP 權杖與使用者建立關聯。
MFA 不支援使用者集區中的聯合身分使用者。
TOTP MFA 錯誤
NotAuthorizedException: 存取權杖沒有必需的範圍
當存取權杖未包含必需的 aws.cognito.signin.user.admin 範圍時,就會發生此錯誤。呼叫 AssociateSoftwareToken API 時,需要 aws.cognito.signin.user.admin 範圍。當使用者使用 InitiateAuth API 登入時,範圍會自動顯示在存取權杖中。但是,當使用者使用 hosted UI 登入時,請確認存取權杖中顯示 aws.cognito.signin.user.admin 範圍。
NotAuthorizedException: 無效的使用者工作階段,工作階段只能使用一次
當使用者使用相同的工作階段超過一次時,就會發生此錯誤。如果使用者在流程中收到此錯誤,則該應用程式必須從頭開始重新啟動流程。如果使用者在呼叫 API 時使用工作階段字串,則該使用者將無法再次使用該工作階段。
NotAuthorizedException: 無效的使用者工作階段,工作階段已過期
當工作階段有效時間到期時,就會發生此錯誤。工作階段有效時間預設為 3 分鐘。若要解決此錯誤,請變更應用程序客戶端的驗證流程工作階段持續時間設定,將工作階段有效時間增加為 15 分鐘。
CodeMismatchException: 無效的代碼或使用者驗證狀態
當使用者的 TOTP 代碼無效,或使用者的狀態與呼叫 API 不相容時,就會發生此錯誤。例如,如果使用者以名為 MFA_SETUP 的認證呼叫 RespondToAuthChallenge API ,但您並未設定 TOTP MFA,就會發生 CodeMismatchException 錯誤。若要解決此錯誤,請確認在設定 MFA 時以正確順序執行 API 呼叫。
當使用者的 TOTP 代碼太舊,而 Amazon Cognito 無法接受時,也會發生此錯誤。若要解決此錯誤,請確認使用者裝置與實際時間同步。
InvalidParameterException: 使用者並未將傳遞組態設定為開啟 SOFTWARE_TOKEN_MFA
當您未設定 TOTP MFA,並呼叫 API 嘗試強制執行 TOTP MFA 時,就會發生此錯誤。若要解決此錯誤,請先為使用者設定 TOTP MFA,然後再為使用 SetUserMFAPreference API 或 AdminSetUserMFAPreference API 的使用者強制執行 TOTP。
NotAuthorizedException: 無效的使用者工作階段
當使用者呼叫 API 並提供非預期的工作階段字串時,就會發生此錯誤。當使用者未以正確順序執行 API 呼叫時,也會發生此錯誤。若要解決此錯誤,請以適當的順序設定 API 呼叫。例如,若要在回應中接收工作階段字串,則使用者需要先呼叫 InitiateAuth API。若要預防錯誤,請確認下一個 API 呼叫是否在其要求參數中使用傳回的工作階段字串。
EnableSoftwareTokenMFAException: 代碼不符
當使用者在 TOTP MFA 設定期間無法提供 Amazon Cognito 預期的 TOTP 代碼時,就會發生此錯誤。若要解決此錯誤,請在 AssociateSoftwareToken API 中找到 Amazon Cognito 提供的私密代碼,並將其儲存在驗證器應用程式中。使用者還須提供驗證器應用程序的最新 TOTP 代碼。
SoftwareTokenMFANotFoundException: 使用者集區尚未啟用軟體權杖 MFA
當您沒有為您的使用者集區啟用 TOTP MFA 時,就會發生此錯誤。若要解決此錯誤,請先設定 TOTP MFA,然後再嘗試在 Amazon Cognito 中強制執行。
相關資訊
將 MFA 新增至使用者集區
簡訊 MFA
在 Amazon Cognito 原生 API 中為使用者設定 MFA