TOTP ソフトウェアトークン MFA - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

TOTP ソフトウェアトークン MFA

ユーザープールMFAにTOTPソフトウェアトークンを設定すると、ユーザーはユーザー名とパスワードでサインインし、 を使用して認証TOTPを完了します。ユーザーがユーザー名とパスワードを設定して検証すると、 のTOTPソフトウェアトークンをアクティブ化できますMFA。アプリが Amazon Cognito ホスト UI を使用してユーザーをサインインする場合、ユーザーはユーザー名とパスワードを送信し、追加のサインインページでTOTPパスワードを送信します。

Amazon Cognito コンソールでユーザープールTOTPMFAの をアクティブ化することも、Amazon Cognito APIオペレーションを使用することもできます。ユーザープールレベルでは、 を呼び出しSetUserPoolMfaConfigて TOTP を設定MFAおよび有効化できますMFA。

注記

ユーザープールMFAのTOTPソフトウェアトークンをアクティブ化していない場合、Amazon Cognito はトークンを使用してユーザーを関連付けたり検証したりすることはできません。この場合、ユーザーはSoftwareTokenMFANotFoundException説明による例外Software Token MFA has not been enabled by the userPoolを受診します。後でユーザープールMFAのソフトウェアトークンを非アクティブ化した場合、トークンを以前に関連付けて検証したユーザーは、TOTP引き続き に使用できますMFA。

ユーザーTOTP用に を設定することは、ユーザーが 1 回限りのパスワードを入力して検証するシークレットコードを受信するマルチステッププロセスです。次に、 をユーザーTOTPMFAに対して有効にするか、ユーザーにとって優先的なMFA方法TOTPとして を設定できます。

ユーザープールを が要求するように設定TOTPMFAし、ユーザーがホストされた UI でアプリにサインアップすると、Amazon Cognito はユーザープロセスを自動化します。Amazon Cognito は、ユーザーにMFAメソッドを選択するように促し、認証アプリを設定するための QR コードを表示し、MFA登録を検証します。ユーザーが SMSと の間で選択することを許可したユーザープールではTOTPMFA、Amazon Cognito はユーザーにも方法の選択を提示します。ホストされた UI サインアップのエクスペリエンスについて詳しくは、「新しいユーザープロファイルにサインアップする方法」を参照してください。

重要

ユーザープールACLに関連付けられた AWS WAF ウェブがあり、ウェブ内のルールに ACLが表示されるとCAPTCHA、ホストされた UI TOTP登録で回復不可能なエラーが発生する可能性があります。CAPTCHA アクションがあり、ホストされた UI に影響を与えないルールを作成するにはTOTP、「」を参照してくださいホストされた UI ACL用の AWS WAF ウェブの設定 TOTP MFA。 AWS WAF ウェブACLsと Amazon Cognito の詳細については、「」を参照してくださいAWS WAF ウェブとユーザープールACLの関連付け

Amazon Cognito APIを使用するカスタム UI TOTPMFAに を実装するには、「」を参照してくださいAmazon Cognito ユーザープールのユーザーMFAに対する の設定 API

ユーザープールMFAに追加するには、「」を参照してくださいユーザープールMFAへの の追加

