Как настроить автоматический запуск 1С при входе по RDP и сквозную авторизацию (SSO) без окна выбора пользователей?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При организации терминального доступа пользователей к 1С:Предприятию часто возникает задача максимально упростить процесс входа. Идеальный сценарий выглядит так: пользователь подключается по RDP (Remote Desktop Protocol), у него автоматически запускается клиентское приложение 1С, подхватывает учетную запись Windows, под которой произошел вход, и сразу открывает рабочую базу без лишних вопросов, диалоговых окон выбора пользователей или ввода паролей. Такой подход называется сквозной авторизацией (Single Sign-On, или SSO).

Однако при развертывании трехзвенной архитектуры (когда клиент RDP, сервер приложений 1С и СУБД разнесены по разным виртуальным машинам) системные администраторы часто сталкиваются со следующей проблемой: все настройки выполнены, аутентификация операционной системы включена, параметры запуска прописаны, но при входе по RDP все равно настойчиво появляется стандартное окно выбора пользователей 1С. В этой статье мы подробно разберем, почему возникает такая проблема, как её исправить, а также рассмотрим особенности функционирования сквозной авторизации и сетевой оптимизации в многосерверных средах.

Разбор типовой ошибки: лишний пробел в параметрах запуска

Рассмотрим ситуацию, описанную автором темы. В инфраструктуре развернуты три виртуальные машины:

  1. Терминальный сервер (RDP-хост), на котором установлен тонкий или толстый клиент 1С:Предприятия.
  2. Сервер приложений 1С:Предприятия.
  3. Сервер СУБД (MS SQL Server или PostgreSQL).

Администратор настроил аутентификацию операционной системы в конфигураторе 1С для конкретных пользователей, сопоставив их с доменными учетными записями. В свойствах учетной записи пользователя Windows (например, в Active Directory или в локальных пользователях на RDP-сервере) на вкладке «Среда» (Environment) был прописан автоматический запуск 1С при входе в сеанс.

Несмотря на это, автозапуск срабатывал некорректно: вместо автоматического открытия базы данных система выдавала окно выбора пользователя из списка. Как выяснилось в ходе обсуждения, причиной проблемы стала банальная синтаксическая ошибка: в строке запуска в свойствах среды пользователя был указан лишний пробел.

Платформа 1С:Предприятие крайне чувствительна к синтаксису параметров командной строки. При наличии лишнего пробела в путях к исполняемому файлу или в параметрах строки подключения (например, между ключами запуска /S или /F и адресом информационной базы) клиентское приложение не может корректно интерпретировать переданные ему данные. В результате оно сбрасывает контекст автоматической авторизации и переходит в стандартный режим запуска, предлагая пользователю выбрать базу и ввести учетные данные вручную.

Чтобы избежать подобных проблем, всегда тщательно проверяйте синтаксис строки запуска в свойствах пользователя. Шаблон корректной строки запуска для клиент-серверного варианта выглядит следующим образом:

"C:\Program Files\1cv8\common\1cv8s.exe" ENTERPRISE /S"ИмяСервера1С\ИмяБазы"

Обратите внимание на отсутствие пробела сразу после ключа /S. Путь к исполняемому файлу обязательно должен быть заключен в кавычки, если в нем присутствуют пробелы (например, в названии папки Program Files).

Ограничения механизма «Среда запуска» в современных ОС и переход на RemoteApp

Настройка автоматического запуска программ через вкладку «Среда» (Environment) в свойствах пользователя Active Directory или локального профиля — это устаревающий метод интеграции. Разберем, с какими подводными камнями вы можете столкнуться при его использовании:

  1. Блокировка со стороны операционной системы: Начиная с Windows Server 2016, компания Microsoft из соображений безопасности по умолчанию отключила обработку параметров вкладки «Среда» в свойствах пользователей. Если вы попытаетесь применить этот метод в современной системе «из коробки», он просто не сработает. Чтобы вернуть эту функциональность, администраторам приходится принудительно активировать групповую политику или вручную изменять системный реестр, устанавливая параметр fQueryUserConfigFromDC в значение 1 в ветке реестра: HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\.
  2. Проблема «черного экрана» при выходе: При использовании устаревшего метода запуска через «Среду» после закрытия пользователем программы 1С терминальная сессия RDP очень часто зависает в состоянии «Завершение сеанса» или оставляет пользователя созерцать пустой черный экран. Это происходит из-за того, что в фоне продолжают выполняться некоторые дочерние процессы (например, процессы обновления, проверки лицензий или утилиты печати), которые не позволяют операционной системе корректно закрыть RDP-сеанс.

Современной и рекомендуемой альтернативой является публикация 1С:Предприятия через технологию MS RemoteApp. Проанализируем преимущества этого подхода:

Настройка сквозной авторизации (SSO) в многосерверной архитектуре

