Joomla und LDAP
Aus gegebenem Anlass habe ich mich die letzten Tage etwas intensiver mit Joomla und der Authentifizierung gegen einen LDAP-Server auseinandergesetzt. Ich bin zwar noch nicht in alle Feinheiten des Thema vorgedrungen, aber möchte meine bisherigen Erkenntnisse doch bereits jetzt hier mit meinen Lesern teilen. Kann gut sein, dass es noch einen Folgeartikel dazu gibt
…
Zuerst in möglichst verständlichen Worten kurz was es damit auf sich hat:
LDAP kann man sich als Verzeichnis (Datenbank) auf einem Server vorstellen, in dem u.a. alle notwendigen Daten über einen Benutzer abgelegt sind. Dazu gehören neben Mail-Adresse, Telefonnummer, Organisationsinfo (und sehr vielem mehr) eben auch die Zugangsdaten zu Netzwerk-Applikationen, wie z.B. einem CMS namens Joomla
.
LDAP
LDAP (Leightweight Directory Access Protocol) ist eigentlich das Zugriffsprotokoll auf ein solches Verzeichnis, ich weiß
.
Ein Auszug aus Wiki umreisst es eigentlich ganz gut:
Das Verzeichnis kann beispielsweise ein Adressbuch enthalten: In seinem E-Mail-Client stößt ein Nutzer die Aktion Suche die Mailadresse von Joe User an. Der E-Mail-Client formuliert eine LDAP-Abfrage an das Verzeichnis, das die Adressinformationen bereitstellt. Das Verzeichnis formuliert die Antwort und übermittelt sie an den Client: joe.user@example.org.
Mittlerweile hat sich im administrativen Sprachgebrauch eingebürgert, dass man von einem LDAP-Server spricht. Damit meint man einen Directory-Server, dessen Datenstruktur der LDAP-Spezifikation entspricht und der über das LDAPv3-Protokoll Daten austauschen kann.
Das Protokoll bietet alle Funktionen, die für eine solche Kommunikation notwendig sind: Anmeldung am Server (bind), die Suchabfrage (Suche mir bitte alle Informationen zum Benutzer mit dem Namen ‘Joe User’) und die Modifikation der Daten (Ändere das Passwort beim Benutzer Joe User).
So aber jetzt genug der Definition und Terminologie
. Wir merken uns : Da gibts einen “Datensack” auf einem Server, der u.a. die Zugangsdaten zu Joomla enthält.
Ziel ist es, dass ich meinem Joomla “beibringe”, dass ich meine Joomla-User nicht mehr in Joomla anlegen möchte, sondern von nun an in diesem LDAP-Server verwalten möchte. Gleichwohl möchte ich mich natürlich weiterhin wie gewohnt mit meinen Zugangsdaten in Joomla (Frontend, Backend) anmelden können.
Was macht das alles für einen Sinn ? Recht wenig, wenn wir nur eine Applikation namens Joomla haben. Haben wir aber mehrere Applikationen, bei denen ich mich tunlichst mit den gleichen Zugangsdaten anmelden möchte, dann macht das schon ziemlich viel Sinn. Ich muss den User nur einmal anlegen und er hat sofort Zugang zu all meinen Anwendungen. Passwortänderungen erfolgen auch nur einmal : auf meinem LDAP-Server …
Anbindung von Joomla an LDAP
Im Folgenden möchte ich mich nun mit dieser Anbindung von Joomla an einen solchen LDAP-Server beschäftigen, ohne zu sehr in die Tiefen der Technik abzutauchen. Wird nicht einfach
…
Um nicht zu sehr technisch abzurutschen, verzichte ich hier auf die Beschreibung, wie man einen LDAP-Server aufsetzt. Für den Eingeweihten nur der Hinweis, daß man ein zusätzliches Schema für Joomla benötigt. Dies kann man sich hier besorgen : Joomla LDAP Schema
Mit Hilfe dieses Zusatzschemas und der Standard-Schemata (ou, person etc..) habe ich eine (zugegebenerweise ungebräuchliche) Struktur gebastelt, mit der ich mich heute erfolgreich in Joomla angemeldet habe:

