Подключение к незащищенному серверу LDAP через PHP в безопасном домене - PullRequest
0 голосов
/ 05 января 2012

Я пытаюсь подключиться к серверу ldap, который, по словам ИТ-специалиста клиента, не имеет сертификата SSL. Это тестовый файл в их домене, на котором установлен SSL. Допустим, файл находится в https://client.org/test_LDAP.php

Поэтому я использую очень простой код для подключения, который отлично работал с другим клиентом только в прошлом месяце:

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);

define("LDAP_SERVER","ldap://name.their.junk");
define("LDAP_BASE","CN=Users,DC=their,DC=junk");

$username = 'CN=Username,'.LDAP_BASE;
$password = "Password";

$ldap = ldap_connect(LDAP_SERVER, 389) or die("Can't connect to LDAP server");

ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3) ;

if (ldap_bind($ldap, $username, $password)) {
    ldap_unbind($ldap);
    echo 'OK - Login valid';
} else {
    die(ldap_error($ldap) . ' (' . ldap_errno($ldap) . ')');
}

Если я запускаю код из домена с установленным SSL, означает ли это, что я ДОЛЖЕН использовать ldaps и порт 636, даже если на сервере AD клиента нет сертификата? Я пробовал код с обоими портами и обоими ldaps: и ldap: на незащищенном домене запуска, а также на его защищенном рабочем домене. Ничто не похоже на работу. Но он клянется, что имя пользователя и пароль верны, и все переменные верны, и сказал мне использовать их IP вместо имени хоста (например, ldap: 000.000.000.00).

Я что-то здесь не так делаю?

И да, у меня действительно есть настроенный LDAP на стороне моего сервера, потому что мы только что смогли сделать то же самое с другим клиентом недавно.

Любое понимание будет высоко ценится.

1 Ответ

1 голос
/ 05 января 2012

Если вы попытаетесь выполнить поиск в Active Directory Windows 2003 Server или более поздней версии, похоже, что для параметра LDAP_OPT_REFERRALS необходимо установить значение 0:

ldap_connect(..) 
ldap_set_option ($ldap, LDAP_OPT_REFERRALS, 0); 
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); 
ldap_bind(..) 
...