Как получить пользователей с помощью LDAP в 1С?

Рейтинг: 0Ответов: 2Опубликовано: 16.02.2023

Я хочу в 1C достать всех пользователей с помощью LDAPS из Active Directory.

Когда я использую ПолучитьCOMОбъект("LDAP://domain.ru:123"), то возвращается COM объект. Но это с LDAP, а надо LDAPS. И в отладчике еще почему-то COM объект пустой. Но если написать ПолучитьCOMОбъект("LDAPS://domain.ru:123"), то почему-то сразу ошибка вылетает.

Не понятно почему не работает, потому что есть еще отдельный почтовый сервис (не в 1С), который тоже использует LDAPS, и там все нормально работает.

Еще просто сделать ПолучитьCOMОбъект("LDAPS://domain.ru:123") тоже нельзя, потому что нужно авторизоваться. Видел в примерах, что авторизуются с помощью логин@домен, но нашел еще вариант с CN=admins,CN=login или UID=login,CN=admins,CN=login.

Пробовал авторизироваться способами ниже, которые в итоге тоже не сработали из-за ошибки Произошла исключительная ситуация (Active Directory): The specified domain either does not exist or could not be contacted..

COMОбъект = ПолучитьCOMОбъект("LDAP://");
Корень = COMОбъект.OpenDSObject("LDAP://RootDSE", "login@domain.ru:123", "password", 1);
COMОбъект = ПолучитьCOMОбъект("LDAP://domain.ru:123");
Корень = COMОбъект.OpenDSObject("LDAP://OU=people,DC=domain,DC=ru", "CN=admins,CN=login", "password", 1);

UPD1: Сейчас еще пробую подключится так:

СоединениеАДО = Новый COMОбъект("ADODB.Connection");
        СоединениеАДО.ConnectionString = "Provider=ADSDSOObject;User Id=login;Password=password;"; 
        СоединениеАДО.Open();

Но в третьей строке возникает ошибка

Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

UPD2: Сейчас максимально далеко зашел:

СоединениеАДО = Новый COMОбъект("ADODB.Connection");
СоединениеАДО.Provider = "ADSDSOObject"; 
СоединениеАДО.Properties("User Id").Value = "login";
СоединениеАДО.Properties("Password").Value = "password";
СоединениеАДО.Open("LDAPS://domain.ru:636");

В 3 и 4 строке всё работает, но не работает вторая (5 пока не могу проверить без 2). Во второй строке появляется ошибка (ADODB.Connection): Supplied provider is different from the one already in use.. По умолчанию стоит MSDASQL.1.

Ответы

▲ 1

Может поможет эта публикация? Почитайте комментарии.

▲ 0

Вот работающий пример; Попробуй сделать таким же образом.

dso = ПолучитьCOMОбъект("LDAP:");
        
        Попытка
            Объект_AD = dso.OpenDSObject("LDAP://"+Настройки.Домен+Порт+"/"+КонтейнерОбъекта, Настройки.Пользователь,Настройки.ПарольРасшифрованный, ?(ИспользоватьSSL,2,1));               
        Исключение
            Объект_AD = Null;               
        КонецПопытки;