LDAP/Active-Directory-Sync einrichten
i-doit kann Benutzer aus einem LDAP-Verzeichnis (z.B. Microsoft Active Directory) importieren und authentifizieren.
Voraussetzungen
- PHP-Extension
php-ldapinstalliert (php -m | grep ldapzur Prüfung) - Der i-doit-Server muss den LDAP-Server per Netzwerk erreichen können (Port 389 bzw. 636)
- SELinux-Systeme:
setsebool -P httpd_can_connect_ldap on
Installation unter Debian/Ubuntu:
sudo apt install php-ldap
sudo service apache2 restart
Schritt 1: LDAP-Server konfigurieren
Pfad: Verwaltung > Import & Schnittstellen > LDAP > Server
| Parameter | Beschreibung | Beispiel |
|---|---|---|
| Verzeichnistyp | Active Directory, OpenLDAP oder eDirectory | Active Directory |
| Host | Hostname des LDAP-Servers (FQDN verwenden, nicht IP) | dc01.firma.local |
| Port | 389 (Standard) oder 636 (LDAPS) | 389 |
| TLS | Verschlüsselte Verbindung empfohlen | Ja |
| Admin-DN | Bind-Benutzer mit Leserechten | CN=idoit,OU=Service,DC=firma,DC=local |
| Passwort | Passwort des Bind-Benutzers | |
| LDAP Paging | Bei großen Verzeichnissen aktivieren | Ja, Limit 500 |
Wichtig: Verwenden Sie den Hostnamen (FQDN), nicht die IP-Adresse. Bei TLS-Verbindungen wird das Zertifikat gegen den Hostnamen validiert.
Schritt 2: Verzeichnis (Directory) konfigurieren
Pfad: Verwaltung > Import & Schnittstellen > LDAP > Directories
| Parameter | Beschreibung | Beispiel |
|---|---|---|
| Search Base (OU) | Ausgangs-OU für die Suche | OU=Benutzer,DC=firma,DC=local |
| Rekursive Suche | Unterordner einbeziehen | Bei großen Verzeichnissen deaktivieren |
| Filter | LDAP-Filter für die Objektsuche | (&(objectClass=user)(objectCategory=person)) |
Über den Button Test die Verbindung und die Anzahl gefundener Objekte prüfen. Falls null Objekte gefunden werden: Filter oder OU prüfen.
Nützliche LDAP-Filter
| Filter | Beschreibung |
|---|---|
(objectClass=user) |
Alle Benutzer |
(&(objectClass=user)(userAccountControl=512)) |
Nur aktivierte Konten |
(|(objectClass=user)(objectClass=group)) |
Benutzer und Gruppen (für Sync) |
(&(objectClass=user)(memberOf=CN=i-doit,CN=Users,DC=firma,DC=local)) |
Benutzer einer bestimmten Gruppe |
Schritt 3: Synchronisation ausführen
Per CLI (empfohlen)
sudo -u www-data php console.php ldap-sync \
--user admin --password admin \
--tenantId 1 --ldapServerId 1 --verbose
Automatisiert per Cronjob
*/30 * * * * www-data /usr/bin/php /var/www/html/console.php ldap-sync \
-c /var/www/html/src/handler/config/ldap-sync.ini
Log-Dateien
Die Sync-Protokolle finden sich unter: <i-doit>/log/ldap_YYYY-MM-DD.log
Das Logging muss im Admin-Center unter System Settings aktiviert werden.
Gruppenbasierte Zuordnung
Personen können automatisch i-doit-Personengruppen zugeordnet werden:
- In i-doit eine Personengruppe öffnen
- Im Feld "LDAP-Gruppe (Mapping)" den vollständigen DN der AD-Gruppe eintragen
- Beim nächsten Sync werden Benutzer automatisch der Gruppe zugeordnet
OpenLDAP: Das memberOf-Attribut erfordert das memberOf-Overlay auf dem Server.
TLS/LDAPS einrichten
Debian/Ubuntu
- Zertifikat vom Windows CA im DER-Format exportieren
- Auf den i-doit-Server übertragen
- Konvertieren und installieren:
openssl x509 -inform der -outform pem \
-in /tmp/dc-cert.cer \
-out /usr/local/share/ca-certificates/dc-cert.crt
sudo update-ca-certificates
sudo service apache2 restart
Die Dateiendung muss .crt sein — andere Endungen werden von update-ca-certificates ignoriert.
Zwei Verschlüsselungsmodi
| Modus | Port | Beschreibung |
|---|---|---|
| LDAPS | 636 | Verschlüsselung startet sofort |
| STARTTLS | 389 | Verschlüsselung wird nach Verbindungsaufbau initiiert |
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| TLS-Verbindung schlägt fehl | Zertifikat nicht importiert oder falsches Format | DER exportieren, als PEM mit .crt-Endung konvertieren, update-ca-certificates
|
| Zertifikatsvalidierung fehlerhaft | IP-Adresse statt Hostname verwendet | FQDN des Servers in der Konfiguration verwenden |
| Login dauert sehr lange (30s+) | DNS-Auflösung langsam | DNS prüfen, ggf. Hostname in /etc/hosts eintragen |
| Benutzer werden archiviert |
objectSID nicht als Identifizierungsmerkmal konfiguriert |
Im Directory das Feld "Unique Identifier" auf objectSID setzen |
| Gruppen werden nicht synchronisiert |
memberOf-Attribut nicht verfügbar |
Bei OpenLDAP: memberOf-Overlay aktivieren |
| "Can't contact LDAP server" | Port blockiert | Firewall prüfen: 389 oder 636 |
Diagnose-Checkliste
- Ist
php-ldapinstalliert? (php -m | grep ldap) - Ist der LDAP-Server erreichbar? (
telnet dc01.firma.local 389) - Wird der Hostname (nicht IP) in der Konfiguration verwendet?
- Löst DNS den Hostnamen auf?
- Bei TLS: Liegt das Zertifikat unter
/usr/local/share/ca-certificates/mit.crt-Endung? - Wurde
update-ca-certificatesausgeführt? - Wurde Apache nach Zertifikats-/Konfigurationsänderungen neu gestartet?
- Zeigt der Verbindungstest "Connection OK"?
- Gibt der LDAP-Filter Ergebnisse zurück?
- Log-Dateien prüfen:
/var/log/apache2/error.logund<i-doit>/log/ldap_*.log
Ausführliche Dokumentation: LDAP in der Knowledge Base | LDAP via TLS
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.