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

23.07.24

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Подключение по RDP из 1С с автоматическим вводом пароля. Расширение и Внешняя компонента.
.zip 2,93Mb ver:1.0.0.3
16
16 Скачать (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 Россия Абонемент ($m)

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

1 стартмани

02.12.2024    1436    8    ignatievl    6    

2

Пароли Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

Создал простое расширение, которое проставит галку Запомнить пароль. Должно работать на всех версиях БСП, т.к. простое.

2 стартмани

19.11.2024    156    1    slavok123    0    

1

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

Расширение добавляет возможность настроить обновление пароля пользователем через заданный промежуток времени в днях (1-99 дней). Также добавлен контроль: новый пароль не должен совпадать с предыдущим.

1 стартмани

11.11.2024    268    1    KonorArgent    0    

1

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

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

16.07.2024    800    maksa2005    0    

1

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

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

1 стартмани

13.06.2024    841    15    alexey.kutya    2    

3

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

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

11.06.2024    1148    eda_light    0    

3

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

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

03.06.2024    5345    2ncom    9    

15

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

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

30.05.2024    6469    kamisov    17    

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

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

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

Попробуйте Декодировать (Decode), что вернет компонента?
8. dungeonkeeper 33 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 33 23.07.24 14:37 Сейчас в теме
(9)
Операционная система может на что-то влиять?

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

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

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

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