Подключение по RDP из 1С с автоматическим вводом пароля

23.07.24

Администрирование - Удаленное управление

Как дать доступ сотруднику к удаленному рабочему столу (RDP), но при этом не давать пароль доступа?

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Подключение по RDP из 1С с автоматическим вводом пароля. Расширение и Внешняя компонента.
.zip 2,93Mb
10
10
2 SM
Скачать Купить за 2 150 руб.

На первый взгляд задача не очень сложная. Запуск из 1С другого приложения возможен, надо просто передать в параметрах запуска путь к файлу с настроенным подключением. Создать файл подключения *.rdp, добавить в него сохраненный пароль и запустить. Но на деле начинаются появляться нюансы.

Немного погуглив нашел несколько статей, из которых стало понятно, что пароль шифруется с помощью функции CryptProtectData из библиотеки crypt32.dll и записывается в соответствующий параметр файла *.rdp. Нашлись и инструменты для выполнения этой задачи.

Примерный код запуска из 1С выглядит так:

ЗапуститьПриложение(СтрокаКоманды, [ТекущийКаталог], [ДождатьсяЗавершения], [КодВозврата])

Ок. Вроде работает.

Оказалось есть проблема при подключении к серверам где политиками безопасности запрещено подключение с сохраненным паролем. Если запустить приложение mstsc.exe с параметром запуска указывающим на файл *.rdp с сохраненным паролем, то все равно появится запрос на ввод пароля.

Что делать? (Вопрос риторический).

Внешнюю компоненту. Которая сделает все за вас :)

И так, ТЗ. 

Создать внешнюю компоненту 1С, для выполнения следующих задач: 

1. Запуск подключения по RDP.

2. Не предоставлять пользователю пароль подключения.

3. Автоматический ввод пароля при появлении окна запроса.

4. Подавление дополнительных окон запросов. (выяснилось в процессе).

5. Выполнение кодирования/декодирования строки с паролем для сохранения в базе данных.

Задача есть, приступаем к выполнению ...

 

(some time passed)

ВК.

Имеет следующие методы:

ПодключитьУРС(srv, dmn, usr, psw, gwrdp, plg) (ConnectRD(srv, dmn, usr, psw, gwrdp, plg)) - Запуск RDP подключения.

Параметры запуска:

srv - адрес сервера. Обязательный параметр.

dmn - Домен пользователя.

usr - Имя пользователя. Обязательный параметр.

psw - Пароль (зашифрованный методом Кодировать ). Обязательный параметр.

gwrdp - адрес шлюза RDP.

plg - набор коллекции (функция RD Connection Broker Load Balancing, которая позволяет при подключении пользователя к ферме перенаправить его на наименее загруженный сервер фермы. Строка в формате: "tsv://MS Terminal Services Plugin.1.Development". Параметр в файле: loadbalanceinfo:s:)

 

Кодировать (Encode) - Шифрование строки с паролем. Для сохранения в 1С.

 

Декодировать (Decode) - Обратный процесс шифрования. В работе не используется. Но можно восстановить зашифрованный пароль

ПолучитьОшибку(GetLastError) - Получение номера и описания последней возникшей ошибки.

 

Приступаем к реализации в 1С.

Добавим универсальности в наш "проект". Создадим расширение конфигурации, в котором реализуем весь функционал.

На выходе получили расширение со следующими объектами

Общий макет - RDPClient_Макет, в который загрузили нашу внешнюю компоненту.

Справочник - RDPClient_Клиенты, в нем будем хранить настройки подключений. Справочник привязали к справочнику контрагентов.

 

 

Тут надо бы внести некоторую ясность. Пароль не сохраняется в безе в открытом виде. А вместо пароля сохраняется его Шифр, подготовленный компонентой. При подключении в компоненту передается Шифр. Таким образом пользователь не видит реального пароля.

 

И сама обработка подключения - RDPClient_Connect.

 

 

Теперь немного о процессе подключения, который был реализован в компоненте.

Запуская процесс подключения, компонента подготавливает RDP файл во временной папке и запускает процесс MSTSC.EXE с параметром указывающим на путь к файлу и удаляет файл после запуска. Если сервер принимает подключения с сохраненным паролем, то процесс без запросов продолжается. Если же сервер попросит ввести пароль, то компонента сама введет его в окно и продолжит запуск соединения. 

 

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

Тестировалось на ERP и УНФ. При установке расширения, возможно, потребуется указать соответствие справочника Контрагенты. Думаю, заработает и в других конфигурациях, где есть справочник Контрагенты.

 

 

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.11.56

RDP Расширение конфигурации Внешняя компонента

См. также

Информационная безопасность Пароли Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Простой пример формирования одноразового секрета (пароля, сообщения и т.п. информации) через указания ключа.

16.07.2024    399    maksa2005    0    

1

Инструменты администратора БД Пароли Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для массового изменения элементов внутреннего справочника "Пользователи информационной базы". Можно использовать для аудита пользователей информационной базы, массового изменения основных свойств пользователей, создания паролей, рассылки логинов/паролей.

1 стартмани

13.06.2024    505    6    alexey.kutya    0    

3

Удаленное управление Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Включение и выключение компьютеров по расписанию из 1С, заданным регламентными заданиями. Компьютеры под управлением Windows включаются по команде broadc и выключаются командой shutdown. - broadc бесплатная утилита, доступная в интернете и приложенная к этой статье - shutdown - команда windows Статья показывает, как в 1С использовать данные команды.

11.06.2024    755    eda_light    0    

3

Пароли Системный администратор Платформа 1С v8.3 Бесплатно (free)

