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