Как настроить сквозную аутентификацию Active Directory (Kerberos) в браузере для 1С на Linux?

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

Настройка сквозной аутентификации (SSO) в среде Linux для платформы 1С:Предприятие — это комплексная задача, требующая ювелирной точности в конфигурации веб-сервера, операционной системы и самой базы данных. Часто системные администраторы сталкиваются с ситуацией, когда тонкий клиент 1С успешно авторизует пользователя по доменной учетной записи, но при попытке входа через браузер или по протоколу HTTP возникает ошибка: "Идентификация пользователя не выполнена. Неправильное имя или пароль пользователя". Проанализируем причины этой проблемы и разберем по шагам, как заставить технологию Kerberos работать корректно.

Анализ проблемы и поиск причин в технологическом журнале

Прежде всего, нам необходимо понять, что происходит на стороне сервера в момент попытки входа. Ошибка в логах rphost типа Exception=a01f465c-ed70-442e-ada5-847668d7a41c с описанием Неправильное имя или пароль пользователя при обращении к ресурсу /e1cib/login часто вводит в заблуждение. Она не всегда означает, что пароль действительно неверный. В контексте веб-публикации это обычно сигнализирует о том, что веб-сервер (в нашем случае Apache) не смог передать данные об авторизованном пользователе приложению 1С.

Рассмотрим ситуацию: при использовании Apache стандартная публикация, которую создает 1С, содержит директиву Require all granted. Это означает, что веб-сервер пускает любого пользователя, не пытаясь его предварительно авторизовать средствами операционной системы. В результате 1С получает "анонимный" запрос и пытается выполнить стандартную аутентификацию, которая завершается неудачей, так как данные пользователя AD не были переданы в заголовках HTTP.

Настройка веб-сервера Apache для Kerberos-аутентификации

Выясним основную причину: Apache не передаст данные о пользователе в 1С, если сам его не авторизует. Для этого нам нужно изменить конфигурационный файл публикации (обычно это .conf файл в директории настроек Apache или блок в httpd.conf). Разберем пример правильной настройки, которая позволяет связать Apache и Active Directory через протокол Kerberos.

Проанализируем структуру конфигурации. Нам необходимо закомментировать стандартную строку доступа и добавить блок настроек Kerberos:


# Пример настройки публикации 1С с поддержкой Kerberos
Alias "/1c_base" "/var/www/1c_base/"
<Directory "/var/www/1c_base/">
    AllowOverride All
    Options None
    
    # Обязательно комментируем или удаляем стандартную строку:
    # Require all granted 

    SetHandler 1c-application
    ManagedApplicationDescriptor "/var/www/1c_base/default.vrd"

    # Включаем аутентификацию Kerberos
    AuthType Kerberos
    AuthName "1C Kerberos Login"
    KrbAuthRealms YOURDOMAIN.COM
    KrbSaveCredentials On
    KrbMethodNegotiate On
    KrbMethodK5Passwd on
    
    # Путь к keytab-файлу, который должен быть доступен пользователю, от которого запущен Apache
    Krb5Keytab /opt/1cv8/x86_64/usr1cv8.keytab
    
    # Имя сервиса (SPN), зарегистрированное в AD
    KrbServiceName HTTP/1c-server.yourdomain.com@YOURDOMAIN.COM
    
    # Требуем только валидных пользователей домена
    Require valid-user
    KrbVerifyKDC Off
</Directory>

Важно помнить, что файл .keytab должен иметь права на чтение для пользователя apache (или www-data в зависимости от дистрибутива). Если Apache не сможет прочитать ключ, аутентификация предсказуемо провалится.

Соблюдение регистра имен и соответствие в конфигураторе 1С

Другой важный момент, который мы должны рассмотреть — это чувствительность Linux-систем и Apache к регистру символов. В отличие от IIS на Windows, Apache крайне строго относится к тому, как передается имя пользователя. Существует вероятность, что система получает USER@DOMAIN.COM, а в 1С в списке пользователей указано user@domain.com.

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

  1. В поле "Пользователь ОС" указывать имя в формате DOMAIN\UserName или userName@domain.com.
  2. Убедиться, что регистр написания в 1С полностью совпадает с тем, что возвращает команда klist на сервере или что настроено в AD.
  3. Попробовать разные варианты написания, так как иногда система ожидает именно краткое имя домена.

Проверка инфраструктуры: DNS и SPN

Разберем ситуацию глубже. Kerberos не будет работать, если нарушена логика разрешения имен. Проверим следующие пункты:

DNS и PTR-записи. Сервер, на котором установлен Apache, должен иметь корректную прямую и обратную запись в DNS. Если IP сервера не разрешается в его FQDN (полное доменное имя), Kerberos-билет может быть признан недействительным.

Service Principal Name (SPN). Для учетной записи в Active Directory, от имени которой работает служба (или к которой привязан keytab), должен быть зарегистрирован SPN. Проверим его наличие в AD командой:

setspn -L service_account_name

Должны присутствовать записи вида HTTP/имя_сервера и HTTP/имя_сервера.домен. Если их нет, создадим их, иначе браузер не поймет, что к этому серверу можно обращаться по протоколу Kerberos.

Настройка на стороне клиента (браузера)

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

В Google Chrome или Microsoft Edge необходимо добавить адрес сервера 1С в список доверенных сайтов или настроить политику AuthServerWhitelist. Без этого браузер не ответит на запрос сервера WWW-Authenticate: Negotiate.

В Mozilla Firefox нужно перейти в about:config, найти параметр network.negotiate-auth.trusted-uris и вписать туда домен вашей организации.

Современный подход: OpenID Connect (OIDC)

Если настройка Kerberos на Apache кажется избыточно сложной или нестабильной, стоит обратить внимание на рекомендации компании 1С, озвученные начиная с платформы 8.3.19. Разберем альтернативный вариант — использование OpenID Connect. Это современный протокол, который позволяет реализовать "Единый вход" (SSO) гораздо проще. В этом случае 1С выступает в роли поставщика или потребителя личности, а авторизация происходит через специальный центр идентификации. Это избавляет от необходимости возиться с keytab-файлами и сложными настройками модулей Apache, обеспечивая при этом более высокий уровень безопасности и совместимости с мобильными устройствами и доступом через интернет.

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

← На главную