|
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 = "administrator@test.local"; // учетка администратора домена
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
|
... а его никто и не создает в цикле...
Объекты выбираются запросом... А в цикле к ним происходит подключение...
|
|