Neue LDAP Server Implementierung
-
Für alle, die CT Benutzer über LDAP an zb. Nextcloud authentifizieren wollen.
Im Repository https://github.com/ccfreiburg/ccf-ctldap habe ich einen LDAP wrapper geschrieben (von milux inspiriert) Diese Implementierung löst einige praktische Probleme in die ich gelaufen bin. Folgende Aspekte und Features habe ich dabei umgesetzt
- Man kann CT Gruppen auswählen, welche die Personengruppe einschränken, die überhaupt nur berücksichtigt werden.
- Man kann die Ldap Attribute cn und uid an den CT Personen durch ein erweitertes Feld in CT (ncuid) setzten, zb. damit man die bestehenden Usernamen im Zielsystem verwenden kann (Stichwort Nextcloud ldap_username_mapping).
- Man kann Gruppennamen auf Gruppennamen mappen (zb. "Älteste und Pastoren" -> "Gemeindeleitung"), damit man die Gruppennamen im Zielsystem nicht ändern muss
- Man kann CT Personen einer Admin Gruppe zuordnen (die nur im LDAP Server und nicht in CT existiert)
- Komplettes Caching für Zeitraum (zb. 10min)
- pino - basiertes Loggig
- Docker Contianer in docker hub verfügbar guxxde/ccf-ctldap
- Man kann User - Attribute konfigurieren mit default Wert definieren, die zusätzlich herausgegeben werden. Für bestimmte Nutzer kann der Wert des Attributes auf einen speziellen Wert gesetzt werden. Das habe ich gebraucht, um die Admin Rolle bei BigBlueButton auf einige Nutzer zu mappen.
Wichig ist mir auch, dass ich den Code recht intensiv mit
- automatisierten (unit und integration) Tests versehen habe
- entsprechendes Clean-Code Design versucht habe umzusetzen
- die aktuelle CT api (mit der tollen Swagger Doku) verwendet habe
Die Doku würde ich verbessern, wenn Interesse von anderen Nutzern angemeldet wird.
-
Hallo,
vielen Dank für die neue Implementierung! Gefällt mir aufgrund der Einfachheit und des Designs. Ich plane/teste gerade unseren Einstieg in ChurchTools und habe vor diese Implementierung dann im Idealfall auch produktiv zu nutzen. Über Verbesserungen der Doku würde ich mich also freuen. Einen PR mit ein paar kleinen Fixes für die Beispiel-Config habe ich gerade erstellt.
Aktuell bin ich beim Testen soweit, dass die der LDAP-Server läuft und die API-Verbindung auf eine CT-Test-Instanz funktioniert. Allerdings kann ich noch keine User im LDAP-Directory abrufen. Das liegt aber sicher daran, dass ich mich bislang weder mit LDAP noch mit CT auskenne und irgendwas noch nicht richtig konfiguriert habe.
Viele Grüße
Frieder -
@guxxde könntest du - oder hast du vielleicht schon - eingebaut, dass man Gruppenrollen verarbeiten kann?
Interesse an Doku-Verbesserung ist hiermit angemeldet.
-
@bwl21 sagte in Neue LDAP Server Implementierung:
könntest du - oder hast du vielleicht schon - eingebaut, dass man Gruppenrollen verarbeiten kann?
Wenn ich es richtig gesehen habe ist das noch nicht implementiert. Ich würde das aber auch benötigen.
-
So, ich habe mittlerweile einen Fork aufgesetzt und einige Verbesserungen und Anpassungen hinzugefügt.
- diverse Bugfixes
- diverse Code Style Fixes
- ESLint Config
- Exportieren von Rollen als LDAP-Gruppen inkl. Filter
Das ganze läuft bei uns bereits produktiv mit derzeit ca. 150 Usern. Bisher gab es keine nennenswerten Probleme.
Da Alex bisher nicht auf meine Issues/PRs bei GitHub reagiert hat, habe ich jetzt auch keine allzu große Rücksicht auf Kompatibilität mit dem ursprünglichen Verhalten genommen. Eigentlich sollte aber alles bis auf die Integrations-Tests noch funktionieren, allerdings mit Änderungen am Format der Config.
@guxxde Falls Interesse besteht den Code wieder zusammenzuführen und eine gemeinsame Codebasis zu nutzen, dann sag gerne Bescheid. Entweder in deinem oder in meinem Repo.