Ich suche nach einer Möglichkeit, Benutzer über LDAP mit PHP zu authentifizieren (wobei Active Directory der Anbieter ist). Idealerweise sollte es unter IIS 7 ausgeführt werden können ( adLDAP unter Apache). Hat jemand etwas Ähnliches mit Erfolg gemacht?
- Bearbeiten: Ich würde eine Bibliothek / Klasse mit Code bevorzugen, der bereit ist ... Es wäre dumm, das Rad zu erfinden, wenn jemand dies bereits getan hat.
Antworten:
Das Importieren einer ganzen Bibliothek scheint ineffizient zu sein, wenn Sie im Wesentlichen nur zwei Codezeilen benötigen ...
quelle
ldap_set_option
, um es anders zu verhalten. Vielleicht die Protokollversion einstellen? Sie müssen experimentieren. Ich würde Ihnen persönlich empfehlen, ohnehin nach einem leeren Passwort zu suchen, um sicher zu gehen.ldap_bind
dies der Fall wäre, und Sonderzeichen sind kein Problem.Sie würden denken, dass die einfache Authentifizierung eines Benutzers in Active Directory ein ziemlich einfacher Prozess mit LDAP in PHP wäre, ohne dass eine Bibliothek erforderlich wäre. Aber es gibt viele Dinge, die es ziemlich schnell komplizieren können:
In den meisten Fällen ist es tatsächlich einfacher, eine LDAP-Bibliothek zu verwenden, die die oben genannten Funktionen unterstützt. Am Ende habe ich meine eigene Bibliothek gerollt , die alle oben genannten Punkte behandelt: LdapTools (Nun, nicht nur zur Authentifizierung, es kann noch viel mehr). Es kann wie folgt verwendet werden:
Der obige Authentifizierungsaufruf wird:
Es gibt auch andere Bibliotheken, die dies tun (z. B. Adldap2). Ich fühlte mich jedoch gezwungen genug, einige zusätzliche Informationen bereitzustellen, da die am besten bewertete Antwort tatsächlich ein Sicherheitsrisiko darstellt, auf das ich mich verlassen kann, wenn keine Eingabevalidierung durchgeführt wird und kein TLS verwendet wird.
quelle
ldaps://
Formats für die Verbindung ist veraltet. In meinem Beispiel wird beim AngebensetUseTls(true)
dasldap://
Format verwendet und anschließend ein StartTLS mit ausgegebenldap_start_tls($connection)
. TLS selbst ist also nicht veraltet, sondern stellt nur eine Verbindung überldaps://
(die tatsächlich über einen völlig anderen Port eine Verbindung zu LDAP herstellt).Dazu übergebe ich einfach die Benutzeranmeldeinformationen an ldap_bind ().
http://php.net/manual/en/function.ldap-bind.php
Wenn das Konto an LDAP gebunden werden kann, ist es gültig. Wenn es nicht kann, ist es nicht. Wenn Sie nur eine Authentifizierung (keine Kontoverwaltung) durchführen, sehe ich keine Notwendigkeit für eine Bibliothek.
quelle
Ich mag die Zend_Ldap- Klasse. Sie können nur diese Klasse in Ihrem Projekt ohne das Zend Framework verwenden.
quelle
PHP hat Bibliotheken: http://ca.php.net/ldap
PEAR hat auch eine Reihe von Paketen: http://pear.php.net/search.php?q=ldap&in=packages&x=0&y=0
Ich habe es auch nicht benutzt, aber ich wollte es irgendwann und sie schienen zu arbeiten.
quelle
Für diejenigen, die ein vollständiges Beispiel suchen, besuchen Sie http://www.exchangecore.com/blog/how-use-ldap-active-directory-authentication-php/ .
Ich habe diese Verbindung zu Windows Server 2003- und Windows Server 2008 R2-Domänencontrollern von einem Windows Server 2003-Webserver (IIS6) und von einem Windows Server 2012-Unternehmen mit IIS 8 getestet.
quelle