gifts2017

Проверка связки логин\пароль в домене windows

Опубликовал Piter Tretyakov (dagder) в раздел Администрирование - Системное

Сквозная авторизация используется в нашей жизни все чаще и чаще.
В данной работе приведен еще один пример.

В платформе 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 Тогда
Сообщить("Неверный пароль");

Иначе
Сообщить(Описание);

КонецЕсли;

Возврат Ложь;

КонецПопытки;

КонецФункции

К статье приложен пример обработки для проверки функции.

Скачать файлы

Наименование Файл Версия Размер
Проверка пользователя в домене 17
.epf 7,16Kb
03.05.12
17
.epf 7,16Kb Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
1. Олег (oleg_km) 09.05.12 11:16
В данной ситуации LDAP не причем. Можно использовать любой COM-сервер который поддерживает авторизацию, например WMI:

var locator = WSH.CreateObject("WbemScripting.SWbemLocator");
var WMI = locator.ConnectServer(strHost, "root\\CIMV2", strUser, strPass)
2. Piter Tretyakov (dagder) 10.05.12 11:59
3. Татьяна Арсенян (Tanya_o) 16.07.12 17:58
Интересно, а как вы решали проблему, чтобы под доменным пользователем User1, вошел другой пользователь в 1С User2?
Ведь при использовании доменной аутентификации необходимо пере заходить в систему, ну или терминал.