Einführung / Konfiguration des FirstSpirit-Servers / Anbindung LDAP-Server

Anbindung an einen LDAP-Server

Authentifizierung über LDAP

Es gibt in FirstSpirit die Möglichkeit die Authentifizierung eines Benutzers mithilfe eines LDAP-Servers durchzuführen. Ein Benutzer bekommt ein Flag zugewiesen, welches anzeigt, ob er ein externer Benutzer ist oder nicht. Im FirstSpirit-Server lassen sich verschiedene LDAP-Konfigurationen (sogenannte „Sections“) anlegen und konfigurieren. Ein LDAP-Benutzer wird dabei mit genau einer Section assoziiert (siehe Benutzer bearbeiten). Die Authentifizierung kann potentiell auf drei unterschiedliche Arten erfolgen:

  1. LDAP Bind: Name und Passwort werden an den LDAP-Server geschickt. Dazu muss der „Distinguished Name“ (DN), das heißt der eindeutige Schlüssel zur Identifizierung des Benutzers innerhalb des LDAP-Servers bekannt sein. Falls der DN existiert, wird das übergebene Passwort mithilfe der „Bind“-Operation geprüft. Beispiel für die Verwendung von LDAP Bind
  2. LDAP Search & Bind: Falls der „Distinguished Name“ (DN) eines Benutzers nicht bekannt ist, kann man ihn innerhalb eines Teilbaums des LDAP-Servers suchen. Dazu muss ein Suchfilter und ein Startknoten definiert werden. Beispiel:
    SEARCH.FILTER=(cn=$USER_LOGIN$)
    SEARCH.BASE_DN=dc=mycompany,dc=com
    Dieser Filter sucht nach allen Einträgen im LDAP-Baum, bei denen das Attribut „cn“ gleich dem eingegebenen Login-Namen ist. Startknoten ist der Knoten mit dem DN dc=mycompany,dc=com. Wird ein solcher Knoten gefunden, wird ein „Bind“ ausgeführt. (siehe LDAP Bind).
  3. LDAP Search & Compare: (Diese Option funktioniert äquivalent zu Punkt 2.) Allerdings wird, nachdem ein passender Knoten gefunden worden ist, keine „Bind“-Operation durchgeführt. Stattdessen wird das eingegebene Passwort mit einem beliebigen LDAP-Attribut verglichen.
    Beispiel:
    SEARCH.COMPARE.PASSWORD_ATTRIBUTE_NAME=mail
    In diesem Fall muss das eingegebene Passwort mit dem Inhalt des „mail“-Attributes des LDAP-Knotens übereinstimmen.

Bei erfolgreicher LDAP-Authentifizierung wird der Benutzer, falls er bisher nicht auf dem FirstSpirit-System bekannt ist, als externer Benutzer auf dem FirstSpirit-Server angelegt (siehe Benutzer zum Projekt hinzufügen). Dazu muss der Konfigurationsparameter JAAS.autoCreateUser auf den Wert true konfiguriert sein (Standardeinstellung, vgl. Allgemeine Hinweise zur JAAS-Konfiguration). Der Login des externen LDAP-Benutzers wird dabei automatisch nach FirstSpirit übernommen. Das Passwort eines externen LDAP-Benutzers wird aber nach der erstmaligen erfolgreichen Authentifizierung in FirstSpirit geleert. Logins mit einem leeren Passwort werden vom FirstSpirit-Server abgewiesen. Ein externer LDAP-Benutzer kann sich somit nur am FirstSpirit-Server anmelden, wenn der LDAP-Server während des Anmeldevorgangs erreichbar ist. Bei internen LDAP-Benutzern bleibt das Passwort in FirstSpirit erhalten. Der Benutzer kann sich in diesem Fall sowohl mit dem FirstSpirit-Passwort als auch mit dem LDAP-Passwort anmelden.

Eine Sonderrolle bei der LDAP-Anmeldung hat der Administrator (Login: „Admin“). Dieser Benutzer wird bei der Installation des FirstSpirit-Servers automatisch angelegt. Das Passwort des Administrators wird nie geleert, unabhängig davon ob er als „externer“ oder „interner“ Benutzer konfiguriert wurde. Es wird daher empfohlen, das Passwort des Administrators (initial: „Admin“) direkt nach der Installation des FirstSpirit-Servers zu ändern.