Unterhalb des Knotens ou=People findet man alle Joomla-User. Derzeit nur 2
.
Die Zugriffsadresse zu einem solchen User (auch DN = Distinguish Name) ist schräg, aber eindeutig :
uid=akejr,ou=People,ou=system-worx,o=Customer,dc=moosach,dc=de
Den ganzen Rattenschwanz von unten bis nach oben mit Komma getrennt auflisten
…
Noch ein Tip : Um einen solchen Baum aus den Schembausteinen aufzubauen und User anzulegen, benötigt man einen sog. LDAP-Client/LDAP-Browser. Den bisher besten habe ich hier entdeckt : JXplorer Gibt grafisch hübschere, aber den kann ich bedienen
Jetzt noch als Eindruck, was man unterhalb der oben gezeigten kryptischen Adresse findet:
Soweit so gut… Jetzt konfigurieren wir Joomla …
Dazu gehen wir in den Plugin-Manager im Joomla-Backend und “enablen” das Plugin “Authentication -LDAP” :
Dann klicken wir drauf und konfigurieren das “Ding” :
Der grün markierte Bereich ist Standard.
Im rot markierten Bereich sind die notwendigen Eingaben zu machen, um einen User, der sich anmeldet, im LDAP zu finden:
- Base-DN: dc=moosach,dc=de => Dies sind die Knoten des Baums mit “dc”. Siehe Bild oben
- Search-String: uid=[search] => search wird durch den Benutzernamen der Joomla-Anmeldemaske ersetzt; dieser Parameter wird benutzt, wenn man vorher “Bind an Search” als “Authorisation Method” ausgewählt hat.
- user’s DN: uid=[username],ou=People,ou=system-worx.de,o=Customer,dc=moosach,dc=de => Dies ist wieder der komplette Rattenschwanz von oben. “username” wird wieder durch den Benutzernamen der Joomla-Anmeldemaske ersetzt; dieser Parameter wird benutzt, wenn man “Bind directly as User” ausgewählt hat.
Der blau markierte Bereich konfiguriert die Zuordnung der LDAP-Infos: “mail” z.B. ist der Names des LDAP-Attribut, das die Mailadresse enthält, die Joomla benötigt. “Full Name” und “User ID” sind sicher dadurch auch verständlich. Die LDAP-Attribute kann man meinem Screenshot oben entnehmen “Daten eines Joomla Users …”
Ja das war es eigentlich schon … Falls der LDAP-Server ordnungsgemäß arbeitet, sollte man ab jetzt die Benutzer in LDAP verwalten können …
Troubleshooting
Für Troubleshootingzwecke sei auf die diversen LDAP-Browser verwiesen (einen mit Link habe ich oben genannt). Unter Linux findet man Meldungen des LDAP-Servers unter /var/log/messages. Und in Joomla gibt es eine Komponente, die auch hilfreich sein kann : JDIagnostic
Ergebnis
Klappt nun alles, kann sich ein Benutzer anmelden. Dabei wird “on-the-fly” bei der erstmaligen Anmeldung ein Joomla-User ohne Passwort erzeugt. Das Passwort ist hier auch nicht zu ändern:
Offene Punkte, Ausblick
- Mit dem beschriebenen Standard-Mechanismus findet keine Synchronsation zwischen dem LDAP-User und Joomla statt. Ein in LDAP gelöschter User ist nicht in Joomla gelöscht. Nun er kann sich nicht mehr anmelden. Auch schon gut
. Aber Mailadressenänderungen in LDAP schlagen in Joomla nicht zu … und umgekehrt … - Die Zuweisung zu Gruppen durchschaue ich noch nicht. Es gibt im Joomla-Schema zwar einen Parameter “JoomlaGroup”, aber da kann man eingeben was man will. Default/Fallback ist Gruppe “Registered” und da landet mein User derzeit immer. Egal was ich Schlaues da eingebe.
- Für ein echtes “Single Sign On” reicht das noch nicht. Habe ich mich über den gleichen Mechanisum in einer anderen LDAP-fähigen Applikation angemeldet, muss ich mich in Joomla trotzdem nochmals anmelden. Aber das führt hier zu weit. Siehe dazu einen anderen Artikel dazu … An diesem Thema bin ich für Linux noch dran
. Stay tuned
So, das soll es jetzt mal für fast 23:00h gewesen sein
…
Bin um weiterführende oder auch korrigierende Kommentare wirklich dankbar.






