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

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

Настройка сквозной авторизации (Single Sign-On, или SSO) — это отличный способ повысить удобство работы пользователей с информационными базами 1С:Предприятия. При успешной настройке пользователям больше не приходится вводить логин и пароль при запуске тонкого или веб-клиента: система автоматически распознает их доменные учетные данные. Однако при использовании популярного веб-сервера Apache 2.4 технические специалисты часто сталкиваются со сложностями, ограничениями платформы и устаревшими инструкциями в сети.

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

Архитектурные ограничения платформы 1С и веб-сервера Apache

Для начала проанализируем важный нюанс, о котором часто забывают начинающие администраторы. Если мы откроем диалог публикации информационной базы на веб-сервере в конфигураторе 1С или утилите администрирования, то в самом низу окна мы можем увидеть флаг «Использовать аутентификацию операционной системы».

Обратим внимание на критическое ограничение платформы: этот флаг доступен для интерактивной настройки только при использовании веб-сервера IIS (Internet Information Services). Как только мы переключаем тип веб-сервера на Apache, эта опция пропадает из интерфейса платформы. Это связано с тем, что IIS изначально глубоко интегрирован в инфраструктуру безопасности Windows и Active Directory, тогда как для Apache требуется ручная конфигурация внешних модулей авторизации.

Тем не менее, реализовать сквозную аутентификацию через Apache 2.4 вполне реально. Давайте подробно рассмотрим рабочие сценарии для Windows и Linux.

Сценарий 1. Настройка Apache 2.4 под управлением Windows

Если ваш веб-сервер Apache 2.4 развернут на ОС Windows, стандартный доменный механизм Kerberos/NTLM можно реализовать с помощью сторонних модулей. Ранее для старых версий веб-сервера (Apache 2.2) использовался модуль mod_auth_sppi, который на сегодняшний день полностью устарел и не поддерживается версией 2.4.

Для современных сборок Apache 2.4 под Windows мы будем использовать его актуальный аналог — модуль mod_authnz_sspi. Разберем процесс настройки по шагам:

  1. Загрузка и установка модуля. Нам необходимо скачать библиотеку модуля (файл mod_authnz_sspi.so), соответствующую разрядности установленного веб-сервера Apache 2.4 (x86 или x64), и поместить её в каталог modules вашего веб-сервера.
  2. Подключение модуля в конфигурации Apache. Откроем конфигурационный файл веб-сервера httpd.conf и добавим строку для загрузки модуля: LoadModule authnz_sspi_module modules/mod_authnz_sspi.so
  3. Настройка директории публикации 1С. Найдем в файле httpd.conf (или во внешнем файле конфигурации публикации) блок, описывающий доступ к нашей публикации 1С, и приведем его к следующему виду:
    
    <Directory "C:/inetpub/wwwroot/my_database">
        DirectoryIndex default.vrd
        AllowOverride All
        Options None
        Require all granted
        
        # Настройка сквозной авторизации SSPI
        AuthType SSPI
        AuthName "1C Enterprise SSO"
        SSPIAuth On
        SSPIAuthoritative On
        SSPIOmitDomain On
        SSPIUsernameCase lower
        Require valid-user
    </Directory>
    
    Разберем ключевые параметры этой настройки:
    • AuthType SSPI — указывает веб-серверу использовать интерфейс SSPI для авторизации доменных пользователей.
    • SSPIOmitDomain On — заставляет сервер передавать в 1С только имя пользователя без доменного префикса (например, "ivanov" вместо "DOMAIN\ivanov"). Это крайне важно для сопоставления с именами пользователей в списке пользователей 1С.
    • SSPIUsernameCase lower — приводит имя пользователя к нижнему регистру, что исключает ошибки из-за разницы в написании.

Сценарий 2. Настройка Apache 2.4 под управлением Linux (современный стек)

В рамках импортозамещения и перехода на свободное ПО связка Linux + Apache 2.4 + Kerberos стала стандартом де-факто для крупных корпоративных внедрений 1С. В современных дистрибутивах (таких как Astra Linux, РЕД ОС, Ubuntu) устаревший модуль mod_auth_kerb больше не используется, так как он исключен из официальных репозиториев. Вместо него мы применим современный и безопасный модуль mod_auth_gssapi.

