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

tulupov

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

Читать сортировать и т.д. могу из LDAP, а вот есть ли возможность менять определённые поля? например поменять/добавить юзеру коментарий (description)
Кто сталкивался или не сталкивался, подскажите ...
Есть подозрение на ldap_add(), но что-то она у меня не хочет работать ...
 

tulupov

Новичок
Подскажите пожалуйста, как в ldap_modify во второй переменной указать нужного юзера ...
Получилось добавить например комментарий к контроллеру домена, через строку: "dc=mydomainm,dc=com", а как добавить к определённому пользователю, через всякие ou cn и т.д. пока ничего не получается, где почитать про эти "переменные"???
 

440hz

php.ru
Автор оригинала: tulupov
добавить к определённому пользователю, через всякие ou cn и т.д. пока ничего не получается, где почитать про эти "переменные"???
если не горит могу исходники замылить в четверг. домашний комп в ремонте. там основная работа с LDAP. Даже картинки там хранил (фотки юзеров).

использовалось для интранет решения на сайте, т.е. авторизация, управление некоторыми полями, группами и т.д.
 

Stm

Новичок
для изучения структуры 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 );
	}
 
Сверху