LDAP-Attribute an einen FirstSpirit Benutzer binden

Neben der reinen Authentifizierung ist es möglich, beliebige LDAP-Attribute an die Benutzerattribute eines CMS-Benutzers zu binden. Dazu muss der Parameter LDAP.IMPORT_USER in der Konfigurationsdatei fs-server.conf auf den Wert TRUE gesetzt sein.

Außerdem muss innerhalb der fs-server.conf eine Attribut-Zuordnung erfolgen:

LDAP.IMPORT_USER.<cms-attribut>_ATTRIBUTE=<ldap-attribute->

Alle so definierten LDAP-Attribute werden beim ersten Login des jeweiligen Benutzers automatisch importiert.

Sollen mehrere Attribute aus dem LDAP-Server auf ein Attribut in FirstSpirit abgebildet werden, so müssen die einzelnen Attribute per Komma (,) getrennt werden.

Über den Parameter

LDAP.MULTI_VALUE_SEPARATOR=[Trennzeichen]

kann das Trennzeichen definiert werden, mit dem die ausgelesenen Attributwerte getrennt werden. Mit der Konfiguration

LDAP.MULTI_VALUE_SEPARATOR=:
LDAP.IMPORT_USER.NAME_ATTRIBUTE=givenName,sn

können z. B. Vor- und Nachname mit einem Doppelpunkt getrennt ausgegeben werden.

Folgende CMS-Benutzerattribute können beim Login durch LDAP-Attribute überschrieben werden:

  • Benutzername: Name des FirstSpirit Benutzers
  • EMail: E-Mail-Adresse des FirstSpirit Benutzers
  • Telefon: Telefonnummer des FirstSpirit Benutzers
  • Kürzel: Kürzel des FirstSpirit Benutzers

Verwendung von TLS oder SSL

Falls der FirstSpirit-Server über TLS/SSL den LDAP-Server anbinden soll, muss zunächst das Zertifikat des LDAP-Servers in den Zertifikatsspeicher von FirstSpirit importiert werden. Dazu wird das Java-Werkzeug keytool aus dem „bin“-Verzeichnis des JDKs genutzt. Falls das Zertifikat in einem anderen Format vorliegt, kann es über das externe Dienstprogramm openssl in das von keytool importierbare PEM-Format konvertiert werden. Beispielaufruf zur Konvertierung

openssl x509 -inform DER -in mycompany.der -outform PEM -out mycompany.crt

Liegt das Zertifikat z. B. in der Datei „mycompany.crt“ und wurde zuvor in das Installationsverzeichnis des FirstSpirit-Servers gewechselt, so lässt es sich folgendermaßen in den Zertifikatspeicher importieren:

keytool -import -file mycompany.crt –alias ldapserver.mydomain.net -keystore  
conf/fs-truststore.jks –storepass changeit

Zusätzlich müssen Pfad und Passwort des Zertifikatsspeichers als Java-Parameter in fs-wrapper.conf eingetragen werden:

wrapper.java.additional.X=-Djavax.net.ssl.trustStore=conf/fs-truststore.jks  
wrapper.java.additional.X=-Djavax.net.ssl.trustStorePassword=changeit
Wichtig Für alle wrapper.java.additional.*-Parameter gilt: nur ein Java-Parameter pro Zeile. Alle angegebenen Java-Parameter müssen eine eindeutige Nummerierung (X) enthalten. Solange der Parameter wrapper.ignore_sequence_gaps auf true steht, braucht die Nummerierung nicht fortlaufend zu sein.

Für Testinstallationen kann ein selbstsigniertes Zertifikat verwendet werden, das folgendermaßen erstellt wird, nachdem in das Installationsverzeichnis des FirstSpirit-Servers gewechselt wurde:

keytool -genkey -alias ldapserver.mydomain.net -keyalg RSA -validity 1000 - 
keystore conf/fs-keystore.jks -storepass changeit

Bei der Abfrage nach „Vor- und Nachname“ muss der vollqualifizierte Hostname (Hostname inkl. Domain) angegeben werden.

Nach dem Neustart des FirstSpirit-Servers kann die Kommunikation zum LDAP-Server über TLS oder SSL erfolgen.

© 2005 - 2022 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2022.12 | Datenschutz