Tag Archives: LDAP

PEAR Probleme mit Laconi.ca LDAP-Patch

Letzte Woche habe ich unser internes Laconi.ca System um eine rudimentäre LDAP-Integration erweitert. Der im Laconi.ca Ticket-System veröffentlichte LDAP-Patch basiert auf PEARs Net_LDAP. Der Patch führt mittels des Benutzernames beim Login eine LDAP-Suche durch und versucht sich mit dem gefundenen DN des Benutzers und dem angegebenen Passwort am LDAP-Server zu authentifizieren (binden):

// rebind to authenticate the password now we know the user exists
$entries = $search->entries();
$bind_result = $ldap->bind($entries[0]->dn(), $password);

Und genau hier gab es Probleme mit dem Code, zumindest auf unserer Standard Debian LAMP-Installation mit Apache 2.2 und PHP 5. Wenn der LDAP-Bind fehl schlägt, soll eigentlich der Fehlercode abgefragt und mittels einem “False-Return” der Anwendung mitgeteilt werden, dass die angegebenen Legitimationsdaten inkorrekt sind:

if ($ldap->getCode() == LDAP_INVALID_CREDENTIALS) {
return false;

Soweit kam die Anwendung jedoch nicht. Bei einem fehlgeschlagegen LDAP-Bind hat das PEAR LDAP-Modul die Anwendung einfach mit einem DB-Fehler und einem “die” beendet.

Die Lösung: Mittels folgender PEAR-Anweisung lässt sich die Standard-Fehlerbehandlung auf “PEAR_ERROR_RETURN” umstellen, so dass bei einem fehlgeschlagenen LDAP-Bind nicht mehr die Anwendung beendet, sondern nur einer Fehlercode zurückgegeben wird:

PEAR::setErrorHandling(PEAR_ERROR_RETURN);

LinuxTag 09: OpenLDAP Sync mit Active Directory

Wir sitzen gerade in der Kantine des LinuxTags und reden über den eben gehaltenen Vortrag über das LSC Projekt, mit dem eine Synchronisierung zwischen OpenLDAP und Active Directory realisiert werden kann. Neben den Standardattributen aus dem LDAP werden dabei auch spezielle Werte im Active Directory, wie das Sperren von Konten oder das Ablaufdatum eines Benutzerpassworts, synchronisiert. Vor allem für heterogene IT-Landschaften mit Linux und Windows sehr nützlich. Die Aufzeichnungen des Vortrags stehen wieder im Wiki bereit.