Dies ist eine alte Version des Dokuments!
Benutzerverwaltung mit LDAP
Im Sternenlabor gibt es aktuell für die Mitglieder verschiedene Dienste. Dies sind z.B. das DokuWiki eine Next Cloud und vereinonline. Demnächst startet auch die Integration von Fabaccess, zur Zugangssteuerung von Geräten. Weiter wünschenswerte Dienste wären ein GIT-Server (Gitea) sowie ein Passwortmanager zum Verteilen von Passwörtern an verschiedene Gruppen (https://github.com/bitwarden/serverBitwarden).
Bisher hat jeder Dienst seine eigene Benutzerverwaltung, was die folgenden Nachteile mit sich bringt:
- Jedes Mitglied muss sich separat an jedem Dienst anmelden
- Der Benutzername kann für jeden Dienst anders lauten
- Jeder Dienst hat ein separates Passwort
- Gruppen wie z.B. „Bereichsleiter“ müssen pro Dienst verwaltet werden
- Höherer Verwaltungsaufwand bei Austritt (Löschen mehrere Konten)
Die Idee ist, alle Benutzer über einen zentralen Server zu verwalten. Hierzu wird üblicherweise ein LDAP Server verwendet.
Beim Aufsetzen einer LDAP Struktur gibt es viele Möglichkeiten. Um eine passende Lösung zu finden, sollen verschiedene Lösungsansätze ausprobiert und eine passende ausgesucht werden.
Untersucht werden die folgenden Ansätze:
- LLDAP mit Webinterface
- openldap mit Apache Directory Studio
- FreeIPA - was gehört dazu?
Versuchsaufbau - LLDAP
Ein erster Test, was mit LDAP möglich ist, läuft aktuell auf einer portainer Umgebung auf dem Host http://playground.
Folgende Dienste sind mittels verschiedener Docker container installiert.
- LLDAP: Stellt den LDAP Server bzw. eine Web-GUI zur Verwaltung von Benutzern bereit. http://playground:17170/login
- DokuWiki: Testinstallation zur Integration von LDAP in DokuWiki. http://playground
- Next Cloud: Testinstalltion zur Integration von LDAP in Next Cloud. http://playground:9191/login
- Portainer: Verwaltung der verschiedenen Docker container. https://playground:9443
Merker
Abfrage aller LDAP Einträge mittels lldapsearch
ldapsearch -H "ldap://playground:3890" -w password -v -D "uid=admin,ou=people,dc=example,dc=com" -b "dc=example,dc=com" -s sub -x "(objectclass=*)"