Intereting Posts
Доступ к имени объекта JSON в PHP Зарезервированное имя в mysql openssl_verify (): указанный ключевой параметр не может быть принудительно введен в открытый ключ для файла .pem Как заставить php-скрипт удалять себя (и включает в себя dir) Параметр fgetcsv / fputcsv $ escape полностью нарушен PHP curl изменяет Content-Type на application / x-www-form-urlencoded. Не следует этого делать Отключить PHP в каталоге (включая все подкаталоги) с помощью .htaccess возможно ли, если обратный вызов в параметре array_filter принимает параметр? PHP – ошибка доступа к MySQL – работает в других программах if (isset ($ _ POST не работает для Internet Explorer Какой код статуса http должен использоваться, чтобы сообщить клиенту, что время ожидания сеанса? Санитарный ввод, но выход не так, как ожидалось Как я могу использовать split, но пропустить html / javascript / php и другие внутренние теги? Локализация CakePhp невозможно прочитать $ _SESSION vars на PHP facebook app

ldap_add (): Добавить: сервер не желает выполнять

Я только начинаю работать с LDAP и Windows Server 2012. Мне удалось заставить мой PHP-код привязываться к Active Directory с помощью учетной записи администратора, но я могу создать нового пользователя с помощью функции ldap_add.

Я запускаю Windows Server 2012 R2 и IIS 8. Я установил центр сертификации с корневым сертификатом предприятия, и я могу подключиться к AD с помощью ldp.exe с SSL-соединением.

Я просмотрел Google, а также «возможные повторяющиеся темы», но ни один из них не предоставил мне рабочий ответ за последние пару часов, которые я искал.

Когда я использую следующий код PHP:

<?php $ldaprdn = 'netclass\Administrator'; $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:\inetpub\wwwroot\adduser.php on line 28 

Я попытался включить SSL, изменив:

 $ldapconn = ldap_connect('ldap://server.netclass.co.uk') 

в

 $ldapconn = ldap_connect('ldaps://server.netclass.co.uk') 

Но я получаю следующую ошибку:

 Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP server in C:\inetpub\wwwroot\adduser.php on line 12 LDAP bind failed... Warning: ldap_add(): Add: Can't contact LDAP server in C:\inetpub\wwwroot\adduser.php on line 28 

Мне удалось решить ответ сегодня.

Я добавил следующую строку в /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; 

Надеюсь, это поможет кому-то!