Amazon Cognito ユーザープールのために TOTP 多要素認証をアクティブ化するにはどうすればよいですか?
アプリのユーザーのために多要素認証 (MFA) をアクティブ化したいと考えています。Amazon Cognito ユーザープールを使用して時間ベースのワンタイムパスワード (TOTP) トークンでこれを行うにはどうすればよいですか?
簡単な説明
アプリユーザーのために TOTP MFA をアクティブ化するには、ユーザープールに TOTP ソフトウェアトークン MFA を設定します。
重要: TOTP トークンを設定する前に、次の点に注意してください。
- TOTP トークンを設定する前に、ユーザープールに MFA を追加する必要があります。
- TOTP トークンは、ユーザーがアプリにログインしようとするまで、または既に認証されていない限り、ユーザーに関連付けることはできません。
- MFA は、ユーザープール内のフェデレーションユーザーをサポートしていません。
AWS コマンドラインインターフェイス (AWS CLI) と Google 認証システムを使用して TOTP MFA を設定する方法の例を次に示します。
解決方法
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生する場合は、最新の AWS CLI バージョンを使用していることを確認してください。
1. AWS CLI から次の AssociateSoftwareToken コマンドを実行して、MFA トークンジェネレーターのセットアップを開始します。
aws cognito-idp associate-software-token --access-token eyJraWQiO........ua5Pq3NaA { "SecretCode": "AETQ6XXMDFYMEPFQQ7FD4HKXXXXAOY3MBXIVRBLRXX3SXLSHHWOA" }
2. Google 認証システムのホームページを開き、[Get started] (使用を開始) を選択します。
3. [Enter a setup key] を選択します。
4. [Account name] に、アカウント名を入力します。例えば、BobPhone。
注: アカウント名は、任意の文字列識別子にすることができます。
5. [Your key] (キー) テキスト入力の場合、ステップ 1 で実行した AssociateSoftwareToken コマンドから生成されたシークレットコードをコピーして貼り付けます。
6. [Type of key] ドロップダウンリストを選択してから、[Time based] をクリックします。
7. 画面に表示される時間ベースのパスワードと次のコードを使用して、ソフトウェアトークンを確認します。
aws cognito-idp verify-software-token --access-token eyJraWQiO........ua5Pq3NaA --user-code 269194 --friendly-device-name BobPhone { "Status": "SUCCESS" }
8. AWS CLI で次のいずれかのコマンドを使用して、ユーザーの MFA 設定を TOTP MFA に設定します。
このコマンドを使用すると、ユーザーは独自の MFA 設定を行えます。
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 Bob --user-pool-id us-east-1_123456789
9. 次のいずれかの方法でユーザーを認証して、セットアップをテストします。
AWS CLI での InitiateAuth または AdminInitiateAuth API コール。
注: いずれかの方法でユーザーを認証するには、ユーザーのパスワード、ユーザー名、およびソフトウェア MFA コードが必要です。
次の例は、AdminInitiateAuth コマンドを使用してユーザー認証をテストする方法を示しています。
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=Bob,PASSWORD=P@ssw0rd
重要: user-pool-id、client-id、username、password などの変数を独自の情報に置き換えてください。また、次を実行して、ユーザープールアプリクライアントの ALLOW_ADMIN_USER_PASSWORD_AUTH フローをアクティブ化してください。
1. Amazon Cognito コンソールを開きます。
2. [Manage User Pools] (ユーザープールの管理) を選択します。
3. アプリクライアントを選択し、[Show details] (詳細を表示) を選択します。
4. [Enable username password auth for admin APIs for authentication (ALLOW_ADMIN_USER_PASSWORD_AUTH)](認証用の管理 API のユーザー名パスワード認証を有効にする (ALLOW_ADMIN_USER_PASSWORD_AUTH)) を選択します。
5. [Save app client changes] (アプリクライアントの変更を保存) を選択します。
詳細については、「管理認証フロー」を参照してください。
admin-initiate-auth コマンドからの出力例
{ "ChallengeName": "SOFTWARE_TOKEN_MFA", "ChallengeParameters": { "FRIENDLY_DEVICE_NAME": "BobPhone", "USER_ID_FOR_SRP": "Bob" }, "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=Bob,SOFTWARE_TOKEN_MFA_CODE=123456 --session Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv
重要: client-id、ユーザー名、および 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": {} }
関連するコンテンツ
- 質問済み 6日前lg...
- 質問済み 9ヶ月前lg...
- 質問済み 5年前lg...
- AWS公式更新しました 1年前
- AWS公式更新しました 2年前
- AWS公式更新しました 2年前