В данной работе приведен еще один пример.
В платформе 1С.Предприятие 8 имеется замечательная возможность аутентификации пользователей средствами Windows.
Поэтому многие организации, где используется Active Directory, используют и Windows — аутентификацию пользователей.
При этом отключая аутентификацию 1С:Предприятия.
Была поставлена задача: любой сотрудник компании должен иметь возможность выполнить некую операции в среде 1С:Предприятия с любого компьютера.
Понятно, что на других компьютерах работают другие сотрудники, у которых 1С запущена под их учетными записями.
Можно конечно запустить второй сеанс работы, но этот процесс занимает много времени.
Если используется 1С-аутентификация, то можно использовать COM-соединение.
А вот если используется Windows — аутентификация и выключена возможность 1С-аутентификации, то появляется проблема как проверить
тот ли сотрудник использует 1С?
Имя пользователя домена можно брать из настроек пользователя средствами 1С используя
свойства глобального контекста «ПользователиИнформационнойБазы».
А дальше попросить ввести пользователя его пароль и проверить его.
Для аутентификации пользователей можно использовать объект «LDAP» (Lightweight Directory Access Protocol) или «WinNT».
Про LDAP можно прочитать здесь http://citkit.ru/articles/1209/
Про WinNT можно прочитать здесь http://www.deltann.ru/10/d-062008/p-1
Ниже приведен пример функции использующий LDAP.
Функция ПроверитьПользователя(Домен, ИмяПользователя, Пароль)
dso = ПолучитьCOMОбъект(«LDAP:»);
Попытка
obj = dso.OpenDSObject(«LDAP://» + Домен, ИмяПользователя, Пароль, 1);
Возврат Истина;
Исключение
Описание = ОписаниеОшибки();
Если Найти(Описание, «имя пользователя или пароль не опознаны.») > 0 Тогда
Сообщить(«Неверный пароль»);
Иначе
Сообщить(Описание);
КонецЕсли;
Возврат Ложь;
КонецПопытки;
КонецФункции
К статье приложен пример обработки для проверки функции.
В данной ситуации LDAP не причем. Можно использовать любой COM-сервер который поддерживает авторизацию, например WMI:
var locator = WSH.CreateObject(«WbemScripting.SWbemLocator»);
var WMI = locator.ConnectServer(strHost, «root\CIMV2», strUser, strPass)
Согласен. Можно любой.
Интересно, а как вы решали проблему, чтобы под доменным пользователем User1, вошел другой пользователь в 1С User2?
Ведь при использовании доменной аутентификации необходимо пере заходить в систему, ну или терминал.
А где надо вызвать эту функцию — ПроверитьПользователя? В модуле управляемого приложения ничего не нашла 🙁