PHP и изменение свойств в Active Directory (через LDAP)

  • Автор темы Автор темы tulupov
  • Дата начала Дата начала

tulupov

Новичок
PHP и изменение свойств в Active Directory (через LDAP)

Читать сортировать и т.д. могу из LDAP, а вот есть ли возможность менять определённые поля? например поменять/добавить юзеру коментарий (description)
Кто сталкивался или не сталкивался, подскажите ...
Есть подозрение на ldap_add(), но что-то она у меня не хочет работать ...
 
Подскажите пожалуйста, как в ldap_modify во второй переменной указать нужного юзера ...
Получилось добавить например комментарий к контроллеру домена, через строку: "dc=mydomainm,dc=com", а как добавить к определённому пользователю, через всякие ou cn и т.д. пока ничего не получается, где почитать про эти "переменные"???
 
Автор оригинала: tulupov
добавить к определённому пользователю, через всякие ou cn и т.д. пока ничего не получается, где почитать про эти "переменные"???
если не горит могу исходники замылить в четверг. домашний комп в ремонте. там основная работа с LDAP. Даже картинки там хранил (фотки юзеров).

использовалось для интранет решения на сайте, т.е. авторизация, управление некоторыми полями, группами и т.д.
 
для изучения структуры AD удобнее всего пользоваться adsiedit.msc. Если ты не знаешь dn (Distinguished Name) объекта нужно использовать функцию поиска по известному тебе атрибуту, например, ты знаешь LogonName (userPrincipalName) тогда задаешь фильтр поиска: '[email protected]', и ищешь во всем домене 'DC=domain,DC=local' тебе возвращается массив найденных объектов, поскольку значение этого атрибута уникально возвращается один объект, берешь из его атрибутов dn и, используя его, меняешь другие атрибуты, какие хотел.

PHP:
	error_reporting(E_ALL);

	if( $conn = ldap_connect('DC.domain.local') )
	{
    	if( ldap_bind( $conn, 'domain\\admin', 'pwd' ) )
    	{
    		if( $result = ldap_search( $conn, 'DC=domain,DC=local', '[email protected]' ) )
    		{
				$entries = ldap_get_entries( $conn, $result );
				$count = intval( $entries['count'] );
	            if( $count > 0 )
	            {
					$entry = array('description'=>'admin description');
	        		if( !ldap_mod_replace( $conn, $entries[0]['dn'], $entry ) )
    					echo ldap_error( $conn );
	            }
    		}
    		else
    		{
    			echo ldap_error( $conn );
    		}
	        ldap_close( $conn );
	    }
	    else
	    {
   			echo ldap_error( $conn );
	    }
	}
	else
	{
   		echo ldap_error( $conn );
	}
 
Сверху