Ungültige DN-syntax LDAP-Authentifizierung
Ich weiß, das ist eine Art beantwortet worden, bevor, aber es hat nicht in der Lage gewesen, mir zu helfen (es sei denn, es hat aber wegen meiner begrenzten php-Kenntnissen geholfen hat es nicht). Hier ist mein code unter:
<body>
<html>
<?php
//echo var_dump($_POST);
$user = "".$_POST["username"]."";
settype($user, "string");
$password = $_POST["password"];
$ldap_host = "ldap.burnside.school.nz";
$base_dn = "ou=students,o=bhs";
$ldap_user = "(cn=".$user.")";
$filter = "($ldap_user)"; //Just results for this user
$ldap_pass = "".$password."";
$connect = ldap_connect($ldap_host)
or exit(">>Could not connect to LDAP server<<");
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
//This next bit is the important step. Bind, or fail to bind. This tests the username/password.
if (ldap_bind($connect, $ldap_user.",".$base_dn, $ldap_pass)) {
$read = ldap_search($connect, $base_dn, $filter)
or exit(">>Unable to search ldap server<<");
//All the next 8 lines do is get the users first name. Not required
$info = ldap_get_entries($connect, $read);
$ii = 0;
for ($i = 0; $ii < $info[$i]["count"]; $ii++) {
$data = $info[$i][$ii];
if ($data == "givenname") {
$name = $info[$i][$data][0];
}
}
ldap_close($connect);
header("Location: success.php?name=$name");
}
else {
ldap_close($connect);
//header("Location: failure.php?user=$user");
}
?>
</body>
</html>
Bin ich immer einen Fehler in Zeile 21 was ist, wenn ich zum binden des Servers, die sagen:
Achtung: ldap_bind(): Unable to bind to server: Invalid DN syntax in S:\XAMPP\htdocs\PhpProject1\LDAP_main.php auf der Linie 21
Hätte jemand eine Lösung zu diesem problem? Es ist nur mal passiert, als ich realisiert meine $_POST
in den code zu erhalten, den Benutzernamen und das Passwort, aber wie Sie sehen können, mit meinen auskommentiert //echo var_dump($_POST)
ich bin eigentlich für den Empfang der Daten, die ich will.
InformationsquelleAutor user3765724 | 2014-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihr DN für das binden an den LDAP-Server ist
(cn=[username]),ou=students,o=bhs
ist keine gültige DN-Syntax. Das Lesen solltecn=[username],ou=students,o=bhs
ohne die geschweiften Klammern.Haben Sie gemischt in einem LDAP-Filter (die Sachen in den geschweiften Klammern) mit einem DN.
Ich würde die LDAP-Authentifizierung in der folgenden Weise:
(|(mail=[username])(cn=[username])(uid=[username]))
suchen Sie nach Einträgen, die den Benutzernamen in der E-mail, cn oder uid-AttributHaben Sie einen Blick auf https://gist.github.com/heiglandreas/5689592
Was genau ist Ihre Suche nach filter?
Einige debug-out-Anweisungen und betrachten Sie Ihre konstruierte Variablen, damit Sie wissen, was Ihr code tut. Dann werden Sie zumindest wissen, was Werte, die Sie Einreichen, um den LDAP-server. Und eine gute LDAP-browser, die Ihnen zeigen, wie die Werte sein müssen. (Ich benutze Apache-Studio directory.apache.org/studio)
InformationsquelleAutor heiglandreas