複数の LDAP ディレクトリに対して LDAP 認証を設定する方法

質問/問題

複数の LDAP ディレクトリおよびサーバーを設定して認証することができます。このためこれは、複数の LDAPLoginModule セクションを設定する必要があります。

CRX2.0以降で、複数の LDAPLoginModule などの設定は有効ではなく、1つの設定だけが行われます。これにより、複数のディレクトリの LDAP 認証が有効になっていないことを意味します。

回答 / 解決策

複数の LDAP サーバーに対して認証をサポートするための回避策があります。主な問題は、CRX2.0 で、廃止された LDAP ディレクトリの固有 ID を基本的に設定された principal_provider.name 属性です。代わりに、principal_provider.class 属性は、一意の識別子として使用されます。

回避策として、一意のクラス名は、それぞれ設定済みの LDAPLoginModule の principal_provider.class 属性に対して設定されている必要があります。デフォルトのみ com.day.crx.security.principals.LDAPPrincipalProvider クラスを拡張して、6つの個別クラスを含む JAR ファイルは、この記事に添付されています。

  • com.day.daycare.ldap.LDAP1
  • com.day.daycare.ldap.LDAP2
  • com.day.daycare.ldap.LDAP3
  • com.day.daycare.ldap.LDAP4
  • com.day.daycare.ldap.LDAP5
  • com.day.daycare.ldap.LDAP6

multi-ldap-patch.jar ファイルを CRX webapps の WEB-INF/lib フォルダー、例えば crx-quickstart/server/runtime/0/_crx/WEB-INF/lib へデプロイし、LoginModules を適宜に設定します。

次に例を示します。

com.day.crx {
   com.day.crx.security.authentication.CRXLoginModule sufficient;
   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.crx.security.principals.LDAPPrincipalProvider"
       host="MyHost1"
       ...;

   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.daycare.ldap.LDAP1"
       host="MyHost2"
       ...;

   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.daycare.ldap.LDAP2"
       host="MyHost3"
       ...;
}

CRX 2.2 / 2.3

注意:CRX2.2の現在のリリースでは、この問題は修正されました。principal_provider.name 属性が再度追加されています。つまり、principal_provider.class 属性用に設定された一意のクラス名を設定することが必要ではありません。

以下は CRX 2.2 と複数の LDAP サーバーの使用例です。

com.day.crx {
   com.day.crx.security.authentication.CRXLoginModule sufficient;
   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.crx.security.principals.LDAPPrincipalProvider"
       principal_provider.name="ldap1"
       host="MyHost1"
       ...;

   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.crx.security.principals.LDAPPrincipalProvider"
       principal_provider.name="ldap2"
       host="MyHost2"
       ...;

   com.day.crx.security.ldap.LDAPLoginModule sufficient
       principal_provider.class="com.day.crx.security.principals.LDAPPrincipalProvider"
       principal_provider.name="ldap3"
       host="MyHost3"
       ...;
}

適用

CRX 2.0 / 2.1 / 2.2 / 2.3

ダウンロード

アドビのロゴ

アカウントにログイン