如何對 Amazon Cognito 使用者集區中的 MFA 錯誤訊息進行疑難排解?
當我在 Amazon Cognito 使用者集區中設定多重要素驗證 (MFA) 時,收到錯誤訊息。
解決方法
SMS MFA 錯誤疑難排解
「InvalidSmsRoleAccessPolicyException」錯誤
當 AWS Identity and Access Management (IAM) 角色沒有使用 Amazon SNS 發佈 SMS 簡訊的權限時,就會發生此錯誤。
若要解決此問題,請完成以下步驟以將 sns:Publish 權限新增至 IAM 角色:
- 開啟 Amazon Cognito console (Amazon Cognito 主控台)。
- 在導覽窗格中,選擇 User pools (使用者集區)。
- 選取您的使用者集區。
- 在導覽窗格中,於 Authentication (驗證) 下,選擇 Authentication methods (驗證方法)。
- 在 SMS 區段中,記下 IAM 角色 ARN 的名稱。
- 開啟 IAM console (IAM 主控台)。
- 在導覽窗格中,選擇 Roles (角色)。
- 在搜尋列中輸入您的 IAM 角色名稱,然後選取該 IAM 角色。
- 在 Permissions policies (權限政策) 區段中,選取附加至 IAM 角色的政策。
- 在 Policy details (政策詳細資料) 頁面上,選擇 Edit (編輯) 以新增 sns:publish 權限。
- 選擇 Next (下一步)。
- 選擇 Save changes (儲存變更)。
- 確認服務控制政策 (SCP) 未封鎖 sns:Publish 動作。
「InvalidSmsRoleTrustRelationshipException」錯誤
當 IAM 角色沒有允許 Amazon Cognito 擔任角色的信任關係時,就會發生此錯誤。這通常是因為 cognito-idp.amazonaws.com 不在信任清單中,或角色信任政策中的外部 ID 與使用者集區的 SMS 組態不符。
若要解決此問題,請正確設定 IAM 角色的信任政策。如需操作說明,請參閱準備可供 Amazon Cognito 使用的 IAM 角色,以透過 AWS 終端用戶訊息 SMS 服務傳送 SMS 訊息。
「InvalidParameterException」錯誤
當 API 請求向 Amazon Cognito 傳送無效參數時,就會發生此錯誤。若要解決此問題,請在 SetUserPoolMfaConfig API 的 SmsMfaConfiguration 參數中指定所有必要值。
TOTP MFA 錯誤疑難排解
要求:
- 在設定以時間為基礎的一次性密碼 (TOTP) 軟體權杖之前,請先將 MFA 新增至您的使用者集區。
- 如果 Amazon Cognito 未驗證您的使用者,則使用者必須先嘗試登入您的應用程式,然後您才能將 TOTP 權杖與他們建立關聯。
**注意:**外部身分提供者 (IdP) 會為聯合身分使用者管理 MFA。Amazon Cognito 不會在使用者聯合登入期間提示 MFA。
「NotAuthorizedException: Access token does not have required scopes」錯誤
當存取權杖不包含呼叫 AssociateSoftwareToken API 所需的 aws.cognito.signin.user.admin 範圍時,就會發生此錯誤。當使用者使用 InitiateAuth API 登入時,InitiateAuth API 會自動在存取權杖中包含此範圍。
然而,當使用者使用受控登入頁面登入時,請確認存取權杖包含 aws.cognito.signin.user.admin 範圍。若要檢查權杖是否包含 aws.cognito.signin.user.admin 範圍,請使用 Base64 解碼存取權杖的承載內容。如需詳細資訊,請參閱確認 JWT 結構。
如果權杖未包含 aws.cognito.signin.user.admin 範圍,請完成下列步驟進行新增:
- 開啟 Amazon Cognito console (Amazon Cognito 主控台)。
- 在導覽窗格中,選擇 User Pools (使用者集區)。
- 選取您要修改的使用者集區。
- 在導覽窗格中的 Applications (應用程式) 下,選擇 App clients (應用程式用戶端)。
- 選取您要修改的應用程式用戶端。
- 選擇 Login pages (登入頁面) 索引標籤,然後選擇 Edit (編輯)。
- 在 OpenID Connect 範圍下拉式清單中,選擇 aws.cognito.signin.user.admin。
- 選擇 Save changes (儲存變更)。
「NotAuthorizedException: Invalid session for the user, session can only be used once」錯誤
當使用者嘗試重複使用工作階段時,就會發生此錯誤。如果使用者在使用 TOTP MFA 的驗證流程過程中收到此錯誤,則必須從頭開始重新啟動驗證程序。若要重新啟動驗證,請使用 InitiateAuth API 或 AdminInitiateAuth API。
「NotAuthorizedException: Invalid session for the user, session is expired」錯誤
當工作階段過期時,就會發生此錯誤。預設情況下,工作階段會在 3 分鐘後過期。
若要解決此問題,請在您的應用程式用戶端中增加驗證工作階段流程持續時間。您可以將持續時間延長至最多 15 分鐘。
「CodeMismatchException: Invalid code or auth state for the user」錯誤
當使用者的 TOTP 代碼無效、使用者狀態不支援該 API 呼叫或 TOTP 代碼過期時,就會發生此錯誤。例如,使用者以 MFA_SETUP 查問呼叫 RespondToAuthChallenge API,但未設定 TOTP MFA。
若要解決此問題,請完成以下步驟:
- 為使用者設定 TOTP MFA。
- 使用 RespondToAuthChallenge API 搭配 MFA_SETUP 查問進行呼叫。
- 請確認您的使用者裝置的時間設定與目前時間一致,以產生有效的 TOTP 代碼。
「InvalidParameterException: User does not have delivery config set to turn on SOFTWARE_TOKEN_MFA」錯誤
當您未為使用者設定 TOTP MFA 時,就會發生此錯誤。若要解決此問題,請在呼叫 SetUserMFAPreference API 或 AdminSetUserMFAPreference API 之前,先設定 TOTP MFA。
「SoftwareTokenMFANotFoundException: Software Token MFA has not been enabled by the userPool」錯誤
當您的使用者集區中未設定 TOTP MFA 時,就會發生此錯誤。若要解決此錯誤,請設定 TOTP MFA。
「NotAuthorizedException: Invalid session for the use」錯誤
發生此錯誤的原因如下:
- API 呼叫中包含錯誤的工作階段字串。
- API 呼叫順序不正確。
若要解決此問題,請依正確順序設定 API 呼叫。例如,若要在回應中接收工作階段字串,請先呼叫 InitiateAuth API。若要避免問題,請確認下一個 API 呼叫在其請求參數中使用回傳的工作階段字串。
「EnableSoftwareTokenMFAException: Code mismatch」錯誤
當使用者提交的 TOTP 代碼與 Amazon Cognito 在設定 TOTP MFA 期間所預期的不符時,就會發生此錯誤。
若要解決此問題,請執行下列動作:
- 從 AssociateSoftwareToken API 擷取密碼代碼。
- 將密碼代碼儲存在驗證器應用程式中。
- 提交最新的 TOTP 代碼。
- 使用從 AssociateSoftwareToken API 擷取的密碼代碼產生 QR 代碼。然後,使用以下程式碼範例在驗證器應用程式中進行設定。
從密碼代碼產生 QR 代碼的 Python 程式碼範例:
import pyotp from qrcode.main import QRCode secret_key = "secret-key-retrieved-from-associate-software-token-api" totp = pyotp.TOTP(secret_key) provisioning_uri = totp.provisioning_uri() qr = QRCode() qr.add_data(provisioning_uri) qr.make() qr.print_ascii()
電子郵件 MFA 錯誤疑難排解
在您將電子郵件設定為 MFA 因素之前,必須先在使用者集區中設定 Amazon Simple Email Service (Amazon SES),以將電子郵件訊息傳送給使用者。
啟用 MFA 並選擇電子郵件作為第二個驗證因素後,Amazon Cognito 會將電子郵件訊息傳送至未驗證的電子郵件地址。在使用者完成電子郵件訊息 MFA 驗證後,Amazon Cognito 會將 email_verified 屬性設定為 true。
「InvalidParameterException: Cannot set EmailMfaConfiguration when user pool EmailConfiguration contains an EmailSendingAccount of COGNITO_DEFAULT」錯誤
當您使用預設電子郵件組態時,就會發生此錯誤。若要解決此問題,請為您的使用者集區設定 Amazon SES 電子郵件設定。
「InvalidParameterException: Cannot set EmailMfaConfiguration when user pool AccountRecoverySetting is not set or contains only verified_email in RecoveryMechanisms」錯誤
當您只使用電子郵件作為使用者帳戶復原方法時,就會發生此錯誤。您無法在 MFA 與帳戶復原中使用相同的因素。若要解決此問題,請選擇電子郵件以外的其他帳戶復原方法。如需操作指引,請參閱設定密碼重設與復原。
「FeatureUnavailableInTierException」錯誤
當您的使用者集區使用 Lite 功能方案時,就會發生此錯誤。只有 Essentials 與 Plus 方案支援電子郵件 MFA。若要解決此問題,請將您的使用者集區方案切換為 Essentials 或 Plus。
相關資訊
- 語言
- 中文 (繁體)

相關內容
- 已提問 1 年前
- 已提問 2 年前
AWS 官方已更新 2 個月前