> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 機能にカスタムドメインの使用を構成する

> Auth0の認証機能にカスタムドメインを構成する方法について説明します。

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASKED*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

Auth0の機能にカスタムドメインの使用を構成する場合、使用している機能によっては追加の手順を完了する必要があります。たとえば、ログインページでカスタムドメインを使用したり、APIを呼び出したりするには、変更が必要になるかもしれません。

Auth0をしばらく使用していて、カスタムドメインを有効化することに決めた場合には、既存のアプリを移行して、VPNやファイアウォールなどを含む以下の設定を更新しなければなりません。カスタムドメインを使い始めると、`{yourDomain}`で作成された既存のセッションが無効になるため、ユーザーに再ログインが求められます。

## 前提条件

カスタムドメインの構成と検証がすでに完了している

## 機能

| 機能                                          | 参照するセクション                                                                |
| ------------------------------------------- | ------------------------------------------------------------------------ |
| カスタマイズされたログインページを使用したユニバーサルログイン             | [ユニバーサルログイン](#universal-login)                                           |
| アプリケーションに組み込まれたLock                         | [組み込まれたLock](#embedded-lock)                                             |
| Auth0 SPA SDK、Auth0.js、その他のAuth0 SDK        | [Auth0 SPA SDK、Auth0.js、その他のSDK](#auth0-spa-sdk-auth0-js-and-other-sdks) |
| Auth0メールのカスタムドメイン                           | [メールにカスタムドメインを使用する](#use-custom-domains-in-emails)                       |
| ソーシャルIDプロバイダー                               | [ソーシャルIDプロバイダーを構成する](#configure-social-identity-providers)               |
| カスタムドメインを使用したGoogle Workspace接続             | [Google Workspace接続を構成する](#configure-g-suite-connections)                |
| APIにアクセストークンを発行、またはアプリケーションからAuth0 APIにアクセス | [API](#apis)                                                             |
| SAML IDプロバイダー                               | [SAML IDプロバイダーを構成する](#configure-saml-identity-providers)                 |
| SAMLアプリケーション                                | [SAMLアプリケーションを構成する](#configure-saml-applications)                        |
| Webサービスフェデレーション（WS-Fed）アプリケーション             | [WS-Fedアプリケーションを構成する](#configure-ws-fed-applications)                    |
| Microsoft Entra ID接続                        | [Microsoft Entra ID接続を構成する](#configure-azure-ad-connections)             |
| ADFS接続                                      | [ADFS接続を構成する](#configure-adfs-connections)                               |
| Kerberosサポートを使用したAD/LAP接続                   | [AD/LAP接続を構成する](#configure-ad-ldap-connections)                          |

## ユニバーサルログイン

[Auth0のユニバーサルログイン](/docs/ja-jp/authenticate/login/auth0-universal-login)を使用していて、ログインページをカスタマイズした場合には、カスタムドメインを使用するようにコードを更新しなければなりません。カスタマイズすることなく、 **デフォルト** のログインページを使用している場合には、変更の必要はありません。詳細については、「Auth0のユニバーサルログイン」をお読みください。

[Web用のLock](/docs/ja-jp/libraries/lock)を使用している場合には、`configurationBaseUrl`と`overrides`のオプションを以下のスクリプト例のように設定しなければなりません。

```javascript lines theme={null}
var lock = new Auth0Lock(config.clientID, config.auth0Domain, {
  //code omitted for brevity
  configurationBaseUrl: config.clientConfigurationBaseUrl,
  overrides: {
  	__tenant: config.auth0Tenant,
  	__token_issuer: config.authorizationServer.issuer
  },
  //code omitted for brevity
});
```

ユニバーサルログインページに[Auth0.js](/docs/ja-jp/libraries/auth0js)を使用している場合には、`overrides`オプションを設定する必要があります。

```javascript lines theme={null}
var webAuth = new auth0.WebAuth({
  clientID: config.clientID,
  domain: config.auth0Domain,
  //code omitted for brevity
  overrides: {
  	__tenant: config.auth0Tenant,
  	__token_issuer: config.authorizationServer.issuer
  },
  //code omitted for brevity
});
```

ほとんどの場合、Auth0.jsとLockライブラリーは、ドメインからテナント名（`/usernamepassword/login`に必要）と発行者（`id_token`の検証に必要）を取得します。ただし、プライベートクラウドでプロキシを使用しているか、テナントや発行者と異なる名前を持つカスタムドメインを使用している場合には、`__tenant`や`__token_issuer`を使って一意の値を渡すことができます。

## 埋め込まれたLock

アプリケーションに[Web用のLock](/docs/ja-jp/libraries/lock)を埋め込んで使用している場合には、Lockの初期化時にカスタムドメインが使用されるようにコードを更新しなければなりません。また、`configurationBaseUrl`を適切なCDNのURLに設定する必要があります。

export const codeExample1 = `var lock = new Auth0Lock('{yourClientId}', '{yourCustomDomain}', {
  //code omitted for brevity
  configurationBaseUrl: 'https://cdn.us.auth0.com'
  //code omitted for brevity
});`;

<AuthCodeBlock children={codeExample1} language="javascript" />

CDNのURLは地域によって異なります。`https://cdn.[us|eu|au|jp].auth0.com`（アメリカには`us`、ヨーロッパには`eu`、オーストラリアには`au`、日本には`jp`）を使用します。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  CDNのURLは地域によって異なります。2020年6月11日より前に作成されたテナントは、地域が米国なら `https://cdn.auth0.com`、オーストラリア、カナダ、日本、イギリスなら末尾に `au、ca、eu、jp、uk`を追加して使用します。2020年6月11日以降に作成されたテナントは、地域が米国なら`https://cdn.us.auth0.com`を使用します。
</Callout>

## Auth0 SPA SDK、Auth0.js、その他のSDK

[Auth0 SPA SDK](/docs/ja-jp/libraries/auth0-spa-js)、[Auth0.js](/docs/ja-jp/libraries/auth0js)または[その他のSDK](/docs/ja-jp/support/matrix#auth0-sdks)を使用している場合には、カスタムドメインの使用にSDKを初期化する必要があります。たとえば、Auth0.js SDKの使用では以下を設定します。

export const codeExample2 = `webAuth = new auth0.WebAuth({
  domain: '{yourCustomDomain}',
  clientID: '{yourClientId}'
});`;

<AuthCodeBlock children={codeExample2} language="js" />

Auth0 SPA SDKでは以下を設定します。

export const codeExample3 = `const auth0 = await createAuth0Client({
  domain: '{yourCustomDomain}',
  client_id: '{yourClientId}'
});`;

<AuthCodeBlock children={codeExample3} language="javascript" />

カスタムドメインを使用していて、[Auth0.jsを用いたManagement APIのアクション](/docs/ja-jp/libraries/auth0js/v9#user-management)を実行する予定の場合には、以下に記載のAPIセクションを参照してください。

## メールにカスタムドメインを使用する

Auth0のメールにカスタムドメインを使用したい場合には、この機能を有効化する必要があります。

1. [［Auth0 Dashboard］>［Branding（ブランディング）］>［Custom Domains（カスタムドメイン）］](https://manage.auth0.com/#/branding/custom_domains)に移動します。
2. **［Use Custom Domain in Emails（メールにカスタムドメインを使用する）］** トグルを有効にします。

## ソーシャルIDプロバイダーを構成する

ソーシャルIDプロバイダー（<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-2" href="/docs/ja-jp/glossary?term=idp" tip="IDプロバイダー（IdP）: デジタルIDを保存および管理するサービス。" cta="用語集の表示">IdP</Tooltip>）でカスタムドメインを使用したい場合には、IdPの［Authorized Redirect URIs（認可されているリダイレクトURI）］リストにカスタムドメイン（`https://login.northwind.com/login/callback`など）を含めて更新する必要があります。

カスタムドメインには[Auth0の開発者キー](/docs/ja-jp/authenticate/identity-providers/social-identity-providers/devkeys)は使用できません。

## Google Workspace接続を構成する

Google Workspace接続でカスタムドメインを使用したい場合には、［<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=oath2" tip="OAuth 2.0: 認可プロトコルとワークフローを定義する認可フレームワーク。" cta="用語集の表示">OAuth</Tooltip> Client Settings（OAuthクライアント設定）］の［Authorized Redirect URIs（認可されているリダイレクトURI）］リストを更新する必要があります。Google Cloud Consoleで **［Credentials（資格情報）］** に移動し、使用しているOAuthクライアントをリストから選択すると、クライアントIDやシークレットなどのフィールドを含む設定ページが表示されます。 **［Authorized redirect URIs（認可されているリダイレクトURI）］** フィールドにURLを追加します。URLには`https://<YOUR-CUSTOM-DOMAIN>/login/callback`の形式でカスタムドメイン（`https://login.northwind.com/login/callback`など）を含めます。

## API

API識別子（`audience`）は変更されません。これはそれぞれのAPIに一定の値で、URIが標準的に使用されているにもかかわらず、トークンの取得に使用されるドメインとは完全に無関係です。

Auth0はトークンを発行するのに、トークンの取得に使用したドメインの`iss`クレームを使用します。

##### Auth0 API

`audience`を指定する際には、カスタムドメインではなく、使用しているデフォルトのテナントドメイン名（`https://{yourDomain}/userinfo`、`https://{yourDomain}/api/v2/`など）を使用します。ここが、デフォルトのテナントドメインを使用する唯一の場所です。

すべての要求（トークン取得や実際のAPI呼び出し）には同じドメインを使用する必要があります。カスタムドメインを通して取得したトークンは、その同じカスタムドメインでAuth0 APIに使用されなければなりません。

また、カスタムドメインを用いた認証フローを使って、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip>へのアクセスにアクセストークンを要求する場合には、そのカスタムドメインでManagement APIを呼び出す必要があります。

```json lines theme={null}
POST https://mycustomdomain.com/oauth/token
... // other parameters 
...
audience:https://defaulttenant.eu.auth0.com/api/v2/
```

アクセストークン要求は以下のようになるはずです。

```json lines theme={null}
GET https://mycustomdomain.com/api/v2/clients

Headers:
Authorization: Bearer <access_token>
```

##### カスタムAPI

Auth0でカスタムドメインを使ってAPIにアクセストークンを発行する場合には、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-3" href="/docs/ja-jp/glossary?term=json-web-token" tip="JSON Web Token（JWT）: 二者間のクレームを安全に表現するために使用される標準IDトークン形式（および多くの場合、アクセストークン形式）。" cta="用語集の表示">JWT</Tooltip>の発行者をカスタムドメインに照らし合わせて検証しなければなりません。たとえば、[express-jwt](https://github.com/auth0/express-jwt)ミドルウェアの使用では、以下の変更を行う必要があります。

```js lines theme={null}
app.use(jwt({
  issuer: 'https://<YOUR-CUSTOM-DOMAIN>/',
  //code omitted for brevity
}));
```

## SAML IDプロバイダーを構成する

<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-1" href="/docs/ja-jp/glossary?term=security-assertion-markup-language" tip="Security Assertion Markup Language（SAML）: パスワードなしに二者間で認証情報を交換できる標準化プロトコル。" cta="用語集の表示">SAML</Tooltip> IDプロバイダー（IdP）でカスタムドメインを使用する場合には、IDプロバイダーで **Assertion Consumer Service（ACS）のURL** を更新する必要があります。これは、IdPでの対応に合わせて、以下のいずれかの方法で実行できます。

1. サービスプロバイダーのメタデータをAuth0から`https://<YOUR-CUSTOM-DOMAIN>/samlp/metadata?connection=<YOUR-CONNECTION-NAME>`を使って取得します。これには、更新済みのACS URLが含まれています。そして、IdPの設定でこの値を手動で更新します。IdPに対するこの変更は、アプリケーションでカスタムドメインの使用を始めるのと同時に行わなければなりません。構成するべきIdPが複数ある場合には、これが問題となる可能性があります。
2. IdPに対応があれば、この要件を満たすのに、署名付きの要求を使用することができます。

* 署名証明書を`https://<TENANT>.auth0.com/pem`からダウンロードします。同じ証明書が`https://<YOUR-CUSTOM-DOMAIN>.com/pem`からも返されることに注意してください。
* 証明書をIdPにアップロードして提供します。これで、Auth0がIdPに送信する`AuthnRequest`メッセージの署名を、IdPが検証できるようになります。
* IdPが証明書をインポートして、必要であれば、署名の検証を有効化します（実際の手順はIdPによって異なります）。
* Dashboardの **［Sign Request（要求を署名する）］** トグルをオンにします。これは **［Connections（接続）］>［Enterprise（エンタープライズ）］>［SAML］>［CONNECTION（接続）］** にあります。これで、Auth0がIdPに送信する`AuthnRequest`のSAMLメッセージが署名されるようになります。

これが完了して、アプリケーションで認証要求を開始したときにカスタムドメインが使用され始めると、IdPが署名付き要求でカスタムドメインを受け取ります。アプリケーションの署名付き要求は信頼されているため、IdPはACS URLとして構成されているものをすべて自動的にオーバーライドし、署名付き要求に含めて送られた値に置き換えます。ただし、署名付き要求内のACS URLを受け付け **ない** IdPもあるため、まず、これが対応されているかを確認する必要があります。

対応されている場合には、1つ以上のIdPで設定が同時に変更できないため、署名付き要求の受け付けを事前に準備できるようになっています。また、後の時点で、静的に構成されたACS URLをIdPの設定で変更することもできます。

SAML IDプロバイダーでカスタムドメインの使用が構成されている場合、Dashboardの **［Try（試す）］** ボタンは動作 **しません** 。Auth0からメタデータをダウンロードするデフォルトのリンクとして、カスタムドメインではなく、デフォルトのドメインが表示されます。

IdP起点の認証フローがある場合には、カスタムドメインの使用について、IdPとアプリケーションを同時に更新する必要があります。

## SAMLアプリケーションを構成する

SAMLアプリケーションでカスタムドメインを使用したい（Auth0がIdPである）場合には、Auth0からの新しいIDプロバイダーメタデータでサービスプロバイダーを更新する必要があります。カスタムドメインが更新されたメタデータは、`https://<YOUR-CUSTOM-DOMAIN>/samlp/metadata/<YOUR-CLIENT-ID>`から取得することができます。Auth0から返されるアサーションの発行者エンティティIDが、カスタムドメインを使用すると変わることに注意してください（例：`urn:northwind.auth0.com`はカスタムドメインを使用すると`urn:login.northwind.com`になります）。

IdP起点の認証フローがある場合には、その実行に使用されるURLをカスタムドメインで更新する必要があります。必ず、`https://<TENANT>.auth0.com/samlp/<YOUR-CLIENT-ID>`ではなく、`https://<YOUR-CUSTOM-DOMAIN>/samlp/<YOUR-CLIENT-ID>`を使用します。

## WS-Fedアプリケーションを構成する

<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-2" href="/docs/ja-jp/glossary?term=ws-fed" tip="Webサービスフェデレーション（WS-Fed）: ドメイン全体でユーザーIDを管理するためのプロトコル。" cta="用語集の表示">WS-Fed</Tooltip>でカスタムドメインを使用したい（Auth0がIdPである）場合には、Auth0からの新しいIDプロバイダーメタデータでサービスプロバイダーを更新する必要があります。カスタムドメインが更新されたメタデータは、`https://<YOUR-CUSTOM-DOMAIN>/wsfed/FederationMetadata/2007-06/FederationMetadata.xml`から取得することができます。

## Azure AD接続を構成する

Azure AD接続でカスタムドメインを使用したい場合には、Azure ADの設定で［Allowed Reply URL（許可されている応答URL）］を更新する必要があります。Azure Active Directoryで **［Apps registrations（アプリの登録）］** に移動して、アプリを選択します。それから、 **［Settings（設定）］>［Reply URLs（応答URL）］** を選択して、カスタムドメインのURLを追加します。URLには`https://<YOUR-CUSTOM-DOMAIN>/login/callback`の形式でカスタムドメイン（`https://login.northwind.com/login/callback`など）を含めます。

## ADFS接続を構成する

ADFS接続でカスタムドメインを使用したい場合には、ADFSの設定でエンドポイントを更新する必要があります。これには、コールバックURLがカスタムドメインを使用するように更新しなければなりません。URLには`https://<YOUR-CUSTOM-DOMAIN>/login/callback`の形式でカスタムドメイン（`https://login.northwind.com/login/callback`など）を含めます。

## AD/LDAP接続を構成する

Kerberosへの対応が不必要な場合には、AD/LDAP接続をそれ以上構成する必要はありません。

Kerberosに対応したAD/LDAP接続を使用するには、カスタムドメインと動作するようにチケットエンドポイントを更新しなければなりません。[Auth0 AD/LDAPコネクターのドキュメント](/docs/ja-jp/connector/modify#point-an-ad-ldap-connector-to-a-new-connection)でも説明したように、`config.json`ファイルを編集し、カスタムドメインを使用するように、`PROVISIONING_TICKET`値を`https://<YOUR-CUSTOM-DOMAIN>/p/ad/jUG0dN0R`形式の値に変更します。

この変更を保存したら、AD/LDAPコネクターサービスを再起動して、変更内容を適用する必要があります。

## もっと詳しく

* [Auth0管理証明書を使ってカスタムドメインを構成する](/docs/ja-jp/customize/custom-domains/auth0-managed-certificates)
* [自己管理証明書を使ってカスタムドメインを構成する](/docs/ja-jp/customize/custom-domains/self-managed-certificates)
* [カスタムドメインのトラブルシューティング](/docs/ja-jp/troubleshoot/integration-extensibility-issues/troubleshoot-custom-domains)
* [APIの呼び出しをチェックする](/docs/ja-jp/troubleshoot/authentication-issues/check-api-calls)
* [SAML構成のトラブルシューティング](/docs/ja-jp/troubleshoot/authentication-issues/troubleshoot-saml-configurations)
