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

> Kerberos 認証とのフェデレーション用に AD/LDAP Connector を設定する方法について説明します。

# Kerberos による AD/LDAP Connector 認証を設定する

Classic Login を使用している場合は、AD/LDAP Connector を介して Active Directory とフェデレーションできます。AD/LDAP Connector を使用すると、企業ネットワーク内のドメイン参加済みマシンを使用しているユーザーが認証できるようになります。

<h2 id="configure-active-directory">
  Active Directory を設定する
</h2>

1. [Auth0 Dashboard > Authentication > Enterprise > Active Directory/LDAP](https://manage.auth0.com/#/connections/enterprise/ad) に移動し、設定する接続を選択します。
2. **Use Windows Integrated Auth (Kerberos)** スイッチを有効にします。

<h3 id="auto-detected-range-for-kerberos">
  Kerberos の自動検出範囲
</h3>

Kerberos 認証が有効な場合、AD Connector を実行しているサーバーの外部公開 IP アドレスは、ネットワーク IP 範囲に自動的に追加されます。つまり、ユーザーのリクエストの送信元が AD Connector と同じ外部公開 IP アドレスである場合、Kerberos 認証が試行されます。

1. **IP Ranges** を設定します。[CIDR-notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) を使用してください。ここには、Auth0 から見える IP 範囲を指定する必要があります。Auth0 がクラウドで実行されている場合、ユーザーの内部 IP アドレスは参照できません。その場合は、会社の公開側/WAN IP アドレスを設定します。
2. この設定を変更したら、そのたびに AD Connector をホストしている Windows Service を再起動することをおすすめします。これにより、変更がすぐに反映されます。

<h2 id="authentication-flow">
  認証フロー
</h2>

IP 範囲が設定されている場合、ユーザーの所在地によって認証フローは異なります。Fabrikam を例にすると、Auth0 の SaaS 版を使用しているため、接続に Public IP Address (`24.12.34.56/32`) を設定しています。建物内から接続するユーザーは、全員 `24.12.34.56` から接続しているものとして扱われます (接続で設定されているとおり) 。認証時には、ユーザーは AD/LDAP のネイティブフローを利用でき、シームレスな <Tooltip tip="Single Sign-On（SSO）: ユーザーが 1 つのアプリケーションにログインすると、他のアプリケーションにも自動的にログインできるようにするサービス。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=SSO">SSO</Tooltip> を利用できます。

これを機能させるには、ネットワークで、ユーザーが `config.json` ファイルで設定されたポート経由で AD/LDAP Connector に接続できるようにする必要があります。Connector の高可用性デプロイでは、ユーザーの接続先アドレスは、すべての Connector インスタンスの前段にあるネットワークロードバランサーになります。

<Frame>
  <img src="https://mintcdn.com/docs-dev-update-anonymous-sessons-ea/czdjV-SUOhULdyD1/docs/images/cdy7uua7fh8z/1EUZhFx2w5FjDeIoMySERC/fc50869b131faf3257cfe429c96f68d1/2023-09-22_14-28-30.png?fit=max&auto=format&n=czdjV-SUOhULdyD1&q=85&s=a6dd9e7734f9d0369553cf54f8eb6c83" alt="Kerberos フローによる AD/LDAP Connector 認証の設定図" width="600" height="549" data-path="docs/images/cdy7uua7fh8z/1EUZhFx2w5FjDeIoMySERC/fc50869b131faf3257cfe429c96f68d1/2023-09-22_14-28-30.png" />
</Frame>

詳細については、[高可用性環境向けに AD/LDAP Connector をデプロイする。](/docs/ja-jp/authenticate/identity-providers/enterprise-identity-providers/active-directory-ldap/ad-ldap-connector/ad-ldap-high-availability)を参照してください。

一方、ユーザーが社内ネットワーク上にいない場合 (たとえば顧客先にいる場合や、VPN なしで在宅勤務している場合) は、AD/LDAP Connector に直接アクセスできません。ユーザーはユーザー名とパスワードを入力する必要があり、Auth0 はそれらの認証情報を AD/LDAP Connector で検証します (さらに AD/LDAP Connector が Active Directory を使用して、その認証情報を検証します) 。

<Frame>
  <img src="https://mintcdn.com/docs-dev-update-anonymous-sessons-ea/RdbJJNqsNn9HyXNH/docs/images/cdy7uua7fh8z/7xo1cIdF6GmSowlVB8kjQn/4b55f555977742af3f3df94c5b3a0a9b/2023-09-22_14-29-00.png?fit=max&auto=format&n=RdbJJNqsNn9HyXNH&q=85&s=410fed5e7b39c857b411966dee1a847a" alt="Kerberos 認証情報フローによる AD/LDAP Connector 認証の設定図" width="498" height="517" data-path="docs/images/cdy7uua7fh8z/7xo1cIdF6GmSowlVB8kjQn/4b55f555977742af3f3df94c5b3a0a9b/2023-09-22_14-29-00.png" />
</Frame>

<h2 id="auto-login-with-lock">
  Lock による自動ログイン
</h2>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  AD/LDAP 接続で IP 範囲を検出し、その範囲を Lock で使用して統合 Windows 認証を有効にする機能は Lock 10 では動作しますが、Lock 11 では Universal Login シナリオでのみ使用できます。Lock 11 を Embedded Login シナリオで使用する場合、この機能は無効になります。
</Callout>

アプリケーションが Auth0 でホストされる Login Page 内で Lock 10 または 11 を使用している場合 (通常は <Tooltip tip="Security Assertion Markup Language (SAML): パスワードなしで 2 者間の認証情報のやり取りを可能にする標準化されたプロトコル。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=SAML">SAML</Tooltip>/WS-Federation プロトコルおよびシングルサインオン (SSO) 統合で使用されます) 、ユーザーが "Windows Authentication" を使用して認証できるボタンが表示されます。

状況によっては、Kerberos が利用可能な場合 (エンドユーザーの IP アドレスに基づいて) に、ユーザーを自動的にサインインさせたいことがあります。Kerberos が利用可能な場合にユーザーを自動的にサインインさせるには、Auth0 の Login Page に次の変更を追加します。

```html lines expandable theme={null}
<script src="https://cdn.auth0.com/js/lock/11.x.x/lock.min.js"></script>
<script src="https://cdn.auth0.com/js/auth0/9.x/auth0.min.js"></script>
<script src="https://cdn.auth0.com/js/polyfills/1.0/object-assign.min.js"></script>

<script>
  var config = JSON.parse(decodeURIComponent(escape(window.atob('@@config@@'))));

  var lock = new Auth0Lock(config.clientID, config.auth0Domain, {
      //...追加設定
  });

  function handleError(err) {
    // 適切なエラー処理を追加する
    console.log(err);
  };

  var params = Object.assign({
      scope: config.internalOptions.scope,
      _csrf: config.internalOptions._csrf,
      state: config.internalOptions.state,
    },
    {
      /* カスタムドメイン使用時に必要な追加設定
      overrides: {
        __tenant: config.auth0Tenant,
        __token_issuer: '{yourCustomDomain}'
      }, */
      domain: config.auth0Domain,
      clientID: config.clientID,
      redirectUri: config.callbackURL,
      responseType: 'code'
    });

  var webAuth = new auth0.WebAuth(params);

  /*
   * Kerberosが利用可能かどうかを確認し、可能であればユーザーの認証を試みる。
   *
   * getSSODataのレスポンスにconnectionとstrategyが含まれるのは、
   * IPアドレスが接続設定のKerberos範囲内にある場合のみ
   */
  webAuth.client.getSSOData(true, function(err, data) {
    if (err) handleError(err);

    if (data.connection && data.strategy === 'ad') {
      webAuth.authorize({connection: data.connection}, function(err) {
        if (err) handleError(err);
      });
    } else {
      lock.show();
    }
  });
</script>
```

<h2 id="bypass-kerberos-at-runtime">
  実行時に Kerberos をバイパスする
</h2>

接続設定で指定した範囲内の IP アドレスからユーザーがログインしている場合でも、`lock.show()` に `rememberLastLogin: false` を渡すことで、Kerberos が使用されないようにできます。

```javascript lines theme={null}
function useKerberos() {
      // Kerberosを使用する場合はtrueを返し、バイパスする場合はfalseを返す
    };
    
    lock.show({rememberLastLogin: useKerberos()});
```

<h2 id="enable-kerberos-request-logging">
  Kerberos リクエストのログ記録を有効にする
</h2>

1. Kerberos リクエストの詳細なログ記録を有効にするには、システムレベルの環境変数 `DEBUG=kerberos-server` を追加します。
2. Connector を再起動します。
3. 再度ログインし、詳細を確認するためにログを確認します。

<h2 id="firefox-support-for-kerberos">
  Firefox での Kerberos サポート
</h2>

デフォルトでは、[Firefox](https://www.mozilla.org/firefox) は [Kerberos でのユーザー認証に必要な "negotiate" リクエストをすべて拒否します](https://developer.mozilla.org/en-US/docs/Mozilla/Integrated_authentication)。Firefox で Kerberos を使用するには、コネクタがインストールされているサーバーを許可リストに追加する必要があります。

1. Firefox のタブを開き、アドレスバーに `about:config` と入力します。
2. 警告メッセージが表示されたら閉じ、検索ボックスに `negotiate` と入力します。
3. `network.negotiate-auth.trusted-uris` 項目を見つけて、ダブルクリックし、値を変更します。
4. コネクタがインストールされているサーバーのドメイン名を入力します。ロードバランサーの背後でコネクタのインスタンスを複数運用している場合は、ロードバランサーの DNS 名を追加します。
   値には、`mydomain.com, https://myotherdomain.com` のように、URL プレフィックスまたはドメインをカンマ区切りで指定できます。
5. **Ok** をクリックします。変更を反映するためにサーバーを再起動する必要はありません。

<h2 id="https-support-for-kerberos">
  Kerberos の HTTPS サポート
</h2>

Kerberos 認証は HTTP 上で動作し、HTTPS には対応していません。Microsoft Office 365 などの最新の製品は、HTTP では動作しない場合があります。

この制限を解消するには:

1. リバースプロキシを設定し、AD/LDAP Connector を HTTPS ドメインで公開します。`SERVER_URL` (Front Facing URL) パラメーターを使用すると、AD/LDAP Connector が受信リクエストを待ち受ける公開 URL を指定できます。
2. リバースプロキシで、`SERVER_URL` をデプロイされたコネクタのすべての内部インスタンスにマッピングします。
