2009-12-23 3 views
1

Я работаю с zend framework, PHP, Ldap на Ubuntu. Я аутентифицирую пользователей из ldap, используя библиотеку zend. Теперь я хочу изменить пароли ldap пользователя, используя zend. Есть идеи?Как изменить пароль ldap с помощью zend

Это метод, который я использую для получения адаптера аутентификации zend. Он работает отлично, и пользователи аутентифицируются с помощью этого адаптера.

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; 
} 

Теперь, как изменить пароли ldap? Спасибо

ответ

2

Используйте Zend_Auth_Adapter_Ldap для аутентификации логинов и т. Д. С активным каталогом.

Для администрирования ldap используйте Zend_Ldap.

Прочитайте документацию Zend на API Zend_Ldap, в частности, следующие

Zend_Ldap сохранить (строка | Zend_Ldap_Dn $ дп, массив $ запись)

Сохраняет запись идентифицированной $ дп с его атрибуты $ entry для дерева LDAP . Выбрасывает исключение Zend_Ldap_Exception, если запись не может быть сохранена. Этот метод решает путем запроса дерева LDAP , если запись будет добавлена ​​или обновлена ​​ .

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

Вот как это работает сформировать меня! Обратите внимание, что я не указывал пароль перед отправкой, но сервер хранил его с правильной подписью.

Смежные вопросы