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

# KerberosでAD/LDAPコネクターの認証を構成する

> Kerberos認証とフェデレーションを行うためにAD/LDAPコネクターを構成する方法について説明します。

AD/LDAPコネクターを介してActive Directoryとフェデレーションを行うことができます。AD/LDAPコネクターを使用すると、ユーザーは企業ネットワーク内のドメイン参加マシンで認証を行うことができます。

<div id="configure-active-directory">
  ## Active Directoryを設定
</div>

1. [［Auth0 Dashboard］>［Authentication（認証）］>［Enterprise（エンタープライズ）］>［Active Directory（AD）/LDAP］](https://manage.auth0.com/#/connections/enterprise/ad)に移動して、構成したい接続を選択します。
2. **［Use Windows Integrated Auth (Kerberos)（Windows統合認証（Kerberos）を使用する）］** スイッチを有効にします。

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

Kerberos認証が有効な場合、ADコネクターが稼働しているサーバーのIPアドレスは、ネットワークIPアドレス範囲に明示的に追加されます。つまり、ユーザーの要求がADコネクターのものと同じIPアドレスから送られてきた場合は、Kerberos認証が試行されます。

1. **IP範囲** を構成します。[CIDR表記](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)を使用します。範囲はAuth0で表示される範囲で指定します。Auth0がクラウドで稼働している場合は、ユーザーの内部IPアドレスを表示することはできません。その場合は、会社のパブリック向け/WAN IPアドレスを構成することになります。
2. この設定が変更されるたびに、ADコネクターをホストするWindows Serviceを再起動することを推奨します。再起動することで、変更がただちに有効になります。

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

ユーザーの場所に応じて、認証フローはIP範囲が設定されるときと異なります。Fabrikamを例として見てみましょう。これは、SaaSバージョンのAuth0を使用するため、接続にパブリックIPアドレス（`24.12.34.56/32`）を構成しました。建物内から接続しているすべてのユーザーの発信元は、（接続で構成されているように）`24.12.34.56`です。認証する場合、ユーザーはAD/LDAPのネイティブフローに従い、シームレスな<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-JP/ja-jp/glossary?term=single-sign-on" tip="シングルサインオン（SSO）: ユーザーが1つのアプリケーションにログインした後、そのユーザーを他のアプリケーションに自動的にログインさせるサービス。" cta="用語集の表示">SSO</Tooltip>エクスペリエンスを実現することができます。

これが機能するには、ネットワークでユーザーが`config.json`コネクターの高可用性デプロイメントでは、ユーザーの接続先アドレスはすべてのコネクターインスタンスの前にあるネットワークロードバランサーです。

<Frame>
  <img src="https://mintcdn.com/generaltranslationinc/8DIt0xu_-cUu1jhk/docs/images/ja-jp/cdy7uua7fh8z/1EUZhFx2w5FjDeIoMySERC/8379c4c9dbb26041d396d031030f779f/2023-09-22_14-28-30.png?fit=max&auto=format&n=8DIt0xu_-cUu1jhk&q=85&s=d95b91797d16465d9c0ff01dd534eee4" alt="KerberosでAD/LDAPコネクターの認証を構成する フロー図" width="600" height="549" data-path="docs/images/ja-jp/cdy7uua7fh8z/1EUZhFx2w5FjDeIoMySERC/8379c4c9dbb26041d396d031030f779f/2023-09-22_14-28-30.png" />
</Frame>

詳細については、「[高可用性環境のAD/LDAPコネクターをデプロイする](/docs/ja-JP/ja-jp/authenticate/identity-providers/enterprise-identity-providers/active-directory-ldap/ad-ldap-connector/ad-ldap-high-availability)

一方、ユーザーが企業ネットワークを使用していない（顧客先にいる、VPNを使わないリモートワークなど）場合は、AD/LDAPコネクターに直接アクセスすることはできません。ユーザーはユーザー名/パスワードを入力する必要があり、Auth0はAD/LDAPコネクターを使ってこれらの資格情報を検証します（今度は、Active Directoryを使用してこれらの資格情報を検証します）。

<Frame>
  <img src="https://mintcdn.com/generaltranslationinc/pgNtkB0vi40DIRw0/docs/images/ja-jp/cdy7uua7fh8z/7xo1cIdF6GmSowlVB8kjQn/0a3fc29c64db9c58b9e43db6d79fc574/2023-09-22_14-29-00.png?fit=max&auto=format&n=pgNtkB0vi40DIRw0&q=85&s=a3717770b73f2794129c1cd36c0bf1d5" alt="Kerberos資格認証でAD/LDAPコネクターの認証を構成する フロー図" width="498" height="517" data-path="docs/images/ja-jp/cdy7uua7fh8z/7xo1cIdF6GmSowlVB8kjQn/0a3fc29c64db9c58b9e43db6d79fc574/2023-09-22_14-29-00.png" />
</Frame>

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

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  AD/LDAP接続でIP範囲を検出し、ロックでそれらの範囲を使用して統合Windows認証を可能にすることは、Lock 10では機能しますが、Lock 11ではユニバーサルログインのシナリオでのみ使用できます。埋め込みログインのシナリオでLock11を使用している場合、Lock 11ではこの機能が無効になります。
</Callout>

アプリケーションがAuth0でホストされるログインページ内でLock 10または11を使用している（通常、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-1" href="/docs/ja-JP/ja-jp/glossary?term=security-assertion-markup-language" tip="Security Assertion Markup Language（SAML）: パスワードなしに二者間で認証情報を交換できる標準化プロトコル。" cta="用語集の表示">SAML</Tooltip>/<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-2" href="/docs/ja-JP/ja-jp/glossary?term=ws-fed" tip="Webサービスフェデレーション（WS-Fed）: ドメイン全体でユーザーIDを管理するためのプロトコル。" cta="用語集の表示">WS-Fed</Tooltip>プロトコルとシングルサインオン（SSO）統合に使用される）場合、「Windows認証」を使用してユーザーが認証することができるボタンが表示されます。

（エンドユーザーのIPアドレスに基づいて）Kerberosを使用できる場合は、ユーザーの自動サインインが必要になることもあります。Kerberosを使用できる場合にユーザーを自動的にサインインするために、以下の変更をAuth0のログインページに追加することができます。

```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, {
      //...additional configuration
  });

  function handleError(err) {
    // add proper error handling
    console.log(err);
  };

  var params = Object.assign({
      scope: config.internalOptions.scope,
      _csrf: config.internalOptions._csrf,
      state: config.internalOptions.state,
    },
    {
      /* additional configuration needed for use of custom domains 
      overrides: {
        __tenant: config.auth0Tenant,
        __token_issuer: '{yourCustomDomain}'
      }, */
      domain: config.auth0Domain,
      clientID: config.clientID,
      redirectUri: config.callbackURL,
      responseType: 'code'
    });

  var webAuth = new auth0.WebAuth(params);

  /*
   * Verify if Kerberos is possible, if it is, try to authenticate the user.
   *
   * the response from getSSOData will only have a connection and strategy if 
   * the IP address is within the Kerberos range in the connection's settings
   */
  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>
```

<div id="bypass-kerberos-at-runtime">
  ## ランタイム時にKerberosをバイパスする
</div>

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

```javascript lines theme={null}
function useKerberos() {
      // return true to use Kerberos, false to bypass
    };
    
    lock.show({rememberLastLogin: useKerberos()});
```

<div id="enable-kerberos-request-logging">
  ## Kerberos要求ログを有効にする
</div>

1. Kerberos要求の冗長ロギングを有効にするには、システムレベルの環境変数`DEBUG=kerberos-server`を追加します。
2. コネクターを再起動します。
3. 再度ログインし、詳細をログで確認します。

<div id="firefox-support-for-kerberos">
  ## Kerberosに対するFirefoxのサポート
</div>

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

1. ［Firefox］タブを開き、アドレスバーに`about:config`と入力します。
2. 警告メッセージを消し、検索ボックスに`negotiate`と入力します。
3. `network.negotiate-auth.trusted-uris`項目を検索し、ダブルクリックして値を変更します。
4. コネクターがインストールされているサーバーのドメイン名を入力します。ロードバランサーの背後に複数のコネクターのインスタンスがある場合は、バランサーのDNS名を追加します。値はURLの接頭辞またはドメインのカンマ区切りのリストを、`mydomain.com, https://myotherdomain.com`の形式で受け入れます。
5. **［OK］** をクリックします。変更を有効にするのに、サーバーを再起動する必要はありません。

<div id="https-support-for-kerberos">
  ## Kerberosに対するHTTPSのサポート
</div>

Kerberos認証はHTTP（HTTPSでなく）で行うことができます。Microsoft Office 365やその他の最新製品は、HTTPに対応していないことがあります。

この制限を解決するには、次のようにします。

1. リバースプロキシを設定し、HTTPSドメインにAD/LDAPコネクターを公開します。`SERVER_URL`（フロントエンドのURL）パラメーターを使用し、AD/LDAPコネクターが受信要求をリッスンする公共の場所を公開することができます。
2. リバースプロキシの`SERVER_URL`をデプロイされたコネクターのすべての内部インスタンスにマッピングします。
