Имя: Пароль:
1C
1С v8
1С8 и LDAP. Работа с объектами Active Directory из под учетки обычного юзера.
0 duke55
 
15.11.14
13:58
Пытаюсь освоить COM-взаимодействие с каталогом AD..
Тестируюсь на редактировании учеток пользователей...

Вот кусок кода, который должен сменить пароль у тестового пользователя:


...
DSE = ПолучитьCOMОбъект("LDAP://rootDSE");
DomObj = DSE.Get("defaultNamingContext");

objConnection = Новый COMОбъект("ADODB.Connection");
objConnection.Provider = "ADSDSOObject";
objConnection.Properties("User ID").Value = "[email protected]"; // учетка администратора домена
objConnection.Properties("Password").Value= "passadmin"; //соответсвенно его пароль
objConnection.Open("Active Directory Provider");

objCMD = Новый COMОбъект("ADODB.Command");
objCMD.ActiveConnection = objConnection;
objCMD.CommandText = "Select ADsPath From 'LDAP://" + DomObj + "' Where objectClass='user' and objectCategory='person'";

objRS = objCMD.Execute();
objRS.MoveFirst();

Пока НЕ objRS.EOF Цикл
    objUser = ПолучитьCOMОбъект(objRS.Fields(0).Value);
    Если objUser.Get("Name")="testuser" Тогда
        objUser.SetPassword("testpass1");
    КонецЕсли;
    objUser.Setinfo();
    objRS.MoveNext();
КонецЦикла;
...

Если запустить 1С от имени администратора домена, то все работает. Если от обычного пользователя - то выдает ошибку:

Ошибка исполнения произвольного кода:{(20)}: Ошибка при вызове метода контекста (SetPassword): Произошла исключительная ситуация (0x80070005)...

Что я делаю не так? Или что в настройках домена неправильно?
1 oleg_km
 
15.11.14
14:33
У объектов AD нужно настроить доступ на изменение пользователям. Только это уже будет не AD а большая дыра
2 duke55
 
15.11.14
15:34
Получается, в моем случае указанные имя и пароль администратора домена в данном случае используются только для того, чтобы получить информацию? ... с объектом пользователя уже работает моя локальная учетка?
3 oleg_km
 
15.11.14
16:01
(2) Нет, с объектом работает учетка администратора. Просто винда поддерживает такое действия, как имперсонация - отдельные действия можно произвести под другой учеткой
4 duke55
 
15.11.14
16:08
... и замена пароля в список этих действий не входит... так?
5 akaBrr
 
15.11.14
17:50
(0) создание ком объекта в цикле для получения имени - лишнее, имя можно сразу получить в запросе
6 duke55
 
15.11.14
19:47
... а его никто и не создает в цикле...

Объекты выбираются запросом... А в цикле к ним происходит подключение...