Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何為 Amazon Cognito 使用者集區啟用 TOTP 多重要素驗證?
我想為我的應用程式使用者啟用多重要素驗證 (MFA)。我想使用 Amazon Cognito 使用者集區,透過以時間為基礎的一次性密碼 (TOTP) 權杖來執行該操作。
簡短描述
若要為應用程式使用者啟用 TOTP MFA,請為使用者集區設定 TOTP 軟體權杖 MFA。
重要: 在設定 TOTP 權杖之前,請檢閱以下需求:
- 您必須將 MFA 新增至您的使用者集區。
- TOTP 權杖只有在使用者嘗試登入應用程式或已經通過驗證後,才能與使用者建立關聯。
- MFA 不支援使用者集區中的聯合身分使用者。
以下是如何使用 AWS Command Line Interface (AWS CLI) 和 Google Authenticator 設定 TOTP MFA 的範例。
解決方法
注意: 如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
-
若要啟動 MFA 權杖產生器設定,請執行下列 associate-software-token AWS CLI 命令:
aws cognito-idp associate-software-token --access-token eyJraWQiO........ua5Pq3NaA { "SecretCode": "AETQ6XXMDFYMEPFQQ7FD4HKXXXXAOY3MBXIVRBLRXX3SXLSHHWOA" } -
開啟 Google Authenticator 首頁,然後選擇 Get started (開始使用)。
-
選擇 Enter a setup key (輸入設定金鑰)。
-
請在 Account name (帳戶名稱),輸入帳戶名稱。
注意: 帳戶名稱可以是任何字串識別碼。 -
對於 Your key (您的金鑰) 文字輸入,請複製並貼上從您在步驟 1 中執行的 AssociateSoftwareToken 命令產生的秘密代碼。
-
選擇 Type of key (金鑰類型),然後選取 Time based (時間型)。
-
確認使用螢幕中顯示的時間型密碼軟體權杖和下列程式碼:
aws cognito-idp verify-software-token --access-token eyJraWQiO........ua5Pq3NaA --user-code 269194 --friendly-device-name ExampleName { "Status": "SUCCESS" } -
若要將使用者的 MFA 組態設定為 TOTP MFA,請執行 set-user-mfa-preference 或 admin-set-user-mfa-preference AWS CLI 命令:
set-user-mfa-preference 命令範例aws cognito-idp set-user-mfa-preference --software-token-mfa-settings Enabled=true,PreferredMfa=true --access-token eyJraWQiO........ua5Pq3NaA注意: 此命令可讓使用者設定自己的 MFA 組態。
admin-set-user-mfa-preference 命令範例aws cognito-idp admin-set-user-mfa-preference --software-token-mfa-settings Enabled=true,PreferredMfa=true --username ExampleName --user-pool-id us-east-1_123456789注意: 此命令可讓管理員設定使用者的 MFA 組態。
-
若要為使用者集區應用程式用戶端啟動 ALLOW_ADMIN_USER_PASSWORD_AUTH 流程,請開啟 Amazon Cognito 主控台。
-
選擇 Manage User Pools (管理使用者集區)。
-
選擇應用程式用戶端,然後選取 Show details (顯示詳細資訊)。
-
選擇 Enable username password auth for admin APIs for authentication (ALLOW_ADMIN_USER_PASSWORD_AUTH) (為管理員 API 啟用使用者名稱密碼驗證以進行驗證 (ALLOW_ADMIN_USER_PASSWORD_AUTH))。
-
選擇 Save app client changes (儲存應用程式用戶端變更)。
-
若要測試您的設定,請使用下列其中一種方法驗證使用者:
Amazon Cognito 託管 UI。
AWS CLI 中的 InitiateAuth、AdminInitiateAuth 或 RespondToAuthChallenge API 呼叫。
注意: 若要使用任一方法驗證使用者,您必須具有使用者的密碼、使用者名稱和軟體 MFA 代碼。
admin-initiate-auth 命令範例
aws cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id 3n4b5urk1ft4fl3mg5e62d9ado --auth-flow ADMIN_USER_PASSWORD_AUTH --auth-parameters USERNAME=ExampleName,PASSWORD=P@ssw0rd
注意: 使用您的資訊取代以下變數:user-pool-id、client-id、username 和 password。
admin-initiate-auth 命令的輸出範例
{ "ChallengeName": "SOFTWARE_TOKEN_MFA", "ChallengeParameters": { "FRIENDLY_DEVICE_NAME": "ExampleDevice", "USER_ID_FOR_SRP": "ExampleName" }, "Session": "Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv" }
admin-respond-to-auth-challenge 命令範例
aws cognito-idp admin-respond-to-auth-challenge --user-pool-id us-east-1_123456789 --client-id 3n4b5urk1ft4fl3mg5e62d9ado --challenge-name SOFTWARE_TOKEN_MFA --challenge-responses USERNAME=ExampleName,SOFTWARE_TOKEN_MFA_CODE=123456 --session Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv
注意: 使用您的資訊取代以下變數:client-id、username 和 software_token_MFA_Code。
admin-respond-to-auth-challenge 命令的輸出範例
{ "AuthenticationResult": { "ExpiresIn": 3600, "RefreshToken": "eyJjdHkiOiJKV1QiLCJlbmMi.......dlbjrtyizlLzZZ5fjjCgL__AVHEzYycjJs_h3i-ly_KixDNtz9VEC", "TokenType": "Bearer", "NewDeviceMetadata": { "DeviceKey": "us-east-1_28abrd7-10f7-9fc6-a931-3ede1c8ckd75", "DeviceGroupKey": "-Gqkj3brS" }, "IdToken": "eyJraWQiOiIzcFFSV29Pb........mNMbE_vvPkQYBuA9ackoER1aSABFGaKK4BpgPjMn7la_A", "AccessToken": "eyJraWQiOi...........qwvQq4awt63TyWw" }, "ChallengeParameters": {} }
相關資訊
- 語言
- 中文 (繁體)

相關內容
- 已提問 4 個月前
- 已提問 3 年前
AWS 官方已更新 5 個月前