Рассмотрим пошаговый алгоритм настройки бесшовной авторизации на Linux-сервере:

  1. Подготовка учетной записи в Active Directory (AD). На контроллере домена Windows создадим обычную сервисную учетную запись пользователя, например, usr-apache-sso. В свойствах этой записи необходимо установить флаг «Срок действия пароля не ограничен».
  2. Генерация keytab-файла на контроллере домена. С помощью консольной утилиты ktpass свяжем имя веб-службы (SPN) с созданным пользователем и запишем секретные ключи в keytab-файл:
    
    ktpass -princ HTTP/web-1c.domain.local@DOMAIN.LOCAL -mapuser usr-apache-sso@DOMAIN.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass MyStrongPassword123 -out c:\temp\apache.keytab
    
    Важно: имя хоста веб-сервера web-1c.domain.local должно быть реальным FQDN-именем вашего Linux-сервера, а имя домена DOMAIN.LOCAL обязательно указывается заглавными буквами!
  3. Перенос и настройка keytab на Linux. Безопасно скопируем полученный файл apache.keytab на Linux-сервер в каталог /etc/apache2/ (или /etc/httpd/). Обязательно ограничим права доступа к этому файлу, чтобы его мог читать только процесс веб-сервера Apache:
    
    chown www-data:www-data /etc/apache2/apache.keytab
    chmod 400 /etc/apache2/apache.keytab
    
  4. Настройка Kerberos-клиента на Linux. Отредактируем конфигурационный файл /etc/krb5.conf, указав параметры нашего домена:
    
    [libdefaults]
        default_realm = DOMAIN.LOCAL
        dns_lookup_realm = false
        dns_lookup_kdc = true
    
    [realms]
        DOMAIN.LOCAL = {
            kdc = dc1.domain.local
            admin_server = dc1.domain.local
        }
    
    [domain_realm]
        .domain.local = DOMAIN.LOCAL
        domain.local = DOMAIN.LOCAL
    
  5. Установка и конфигурация модуля Apache. Установим модуль GSSAPI из репозитория операционной системы:
    
    apt-get install libapache2-mod-auth-gssapi
    a2enmod auth_gssapi
    
    Затем откроем конфигурационный файл виртуального хоста Apache и пропишем настройки авторизации для каталога публикации 1С:
    
    <Location "/my_database">
        AuthType GSSAPI
        AuthName "1C Enterprise GSSAPI Auth"
        GssapiCredStore keytab:/etc/apache2/apache.keytab
        GssapiLocalName On
        Require valid-user
    </Location>
    
    Параметр GssapiLocalName On здесь выполняет ту же роль, что и в Windows: он отсекает доменную часть имени, оставляя платформе 1С только чистый логин пользователя.

Важный шаг: ручная корректировка файла публикации default.vrd

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

Откроем default.vrd в текстовом редакторе и убедимся, что внутри корневого элемента <point> присутствует корректно настроенный элемент <authentication>:


<?xml version="1.0" encoding="UTF-8"?>
<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="/my_database"
       ib="Srvr="server-1c";Ref="my_database";">
    
    <ws enable="true"/>
    
    <authentication>
        <winAnonymToSystemAnonym>false</winAnonymToSystemAnonym>
        <useOsAuthentication>true</useOsAuthentication>
    </authentication>
    
</point>

Параметр useOsAuthentication="true" сообщает платформе 1С, что имя авторизованного веб-сервером пользователя нужно сопоставлять со списком пользователей информационной базы, у которых настроена аутентификация операционной системы.

Исправление известных ошибок платформы 1С

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

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

Настройка клиентских веб-браузеров

По умолчанию современные браузеры (Google Chrome, Mozilla Firefox, Microsoft Edge) из соображений безопасности не передают Kerberos-токены или учетные данные Windows сторонним сайтам. Чтобы сквозная авторизация заработала в веб-клиенте, адрес вашего веб-сервера 1С необходимо добавить в список доверенных узлов.

Проанализируем, как это сделать для различных браузеров:

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

← На главную