Как исправить работу аутентификации операционной системы в 1С без домена?

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

Настройка Windows-аутентификации (аутентификации операционной системы) в 1С — это отличный способ упростить жизнь пользователям и избавить их от необходимости постоянно вводить пароли при запуске программы. Однако в инфраструктурах, где отсутствует домен Active Directory (все компьютеры работают в обычной рабочей группе — Workgroup), системные администраторы часто сталкиваются с тем, что данная функция отказывается работать. Особенно остро эта проблема проявляется на серверах под управлением Windows Server 2008 R2, в то время как на более современных Windows Server 2012 или Windows 10 всё запускается без видимых сложностей.

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

Принцип работы Windows-аутентификации в рабочей группе

Для начала проанализируем, как именно платформа 1С проверяет права пользователя ОС в клиент-серверном варианте работы. Когда пользователь запускает тонкий или толстый клиент, его компьютер не проверяет подлинность учетной записи локально для передачи готового «флага» успешного входа. Проверка выполняется на стороне сервера приложений 1С (процессом rphost.exe).

Сервер приложений 1С запрашивает у операционной системы проверку подлинности присланных клиентом данных. Если сервера и рабочие станции находятся в домене, этот запрос делегируется контроллеру домена через протокол Kerberos. Но если домена нет, сервер 1С вынужден проверять пользователя через локальную базу учетных записей (SAM). Чтобы сервер Windows разрешил такую авторизацию, операционные системы на клиенте и сервере должны «доверять» друг другу.

Добиться этого доверия в рабочей группе можно только одним способом — созданием абсолютно идентичных локальных пользователей на всех узлах сети.

Шаг 1. Настройка идентичных учетных записей на клиенте и сервере

Рассмотрим базовое правило сквозной авторизации в одноранговой сети (Workgroup): имена пользователей и их пароли на клиентском компьютере и на сервере 1С должны полностью совпадать.

Выполним следующие действия для настройки учетных записей:

  1. На сервере приложений 1С откроем оснастку «Управление компьютером» (команда compmgmt.msc) и перейдем в раздел «Локальные пользователи и группы» — «Пользователи».
  2. Создадим нового пользователя. К примеру, зададим имя ИвановИИ. Установим для него надежный пароль и снимем флаг «Потребовать смену пароля при следующем входе в систему».
  3. На рабочем компьютере пользователя (клиентской машине) откроем аналогичную оснастку управления пользователями и создадим учетную запись с точно таким же именем ИвановИИ и точно таким же паролем, который был задан на сервере.
  4. Если пользователь авторизуется в Windows на своей локальной машине под этой учетной записью, то при обращении к серверу 1С операционная система автоматически применит механизм сетевой авторизации NTLM, и сервер распознает пользователя как «своего».

Важное замечание: Обратим внимание на учетные записи Microsoft (в виде адресов электронной почты), которые часто используются по умолчанию в Windows 8.1 и Windows 10. Платформа 1С некорректно работает с сетевой авторизацией таких аккаунтов в рабочей группе. Настоятельно рекомендуется создавать классические локальные учетные записи на рабочих станциях.

Шаг 2. Настройка пользователя в Конфигураторе 1С

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

  1. Запустим информационную базу в режиме «Конфигуратор».
  2. Перейдем в меню «Администрирование» — «Пользователи» и откроем карточку нужного сотрудника.
  3. На вкладке «Основные» установим флаг «Аутентификация операционной системы».
  4. В поле ввода имени пользователя ОС нажмем на кнопку выбора (три точки). Платформа откроет диалоговое окно выбора пользователя.
  5. Поскольку домена нет, нам нужно выбрать локального пользователя сервера. Имя должно быть записано строго в формате: \\ИМЯ_СЕРВЕРА\ИмяПользователя. Например: \\1C-SRV\ИвановИИ.

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

Шаг 3. Решение проблем безопасности Windows Server 2008 R2 (UAC и фильтрация токенов)

Даже если учетные записи и пути в Конфигураторе настроены верно, операционная система Windows Server 2008 R2 часто блокирует авторизацию из-за встроенных механизмов безопасности локальных учетных записей администраторов.

Если учетная запись пользователя на клиентском компьютере или сервере входит в группу «Администраторы» (Administrators), то при попытке сетевого подключения к серверу вступают в силу политики контроля учетных записей (UAC). По умолчанию Windows урезает административные права для сетевых запросов от локальных пользователей. Этот механизм называется фильтрацией локальных токенов безопасности, и именно он чаще всего вызывает бесконечный запрос логина и пароля в 1С.

Чтобы отключить фильтрацию токенов для локальных администраторов при сетевом подключении, выполним редактирование системного реестра на сервере приложений 1С:

  1. Нажмем сочетание клавиш Win + R, введем команду regedit и нажмем Enter для запуска редактора реестра.
  2. Перейдем к следующей ветке реестра:
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  3. Кликнем правой кнопкой мыши по пустому месту в правой панели, выберем «Создать» — «Параметр DWORD (32 бита)».
  4. Присвоим параметру имя LocalAccountTokenFilterPolicy.
  5. Дважды кликнем по созданному параметру и установим его значение равным 1 (система исчисления — шестнадцатеричная).
  6. Нажмем «ОК» и перезагрузим сервер приложений для вступления изменений в силу.

