clxADLogin – password-check against Microsoft AD-Server
An sich soll sich der Microsoft AD-Server (Active Directory) mit standard-LDAP Befehlen abfragen lassen. Solange man keine hohen Ansprüche stellt, funktioniert das auch recht gut. Schlecht sieht es allerdings aus, wenn man benutzerdefinierte Felder oder gar das Passwort abfragen möchte.
Ein simpler Vergleich mit dem gespeicherten – und ggf. md5-codierten – Passwort würde ja reichen, um einen Benutzer zu authentifizieren. Doch leider ist genau das nicht machbar. Darum hier ein kleiner Trick, wie man es dennoch schafft zu testen, ob ein Benutzer einen gültigen AD-Account hat bzw. das richtige Passwort zu seinem Benutzernamen eingegeben hat: einfach einen BIND mit dem zu testenden Benutzernamen und Passwort anstossen und das Resultat auswerten.
Code-Snippet
// user id to check
$UID = $_POST["userName"]; // e.g. "dressler.stefan"
// password from login form
$PWD = $_POST["userPassword"];
$dn = "ou=user,ou=lab,dc=clixwork,dc=com";
$attributes = array(
"cn", "sn", "title",
"mail", "department", "UserPassword"
);
$filter = "(cn=*)";
$ad = @ldap_connect("server.name") or die("Couldn't connect to AD!");
$bd = @ldap_bind($ad, $UID."@user.clixwork.com", $PWD);
// accepted?
$ACCEPT = ($bd) ? true : false;
Download
- clxADLogin.php.txt – v0.1 (PHP, 533.0 Byte)