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;

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