Шаг 4. Настройка уровня безопасности NTLM (LAN Manager)

Еще одна скрытая проблема Windows Server 2008 R2 заключается в несовпадении поддерживаемых протоколов шифрования авторизации на сервере и старых клиентских машинах (например, под управлением Windows 7). По умолчанию сервер требует только самый защищенный протокол NTLMv2, в то время как клиенты могут пытаться отправить более старые версии ответов.

Приведем настройки сетевой безопасности к единому стандарту на сервере и клиентских ПК:

  1. Нажмем Win + R, введем secpol.msc и откроем «Локальную политику безопасности».
  2. Перейдем по пути: «Локальные политики» — «Параметры безопасности».
  3. Найдем в списке политику с названием «Сетевая безопасность: уровень проверки подлинности LAN Manager» (Network security: LAN Manager authentication level).
  4. Откроем ее свойства и установим значение «Отправлять только ответы NTLMv2. Отказывать LM и NTLM» (Send NTLMv2 response only. Refuse LM & NTLM).
  5. Выполним это действие как на сервере, так и на рабочих станциях пользователей. Это гарантирует, что методы шифрования паролей при авторизации совпадут на 100%.

Шаг 5. Особенности настройки при работе через веб-сервер (IIS / Apache)

Если пользователи подключаются к базе 1С через веб-клиент или тонкий клиент по протоколам HTTP/HTTPS, то авторизация операционной системы обрабатывается не сервером 1С напрямую, а веб-сервером. Здесь есть важные технологические нюансы.

Ограничение веб-сервера Apache: Полноценная Windows-аутентификация для 1С силами веб-сервера Apache под управлением ОС Windows в бесдоменной среде не поддерживается. Если вам необходима сквозная авторизация по HTTP, в качестве веб-сервера следует использовать исключительно Internet Information Services (IIS).

Настроим веб-сервер IIS 7.5 (стандартный для Windows Server 2008 R2) для корректной работы:

  1. Откроем Диспетчер служб IIS.
  2. В дереве подключений выберем опубликованное приложение (нашу базу 1С).
  3. В центральной панели дважды кликнем на раздел «Проверка подлинности» (Authentication).
  4. Отключим (Disable) пункт «Анонимная проверка подлинности» (Anonymous Authentication).
  5. Включим (Enable) пункт «Проверка подлинности Windows» (Windows Authentication).
  6. Выделим пункт «Проверка подлинности Windows» и в правой панели выберем «Провайдеры» (Providers).
  7. Убедимся, что в списке провайдеров на первом месте стоит протокол NTLM. Если там находится Negotiate, переместим NTLM вверх списка, так как без домена протокол Kerberos, используемый по умолчанию в Negotiate, работать не сможет.
  8. Для того чтобы веб-сервер мог прочитать исполняемые файлы платформы 1С, предоставим группе пользователей IIS_IUSRS права на чтение и выполнение для каталога установки 1С (обычно это C:\Program Files\1cv8).

Шаг 6. Использование Технологического журнала 1С для точной диагностики

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

Настроим сбор логов технологического журнала по шагам:

  1. На сервере приложений 1С перейдем в каталог настроек платформы (по умолчанию это C:\Program Files\1cv8\conf).
  2. Создадим в этом каталоге текстовый файл с именем logcfg.xml.
  3. Вставим в файл следующий конфигурационный код, который будет отслеживать события сетевых подключений (CONN) и системных исключений (EXCP):

<config xmlns="http://v8.1c.ru/8.1/data/txt/config">
    <log location="C:\1C_Logs" history="1">
        <event>
            <eq property="Name" value="CONN"/>
        </event>
        <event>
            <eq property="Name" value="EXCP"/>
        </event>
        <property name="all"/>
    </log>
</config>
  1. Создадим на диске C:\ папку с именем 1C_Logs и дадим пользователю, под которым запущена служба сервера 1С (обычно это USR1CV8), полные права на запись в эту папку.
  2. Воспроизведем проблему: попытаемся запустить 1С на клиентском ПК под Windows-авторизацией и получим окно ввода логина/пароля.
  3. Откроем сформированные файлы логов в папке C:\1C_Logs с помощью любого текстового редактора.
  4. Найдем в логах событие EXCP (исключение) со словами «Идентификация пользователя не выполнена».
  5. Перед этим событием проанализируем предшествующее ему событие CONN. Обратим внимание на свойство DstUserName2. В нем будет содержаться точное имя пользователя Windows, которое клиентская машина передала серверу 1С (например, WORKSTATION\User1 или SERVER\User1).
  6. Именно то значение, которое зафиксировано в свойстве DstUserName2, необходимо скопировать и прописать в поле «Пользователь ОС» в Конфигураторе 1С. Часто из-за несовпадения имен рабочих станций или регистра букв авторизация отклоняется сервером, а технологический журнал помогает быстро обнаружить это несовпадение.

После успешной настройки и проверки работы системы не забудьте удалить файл logcfg.xml из папки conf, чтобы файлы технологического журнала не переполняли свободное место на жестком диске сервера.

Применение описанного комплексного подхода гарантирует успешный запуск Windows-аутентификации в базах данных 1С даже в условиях отсутствия доменной сети Active Directory.

← На главную