Übersicht
Fess unterstuetzt die Integration mit LDAP-Servern (Lightweight Directory Access Protocol), was Authentifizierung und Benutzerverwaltung in Unternehmensumgebungen ermoeglicht.
Die LDAP-Integration ermoeglicht:
Benutzerauthentifizierung mit Active Directory oder OpenLDAP
Gruppenbasierte Zugriffskontrolle
Automatische Benutzerinformations-Synchronisation
Unterstuetzte LDAP-Server
Fess unterstuetzt die Integration mit den folgenden LDAP-Servern:
Microsoft Active Directory
OpenLDAP
389 Directory Server
Apache Directory Server
Andere LDAP v3-kompatible Server
Voraussetzungen
Netzwerkzugriff auf den LDAP-Server
Dienstkonto fuer LDAP-Suchen (Bind DN)
Verstaendnis der LDAP-Struktur (Base DN, Attributnamen usw.)
Grundkonfiguration
Fuegen Sie die folgende Konfiguration zu app/WEB-INF/conf/system.properties hinzu.
LDAP-Verbindungseinstellungen
# LDAP-Authentifizierung aktivieren
ldap.admin.enabled=true
# LDAP-Server-URL
ldap.provider.url=ldap://ldap.example.com:389
# Fuer sichere Verbindung (LDAPS)
# ldap.provider.url=ldaps://ldap.example.com:636
# Base DN
ldap.base.dn=dc=example,dc=com
# Bind DN (Dienstkonto)
ldap.security.principal=cn=fess,ou=services,dc=example,dc=com
# Bind-Passwort
ldap.admin.security.credentials=your_password
Benutzersuche-Einstellungen
# Benutzersuche Base DN
ldap.user.search.base=ou=users,dc=example,dc=com
# Benutzersuche-Filter
ldap.user.search.filter=(uid={0})
# Benutzername-Attribut
ldap.user.name.attribute=uid
Gruppensuche-Einstellungen
# Gruppensuche Base DN
ldap.group.search.base=ou=groups,dc=example,dc=com
# Gruppensuche-Filter
ldap.group.search.filter=(member={0})
# Gruppenname-Attribut
ldap.group.name.attribute=cn
Active-Directory-Konfiguration
Konfigurationsbeispiel fuer Microsoft Active Directory.
Grundkonfiguration
ldap.admin.enabled=true
ldap.provider.url=ldap://ad.example.com:389
ldap.base.dn=dc=example,dc=com
# Dienstkonto (UPN-Format)
ldap.security.principal=fess@example.com
ldap.admin.security.credentials=your_password
# Benutzersuche
ldap.user.search.base=ou=Users,dc=example,dc=com
ldap.user.search.filter=(sAMAccountName={0})
ldap.user.name.attribute=sAMAccountName
# Gruppensuche
ldap.group.search.base=ou=Groups,dc=example,dc=com
ldap.group.search.filter=(member={0})
ldap.group.name.attribute=cn
Active-Directory-spezifische Einstellungen
# Verschachtelte Gruppenaufloesung
ldap.memberof.enabled=true
# memberOf-Attribut verwenden
ldap.group.search.filter=(member:1.2.840.113556.1.4.1941:={0})
OpenLDAP-Konfiguration
Konfigurationsbeispiel fuer OpenLDAP.
ldap.admin.enabled=true
ldap.provider.url=ldap://openldap.example.com:389
ldap.base.dn=dc=example,dc=com
# Dienstkonto
ldap.security.principal=cn=admin,dc=example,dc=com
ldap.admin.security.credentials=your_password
# Benutzersuche
ldap.user.search.base=ou=people,dc=example,dc=com
ldap.user.search.filter=(uid={0})
ldap.user.name.attribute=uid
# Gruppensuche
ldap.group.search.base=ou=groups,dc=example,dc=com
ldap.group.search.filter=(memberUid={0})
ldap.group.name.attribute=cn
Sicherheitseinstellungen
LDAPS (SSL/TLS)
Verschluesselte Verbindungen verwenden:
# LDAPS verwenden
ldap.provider.url=ldaps://ldap.example.com:636
# StartTLS verwenden
ldap.start.tls=true
Fuer selbstsignierte Zertifikate importieren Sie das Zertifikat in den Java-Truststore:
keytool -import -alias ldap-server -keystore $JAVA_HOME/lib/security/cacerts \
-file ldap-server.crt
Passwortschutz
Passwoerter ueber Umgebungsvariablen festlegen:
ldap.admin.security.credentials=${LDAP_PASSWORD}
Rollenzuordnung
Sie koennen LDAP-Gruppen zu Fess-Rollen zuordnen.
Automatische Zuordnung
Gruppennamen werden direkt als Rollennamen verwendet:
# LDAP-Gruppe "fess-users" -> Fess-Rolle "fess-users"
ldap.group.role.mapping.enabled=true
Benutzerdefinierte Zuordnung
# Gruppennamen zu Rollen zuordnen
ldap.group.role.mapping.Administrators=admin
ldap.group.role.mapping.PowerUsers=editor
ldap.group.role.mapping.Users=guest
Benutzerinformations-Synchronisation
Sie koennen Benutzerinformationen von LDAP zu Fess synchronisieren.
Automatische Synchronisation
Benutzerinformationen bei Anmeldung automatisch synchronisieren:
ldap.user.sync.enabled=true
Zu synchronisierende Attribute
# E-Mail-Adresse
ldap.user.email.attribute=mail
# Anzeigename
ldap.user.displayname.attribute=displayName
Verbindungs-Pooling
Verbindungspool-Einstellungen zur Leistungsverbesserung:
# Verbindungspool aktivieren
ldap.connection.pool.enabled=true
# Minimale Verbindungen
ldap.connection.pool.min=1
# Maximale Verbindungen
ldap.connection.pool.max=10
# Verbindungs-Timeout (Millisekunden)
ldap.connection.timeout=5000
Failover
Failover zu mehreren LDAP-Servern:
# Mehrere URLs durch Leerzeichen getrennt angeben
ldap.provider.url=ldap://ldap1.example.com:389 ldap://ldap2.example.com:389
Fehlerbehebung
Verbindungsfehler
Symptom: LDAP-Verbindung schlaegt fehl
Pruefen:
Ist der LDAP-Server gestartet?
Ist der Port in der Firewall geoeffnet (389 oder 636)?
Ist die URL korrekt (
ldap://oderldaps://)?Sind Bind DN und Passwort korrekt?
Authentifizierungsfehler
Symptom: Benutzerauthentifizierung schlaegt fehl
Pruefen:
Ist der Benutzersuche-Filter korrekt?
Existiert der Benutzer innerhalb des Suche-Base DN?
Ist das Benutzername-Attribut korrekt?
Gruppen koennen nicht abgerufen werden
Symptom: Benutzergruppen koennen nicht abgerufen werden
Pruefen:
Ist der Gruppensuche-Filter korrekt?
Ist das Gruppenmitgliedschafts-Attribut korrekt?
Existieren die Gruppen innerhalb des Suche-Base DN?
Debug-Einstellungen
Detaillierte Protokolle ausgeben:
app/WEB-INF/classes/log4j2.xml:
<Logger name="org.codelibs.fess.ldap" level="DEBUG"/>
Referenzinformationen
Konfiguration rollenbasierter Suche - Rollenbasierte Zugriffskontrolle
SSO-Konfiguration mit Windows-Integrierte Auth - SPNEGO (Kerberos) Authentifizierung
Benutzer - Benutzerverwaltungsleitfaden