ldap add (): Add: сервер не желает выполнять
Я только начинаю с LDAP и Windows Server 2012. Мне удалось получить PHP-код для привязки к Active Directory с помощью учетной записи администратора, но я могу создать нового пользователя с помощью функции ldap_add.
я запускаю Windows Server 2012 R2 и IIS 8. Я установил центр сертификации с корневым сертификатом предприятия, и я могу подключиться к AD с помощью ldp.exe с SSL-соединением.
Я просмотрел Google, а также "возможные дубликаты потоков", но ни один из них не дал мне рабочего ответа за последние пару часов, которые я искал.
когда я использую следующий PHP-код:
<?php
$ldaprdn = 'netclassAdministrator';
$ldappass = 'password here';
$ldapconn = ldap_connect('ldap://server.netclass.co.uk')
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
// verify binding
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed...";
}
// prepare data
$info["givenname"] = "Ronnie Brown";
$info["samaccountname"] = "br01";
$info["objectclass"] = "person";
// add data to directory
$r = ldap_add($ldapconn, "cn=Ronnie,dc=netclass,dc=co,dc=uk", $info); //Line 28
}
?>
я получаю вывод:
LDAP bind successful...
Warning: ldap_add(): Add: Server is unwilling to perform in C:inetpubwwwrootadduser.php on line 28
Я попытался включить SSL, изменив:
$ldapconn = ldap_connect('ldap://server.netclass.co.uk')
to
$ldapconn = ldap_connect('ldaps://server.netclass.co.uk')
но затем я получаю следующую ошибку:
Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP server in C:inetpubwwwrootadduser.php on line 12
LDAP bind failed...
Warning: ldap_add(): Add: Can't contact LDAP server in C:inetpubwwwrootadduser.php on line 28
1 ответов
мне удалось выработать ответ сегодня.
Я добавил следующую строку в /etc/ldap / ldap.conf
TLS_REQCERT never
после этого я смог подключиться, но все еще получал сообщение об ошибке:
Server Unwilling to Perform
это было потому, что я пытался установить простой текст пароля, как:
$ldaprecord["unicodepwd"] = 'MyPassword1234'
вам нужно сначала закодировать его, поэтому, как только я изменю свой код на это, он работает:
## Create Unicode password
## Assumes that given password is in UTF-8 encoding!
## Adjust it to the actual encoding of the password
$pwdtxt = "MyPassword1234";
$newPassword = '"' . $pwdtxt . '"';
$newPass = iconv( 'UTF-8', 'UTF-16LE', $newPassword );
$ldaprecord["unicodepwd"] = $newPassw;
надеюсь, это поможет кому-то!