Ошибка «Не удается связаться с сервером LDAP» с помощью функции PHP ldap_bind - PullRequest
3 голосов
/ 24 ноября 2011

Я должен связать пользователя Active Directory с сервером. Я могу успешно соединиться с сервером, но каким-то образом не могу связать пользователя. Я не знаю, в чем причина.

Ниже приведен мой исходный код PHP:

$basedn="dc=domain,dc=com";
echo "Connecting ...<br/>";
$ds=ldap_connect("192.XXX.XXX.XX");  // must be a valid LDAP server!
echo "connect result is ".$ds."<br/>";

if($ds){
    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    $lb=ldap_bind($ds,"cn=xyz,o=domain.com","password");
    if ($lb) {
        echo "LDAP bind successful...";
    } else {
        echo "LDAP-Errno: " . ldap_errno($ds) . "<br />";
        echo "LDAP-Error: " . ldap_error($ds) . "<br />";
    }       

    ldap_close($ds);
}

Не могли бы вы дать мне, что именно я должен передать параметру имени пользователя в функции ldap_bind? Пожалуйста, предоставьте мне любой исходный код, который поможет мне сделать это? Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 08 октября 2013

Я на контроллере домена под управлением Server 2008 R2 в домене, который был первоначально 2003 и должен был использовать формат login @ domain.Я проверил правильность DN, и учетные записи администраторов домена до 2008 года могли подключаться с использованием DN.Тем не менее, не администраторы не могут, если не используется формат login @ domain.

Теперь мой код пытается:

$ lb = ldap_bind ($ ds, "cn = login, o = domain.com "," password ");

, а затем, если ничего не найдено, пытается:

$ lb = ldap_bind ($ ds," login@domain.com "," password ");

Это быстрое решение, пока я устраняю причину, по которой DN не работает.Я бы порекомендовал, даже если вы используете 2008, попробуйте формат 2003.

0 голосов
/ 06 сентября 2012

Использование Active Directory в Windows Server 2003 вместо:

$lb = ldap_bind($ds, "cn=login,o=domain.com", "password");

Мне пришлось использовать:

$lb = ldap_bind($ds, "login@domain.com", "password");

Однако, ваше сообщение об ошибке ( не может связатьсяСервер LDAP ) выглядит так, как будто вы не предоставили ldap_connect() адрес сервера достижимый с помощью сценария PHP (проверьте брандмауэр Windows и т. Д.)

...