LDAP mit PHP
... ist eigentlich total einfach. Ich schätze mal das Einzige, was mich früher davon abgehalten hat, war das nicht vorhandene Wissen über LDAP. Von der PHP Seite aus muss man nur folgende Funktionen kennen:
ldap_connect() ldap_bind() ldap_search() ldap_get_entries()
Mit ldap_connect()
stellt man erstmal eine Verbindung zum LDAP-Server her,
anders als bei mysql_connect()
muss man in diesem Schritt keine
Benutzerdaten angeben, die Verbindung erfolgt immer anonym. Lässt der
LDAP-Server die Abfragen, die man machen möchte nicht anonym zu benutzt man
ldap_bind()
um sich mit einem Benutzerkonto am Server anzumelden. Danach
holt man sich mit ldap_search()
eine Ergebnismenge vom Server und jagt
diese durch ldap_get_entries()
um die einzelnen Daten herauszuholen - Fertig.
Das Ganze ist wirklich einfach, der Haken ist, dass man etwas Fit auf der LDAP Seite sein sollte, also Search-Filter und Begriffe wie Base-DN oder CN sollten einem klar sein, sonst kann es sein, dass die erfolgreichen Ergebnisse etwas auf sich warten lassen ... Ein gutes Tool um LDAP Abfragen zu testen ist der LDAP Browser/Editor (Geschrieben in Java läuft das Programm so gut wie überall).
Ich habe heute mal ein paar Abfragen gegen ein Microsoft ActiveDirectory programmiert und das Ganze ging relativ straightforward, also sorry, dass ich hier keine großen Geheimnisse verbreiten kann.
Hi, danke erstmal für deinen Artikel. Kann man mit PHP auch änderungen im AD (also ich würde was für Active Directory / Windows 2003 Server programmieren) vornehmen? Speziell Passwortrücksetzung / Änderung? Weil das kommt relativ Häufig vor, dass Benutzer ihr Passwort vergessen und wenn sie es selbst mit zustimmung des Vorgesetzten (es sind hauptsächlich Auszubildende, die sich am Server anmelden) ändern / zurücksetzen könnten, wäre das ne spitzensache.
Geschrieben von Tobi 1 Jahr, 10 Monate nach Veröffentlichung des Blog-Eintrags am 7. Juli 2008, 20:21. Antworten
Hallo Tobi,
das sollte prinzipiell alles möglich sein. Wenn du dich per PHP als Benutzer anmeldest, der die entsprechenden Rechte hat dann kannst du natürlich auch Änderungen an den Daten vornehmen.
Ob man einer PHP App die Rechte zum Passwort ändern geben will ist natürlich eine andere Frage, aber ich sehe da keine technische Hürde.
Geschrieben von Arne Brodowski 1 Jahr, 10 Monate nach Veröffentlichung des Blog-Eintrags am 8. Juli 2008, 06:20. Antworten
Nochmal für alle die daran interessiert sind, das Benutzerpasswort per PHP zu ändern: Es geht nicht so einfach. Scheinbar hat man als "PHP" keine Rechte, das Passwort zu ändern oder auch nur das Konto auf "Benutzer muss Kennwort beim nächsten anmelden ändern" zu setzen. "SERVER IS UNWILLING TO PERFORM" - das ist der Fehler (ldap_bind erfolgte als Administrator).
Wie das funktioniert habe ich in 3 Tagen (und nächten...) nicht herausgefunden. Falls nur ein Passwort geändert werden soll empfehle ich exec("net user $username $newPassword") - das funktioniert im normalfall.
Mfg
Geschrieben von Tobi 2 Jahre nach Veröffentlichung des Blog-Eintrags am 9. Sept. 2008, 21:47. Antworten