跳至內容

如何對 Amazon Cognito 使用者集區中的 MFA 錯誤訊息進行疑難排解?

3 分的閱讀內容
0

當我在 Amazon Cognito 使用者集區中設定多重要素驗證 (MFA) 時,收到錯誤訊息。

解決方法

SMS MFA 錯誤疑難排解

「InvalidSmsRoleAccessPolicyException」錯誤

當 AWS Identity and Access Management (IAM) 角色沒有使用 Amazon SNS 發佈 SMS 簡訊的權限時,就會發生此錯誤。

若要解決此問題,請完成以下步驟以將 sns:Publish 權限新增至 IAM 角色:

  1. 開啟 Amazon Cognito console (Amazon Cognito 主控台)。
  2. 在導覽窗格中,選擇 User pools (使用者集區)。
  3. 選取您的使用者集區。
  4. 在導覽窗格中,於 Authentication (驗證) 下,選擇 Authentication methods (驗證方法)。
  5. SMS 區段中,記下 IAM 角色 ARN 的名稱。
  6. 開啟 IAM console (IAM 主控台)。
  7. 在導覽窗格中,選擇 Roles (角色)。
  8. 在搜尋列中輸入您的 IAM 角色名稱,然後選取該 IAM 角色。
  9. Permissions policies (權限政策) 區段中,選取附加至 IAM 角色的政策。
  10. Policy details (政策詳細資料) 頁面上,選擇 Edit (編輯) 以新增 sns:publish 權限。
  11. 選擇 Next (下一步)。
  12. 選擇 Save changes (儲存變更)。
  13. 確認服務控制政策 (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 錯誤疑難排解

要求:

**注意:**外部身分提供者 (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 範圍,請完成下列步驟進行新增:

  1. 開啟 Amazon Cognito console (Amazon Cognito 主控台)。
  2. 在導覽窗格中,選擇 User Pools (使用者集區)。
  3. 選取您要修改的使用者集區。
  4. 在導覽窗格中的 Applications (應用程式) 下,選擇 App clients (應用程式用戶端)。
  5. 選取您要修改的應用程式用戶端。
  6. 選擇 Login pages (登入頁面) 索引標籤,然後選擇 Edit (編輯)。
  7. OpenID Connect 範圍下拉式清單中,選擇 aws.cognito.signin.user.admin
  8. 選擇 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。

若要解決此問題,請完成以下步驟:

  1. 為使用者設定 TOTP MFA
  2. 使用 RespondToAuthChallenge API 搭配 MFA_SETUP 查問進行呼叫。
  3. 請確認您的使用者裝置的時間設定與目前時間一致,以產生有效的 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 功能方案時,就會發生此錯誤。只有 EssentialsPlus 方案支援電子郵件 MFA。若要解決此問題,請將您的使用者集區方案切換為 Essentials 或 Plus

相關資訊

將 MFA 新增至使用者集區

SMS 與電子郵件訊息 MFA

AWS 官方已更新 2 個月前