LDAP-Problem, ldap_bind ungültige dn-syntax
Ich weiß, dass meine Fehler dich etwas wirklich einfach aber ich habe versucht das problem zu finden, und ich sehe es nicht, vielleicht können Sie mir helfen....
Ich versuche eine Funktion erstellen mit php, also kann ich eine Verbindung zu LDAP und die gewünschten Informationen finden.
Mein php code ist folgender:
$ldapconfig['host'] = "127.0.0.1";
$ldapconfig['port'] = NULL;
$ldapconfig['basedn'] = "dc=example,dc=com";
$ldapconfig['binddn'] = "user";
$ldapconfig['bindpw'] = "password";
function ldap_authenticate($user, $pass) {
global $ldapconfig;
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
if ($user != "" && $pass != "") {
$ds=ldap_connect($ldapconfig['host'],$ldapconfig['port']);
if(!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
return NULL;
}
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
ldap_bind( $ds, $ldapconfig['binddn'], $ldapconfig['bindpw']);
$r = ldap_search( $ds, $ldapconfig['basedn'], 'sAMAccountName=' . $user);
if ($r) {
$result = ldap_get_entries( $ds, $r);
if ($result[0]) {
if (ldap_bind( $ds, $result[0]['dn'], $pass) ) {
return $result[0]['mail'][0];
}
}
}
}
return NULL;
Wenn ich versuche, führen Sie den code, es gibt mir den folgenden Fehler:
ldap_bind ungültige DN-syntax in Zeile xxxx
und diese Linie ist die folgende:
ldap_bind( $ds, $ldapconfig['binddn'], $ldapconfig['bindpw']);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie gesagt in den Fehler, Ihre bind-DN ist das falsche format. DN ' s repräsentieren den vollständigen Pfad zu dem Objekt - also in deinem Fall sollte so etwas wie dieses (sieht aus wie du bist auf AD?)
"cn=username,ou=domain users,dc=example,dc=com"
Je nach Ihrem Geschmack von LDAP (Active Directory, OpenLDAP etc.), Sie könnte kann die Verwendung einer uid (also nur 'username') zu binden, aber es ist am besten davon ausgehen, dass Sie immer den vollständigen DN.
Können Sie mit einem LDAP-tool wie Apache Directory Studio zu helfen, Abfragen erstellen und finden Sie heraus, welches Objekt die DN ' s sind. Oder gibt ' s ldp.exe auch (sofern es AD), aber directory studio ist einfacher zu verwenden.
mail
AttributinetOrgPerson
Objekt der Klasse? (mitOpenLDAP
)Auf einem DC Ausführen:
dsquery user -samid jim
zeigt den DN des Benutzers, passend zu den sAMAccountName:
"CN=Jens Willeke,CN=Users,DC=mad,DC=willeke,DC=com"
http://ldapwiki.willeke.com/wiki/LDAP%20and%20Active%20Directory