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の設定は、ユーザーがワンタイムパスワードを入力して検証するシークレットコードを受け取る複数ステップのプロセスです。次に、 をユーザーTOTPMFAに対して有効にするか、 をユーザーに適したMFA方法TOTPとして設定できます。

が要求するようにユーザープールを設定しTOTPMFA、ユーザーがホストされた UI でアプリにサインアップすると、Amazon Cognito はユーザープロセスを自動化します。Amazon Cognito は、ユーザーにMFAメソッドの選択を促し、認証アプリをセットアップするための QR コードを表示し、MFA登録を検証します。ユーザーが SMSと のどちらかを選択できるユーザープールではMFA、Amazon Cognito TOTP はユーザーに対し、選択したメソッドも提示します。ホストされた UI サインアップのエクスペリエンスについて詳しくは、「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。アクセストークンの代わりに、 MFA_SETUP チャレンジから InitiateAuthまたは へのsessionレスポンス値を AssociateSoftwareToken リクエストAdminInitiateAuthで使用できます。

  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ソフトウェアトークンを削除することはできません。ユーザーのソフトウェアトークンを置き換えるには、新しいソフトウェアトークンを関連付けて検証します。ユーザーの TOTPMFAを非アクティブ化するには、 SetUserMFAPreferenceを呼び出して、 を使用しないかMFA、 のみを使用するようにユーザーを変更しますSMSMFA。

  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 のため、リクエストは許可されません。

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

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

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

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