TOTP MFA 考慮事項と制限事項

  1. Amazon Cognito は、TOTPコードを生成する認証アプリMFAを介してソフトウェアトークンをサポートします。Amazon Cognito はハードウェアベースの をサポートしていませんMFA。

  2. ユーザープールを設定していないTOTPユーザーに が必要な場合、ユーザーは 1 回限りのアクセストークンを受け取ります。このトークンは、アプリがTOTPMFAユーザーのアクティブ化に使用できます。それ以降のサインイン試行は、ユーザーが追加のTOTPサインイン要素を登録するまで失敗します。

    • SignUp API オペレーションまたはホストされた UI を使用してユーザープールにサインアップするユーザーは、ユーザーがサインアップを完了すると 1 回限りのトークンを受け取ります。

    • ユーザーを作成し、ユーザーが初期パスワードを設定すると、Amazon Cognito はホストされた UI からユーザーに 1 回限りのトークンを発行します。ユーザーに永続的なパスワードを設定すると、ユーザーが最初にサインインしたときに Amazon Cognito が 1 回限りのトークンを発行します。

    • Amazon Cognito は、 InitiateAuthまたは AdminInitiateAuthAPIオペレーションでサインインする管理者作成ユーザーに 1 回限りのトークンを発行しません。ユーザーが最初のパスワードを設定するチャレンジに成功した後、またはユーザーの永続的なパスワードを設定すると、Amazon Cognito はすぐにユーザーに の設定をチャレンジしますMFA。

  3. を必要とするユーザープールのユーザーが 1 回限りのアクセストークンをMFA既に受け取っていてもTOTP、 をセットアップしていない場合MFA、ユーザーは をセットアップするまでホストされた UI でサインインできませんMFA。アクセストークンの代わりに、 AssociateSoftwareToken または リクエストInitiateAuthAdminInitiateAuthへのMFA_SETUPチャレンジからのsessionレスポンス値を使用できます。

  4. ユーザーが を設定している場合TOTP、後でユーザープールで非アクティブ化した場合でもMFA、 TOTPで使用できます。

  5. Amazon Cognito は、 HMAC-SHA1 ハッシュ関数でコードを生成する認証アプリTOTPsからのみ受け入れます。SHA-256 ハッシュで生成されたコードはCode mismatchエラーを返します。

Amazon Cognito ユーザープールのユーザーMFAに対する の設定 API

ユーザーが初めてサインインすると、アプリはワンタイムアクセストークンを使用してTOTPプライベートキーを生成し、テキストまたは QR コード形式でユーザーに提示します。ユーザーは認証アプリを設定し、その後のサインイン試行TOTPのために を提供します。アプリケーションまたはホストされた UI は、MFAチャレンジレスポンスで TOTPを Amazon Cognito に提示します。

TOTP ソフトウェアトークンを関連付ける

TOTP トークンを関連付けるには、ワンタイムパスワードで検証する必要があるシークレットコードをユーザーに送信します。トークンの関連付けには 3 つのステップが必要です。

  1. ユーザーがTOTPソフトウェアトークン を選択したらMFA、 AssociateSoftwareTokenを呼び出して、ユーザーアカウント用に一意に生成された共有シークレットキーコードを返します。アクセストークンまたはセッション文字列 AssociateSoftwareToken を使用して を承認できます。

  2. アプリは、プライベートキーまたはプライベートキーから生成した QR コードをユーザーに提示します。ユーザーは、Google Authenticator などの TOTP生成アプリに キーを入力する必要があります。libqrencode を使用して、QR コードを生成できます。

  3. ユーザーがキーを入力するか、Google Authenticator などの認証システムアプリケーションに QR コードをスキャンすると、アプリがコードの生成を開始します。

TOTP トークンを検証する

次に、TOTPトークンを検証します。ユーザーからサンプルコードをリクエストし、Amazon Cognito サービスに提供して、ユーザーがTOTP次のようにコードを生成していることを確認します。

  1. アプリは、ユーザーが認証システムアプリケーションを適切に設定したことを示すコードの入力をユーザーに促します。

  2. ユーザーの認証システムアプリケーションは、一時的なパスワードを表示します。認証システムアプリケーションは、ユーザーに与えたシークレットキーに基づいてパスワードを作成します。

  3. ユーザーは一時パスワードを入力します。アプリケーションはVerifySoftwareTokenAPIリクエストで一時的なパスワードを Amazon Cognito に渡します。

  4. Amazon Cognito は、ユーザーに関連付けられたシークレットキーを保持し、 を生成TOTPして、ユーザーが提供したシークレットキーと比較します。一致した場合は、VerifySoftwareTokenSUCCESS レスポンスを返します。

  5. Amazon Cognito はTOTP要素をユーザーに関連付けられます。

  6. VerifySoftwareToken オペレーションが ERROR レスポンスを返した場合は、ユーザーのクロックが正しいこと、およびリトライの最大回数を超えていないことを確認します。Amazon Cognito は、試行前または試行後 30 秒以内のTOTPトークンを受け入れ、小さなクロックスキューを考慮します。問題を解決したら、 VerifySoftwareToken オペレーションを再試行してください。

