> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-actions-triggers-prototype.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 多要素認証ページをカスタマイズする

> ユニバーサルログインのブランディングオプションを使ってユーザーに表示される多要素認証（MFA）ページをカスタマイズする方法を説明します。

<Note>
  これらのカスタマイズはDuoには適用されません。Duoには独自のユーザーインターフェイスがあります。
</Note>

Auth0 ダッシュボードの[ユニバーサル ログイン設定](https://manage.auth0.com/#/login_settings)セクションでユニバーサル ログインのブランド オプションを調整することで、ユーザーに表示される <Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=multifactor-authentication" tip="多要素認証（MFA）: ユーザー名とパスワードに加えて、SMS経由のコードなどの要素を使用するユーザー認証プロセス。" cta="用語集の表示">MFA</Tooltip> ページをカスタマイズできます。

ユニバーサル ログイン エクスペリエンスを使用している場合は、フローのカスタマイズ オプションを使用してページをカスタマイズできます。

また、HTMLコンテンツの全体をカスタマイズして、組織に固有なユーザーエクスペリエンス要件を反映させることもできます。詳細については、「[MFAウィジェットテーマオプション](/docs/ja-jp/secure/multi-factor-authentication/customize-mfa/mfa-widget-theme-options)」をご覧ください。

ユニバーサル ログイン エクスペリエンスにより、MFA がユーザーにとってさらにシンプルに提供されます。ユーザーがログイン画面に資格情報を入力すると、MFA画面が表示されます。MFA要素を登録していない場合は登録が要求され、登録済みの場合はMFA資格情報の提示が要求されます。

## MFA APIを使用する

Auth0は、次のシナリオで[MFA API](/docs/ja-jp/secure/multi-factor-authentication/multi-factor-authentication-developer-resources/mfa-api)を提供します。

* [リソース所有者パスワード付与を使用してユーザーを認証します](/docs/ja-jp/secure/multi-factor-authentication/authenticate-using-ropg-flow-with-mfa)。
* [ユーザーが独自の認証要素を管理](/docs/ja-jp/secure/multi-factor-authentication/manage-mfa-auth0-apis/manage-authenticator-factors-mfa-api)できるようにインターフェイスを構築します。
* [登録チケット](/docs/ja-jp/secure/multi-factor-authentication/multi-factor-authentication-developer-resources/create-custom-enrollment-tickets)を使用して、ユーザーをMFAに登録するよう招待します。

MFA APIを使用するには、アプリケーションに対してMFAの付与タイプを有効にしなければなりません。<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=auth0-dashboard" tip="Auth0 Dashboard: サービスを構成するためのAuth0の主製品。" cta="用語集の表示">Auth0 Dashboard</Tooltip>でMFA付与を有効にするには、以下を行います。

1. [［Dashboard］>［Applications（アプリケーション）］>［Applications（アプリケーション）］](https://manage.auth0.com/#/applications)に移動して、アプリケーションを選択します。
2. \*\*［Settings（設定）］**タブの下部にある**［Advanced Settings（詳細設定）］\*\*をクリックします。
3. \*\*［Grant Types（付与タイプ）］\*\*タブをクリックし、**MFA** を選択します。

   <Frame>
     <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/lj4yKtFBkRd_2GRB/docs/images/ja-jp/cdy7uua7fh8z/3knG7flXhvUi0b2yhH0JEp/cff5c916af4c26edf42c9d635c3b321f/MFA_app_grants.png?fit=max&auto=format&n=lj4yKtFBkRd_2GRB&q=85&s=69824ad860f60b743a9108570d33cb71" alt="Dashboard Applications Applications Advanced Settings Grant Types tab" width="698" height="387" data-path="docs/images/ja-jp/cdy7uua7fh8z/3knG7flXhvUi0b2yhH0JEp/cff5c916af4c26edf42c9d635c3b321f/MFA_app_grants.png" />
   </Frame>

   詳細については、「[多要素認証（MFA）を有効にする](/docs/ja-jp/secure/multi-factor-authentication/enable-mfa)」をお読みください。
4. \*\*［Save Changes（変更を保存）］\*\*をクリックします。

### 制限事項

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

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

Actionsを使ってテナント向けのMFAポリシーをカスタマイズし、特定のアプリケーションのユーザーや、特定のユーザーメタデータまたはIPアドレス範囲を持つユーザーなどを対象にMFAを要求することができます。

アクションの作成に慣れていない場合は、「[最初のアクションの作成](/docs/ja-jp/customize/actions/write-your-first-action)」をお読みください。

<Note>
  Actionsで定義したMFA関連の動作は、ダッシュボードの\*\*［Multi-factor Auth（多要素認証）］**セクションで構成した**［Define policy（ポリシーを定義）］\*\*設定に優先します。

  詳細については、「[多要素認証（MFA）を有効にする](/docs/ja-jp/secure/multi-factor-authentication/enable-mfa)」をお読みください。
</Note>

アクションを作成するときに、`プロバイダー`設定を使用して、MFAの強制の有無および使用する要素を指定できます。動作は、クラシック ログイン エクスペリエンスを使用するか、ユニバーサル ログイン エクスペリエンスを使用するかによって異なります。

| プロバイダー               | クラシックログインエクスペリエンス    | ユニバーサルログインエクスペリエンス                             |
| -------------------- | -------------------- | ---------------------------------------------- |
| guardian             | プッシュ、SMS、またはOTP      | Push、SMS、音声、OTP、メール、またはWebAuthnセキュリティキー（有効な場合） |
| guardian             | プッシュ、SMS、またはOTP      | プッシュ、SMS、OTP、またはメール                            |
| google-authenticator | Google Authenticator | プッシュ、SMS、OTP、またはメール                            |
| duo                  | Duo                  | Duo                                            |

ユニバーサル ログインを使用している場合は、MFA ログイン ページのカスタマイズを有効にすると、クラシック ログイン エクスペリエンスの動作を実現できます。

<Note>
  `guardian`と`google-authenticator`のオプションは、下位互換性を確保する目的で維持されているレガシー設定であるため、今後は使用しないでください。代わりに`any`を使用することをお勧めします。`google-authenticator`オプションは、ユーザーに対し、復旧コードの登録を許可しません。
</Note>

`プロバイダー`を特定のオプションに手動で設定すると、ダッシュボードの有効/無効の切り替えが上書きされます。Dashboardで他の要素が有効になっているのに、ユーザーにDuoでの登録を要求するには、次のようなActionを使用します。

```javascript lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
    // Forcing the provider to Duo programmatically
    api.multifactor.enable('duo')
}
```

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

ここでは、Actionsで処理できる一般的なMFAシナリオをいくつかご紹介します。

<Note>
  アクションで明示的に要求したときのみMFAがトリガーされるようにするには、テナントのデフォルトのMFAポリシーを\*\*［Never（使用しない）］\*\*に設定します。

  詳細については、「[多要素認証の要素](https://auth0.com/docs/secure/multi-factor-authentication/multi-factor-authentication-factors#policies)」にある「ポリシー」セクションをお読みください。
</Note>

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

MFAをカスタマイズして、ユーザーが特定のアプリケーションにログインするときのみトリガーされるようにします。

```javascript lines theme={null}
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を使用するようマークされたユーザーに対してのみ、トリガーされるようにします。

```javascript lines theme={null}
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` プロパティを使用してこの動作を変更できます:

```javascript lines theme={null}
exports.onExecutePostLogin = async (event, api) => {  
  api.multifactor.enable('any', { allowRememberBrowser: false });
}
```

プロパティの値に応じて、以下のような動作になります。

| 値       | 説明                                                                                                                                                                                                                                                                                      |
| ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `true`  | プロバイダーが`google-authenticator`または`duo`に設定されている場合、ユーザーは30日ごとにMFAを求められます。プロバイダーが`guardian`に設定されている場合、MFAプロンプトにはユーザーが登録するかどうかを選択するための登録チェックボックスが表示されます。デフォルトは`false`です。詳細については、「[多要素認証ページをカスタマイズする](https://auth0.com/docs/ja-jp/secure/multi-factor-authentication/customize-mfa)」をお読みください |
| `false` | ユーザーは認証ごとにMFAを求められます。                                                                                                                                                                                                                                                                   |

時間の値はアクティブなユーザー用です。ユーザーが 7 日間以上非アクティブの場合、Cookie は期限切れとなり、次回のログイン試行時に MFA の入力を求められます (`allowRememberBrowser` が `true` に設定されていて、最後の MFA プロンプトから 30 日が経過していないかどうかに関係なく)。

ユーザーにMFAのスキップを許可した場合、ユーザーのブラウザーにCookieが保管されます。ユーザーがCookieのセットを持っている場合でもMFAを要求するには、次の2つのオプションがあります。

* `allowRememberBrowser` を `false` に設定します
* `/authorize` エンドポイントを呼び出す際に、`acr_values` を`http://schemas.openid.net/pape/policies/2007/06/multi-factor`に設定します。

ユーザーが信頼できるデバイスを紛失した場合、Auth0 <Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip> [Invalidate Remember Browser](https://auth0.com/docs/api/management/v2#!/Users/post_invalidate_remember_browser) エンドポイントを呼び出すことで、次回のログイン時に特定のユーザーに MFA を要求することができます。

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

内部IPアドレスのネットワークについてはアクセスが適切に制御されていると仮定した場合、企業ネットワークの外から要求を送信してくるユーザーにのみ、Auth0がMFAを要求するようにできます。

```javascript lines theme={null}
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` オブジェクト プロパティのフィルター アクションを使用して、デフォルトの動作を変更できます。

```javascript lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  if (event.transaction.protocol !== 'oauth2-refresh-token') {
    // MFA-related commands here
    api.multifactor.enable('any');
  }
};
```

アクションの`event`オブジェクトの詳細については、「[Actionsのトリガー:ログイン後 - eventオブジェクト](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/post-login-event-object)」を参照してください。

## もっと詳しく

* [クラシックログインにおけるMFAのカスタマイズ](/docs/ja-jp/secure/multi-factor-authentication/customize-mfa/customize-mfa-classic-login)
* [MFAでリソース所有者のパスワードフロー使用して認証する](/docs/ja-jp/secure/multi-factor-authentication/authenticate-using-ropg-flow-with-mfa)
* [Auth0 MFA APIについて](/docs/ja-jp/secure/multi-factor-authentication/multi-factor-authentication-developer-resources/mfa-api)
* [認証APIを使って認証要素を管理する](/docs/ja-jp/secure/multi-factor-authentication/manage-mfa-auth0-apis/manage-authenticator-factors-mfa-api)
* [MFAウィジェットテーマオプション](/docs/ja-jp/secure/multi-factor-authentication/customize-mfa/mfa-widget-theme-options)
* [MFAテーマの言語辞書](/docs/ja-jp/secure/multi-factor-authentication/customize-mfa/mfa-theme-language-dictionary)
