Добавление пользователя через PHP: LDAP - PullRequest
1 голос
/ 18 июля 2011

У меня есть этот код:

function makeUser() {
    $info['cn'] = "Test User";
    $info['sn'] = "User";
    $info['mail'] = "test@localhost";
    $info['objectclass'][0] = "Person";
    $info['objectclass'][1] = "User";

    $info['userpassword'] = "{MD5}".base64_encode(pack("H*",md5('Password1!')));
    $info['useraccountcontrol'] = 512;

    var_dump(ldap_add($this->connection, "CN=Test User,OU=Users,DC=domain,DC=local", $info));
}

Что дает мне эту ошибку:

Предупреждение: ldap_add () [function.ldap-add]: Add: сервер не хочет выполнять

Когда я пропускаю часть $info['useraccountcontrol'] = 512;, она добавляет учетную запись, но она отключена ..

Я получаю это из журнала на обоих серверах:

Внутреннее событие: сервер LDAP вернул ошибку.

Дополнительные данные Значение ошибки: 0000052D: SvcErr: DSID-031A11E5, проблема 5003 (WILL_NOT_PERFORM), данные 0

Я работаю над:

  • Windows Server 2008 Active Directory (не R2) и Windows Server 2003
  • PHP 5.3.5
  • Нормальное соединение LDAP, а не LDAPS, так как я разочаровался в попытках получить эту работу.

Как это сделать так, чтобы пользователь не отключен и не должен был сменить пароль при первом входе в систему?

Ответы [ 2 ]

5 голосов
/ 12 декабря 2012

У меня тоже была эта проблема (даже при подключении через LDAPS).Когда я сделал это в три этапа (сначала добавьте учетную запись, затем установите пароль, затем включите учетную запись), это сработало.

Возможно, вы можете объединить первые два или два последних шага, но яне проверял это.

2 голосов
/ 18 июля 2011

Что касается Active-directory, то пароль не в 'userpassword', а в 'unicodePwd', у вас есть пример в этом другом вопросе Stckoverflow . И я думаю, что вам нужно использовать LDAPS.

...