本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
TOTP 軟體權杖 MFA
當您在使用者集區MFA中設定TOTP軟體權杖時,您的使用者會使用使用者名稱和密碼登入,然後使用 TOTP來完成身分驗證。使用者設定並驗證使用者名稱和密碼後,即可為 啟用TOTP軟體權杖MFA。如果您的應用程式使用 Amazon Cognito 託管 UI 登入使用者,您的使用者會提交使用者名稱和密碼,然後在其他登入頁面上提交TOTP密碼。
您可以在 Amazon Cognito 主控台中TOTPMFA為使用者集區啟用 ,或使用 Amazon Cognito API操作。在使用者集區層級,您可以呼叫 SetUserPoolMfaConfig來設定MFA和啟用 TOTP MFA。
注意
如果您尚未MFA為使用者集區啟用TOTP軟體權杖,Amazon Cognito 無法使用權杖來關聯或驗證使用者。在此情況下,使用者會收到 SoftwareTokenMFANotFoundException
例外狀況和 Software Token MFA has not been enabled by the userPool
描述。如果您稍後停用MFA使用者集區的軟體權杖,先前已關聯並驗證TOTP權杖的使用者可以繼續將其用於 MFA。
TOTP 為使用者設定 是一個多步驟程序,其中您的使用者會收到秘密代碼,並輸入一次性密碼進行驗證。接下來,您可以TOTPMFA為使用者啟用 ,或TOTP設定為使用者的偏好MFA方法。
當您將使用者集區設定為需要 ,TOTPMFA且使用者在託管 UI 中註冊應用程式時,Amazon Cognito 會自動執行使用者程序。Amazon Cognito 會提示您的使用者選擇MFA方法、顯示 QR 碼來設定身分驗證器應用程式,以及驗證其MFA註冊。在您已允許使用者在 SMS 和 TOTP 之間進行選擇的使用者集區中MFA,Amazon Cognito 也會向您的使用者提供選擇的方法。如需託管 UI 註冊體驗的詳細資訊,請參閱 如何註冊新的使用者設定檔。
重要
當您的 AWS WAF Web 與使用者集區ACL相關聯,且 Web 中的規則ACL顯示 時CAPTCHA,可能會導致託管 UI TOTP註冊發生無法復原的錯誤。若要建立具有CAPTCHA動作且不會影響託管 UI 的規則TOTP,請參閱 ACL 為託管 UI 設定您的 AWS WAF Web TOTP MFA。如需有關 AWS WAF Web ACLs和 Amazon Cognito 的詳細資訊,請參閱 將 AWS WAF Web ACL與使用者集區建立關聯。
若要在您使用 Amazon Cognito API的自訂 UI TOTPMFA中實作 ,請參閱 在 Amazon Cognito 使用者集區中MFA為使用者設定 API。
若要MFA新增至使用者集區,請參閱 MFA 新增至使用者集區。
TOTP MFA 考量和限制
-
Amazon Cognito MFA 透過產生TOTP程式碼的身分驗證器應用程式支援軟體權杖。Amazon Cognito 不支援硬體型 MFA。
-
當您的使用者集區TOTP需要尚未設定的使用者時,您的使用者會收到一次性存取權杖,您的應用程式可以用來TOTPMFA為使用者啟用。後續登入嘗試會失敗,直到您的使用者已註冊其他TOTP登入因素為止。
-
使用
SignUp
API操作在使用者集區中或透過託管 UI 註冊的使用者,會在使用者完成註冊時收到一次性權杖。 -
在建立使用者且該使用者設定其初始密碼之後,Amazon Cognito 會從託管的使用者界面將一次性權杖發放給使用者。如果您為使用者設定了永久性密碼,Amazon Cognito 會在使用者首次登入時發放一次性權杖。
-
Amazon Cognito 不會向使用 InitiateAuth或 AdminInitiateAuthAPI操作登入的管理員建立的使用者發出一次性權杖。您的使用者成功設定初始密碼的挑戰後,或如果您為使用者設定永久密碼,Amazon Cognito 會立即挑戰使用者設定 MFA。
-
-
如果 需要的使用者集區中的使用者MFA已收到一次性存取權杖,但尚未設定 TOTP MFA,則使用者必須先設定 ,才能使用託管 UI 登入MFA。您可以將來自
MFA_SETUP
挑戰的session
回應值用於AssociateSoftwareToken請求InitiateAuthAdminInitiateAuth或 ,而不是存取權杖。 -
如果您的使用者已設定 TOTP,即使您稍後TOTP針對使用者集區停用 MFA,他們也可以將其用於 。
-
Amazon Cognito 只接受TOTPs來自使用 HMAC雜SHA1湊函數產生程式碼的身分驗證器應用程式。使用 SHA-256 雜湊產生的程式碼傳回
Code mismatch
錯誤。
在 Amazon Cognito 使用者集區中MFA為使用者設定 API
當使用者第一次登入時,您的應用程式會使用其一次性存取權杖來產生TOTP私有金鑰,並以文字或 QR 碼格式呈現給使用者。您的使用者會設定身分驗證器應用程式,並提供 TOTP以供後續登入嘗試。您的應用程式或託管 UI 會在MFA挑戰回應中TOTP向 Amazon Cognito 顯示 。
關聯TOTP軟體權杖
若要建立TOTP權杖關聯,請將秘密代碼傳送給您的使用者,他們必須使用一次性密碼進行驗證。關聯權杖需要三個步驟。
-
當您的使用者選擇TOTP軟體權杖 時MFA,請呼叫 AssociateSoftwareToken 以傳回使用者帳戶的唯一產生的共用秘密金鑰代碼。您可以使用 AssociateSoftwareToken 存取權杖或工作階段字串進行授權。
-
您的應用程式向使用者顯示私有金鑰或是從私有金鑰產生的 QR 代碼。您的使用者必須將金鑰輸入TOTP產生中的應用程式,例如 Google Authenticator。您可以使用 libqrencode
產生 QR 碼。 -
您的使用者輸入金鑰,或將 QR 代碼掃描至驗證器應用程式 (如 Google Authenticator) 中,然後該應用程式開始產生代碼。
驗證TOTP權杖
接下來,驗證TOTP權杖。向您的使用者請求範例程式碼,並將其提供給 Amazon Cognito 服務,以確認使用者已成功產生TOTP程式碼,如下所示。
-
您的應用程式會提示使用者輸入代碼,以證明其已正確設定驗證器應用程式。
-
使用者的驗證器應用程式會顯示一個臨時密碼。驗證器應用程式的密碼以您給予使用者的私密金鑰為基礎。
-
您的使用者輸入其臨時密碼。您的應用程式會在
VerifySoftwareToken
API請求中將臨時密碼傳遞給 Amazon Cognito。 -
Amazon Cognito 已保留與使用者相關聯的秘密金鑰,並產生 ,TOTP並將其與使用者提供的秘密金鑰進行比較。如果兩者相符,
VerifySoftwareToken
會傳回SUCCESS
回應。 -
Amazon Cognito 會將 TOTP 因素與使用者建立關聯。
-
如果
VerifySoftwareToken
操作傳回ERROR
回應,請確定使用者的時鐘是正確的,而且沒有超過最大重試次數。Amazon Cognito 接受嘗試之前或之後 30 秒內的TOTP權杖,以考慮次要時鐘偏移。當您解決問題時,請再次嘗試 VerifySoftwareToken 操作。
使用 登入 TOTP MFA
此時,您的使用者會使用以時間為基礎的一次性密碼登入。程序如下。
-
您的使用者要輸入其使用者名稱和密碼來登入您的用戶端應用程式。
-
系統會叫用TOTPMFA挑戰,應用程式會提示您的使用者輸入臨時密碼。
-
您的使用者會從關聯的 TOTP產生應用程式中取得臨時密碼。
-
您的使用者在用戶端應用程式中輸入TOTP程式碼。您的應用程式通知 Amazon Cognito 服務加以驗證。每次登入時,RespondToAuthChallenge應呼叫 以取得新TOTP身分驗證挑戰的回應。
-
如果權杖經過 Amazon Cognito 驗證,則登入成功,使用者可以繼續進行身分驗證流程。
移除TOTP權杖
最後,您的應用程式應允許使用者停用其TOTP組態。目前,您無法刪除使用者TOTP的軟體權杖。若要取代使用者的軟體權杖,請關聯並驗證新的軟體權杖。若要TOTPMFA為使用者停用 ,請呼叫 SetUserMFAPreference 來修改您的使用者,以不使用 MFA或僅使用 SMS MFA。
-
在應用程式中為想要重設 的使用者建立介面MFA。在此介面中提示使用者輸入其密碼。
-
如果 Amazon Cognito 傳回TOTPMFA挑戰,請使用 更新使用者的MFA偏好設定SetUserMFAPreference。
-
在應用程式中,與您的使用者溝通他們已停用,MFA並提示他們再次登入。
ACL 為託管 UI 設定您的 AWS WAF Web TOTP MFA
當您的 AWS WAF Web 與使用者集區ACL相關聯,且 Web 中的規則ACL顯示 時CAPTCHA,可能會導致託管 UI TOTP註冊時發生無法復原的錯誤。 AWS WAF CAPTCHA 規則只會以這種方式TOTPMFA影響託管 UI。SMS MFA 不受影響。
當您的CAPTCHA規則不允許使用者完成TOTPMFA設定時,Amazon Cognito 會顯示下列錯誤。
由於 WAF Captcha 不允許請求。
當 AWS WAF 提示CAPTCHA使用者集區在背景中回應 AssociateSoftwareToken和 VerifySoftwareToken API 請求時,就會產生此錯誤。若要建立具有CAPTCHA動作且不會影響託管 UI 的規則TOTP,請在規則中排除 AssociateSoftwareToken
和 VerifySoftwareToken
CAPTCHA的x-amzn-cognito-operation-name
標頭值。
下列螢幕擷取畫面顯示範例 AWS WAF 規則,將CAPTCHA動作套用至所有x-amzn-cognito-operation-name
標頭值不是 AssociateSoftwareToken
或 的請求VerifySoftwareToken
。
如需有關 AWS WAF Web ACLs和 Amazon Cognito 的詳細資訊,請參閱 將 AWS WAF Web ACL與使用者集區建立關聯。