Сброс пароля пользователя LDAP в PHP без старого пароля с использованием пользователя admin

Я пытаюсь выяснить, как сбросить пароль пользователя LDAP при подключении в PHP как другой пользователь (администратор) для функции сброса пароля.

$this->con = ldap_connect($this->server);
ldap_set_option($this->con, LDAP_OPT_PROTOCOL_VERSION, 3);

$user_search = ldap_search($this->con, $this->dn,"(|(uid=$user)(mail=$user))");
$this->user_get = ldap_get_entries($this->con, $user_search);
$user_entry = ldap_first_entry($this->con, $user_search);
$this->user_dn = ldap_get_dn($this->con, $user_entry);
$this->user_id = $this->user_get[0]["uid"][0];

$entry = array();
$entry["userPassword"] = "$encoded_newPassword";
ldap_modify($this->con, $this->user_dn, $entry)

(в совокупности с методами класса) Это работает для сброса пароля пользователя с использованием старого пароля, но как бы вы изменили пароль для другого пользователя (в данном случае администратора)?

Я думаю, что в аутентификации / привязке LDAP есть что-то, чего я не понимаю. Возможно, кто-то может указать мне правильное направление.

я могу сделать ldap_bind перед ldap_modify, который позволит мне использовать user_dn и обновить пользователя как пользователя с правами администратора?

Не ясно, как это все работает.

OpenLDAP — это используемая реализация.

2

Решение

Ты можешь позвонить ldap_bind с помощью dn / пароля вашего администратора, чтобы установить соединение как этот (администратор) пользователь.

Образец из руководства по PHP

// using ldap bind
$ldaprdn  = 'uname';     // ldap rdn or dn
$ldappass = 'password';  // associated password

// connect to ldap server
$ldapconn = ldap_connect("ldap.example.com")
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...";
}

}
0

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

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

По вопросам рекламы [email protected]