Inhaltsverzeichnis

Für die Authentifizierung/Autorisierung und Synchronisierung von Daten aus einem LDAP-Verzeichnis oder Active Directory (AD) bietet i-doit eine Schnittstelle.

Voraussetzungen

i-doit unterstützt folgende Verzeichnisdienste:

Die PHP-Extension php_ldap für die Kommunikation mit einem Active Directory (AD) bzw. LDAP-Verzeichnis muss installiert und aktiviert werden. Wer den Installationsanweisungen gefolgt ist, hat die Extension bereits auf dem System.

Nachträgliche Installation unter Debian GNU/Linux

sudo apt install php5-ldap
sudo service apache2 restart

Nachträgliche Installation unter Windows

Die Datei php.ini (in der Regel unter C:\xampp\php\php.ini) muss angepasst werden. In einem Texteditor aktiviert man das Laden der Extension php_ldap.

Aus der Zeile

;extension=php_ldap.dll

wird das ";" entfernt und somit

extension=php_ldap.dll

Manchmal kann es noch notwendig sein, die Dateien ssleay32.dll und libeay32.dll (von Version zu Version unterschiedlich, jedoch meist unter C:\xampp\apache\bin\ zu finden) in das Verzeichnis php\ zu kopieren. Danach muss noch der Apache Webserver neu gestartet werden.

Konfiguration

Die Konfiguration befindet sich in i-doit unter Verwaltung → Schnittstellen / externe Daten → LDAP. Dort können unter Server zum Einen ein oder mehrere Instanzen konfiguriert und zum Anderen eine Zuweisung von Feldern zu Attributen vorgenommen werden.

Server

Unter Verwaltung → Schnittstellen / externe Daten → LDAP → Server können ein oder mehrere Instanzen konfiguriert werden. Beim Login werden alle Server nacheinander abgefragt, bis ein Login gefunden wurde. Gibt es mehrere Mandanten, werden alle nacheinander abgefragt und die Datenbanken für den Login angeboten, wenn die Abfrage ein positives Ergebnis geliefert hat.

LDAP Verbindung für Lookups (lesend)

 

FeldnameInhalt
AktivSoll der Server beim Login mit abgefragt werden?
Directory*Pflichtfeld: Welche Art Directory wird abgefragt?
LDAP-VersionIn welcher Version ist das Directory vorhanden? (Standard: 3)
IP / Hostname*Pflichtfeld: Die IP oder der Hostname des Servers
Port*Pflichtfeld: Über welchen Port wird die Abfrage durchgeführt? (Standard: 389)
TLSSoll die Abfrage verschlüsselt werden? Achtung: Bei selbst-signierten Zertifikaten oder welchen, deren Zertifikat der Root CA nicht dem Betriebssystem, unter dem i-doit installiert ist, bekannt sind, wird die Authentifizierung fehlschlagen. Wie das Zertifikat aktzeptiert werden kann, ist den jeweiligen Anleitungen der Betriebssysteme zu entnehmen. Unter Debian-basierten Betriebssystemen wird das Zertifikat der Root CA in das Verzeichnis /usr/local/share/ca-certificates/ kopiert und anschließend mit sudo update-ca-certificates aktiviert.
Admin Benutzername (DN)*

Pflichtfeld: Der Pfad bis zum Benutzerobjekt, das Leserechte auf das Directory hat.

(Beispiel: CN=idoit,OU=tree,DC=synetics,DC=int)

Passwort*Pflichtfeld: Das Passwort des darüber angegebenen Benutzers
TimelimitLimit für die maximale Dauer der Abfrage. (Standard: 30)

 

LDAP-Parameter für i-doit-Login

Die hier angegebenen Parameter bestimmen, wo im Directory nach Benutzern gesucht werden soll. 

 

FeldnameInhalt
Filter

Der Filter wird durch die im unteren Bereich definierten Werte automatisch gefüllt und kann nicht direkt über die Oberfläche abgeändert werden.

Nach Benutzern suchen in (OU)*

Pflichtfeld: Der Pfad bis zur Organisationseinheit, in der die Benutzer im Directory abgelegt wurden.

(Beispiel: OU=tree,DC=synetics,DC=int)

Rekursive Suche

Organisationseinheit durchsucht. Bei großen Directories ist dies nicht empfehlenswert und sollte durch die Anlage von mehreren Servern umgangen werden.

Des Weiteren kann der Filter noch ausdefiniert werden. Bei einer einzigen Filterzeile haben die Optionen dahinter noch keine Auswirkungen. Erst wenn über  "Filter hinzufügen" die Abfrage erweitert wird, kommen die weiteren Optionen zur Geltung.

An letzten Filter anhängen:

(&(objectClass=user)(test=test))

Als neuen Filter anhängen:

(&(objectClass=user)(&(test=test)))

Neuen Term bilden:

(&(&(objectClass=user))(test=test))

Im untersten Bereich lässt sich dann die oben festgelegte Konfiguration testen. Bestenfalls erscheint die Meldung:

Connection OK!
XX object(s) found in OU=tree,OU=synetics,DC=synetics,DC=int.


Sollte bei Misserfolg die Fehlermeldung noch nicht eindeutig genug sein, kann das Debug-Level hochgesetzt werden, sodass weitere Ausgaben im Apache Error Log mitgeschrieben werden. Das Error Log ist unter Debian-basierten Betriebssystemen unter /var/log/apache2/error.log zu finden.

Directories

Über Verwaltung → Schnittstellen / externe Daten → LDAP → Directories lässt sich dann das Mapping einrichten. Es wird dafür genutzt, beim Login grundlegende Informationen zu dem einloggenden Benutzer abzufragen und in dem in i-doit zu erstellenden Benutzer abzulegen. Hier kann nach der Auswahl des zutreffenden Directories die Zuweisung vorgenommen werden. Standardmäßig sind die Felder jedoch schon gefüllt und brauchen in der Regel nicht verändert zu werden.

 

Import eigener LDAP-Attribute

Es ist auch möglich, eigene Attribute aus dem LDAP über den Import von Personen in den Stammdaten zu hinterlegen. Dafür können weitere Felder für diese Kategorie unter Verwaltung CMDB-Einstellungen → Kategorieerweiterungen konfiguriert werden. Sobald ein Name definiert wurde, wird das Feld mit derselben Bezeichnung angezeigt. Die Befüllung findet dann über den zugehörigen Key statt.

Regelmäßige Synchronisation

Die dafür benötigte Konfiguration wurde in den vorherigen Schritten bereits vorgenommen. Für die Synchronisation muss nun noch der passende Controller Handler eingerichtet werden. Außerdem können noch weitere zu synchronisierende Felder konfiguriert werden.

Erweiterte Konfiguration

Die Konfiguration muss in der Handler-Konfiguration vorgenommen werden. Ein Beispiel dazu ist im Installationsverzeichnis von i-doit unter src/handler/config/examples/isys_handler_ldap.inc.php zu finden. Diese Datei kann mit Login-Daten, Tenant und Attribut-src/handler/config/ verschoben werden.

ParameterZweck
import_roomsAuf true gesetzt werden auch Räume mit der Synchronisation angelegt (Standard: false)
defaultCompany

Hierdurch werden durch die LDAP-Synchronisation hinzugefügte Benutzer automatisch der konfigurierten

Organisation zugewiesen. (Standard: leer)

deletedUsersBehaviour

Kann auf archive und delete gesetzt werden um Benutzer auf archiviert bzw. gelöscht zu setzen, die nicht mehr über die Synchronisation gefunden werden. Ein archivierter/gelöschter Benutzer kann sich nicht mehr in i-doit anmelden.

(Standard: archive)

roomsWie in dem Beispiel kann hier eine Zuweisung von Benutzer zu einem Raum vordefiniert werden, die bei der Synchronisation vorgenommen wird. Die Zuweisung wird über die Kontaktzuweisung ohne eine Rolle realisiert.
attributes

Hiermit werden die jeweiligen Felder aus dem Directory mit Attributen in i-doit verknüpft. Diese ergänzen die zugewiesenen Attribute aus

dem oberen Teil der Anleitung.

autoReactivateUsersIst nur für Novel Directory Services (NDS) und OpenLDAP relevant. Hierdurch werden bei der Synchronisation erst mal alle Benutzer wieder aktiviert und nach dem regulären Prinzip wieder deaktiviert, falls zutreffend.

Controller

Um den Controller richtig bedienen zu können, sollte der Artikel dazu bekannt sein. Eine einfache Synchronisation ohne die erweiterte Konfiguration dient der Handler ldap:

./controller -uBENUTZERNAME -pPASSWORT -i MANDANTEN-ID -m ldap sync 

Mit der erweiterten Konfiguration kann der größte Teil weggelassen werden:

./controller -m ldap sync
Soll nur mit einem LDAP-Server synchronisiert werden, kann hinter das sync noch die ID des Servers angehangen werden. Die ID steht in der Listenansicht der LDAP-Server vorneweg.

 

./controller -m ldap sync 1

Weiter kann über den Controller der Status jedes LDAP-Benutzers wieder auf normal gesetzt werden. Dafür ist das folgende Kommando notwendig:

./controller -m ldap fixstatus

Mit der erweiterten Konfiguration für den Handler addldapdn kann der DN der einzelnen Benutzer aktualisiert werden. Dies geschieht zwar auch über den sync, dauert aber damit jedoch etwas länger. Der DN wird über die Kategorie LDAP sichtbar, die dem Objekttyp Personen zugeordnet werden kann.

./controller -m addldapdn

Automatische Zuweisung von Personen zu Personengruppen

Die automatische Zuweisung sorgt dafür, dass nach dem Login automatisch die für die Personengruppe festgelegten Berechtigungen zugewiesen werden. Damit die Zuweisung erfolgen kann, muss in den Stammdaten einer Personengruppe das Attribut LDAP-Gruppe (Mapping) mit einer validen Gruppe aus LDAP/AD gefüllt werden. Loggt sich ein Benutzer ein oder wird die Synchronisation ausgeführt, werden automatisch auch die dem Benutzerobjekt im Directory zugewiesenen Gruppen abgefragt und mit dem Attribut LDAP-Gruppe (Mapping) der Personengruppen verglichen. Gibt es eine Übereinstimmung wird die Gruppe zugewiesen und die weiteren Gruppen abgefragt.

memberOf bei OpenLDAP

Die automatische Zuweisung beruht auf der LDAP-Abfrage, in welchen Gruppen ein Benutzer ist. Hierbei spielt das Attribut memberOf eine wichtige Rolle. Dieses Attribut muss als Overlay verfügbar sein, was in vielen Standard-Installationen von OpenLDAP nicht der Fall ist. Gute Artikel für die nötige Konfiguration befinden sich hier und hier.

Logging

Unterhalb von log/ im Installationsverzeichnis von i-doit befindet sich ein Logfile mit dem Namen ldap_debug.txt. Das Logging lässt sich unter Verwaltung → Systemeinstellungen → Logging → LDAP Debug (de-)aktivieren.