Часто системные администраторы и разработчики 1С сталкиваются с ситуацией, когда доменная аутентификация (SSO) прекрасно работает в тонком клиенте или устаревшем Internet Explorer, но отказывается функционировать в современных браузерах, таких как Google Chrome, Яндекс.Браузер или Mozilla Firefox. Вместо автоматического входа пользователь видит окно ввода логина и пароля 1С или системное окно запроса учетных данных Windows. Рассмотрим подробно, как настроить серверную и клиентскую части для корректной работы сквозного входа.
Первым делом проанализируем настройки веб-сервера Internet Information Services (IIS). Именно он выступает посредником между браузером и кластером серверов 1С — для этого подойдёт консоль для централизованного администрирования кластеров 1С. Для того чтобы аутентификация передавалась корректно, выполним следующие шаги:
Negotiate и NTLM. Если Kerberos в домене настроен сложно или с ошибками, попробуем переместить NTLM на первое место для теста, однако для промышленной эксплуатации лучше оставить Negotiate.Для того чтобы веб-клиент инициировал запрос на доменную аутентификацию, необходимо правильно настроить файл default.vrd, который находится в корневом каталоге вашей публикации на веб-сервере. Проанализируем содержимое этого XML-файла. Нам необходимо убедиться, что атрибут использования Windows-аутентификации установлен в значение true.
Пример корректной секции в файле default.vrd:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/MyBase"
ib="Srvr="Server1C";Ref="MyBase";">
<winAuth use="true"/>
</point>
Если строка <winAuth use="true"/> отсутствует, браузер не получит команду от платформы 1С на использование системных учетных данных.
Если мы хотим использовать протокол Kerberos (который подразумевается поставщиком Negotiate), необходимо зарегистрировать имена-службы (SPN). Это критически важно, если пул приложений IIS работает от имени доменной учетной записи, а не от NetworkService.
Выясним, от чьего имени запущен пул приложений, и выполним в командной строке от имени администратора следующие команды (заменив данные на свои):
setspn -a HTTP/ИмяВашегоСервера Домен\УчеткаПула
setspn -a HTTP/ИмяВашегоСервера.domain.local Домен\УчеткаПула
После регистрации SPN сервер сможет корректно проверять билеты Kerberos, приходящие от браузеров.
Современные браузеры в целях безопасности не передают доменные токены на все сайты подряд. Выясним, как добавить нашу базу в список доверенных. Самый надежный способ — использование групповых политик (GPO) или внесение изменений в реестр.
Рассмотрим настройку через реестр для Яндекс.Браузера или Chrome. Нам нужно создать строковые параметры в ветке политик:
Для Chrome: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome
Для Яндекс.Браузера: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\YandexBrowser
Настроим следующие параметры:
Значение параметров должно содержать FQDN-имя сервера, например: *.yourdomain.local или конкретный адрес server-1c.yourdomain.local. Посмотрим, как это выглядит в реестре:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\YandexBrowser]
"AuthServerAllowlist"="*.domain.local"
"AuthNegotiateDelegateAllowlist"="*.domain.local"
Также важно убедиться, что адрес базы добавлен в зону "Местная интрасеть" (Local Intranet) в настройках "Свойств обозревателя" (Internet Options) панели управления Windows. Браузеры на движке Chromium часто наследуют уровень доверия именно оттуда.
В браузере Firefox механизм настройки отличается. Разберем по шагам, как активировать SSO через внутренний редактор конфигурации:
about:config и подтвердите риск.network.negotiate-auth.trusted-uris. Впишем туда адрес нашего веб-сервера (например, http://server-1c).network.automatic-ntlm-auth.trusted-uris. Также добавим туда адрес сервера.Важный момент: если адресов несколько, они перечисляются через запятую.
Если после всех настроек вход всё равно не выполняется, проанализируем ситуацию с помощью инструментов разработчика. Нажмем F12 в браузере и перейдем на вкладку Network (Сеть). Для этой задачи есть инструмент для диагностики и анализа HTTP-запросов.
WWW-Authenticate: Negotiate.Authorization: Negotiate [длинный_код], значит браузер успешно передал данные. Если заголовка нет — браузер по-прежнему не доверяет сайту.Следуя этой инструкции и последовательно проверяя каждый узел — от настроек IIS до политик браузера — мы добьемся стабильной работы доменного входа в веб-клиенте 1С.