Amazon Cognito ユーザープールで TOTP 多要素認証を有効にする方法を教えてください。

所要時間2分
0

アプリのユーザーに対して多要素認証 (MFA) を有効にするために、Amazon Cognito ユーザープールを使用する時間ベースのワンタイムパスワード (TOTP) トークンを使用したいです。

簡単な説明

アプリユーザーに対し TOTP MFA を有効にするには、ユーザープールで TOTP ソフトウェアトークンの MFA を設定します。

重要: TOTP トークンを設定する前に、次の要件を確認してください。

  • MFA をユーザープールに追加する必要があります。
  • TOTP トークンは、ユーザーがアプリへのログインを試行済みではなく、ユーザーが認証済みではない場合はユーザーに関連付けることはできません。
  • MFA はユーザープール内のフェデレーションユーザーをサポートしていません。

TOTP MFA の設定に、AWS コマンドラインインターフェイス (AWS CLI) および Google Authenticator を使用する方法の例を次に示します。

解決策

注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI でのエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

  1. MFA トークンジェネレーターのセットアップを開始するには、次の AWS CLI コマンド associate-software-token を実行します。

    aws cognito-idp associate-software-token --access-token eyJraWQiO........ua5Pq3NaA
    {
        "SecretCode":
        "AETQ6XXMDFYMEPFQQ7FD4HKXXXXAOY3MBXIVRBLRXX3SXLSHHWOA"
    }
  2. Google Authenticator のホームページを開き、[始める] を選択します。

  3. [セットアップキーを入力] を選択します。

  4. [アカウント名] にアカウント名を入力します。
    注: アカウント名には、任意の文字列識別子を使用できます。

  5. [キー] のテキスト入力には、ステップ 1 で実行した AssociateSoftwareToken コマンドから生成されたシークレットコードをコピーして貼り付けます。

  6. [キーのタイプ] を選択し、[時間ベース] を選択します。

  7. 画面と次のコードに表示される、時間ベースのパスワードを使用するソフトウェアトークンを確認します。

    aws cognito-idp verify-software-token --access-token eyJraWQiO........ua5Pq3NaA --user-code 269194 --friendly-device-name ExampleName
    {
        "Status": "SUCCESS"
    }
  8. ユーザーの MFA 設定を TOTP MFA に設定するには、AWS CLI コマンド set-user-mfa-preference またはadmin-set-user-mfa-preference を実行します。
    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 設定を設定できます。

  9. ユーザープールのアプリクライアントで ALLOW_ADMIN_USER_PASSWORD_AUTH フローを有効にするには、Amazon Cognito コンソールを開きます。

  10. [ユーザープールの管理] を選択します。

  11. アプリクライアントを選択し、[詳細を表示] を選択します。

  12. [認証用に管理 API のユーザー名とパスワード認証を有効にする (ALLOW_ADMIN_USER_PASSWORD_AUTH)] を選択します。

  13. [アプリクライアントの変更を保存] を選択します。

  14. セットアップをテストするには、次のいずれかの方法でユーザーを認証します。
    Amazon Cognito ホステッド UI
    InitiateAuthAdminInitiateAuthRespondToAuthChallenge API コール (AWS CLI 使用)
    注: いずれの方法でも、ユーザーの認証にはユーザーのパスワード、ユーザー名、ソフトウェア 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-idclient-idusernamepassword は、実際の情報に置き換えます。

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-idusernamesoftware_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": {}
}

関連情報

Amazon Cognito ユーザープールによる認証

コメントはありません