Для того чтобы доменная авторизация без ввода паролей успешно работала в схеме, где клиент 1С запущен на терминальном сервере, а служба сервера 1С функционирует на отдельном физическом или виртуальном сервере, необходимо соблюдение ключевого условия: в сети должен быть развернут домен Active Directory (AD).

Если домен отсутствует (все машины работают в рабочей группе - Workgroup), настроить полноценную сквозную авторизацию между разными компьютерами практически невозможно. Единственный крайне ненадежный обходной путь в рабочей группе — создание абсолютно идентичных локальных учетных записей пользователей с одинаковыми логинами и паролями на всех трех машинах (RDP, Сервер 1С, SQL), чтобы механизмы NTLM-авторизации могли сопоставить сессии. Однако это порождает колоссальные проблемы с безопасностью и администрированием при увольнении или приеме новых сотрудников.

В доменной же среде для безупречной работы SSO на трех звеньях необходимо выполнить тонкую техническую настройку протокола Kerberos. По умолчанию, если настройки не завершены, система откатывается к протоколу NTLM, который не умеет безопасно делегировать учетные данные через несколько «хопов» (переходов между серверами), из-за чего 1С снова запрашивает авторизацию.

Выясним пошагово, как настроить сквозную авторизацию по протоколу Kerberos:

Шаг 1. Настройка сервисной учетной записи в Active Directory

Служба сервера 1С:Предприятия (ragent) не должна работать от имени системных учетных записей вроде LocalSystem или NetworkService, если сервер вынесен на отдельную машину. Создайте в домене специальную сервисную учетную запись (например, usr1cv8) с бесконечным сроком действия пароля и настройте службу сервера 1С на запуск от имени этого доменного пользователя.

Шаг 2. Регистрация имен служб (SPN — Service Principal Name)

Для того чтобы контроллер домена (Kerberos KDC) понимал, кому именно направлять билеты безопасности при обращении клиентов к серверу 1С, необходимо связать сетевые имена сервера 1С с созданной сервисной учетной записью в AD. Откройте командную строку от имени администратора домена и выполните регистрацию SPN:


setspn -A E1CIB/ИмяСервера1С DOMAIN\usr1cv8
setspn -A E1CIB/ИмяСервера1С.domain.local DOMAIN\usr1cv8

Если служба сервера 1С использует нестандартный порт (отличный от 1540/1541), порт также необходимо явно зарегистрировать:


setspn -A E1CIB/ИмяСервера1С:1541 DOMAIN\usr1cv8
setspn -A E1CIB/ИмяСервера1С.domain.local:1541 DOMAIN\usr1cv8

Шаг 3. Настройка делегирования (Delegation) в Active Directory

Откройте оснастку Active Directory Users and Computers (Пользователи и компьютеры Active Directory). Найдите созданного пользователя usr1cv8, откройте его свойства и перейдите на вкладку «Делегирование» (Delegation). Выберите опцию «Доверять этому пользователю для делегирования любым службам (только Kerberos)» или настройте сопоставление для конкретных служб (Constrained Delegation), если этого требуют регламенты безопасности вашей компании.

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

Проблема производительности: почему разделение на три виртуалки может замедлить 1С?

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

Платформа 1С:Предприятие при выполнении бизнес-логики (особенно при проведении документов, формировании отчетов или закрытии месяца) генерирует колоссальное количество мелких, последовательных и зависимых друг от друга запросов к базе данных. Это явление в сетевом администрировании называют «SQL-болтливостью» (SQL chatter).

Проанализируем разницу в производительности двух схем:

Рекомендации по оптимизации многосерверной архитектуры 1С

Если по соображениям безопасности или масштабируемости вам все же необходимо держать сервер приложений 1С и SQL на разных виртуальных машинах, обязательно выполните следующие настройки для минимизации потерь производительности:

  1. Используйте виртуальные адаптеры VMXNET3: Если вы используете виртуализацию VMware (или аналогичные высокопроизводительные драйверы типа VirtIO для KVM/Hyper-V), убедитесь, что на всех виртуалках установлены именно они. Они обеспечивают максимальную пропускную способность и минимальные задержки процессора на обработку сетевых прерываний.
  2. Включите Jumbo Frames: Настройте размер MTU до 9000 байт на виртуальных сетевых картах серверов 1С и SQL, а также на виртуальном коммутаторе гипервизора. Это позволит передавать большие объемы данных меньшим количеством пакетов, существенно снизив нагрузку на CPU.
  3. Отключите механизмы экономии энергии на гипервизоре: Убедитесь, что в BIOS/UEFI физического сервера и в настройках самого гипервизора (например, ESXi High Performance policy) выставлен режим максимальной производительности. Технологии динамического снижения частоты ядер процессора пагубно влияют на скорость работы 1С.
  4. Примените CPU Pinning (привязку ядер): Жестко зафиксируйте за виртуальными машинами 1С и SQL физические ядра процессора, чтобы планировщик гипервизора не перекидывал их потоки между разными сокетами (что увеличивает задержки обращения к кэшу процессора L3 и оперативной памяти NUMA-узлов).

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

← На главную