メインコンテンツへスキップ
これらのカスタマイズはDuoには適用されません。Duoには独自のユーザーインターフェイスがあります。
Auth0 ダッシュボードのユニバーサル ログイン設定セクションでユニバーサル ログインのブランド オプションを調整することで、ユーザーに表示される ページをカスタマイズできます。 ユニバーサル ログイン エクスペリエンスを使用している場合は、フローのカスタマイズ オプションを使用してページをカスタマイズできます。 また、HTMLコンテンツの全体をカスタマイズして、組織に固有なユーザーエクスペリエンス要件を反映させることもできます。詳細については、「MFAウィジェットテーマオプション」をご覧ください。 ユニバーサル ログイン エクスペリエンスにより、MFA がユーザーにとってさらにシンプルに提供されます。ユーザーがログイン画面に資格情報を入力すると、MFA画面が表示されます。MFA要素を登録していない場合は登録が要求され、登録済みの場合はMFA資格情報の提示が要求されます。

MFA APIを使用する

Auth0は、次のシナリオでMFA APIを提供します。 MFA APIを使用するには、アプリケーションに対してMFAの付与タイプを有効にしなければなりません。でMFA付与を有効にするには、以下を行います。
  1. [Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動して、アプリケーションを選択します。
  2. **[Settings(設定)]タブの下部にある[Advanced Settings(詳細設定)]**をクリックします。
  3. **[Grant Types(付与タイプ)]**タブをクリックし、MFA を選択します。
    Dashboard Applications Applications Advanced Settings Grant Types tab
    詳細については、「多要素認証(MFA)を有効にする」をお読みください。
  4. **[Save Changes(変更を保存)]**をクリックします。

制限事項

MFA APIは、SMS、Guardianアプリケーションのプッシュ通知、メール、OTP要素と連動するように設計されています。Duoでの登録には対応していません。

Actionsを使ってMFAポリシーをカスタマイズする

Actionsを使ってテナント向けのMFAポリシーをカスタマイズし、特定のアプリケーションのユーザーや、特定のユーザーメタデータまたはIPアドレス範囲を持つユーザーなどを対象にMFAを要求することができます。 アクションの作成に慣れていない場合は、「最初のアクションの作成」をお読みください。
Actionsで定義したMFA関連の動作は、ダッシュボードの**[Multi-factor Auth(多要素認証)]セクションで構成した[Define policy(ポリシーを定義)]**設定に優先します。詳細については、「多要素認証(MFA)を有効にする」をお読みください。
アクションを作成するときに、プロバイダー設定を使用して、MFAの強制の有無および使用する要素を指定できます。動作は、クラシック ログイン エクスペリエンスを使用するか、ユニバーサル ログイン エクスペリエンスを使用するかによって異なります。
プロバイダークラシックログインエクスペリエンスユニバーサルログインエクスペリエンス
guardianプッシュ、SMS、またはOTPPush、SMS、音声、OTP、メール、またはWebAuthnセキュリティキー(有効な場合)
guardianプッシュ、SMS、またはOTPプッシュ、SMS、OTP、またはメール
google-authenticatorGoogle Authenticatorプッシュ、SMS、OTP、またはメール
duoDuoDuo
ユニバーサル ログインを使用している場合は、MFA ログイン ページのカスタマイズを有効にすると、クラシック ログイン エクスペリエンスの動作を実現できます。
guardiangoogle-authenticatorのオプションは、下位互換性を確保する目的で維持されているレガシー設定であるため、今後は使用しないでください。代わりにanyを使用することをお勧めします。google-authenticatorオプションは、ユーザーに対し、復旧コードの登録を許可しません。
プロバイダーを特定のオプションに手動で設定すると、ダッシュボードの有効/無効の切り替えが上書きされます。Dashboardで他の要素が有効になっているのに、ユーザーにDuoでの登録を要求するには、次のようなActionを使用します。
exports.onExecutePostLogin = async (event, api) => {
    // Forcing the provider to Duo programmatically
    api.multifactor.enable('duo')
}

一般的なユースケースの例

ここでは、Actionsで処理できる一般的なMFAシナリオをいくつかご紹介します。
アクションで明示的に要求したときのみMFAがトリガーされるようにするには、テナントのデフォルトのMFAポリシーを**[Never(使用しない)]**に設定します。詳細については、「多要素認証の要素」にある「ポリシー」セクションをお読みください。

特定のアプリケーションにMFAを要求する

MFAをカスタマイズして、ユーザーが特定のアプリケーションにログインするときのみトリガーされるようにします。
exports.onExecutePostLogin = async (event, api) => {
	const CLIENTS_WITH_MFA = [
		'{yourClientId1}', 
		'{yourClientId2}',
		'{yourClientId3}'
	];

	if (CLIENTS_WITH_MFA.includes(event.client.client_id)) {
		api.multifactor.enable('duo', { allowRememberBrowser: false })
	}
}

特定のユーザーにMFAを要求する

MFAをカスタマイズして、MFAを使用するようマークされたユーザーに対してのみ、トリガーされるようにします。
exports.onExecutePostLogin = async (event, api) => {
  if (event.user.user_metadata && event.user.user_metadata.use_mfa) {
    api.multifactor.enable('duo', { allowRememberBrowser: false });
  }
}

MFAプロンプトの頻度を変更する

状況によっては、同じブラウザーを使ってログインしているユーザーに対し、毎回MFAを求めるプロンプトを表示したくないことがあります。allowRememberBrowser プロパティを使用してこの動作を変更できます:
exports.onExecutePostLogin = async (event, api) => {  
  api.multifactor.enable('any', { allowRememberBrowser: false });
}
プロパティの値に応じて、以下のような動作になります。
説明
trueプロバイダーがgoogle-authenticatorまたはduoに設定されている場合、ユーザーは30日ごとにMFAを求められます。プロバイダーがguardianに設定されている場合、MFAプロンプトにはユーザーが登録するかどうかを選択するための登録チェックボックスが表示されます。デフォルトはfalseです。詳細については、「多要素認証ページをカスタマイズする」をお読みください
falseユーザーは認証ごとにMFAを求められます。
時間の値はアクティブなユーザー用です。ユーザーが 7 日間以上非アクティブの場合、Cookie は期限切れとなり、次回のログイン試行時に MFA の入力を求められます (allowRememberBrowsertrue に設定されていて、最後の MFA プロンプトから 30 日が経過していないかどうかに関係なく)。 ユーザーにMFAのスキップを許可した場合、ユーザーのブラウザーにCookieが保管されます。ユーザーがCookieのセットを持っている場合でもMFAを要求するには、次の2つのオプションがあります。
  • allowRememberBrowserfalse に設定します
  • /authorize エンドポイントを呼び出す際に、acr_valueshttp://schemas.openid.net/pape/policies/2007/06/multi-factorに設定します。
ユーザーが信頼できるデバイスを紛失した場合、Auth0 Invalidate Remember Browser エンドポイントを呼び出すことで、次回のログイン時に特定のユーザーに MFA を要求することができます。

ネットワーク外部のユーザーにMFAを要求する

内部IPアドレスのネットワークについてはアクセスが適切に制御されていると仮定した場合、企業ネットワークの外から要求を送信してくるユーザーにのみ、Auth0がMFAを要求するようにできます。
exports.onExecutePostLogin = async (event, api) => {
  const ipaddr = require('ipaddr.js@1.9.0');
  const corp_network = '192.168.1.134/26';
  const current_ip = ipaddr.parse(event.request.ip);

  if (!current_ip.match(ipaddr.parseCIDR(corp_network))) {
    api.multifactor.enable('any', {allowRememberBrowser: false});
  }
}

リフレッシュトークンの要求でMFAをバイパスする

ユーザーによる頻繁なログアウトが報告された場合は、MFAを使用しながらもリフレッシュトークンの要求をバイパスすることができます。event.transaction.protocol オブジェクト プロパティのフィルター アクションを使用して、デフォルトの動作を変更できます。
exports.onExecutePostLogin = async (event, api) => {
  if (event.transaction.protocol !== 'oauth2-refresh-token') {
    // MFA-related commands here
    api.multifactor.enable('any');
  }
};
アクションのeventオブジェクトの詳細については、「Actionsのトリガー:ログイン後 - eventオブジェクト」を参照してください。

もっと詳しく

I