Я пытаюсь выяснить, как сбросить пароль пользователя 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 — это используемая реализация.
Ты можешь позвонить 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...";
}
}
Других решений пока нет …