Frage / Problem

Es ist möglich, mehrere LDAP-Verzeichnisse und Server für die Authentifizierung zu konfigurieren. Dazu müssen mehrere LDAPLoginModule-Abschnitte konfiguriert werden.

Ab CRX2.0 sind mehrere solcher LDAPLoginModule-Konfigurationen nicht mehr wirksam, es wird nur eine Konfiguration vorgenommen. Dies bedeutet, dass die LDAP-Authentifizierung für mehrere Verzeichnisse nicht möglich ist.

Antwort / Auflösung

Es gibt eine Problemumgehung, um die Authentifizierung für mehrere LDAP-Server zu unterstützen. Das Hauptproblem ist, dass bei CRX2.0 das Attribut principal_provider.name, das hauptsächlich die eindeutige ID eines LDAP-Verzeichnisses lieferte, nicht mehr verwendet wird. Stattdessen wird das Attribut principal_provider.class als eindeutiger Bezeichner verwendet.

Als Behelfslösung müssen für jedes konfigurierte LDAPLoginModule eindeutige Klassennamen für das Attribut principal_provider.class konfiguriert werden. Diesem Artikel ist eine JAR-Datei angefügt mit sechs eindeutigen Klassen, die die Standardklasse com.day.crx.security.principals.LDAPPrincipalProvider lediglich erweitern:

  • 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

Bitte stellen Sie die Datei multi-ldap-patch.jar im CRX Webapp-Ordner WEB-INF/lib, z. B. crx-quickstart/server/runtime/0/_crx/WEB-INF/lib, bereit und konfigurieren Sie die LoginModule entsprechend.

Beispiel:

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

Hinweis: Dieses Problem wurde für die aktuelle CRX 2.2-Version behoben. Das Attribut principal_provider.name wurde erneut hinzugefügt. Daher ist es nicht mehr erforderlich, eindeutige Klassennamen für das Attribut principal_provider.class zu konfigurieren.

Im Folgenden finden Sie ein Beispiel, das mit CRX 2.2 und mehreren LDAP-Servern funktioniert:

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"
       ...;
}

Gilt für

CRX 2.0 / 2.1 / 2.2 / 2.3

Herunterladen

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie