2009-12-23 7 views
1

Je travaille avec zend framework, PHP, Ldap sur Ubuntu. J'authentifie les utilisateurs de ldap en utilisant la bibliothèque zend. Maintenant, je veux changer les mots de passe ldap de l'utilisateur en utilisant zend. Une idée?Comment changer le mot de passe ldap en utilisant zend

C'est la méthode que j'utilise pour obtenir l'adaptateur d'authentification zend. Cela fonctionne parfaitement et les utilisateurs sont authentifiés en utilisant cet adaptateur.

public function getAuthAdapter(array $params) 
{ 
     $front = Zend_Controller_Front::getInstance(); 

     $options = $front->getParam('bootstrap')->getOption('ldap'); 
     $params['username'] = split("@" , $params['username']);   
     $username = 'cn=' . $params['username'][0] . ',' . $options['server1']['baseDn'];      
     $adapter = new Zend_Auth_Adapter_Ldap($options, $username, $params['password']); 

     $adapter->setIdentity($params['username']); 
     $adapter->setCredential($params['password']); 

     return $adapter; 
} 

Maintenant comment changer les mots de passe ldap? Merci

Répondre

2

Utilisez Zend_Auth_Adapter_Ldap pour authentifier les connexions et ainsi de suite avec un répertoire actif.

Pour l'administration de ldap, utilisez Zend_Ldap.

Lisez la documentation Zend sur l'API Zend_Ldap, en particulier les éléments suivants

Zend_Ldap sauver (string | Zend_Ldap_Dn $ dn, un tableau d'entrée de $)

Enregistre l'entrée identifiée par $ dn avec ses attributs $ entrée à l'arbre LDAP . Lance une Zend_Ldap_Exception si l'entrée n'a pas pu être enregistrée. Cette méthode décide en interrogeant l'arborescence LDAP si l'entrée est ajoutée ou mise à jour.

3
$ldap=new Zend_Ldap($options); 
    $ldap->bind();  
    $entry=$ldap->getEntry($user->dn); 
    $entry['userpassword'][0]=$newpassword; 
    $ldap->save($user->dn, $entry); 

Voici comment cela a fonctionné me forme! Notez que je n'ai pas encripté le mot de passe avant de l'envoyer mais le serveur l'a stocké avec une description correcte.

Questions connexes