В очередной раз пришлось поменять пароль пользователя sa в базе данных MS SQL, и поскольку эту процедуру приходится делать нечасто, решил записать последовательность действий для памяти. Коротко. Июнь 2024 г.

03.06.2024    2830    2ncom    8    

14

Информационная безопасность Пароли Платформа 1С v8.3 Бесплатно (free)

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    4686    kamisov    16    

59

Пароли Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Обработка для массовой генерации и изменения паролей для любого количества пользователей в 1С. Сложность паролей: длина 8, латинские буквы, цифры и некоторые символы. Может быть полезна в администрировании баз любых конфигураций 1С 8 на управляемых формах с большим количеством пользователей.

1 стартмани

15.05.2024    573    2    Лев    1    

1

Инструменты администратора БД Роли и права Пароли Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка предназначена для переноса пользователей между разными базами 1С. Позволяет выгрузить выбранных (или всех) пользователей базы-источника со всеми настройками, включая разделение данных, в файл. И с помощью этой же обработки загрузить выгруженных пользователей из файла в базу-приёмник. Может быть полезна тем, кто хочет перенести пользователей между базами, у которых включено разделение данных.

1 стартмани

02.05.2024    541    4    METAL    2    

5

Информационная безопасность Роли и права Пароли Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Обработка "Менеджер авторизации пользователей" разработана для управления авторизацией пользователей в информационной базе на платформе 1С: ITILIUM. Этот инструмент предоставляет широкий набор функций, обеспечивающих безопасность доступа к данным и управление правами пользователей.

5 стартмани

17.04.2024    537    1    flappy27    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. webester 26 27.03.24 09:44 Сейчас в теме
Автоматический ввод пароля при появлении окна запроса.

В этот момент первая мысль должна быть: autoit
2. user2097192 23.07.24 11:46 Сейчас в теме
Купили у вас вчера данное расширение и столкнулись с проблемой. При подключении к rdp, пишет что данные неверны...Понял, что проблема в шифрованном пароле. Если его на прямую (без шифра) передать в строку для подключения, тогда все работает, но уже срабатывает аварийное завершение 1С. Можно ли как-то изменить/посмотреть исходный код компоненты? Надеюсь на обратную связь и буду благодарен за любую помощь!
3. dungeonkeeper 32 23.07.24 11:49 Сейчас в теме
(2)
Если его на прямую (без шифра)

Это очень странно. Пароль не может передаваться в незашифрованном виде, он как минимум должен быть зашифрован алгоритмом с помощью функции CryptProtectData из библиотеки crypt32.dll.
Можно посмотреть пароль который вы используете?
Я проверю.
4. user2097192 23.07.24 12:41 Сейчас в теме
(3) Вот пример пароля: 12GhjuhfvvbcN12
Проблема в том, что не срабатывает ни одно подключение с исходными данными расширения и везде ошибка, что пароль введен неверно. В коде 1С шифрование происходит и передает параметр как надо, а вот уже в коде компонента происходит, видимо, что-то странное.
5. dungeonkeeper 32 23.07.24 12:48 Сейчас в теме
(4) Вы используете мое расширение или пишете свой модуль?
Я нашел несоответствие в статье. Описание процедуры имеет разный порядок параметров
Вот правильный
ПодключитьУРС(СерверАдрес,Домен,Логин,Шифр,Шлюз,Набор)
7. user2097192 23.07.24 14:02 Сейчас в теме
(5) Использую ваше расширение. Порядок изначально такой был, который вы сейчас прислали.
Если декодировать, то возвращает верный пароль, который вводил до этого.
6. dungeonkeeper 32 23.07.24 12:52 Сейчас в теме
(4)
Вот пример пароля: 12GhjuhfvvbcN12

Попробуйте Декодировать (Decode), что вернет компонента?
8. dungeonkeeper 32 23.07.24 14:06 Сейчас в теме
Какая у вас операционная система?

Прикладываю видео с работой компоненты
Прикрепленные файлы:
bandicam 2024-07-23 14-00-34-862.mp4
9. user2097192 23.07.24 14:32 Сейчас в теме
(8) Win 10 Pro, Версия 22H2. Да, вижу, все работает. Операционная система может на что-то влиять? В моем случае, не вводит пароль в всплывающее окно и на этом все заканчивается.
10. dungeonkeeper 32 23.07.24 14:37 Сейчас в теме
(9)
Операционная система может на что-то влиять?

Пароль для rdp файла шифруется системной библиотекой.

(9)
не вводит пароль в всплывающее окно и на этом все заканчивается

Получается, что ВК не видит окно. Окно с вводом пароля стандартное "Безопасность Windows"?
Кстати, версия Windows у вас русская?
11. user2097192 23.07.24 14:47 Сейчас в теме
(10) Да, окно стандартное "Безопасность Windows". Версия русская.
Сейчас попробовал подключиться к другому адресу, подключение произошло, но в самой системе пишет, что данные неверны. Логин и домен указаны верно, видимо, проблема с паролем.
Прикрепленные файлы:
14. dungeonkeeper 32 23.07.24 15:19 Сейчас в теме
(11) Скачайте заново по той же ссылке, она вроде долго действует. Или дайте почту.
15. dungeonkeeper 32 24.07.24 09:42 Сейчас в теме
(11)
Логин и домен указаны верно, видимо, проблема с паролем

Такое возможно если пользователь отключен или срок действия его пароля истек.
12. dungeonkeeper 32 23.07.24 14:56 Сейчас в теме
Ответьте мне в личку. Или дайте почту тут
13. пользователь 23.07.24 15:08
Сообщение было скрыто модератором.
...
16. user2097192 24.07.24 09:43 Сейчас в теме
Обновленное расширение решило проблему, автору статьи большое спасибо за помощь!
Оставьте свое сообщение