でサインインする TOTP MFA

この時点で、ユーザーは時間ベースのワンタイムパスワードを使用したサインインを行います。以下はその手順です。

  1. ユーザーはユーザー名とパスワードを入力してクライアントアプリにサインインします。

  2. TOTP MFA チャレンジが呼び出され、ユーザーはアプリから一時的なパスワードを入力するよう求められます。

  3. ユーザーは、関連付けられたTOTP生成アプリケーションから一時パスワードを取得します。

  4. ユーザーがクライアントアプリケーションにTOTPコードを入力します。アプリは、コードを検証するよう Amazon Cognito サービスに通知します。サインインごとに を呼び出して、新しいTOTP認証チャレンジに対する応答を取得RespondToAuthChallengeする必要があります。

  5. Amazon Cognito によってトークンが検証されると、サインインが成功し、ユーザーは認証フローを続行します。

TOTP トークンを削除する

最後に、アプリはユーザーがTOTP設定を非アクティブ化することを許可する必要があります。現在、ユーザーのTOTPソフトウェアトークンを削除することはできません。ユーザーのソフトウェアトークンを置き換えるには、新しいソフトウェアトークンを関連付けて検証します。ユーザーの TOTP MFA を非アクティブ化するには、 SetUserMFAPreference を呼び出してユーザーを変更し、 を使用しないかMFA、 SMS のみを使用しますMFA。

  1. をリセットするユーザーのインターフェイスをアプリに作成しますMFA。このインターフェイスでユーザーにパスワードの入力を求めます。

  2. Amazon Cognito がTOTPMFAチャレンジを返した場合は、 を使用してユーザーのMFAプリファレンスを更新しますSetUserMFAPreference

  3. アプリで、ユーザーが非アクティブ化したことをユーザーに伝えMFA、再度サインインするように促します。

ホストされた UI ACL用の AWS WAF ウェブの設定 TOTP MFA

ユーザープールACLに関連付けられた AWS WAF ウェブがあり、ウェブ内のルールに ACLが表示されるとCAPTCHA、ホストされた UI TOTP登録で回復不可能なエラーが発生する可能性があります。 AWS WAF CAPTCHAルールは、この方法でホストされた UI でのみ に影響TOTPMFAします。SMS MFA は影響を受けません。

Amazon Cognito は、CAPTCHAルールでユーザーがTOTPMFAセットアップを完了できない場合に、次のエラーを表示します。

WAFキャプチャのため、リクエストは許可されません。

このエラーは、 CAPTCHAが に応答して AWS WAF をプロンプトAssociateSoftwareTokenし、ユーザープールがバックグラウンドで をVerifySoftwareTokenAPIリクエストする場合に発生します。CAPTCHA アクションがあり、ホストされた UI に影響を与えないルールを作成するにはTOTP、ルールの AssociateSoftwareTokenおよび のx-amzn-cognito-operation-nameヘッダー値を CAPTCHA アクションVerifySoftwareTokenから除外します。

次のスクリーンショットは、 AssociateSoftwareTokenまたは のx-amzn-cognito-operation-nameヘッダー値を持たないすべてのリクエストにCAPTCHAアクションを適用する AWS WAF ルールの例を示していますVerifySoftwareToken

x-amzn-cognito-operation-name ヘッダー値が AssociateSoftwareTokenまたは でないすべてのリクエストにCAPTCHAアクションを適用する AWS WAF ルールのスクリーンショットVerifySoftwareToken。

AWS WAF ウェブACLsと Amazon Cognito の詳細については、「」を参照してくださいAWS WAF ウェブとユーザープールACLの関連付け