Обновите пароль в активном каталоге с помощью переполнения стека

Я подключаюсь, делаю проверку и даже обновления, такие как dyplayName и ipphone. Но когда я пытаюсь обновить unicodePwd, я получаю сообщение об ошибке:

53 — сервер не хочет выполнять

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

function hash_password( $newPassword ) {
$newPassword = "\"" . $newPassword . "\"";
$len = strlen( $newPassword );
$newPassw = "";
for ( $i = 0; $i < $len; $i++ ) {
$newPassw .= "{$newPassword {$i}}\000";
}
$userdata["unicodePwd"] = $newPassw;
return $userdata;
}

public function _login($pwd) {
$link = ldap_connect('123.123.123.123');
ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($link, LDAP_OPT_REFERRALS, 0);
if (!(@ldap_bind($link, 'company\\' . $user_ldap, $pwd_ldap))) {
//show error
}
$filter = "(samaccountname=" . $user . ")";
$result = ldap_search($link, $ldap_dn, $filter);//, $attrs);
$entries = ldap_get_entries($link, $result);
$dn = $entries[0]["dn"];

$entry = $this->hash_password($pwd);

if (ldap_modify($link,$dn,$entry) === false){
// show error
// It always hit this part on the code
}
ldap_close($link);
}

Я попробовал другой формат шифрования, который я нашел в Интернете, ни один не работал. Также пробовал пароль без шифрования, результата нет.

Как я могу изменить текущий пароль пользователя, срок действия которого истек / должен измениться при следующем входе в систему?

0

Решение

Вы должны быть на защищенное соединение для изменения пароля.

Добавьте следующее, прежде чем позвонить ldap_bind():

ldap_start_tls($link);

Это хорошая идея, даже если вы не пытаетесь сменить пароль, так как в противном случае ваша операция связывания является открытым текстом и может быть перехвачена.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector