Übersicht
Fess unterstützt die Integration mit LDAP-Servern (Lightweight Directory Access Protocol) und ermöglicht damit Authentifizierung und Benutzerverwaltung in Unternehmensumgebungen.
Die LDAP-Integration ermöglicht:
Benutzerauthentifizierung (Anmeldung) über Active Directory oder OpenLDAP
Gruppen- und rollenbasierte Zugriffskontrolle
Verwaltung von LDAP-Benutzern, -Rollen und -Gruppen über die Verwaltungsoberfläche (optional)
Unterstützte LDAP-Server
Fess unterstützt die Integration mit 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 für LDAP-Suchen (Bind-DN)
Kenntnisse der LDAP-Struktur (Base-DN, Attributnamen usw.)
Übersicht der Konfigurationsmethoden
Die LDAP-Konfiguration von Fess wird je nach Verwendungszweck an zwei Stellen verwaltet.
- Verbindungs- und Authentifizierungseinstellungen (Verwaltungsoberfläche /
system.properties) Dies sind Einstellungen für die Verbindung zum LDAP-Server und die Anmeldeauthentifizierung. Sie können im Abschnitt „LDAP“ auf der Seite „System > Allgemein“ der Verwaltungsoberfläche konfiguriert werden und werden in
app/WEB-INF/conf/system.propertiesgespeichert.- LDAP-Verwaltungsfunktionen und Verhaltenseinstellungen (
fess_config.properties) Dies sind Einstellungen für die Funktion zur Verwaltung von LDAP-Benutzern, -Rollen und -Gruppen über die Verwaltungsoberfläche sowie für das Verhalten bei der Rollenauflösung. Diese sind in
app/WEB-INF/classes/fess_config.propertiesdefiniert. Zum Ändern von Werten bearbeiten Sie diese Datei direkt.
Bemerkung
Wenn Sie ausschließlich die Anmeldeauthentifizierung verwenden möchten, genügen die „Verbindungs- und Authentifizierungseinstellungen“. Die „LDAP-Verwaltungsfunktion“ (ldap.admin.enabled) ist nur erforderlich, wenn Sie LDAP-Benutzer, -Rollen oder -Gruppen über die Verwaltungsoberfläche erstellen, aktualisieren oder löschen möchten.
Verbindungs- und Authentifizierungseinstellungen
Diese Einstellungen können im Abschnitt „LDAP“ unter „System > Allgemein“ der Verwaltungsoberfläche konfiguriert werden und werden in app/WEB-INF/conf/system.properties gespeichert. Sie können die Datei auch direkt bearbeiten.
Konfigurationsbeispiel (bei direkter Bearbeitung von system.properties):
Bemerkung
Der %s-Platzhalter wird durch Javas String.format() verarbeitet. ldap.security.principal, ldap.account.filter, ldap.group.filter und alle administrativen Filter verwenden das %s-Format (nicht das {0}-Format). Der an die Filter übergebene Benutzername wird in Fess intern automatisch gegen LDAP-Injection-Angriffe escapet.
LDAP-Verwaltungsfunktionen und Verhaltenseinstellungen
Die folgenden Eigenschaften sind in app/WEB-INF/classes/fess_config.properties definiert. Zum Ändern von Werten bearbeiten Sie diese Datei.
Aktivierung der Verwaltungsfunktion
Filter und Basis-DNs für die Benutzer-/Rollen-/Gruppenverwaltung
Wird verwendet, um LDAP-Einträge über die Verwaltungsoberfläche zu bearbeiten, wenn ldap.admin.enabled=true gesetzt ist.
Steuerung der Rollenauflösung und des Verhaltens
Steuert das Verhalten bei der Rollen- und Gruppenauflösung nach der Anmeldung.
Reservierte Administrator-Benutzernamen
Die in authentication.admin.users aufgeführten Namen reserviert Fess für sich selbst. Für SSO wirken sie als Sperrliste: SpnegoAuthenticator löst für einen übereinstimmenden Namen keine Anmeldeinformationen auf, und auch die Formularanmeldung führt einen solchen Namen nicht zu LDAP.
Ein Verzeichnis unterscheidet bei einem Kontonamen nicht zwischen Groß- und Kleinschreibung – Active Directory stellt für jede Schreibweise ein Ticket aus. Ein exakter Vergleich lässt dasselbe Konto daher allein durch eine andere Schreibweise herein. authentication.admin.users.ignore.case bestimmt, wie verglichen wird.
Bemerkung
Ist ldap.provider.url gesetzt, ignoriert auto die Groß- und Kleinschreibung. Ein Verzeichniskonto, dessen Name sich von einem reservierten nur in der Schreibweise unterscheidet, kann sich dann nicht mehr anmelden und wird nicht mehr aus der Administrationsoberfläche in das Verzeichnis synchronisiert. Setzen Sie authentication.admin.users.ignore.case=false, um weiterhin exakt zu vergleichen.
Attributzuordnung
Die Zuordnung von LDAP-Attributen zu Fess-Benutzerattributen wird über ldap.attr.*-Eigenschaften definiert. In der Regel ist keine Änderung erforderlich, sie kann jedoch bei abweichendem Schema angepasst werden. Typische Beispiele:
Bemerkung
Einige Eigenschaften stimmen nicht mit dem LDAP-Attributnamen überein, z. B. wird ldap.attr.state auf st und ldap.attr.city auf l gemappt. Die vollständige Liste finden Sie in fess_config.properties in den Zeilen, die mit ldap.attr. beginnen.
Active-Directory-Konfiguration
Konfigurationsbeispiel für Microsoft Active Directory (system.properties oder Verwaltungsoberfläche).
Zur Auflösung verschachtelter Gruppen (Nested Groups) kann die Active-Directory-spezifische LDAP_MATCHING_RULE_IN_CHAIN-Regel verwendet werden.
OpenLDAP-Konfiguration
Konfigurationsbeispiel für OpenLDAP.
Bemerkung
Standard-OpenLDAP verfügt nicht über das Attribut memberOf, daher werden Gruppen über ldap.group.filter aufgelöst. Wenn das memberof-Overlay aktiviert ist, kann auch ldap.memberof.attribute verwendet werden.
Sicherheitseinstellungen
LDAPS (SSL/TLS)
Verschlüsselte Verbindung verwenden:
Bei selbstsignierten Zertifikaten importieren Sie das Zertifikat in den Java-Truststore.
Passwortschutz
ldap.admin.security.credentials wird in system.properties gespeichert. Die über die Verwaltungsoberfläche eingegebenen Anmeldedaten werden intern verschlüsselt abgelegt. Beschränken Sie die Dateizugriffsberechtigungen entsprechend.
Failover
Um ein Failover auf mehrere LDAP-Server zu konfigurieren, geben Sie in ldap.provider.url mehrere URLs durch Leerzeichen getrennt an.
Fehlerbehebung
Verbindungsfehler
Symptom: LDAP-Verbindung schlägt fehl
Zu prüfen:
Ist der LDAP-Server gestartet?
Ist der Port in der Firewall geöffnet (389 oder 636)?
Ist
ldap.provider.urlkorrekt (ldap://oderldaps://)?Sind
ldap.admin.security.principalund das Passwort korrekt?
Authentifizierungsfehler
Symptom: Benutzerauthentifizierung schlägt fehl
Zu prüfen:
Ist die Vorlage in
ldap.security.principalkorrekt (enthält sie%s)?Existiert der Benutzer innerhalb des angegebenen Basis-DN?
Ist
ldap.account.filterkorrekt?
Gruppen/Rollen können nicht abgerufen werden
Symptom: Gruppen oder Rollen des Benutzers können nicht abgerufen werden
Zu prüfen:
Ist
ldap.group.filterkorrekt?Ist
ldap.memberof.attributekorrekt (bei Active Directory)?Befinden sich die Gruppen innerhalb des Suche-Basis-DN?
Sind die
ldap.role.search.*.enabled-Einstellungen aktiviert?
Benutzerverwaltung über die Verwaltungsoberfläche nicht möglich
Symptom: LDAP-Benutzer können über die Verwaltungsoberfläche nicht erstellt, bearbeitet oder gelöscht werden
Zu prüfen:
Ist
ldap.admin.enabledauftruegesetzt?Sind die administrativen Basis-DNs wie
ldap.admin.user.base.dnkorrekt?Hat das Dienstkonto von
ldap.admin.security.principalSchreibrechte?
Debug-Einstellungen
Um detaillierte Protokolle auszugeben, fügen Sie einen Logger in app/WEB-INF/classes/log4j2.xml hinzu.
Referenzinformationen
Konfiguration rollenbasierter Suche - Rollenbasierte Zugriffskontrolle
SSO-Konfiguration mit Windows-integrierter Authentifizierung - SPNEGO (Kerberos)-Authentifizierung
Benutzer - Benutzerverwaltungsleitfaden