Почему 1С:Предприятие многократно запрашивает авторизацию веб-сервера при работе с веб-базой?

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

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

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

Причина многократных запросов авторизации

Основная причина этой проблемы кроется в механизме базовой HTTP-аутентификации (Basic Authentication) и особенностях его обработки различными версиями платформы 1С:Предприятие. Когда вы настраиваете авторизацию через файл .htpasswd на веб-сервере Apache, веб-сервер ожидает, что каждый HTTP-запрос будет содержать в своем заголовке учетные данные пользователя (логин и пароль), закодированные в формате Base64.

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

Официальное решение: Обновление платформы 1С

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

Ошибка, приводящая к многократным запросам логина/пароля при базовой аутентификации на веб-сервере, была исправлена в следующих версиях технологической платформы:

  1. 8.3.18.1779 (для тестирования)
  2. 8.3.19.1522 (для тестирования)
  3. 8.3.20.1710 (рекомендованная стабильная версия)
  4. 8.3.21.1197 (для тестирования)

Как показывают отзывы пользователей, обновление до версии 8.3.20.1710 успешно устраняет данную проблему, и повторные запросы аутентификации перестают появляться. Поэтому, если вы столкнулись с описанной ситуацией, первым шагом должно стать обновление вашей платформы до одной из указанных версий или более новой.

Альтернативные методы аутентификации (обходные пути)

Если по каким-либо причинам немедленное обновление платформы невозможно или требуется временное решение, существуют обходные пути, которые могут помочь:

  1. Встраивание логина и пароля в URL подключения к базе

    Этот метод позволяет избежать запросов аутентификации, так как учетные данные передаются непосредственно в строке адреса. Для этого необходимо указать логин и пароль в формате https://логин:пароль@server1c.ru/base. Например:

    https://myuser:mypassword@server1c.ru/my_base_name

    Преимущества: Простота реализации, устраняет повторные запросы.

    Недостатки: Существенно снижает безопасность, так как учетные данные становятся частью URL и могут быть легко перехвачены или сохранены в истории браузера/логов. Не рекомендуется для производственных систем с высокой степенью требований к безопасности.

  2. Использование Nginx как прокси-сервера

    Мы можем настроить прокси-сервер, например Nginx, который будет "подставлять" заголовки авторизации при обращении к веб-сервисам 1С. В этом сценарии, Nginx будет выступать в качестве посредника между клиентом (тонким клиентом 1С или веб-браузером) и вашим Apache-сервером с публикацией 1С. Nginx может быть настроен таким образом, чтобы он сам выполнял базовую аутентификацию к Apache, используя заранее определенные учетные данные, тем самым освобождая клиента от необходимости каждый раз их вводить.

    Пример частичной конфигурации Nginx (концептуально):

    
    server {
        listen 80;
        server_name yourserver.com;
    
        location /base/ {
            proxy_pass http://localhost:8080/base/; # порт Apache
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Authorization "Basic <ВАШ_BASE64_КОДИРОВАННЫЙ_ЛОГИН_ПАРОЛЬ>";
        }
    }
    

    Преимущества: Позволяет централизованно управлять аутентификацией, может улучшить производительность и безопасность, если Nginx используется также для SSL-терминации и кэширования.

    Недостатки: Требует дополнительных знаний и настройки Nginx, может усложнить общую архитектуру.

  3. Доменная аутентификация (Kerberos/SSO)

    Для крупных корпоративных сред, особенно с Active Directory, можем рассмотреть настройку доменной аутентификации (Single Sign-On, SSO) для 1С через Apache на Linux. Этот метод позволяет пользователям входить в систему 1С автоматически, используя свои учетные записи домена, без необходимости ввода пароля. Для реализации этого потребуются:

    1. Модули Apache, такие как mod_auth_gssapi или mod_auth_kerb.
    2. Корректная настройка Kerberos-клиента на Linux-сервере.
    3. Создание и регистрация SPN (Service Principal Name) для сервисной учетной записи, от имени которой работает веб-сервер Apache, в Active Directory.
    4. Настройка делегирования на контроллерах домена.

    Даже если у вас уже настроена доменная аутентификация, иногда проблема может заключаться в некорректной или отсутствующей записи SPN для учетной записи, от которой работает веб-сервер, что препятствует правильной работе Kerberos.

    Преимущества: Высокий уровень безопасности и удобства для пользователя (единый вход).

    Недостатки: Самый сложный в реализации метод, требующий глубоких знаний сетевых технологий, Active Directory и Kerberos.

Дополнительные проверки и рекомендации

Помимо основных решений, мы также рекомендуем провести следующие проверки:

  1. Проверка логов Apache и 1С

    Всегда обращаемся к логам веб-сервера Apache (обычно это /var/log/httpd/error_log или /var/log/apache2/error.log на системах Debian/Ubuntu) и логам веб-расширения 1С (если они доступны). Они могут содержать ценную информацию о причинах сбоев аутентификации или других проблемах, которые могут маскироваться под запросы пароля.

  2. Проверка прав доступа

    Убедимся, что пользователь, от имени которого запускается веб-сервер Apache (например, www-data на Ubuntu или apache на CentOS), имеет достаточные права доступа к файлам публикации 1С (default.vrd и каталогу базы данных).

  3. Настройки сохранения аутентификации в 1С:Предприятие 8.3.26+

    Начиная с платформы 1С:Предприятие версии 8.3.26, мы обнаружим изменения в настройках сохранения аутентификации при использовании OpenID. Появились новые параметры: Разрешить сохранение аутентификации и Сохранять аутентификацию по умолчанию. По умолчанию эти параметры выключены и считываются из настроек сервера OpenID. Если вы хотите сохранить возможность запоминания входа для пользователей, нам потребуется включить эти параметры вручную.

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

← На главную