2016-04-21 19 views
2

Ich versuche herauszufinden, wie ein LDAP-Benutzer-Passwort zurückgesetzt, wenn Sie als ein anderer Benutzer (Admin-Benutzer) in PHP für ein Passwort-Reset-Funktion verbunden.Zurücksetzen eines LDAP-Benutzers Passwort in PHP, ohne das alte Passwort, mit admin Benutzer

$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) 

(von Klassenmethoden aggregiert) Dies funktioniert für das Kennwort eines Benutzers zurückzusetzen, das alte Kennwort verwenden, aber wie würden Sie gehen über mit einem anderen Benutzer eine Kennwortänderung zu tun (admin in diesem Fall)?

Ich denke, es gibt etwas über die LDAP-Authentifizierung/Bindung, die ich nicht verstehe. Vielleicht kann mich jemand in die richtige Richtung weisen.

kann ich eine ldap_bind vor der ldap_modify machen, die mir erlaubt, user_dn zu verwenden und den Benutzer als Administrator zu aktualisieren?

Nicht klar, wie das alles funktioniert.

OpenLDAP ist die verwendete Implementierung.

Antwort

0

Sie können ldap_bind mit dem DN/Passwort Ihres Admin-Benutzers aufrufen, um die Verbindung als dieser (Admin) Benutzer herzustellen.

Probe aus dem PHP-Handbuch

// 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..."; 
    } 

} 
Verwandte Themen