Почему при входе в 1С через браузер постоянно сбрасывается пароль после обновления платформы?

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

При обновлении платформы 1С:Предприятие 8.3 (например, с релиза 8.3.18.1208 на 8.3.18.1520) системные администраторы часто сталкиваются с коварной проблемой: веб-клиент перестает пускать удаленных пользователей. Ситуация выглядит следующим образом: тонкий клиент работает исправно, локальный вход через браузер на самом сервере также проходит успешно, но при попытке удаленного подключения через интернет возникает "цикл". Пользователь вводит логин и пароль, нажимает кнопку «Войти», форма на мгновение задумывается, очищает поля ввода и снова требует авторизацию без каких-либо диагностических сообщений.

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

Разбор симптомов и анализ логов веб-сервера

Прежде всего, проанализируем поведение системы. Тот факт, что проблема проявляется только при удаленном доступе через браузер, сразу сужает круг поиска до взаимодействия расширения веб-сервера 1С (wsisapi.dll) и самого Internet Information Services (IIS). Если мы заглянем в логи IIS (обычно они располагаются в папке C:\inetpub\logs\LogFiles\W3SVC1\), то обнаружим интересную запись при попытке авторизации:

POST /имябазы/ru/e1cib/login ... 402 0 0 ...

Статус HTTP 402 в стандартном протоколе HTTP расшифровывается как «Payment Required» (Требуется оплата). Однако в контексте платформы 1С этот код имеет совершенно иное, техническое значение. Рассмотрим подробнее, что он означает:

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

Проблема заключается в том, что IIS по умолчанию настроен так, чтобы перехватывать любые ответы, отличные от успешного 200 OK, и заменять их своими стандартными страницами ошибок. Когда 1С отправляет код 402, IIS «думает», что произошла ошибка, и вместо технических данных от 1С отправляет браузеру стандартную HTML-заглушку. Браузер не получает ожидаемых инструкций от платформы, сбрасывает сессию и очищает поля ввода пароля.

Решение №1: Настройка подробных сообщений об ошибках в IIS

Это основное решение, которое позволяет заставить веб-сервер передавать ответ от 1С «как есть», не вмешиваясь в процесс формирования HTTP-пакета. Разберем выполнение этой настройки по шагам:

  1. Откроем Диспетчер служб IIS (Internet Information Services Manager).
  2. В дереве соединений слева развернем узел сервера, далее перейдем в «Сайты» (Sites) и выберем «Default Web Site» (или тот сайт, где опубликована база).
  3. Выберем наше виртуальное приложение (публикацию базы), имя которого соответствует пути в URL.
  4. В центральной части окна («Просмотр функций») найдем и откроем раздел «Страницы ошибок» (Error Pages).
  5. В правой панели действий выберем пункт «Изменить параметры групповой настройки...» (Edit Feature Settings...).
  6. В открывшемся диалоговом окне установим переключатель в положение «Подробные сообщения об ошибках» (Detailed errors).
  7. Нажмем кнопку «ОК».

После этого рекомендуется выполнить команду iisreset в командной строке, запущенной от имени администратора, чтобы применить изменения. Эта настройка позволяет IIS игнорировать статус 402 как ошибку и передавать тело ответа клиенту, что восстанавливает механизм авторизации.

Решение №2: Настройка фильтрации запросов в web.config

Иногда удаленный доступ блокируется из-за того, что IIS считает URL-адреса, генерируемые платформой 1С, потенциально опасными. Это часто случается при использовании специфических символов или двойного экранирования. Проанализируем, как это исправить через конфигурационный файл web.config, который находится в физической папке вашей публикации.

Нам необходимо разрешить двойное экранирование. Найдите в файле секцию <system.webServer> и добавьте (или измените) следующие строки:


<configuration>
    <system.webServer>
        <security>
            <requestFiltering allowDoubleEscaping="true" />
        </security>
    </system.webServer>
</configuration>

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

Решение №3: Управление Cookie и политикой SameSite

Начиная с последних релизов ветки 8.3.18, платформа стала более чувствительна к безопасности передачи Cookie. Если вы используете доступ по HTTPS, современные браузеры (Chrome, Edge) требуют наличия флага SameSite=None; Secure. Если этот флаг не установлен, браузер может блокировать передачу сессионной куки после успешного ввода пароля, и мы снова увидим пустую форму логина.

Рассмотрим, как принудительно настроить эти параметры в файле публикации default.vrd. Откроем этот файл в текстовом редакторе и найдем тег <point>. Нам нужно убедиться в правильности параметров сессии. Пример настройки:


<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="/MyBaseName"
       ib="Srvr=&quot;Server1C&quot;;Ref=&quot;MyBaseName&quot;;">
    <ws>
        <point name="Mobile" alias="mobile.1cws" enable="true"/>
    </ws>
    <httpServices publishByDefault="true" />
</point>

Если вы подозреваете проблемы с OpenID, которые часто вызывают ошибку 402, можно попробовать явно отключить использование внешних провайдеров, если ваша инфраструктура их не использует. Проверьте параметры в default.vrd, связанные с аутентификацией.

Решение №4: Проверка разрядности пула приложений

При обновлении платформы важно следить за соответствием разрядности установленной платформы 1С и настроек пула приложений в IIS. Выясним причину возможных сбоев в этом узле:

  1. Если установлена 64-битная платформа 1С, то в настройках пула приложений параметр «Разрешены 32-разрядные приложения» (Enable 32-Bit Applications) должен быть установлен в False.
  2. Если используется 32-битная платформа — установите True.

Несоответствие этих параметров часто приводит к тому, что библиотека wsisapi.dll не может корректно инициализироваться или работать с памятью, что вызывает непредсказуемые ошибки при обработке POST-запросов авторизации.

Решение №5: Очистка серверного кэша и перезапуск

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

  1. Остановите службу World Wide Web Publishing Service (W3SVC).
  2. Остановите службу Агент сервера 1С:Предприятия.
  3. Очистите содержимое временных папок пользователя, от имени которого запускается служба 1С (обычно это C:\Users\ИмяПользователя\AppData\Local\1C\1cv8\ и Roaming соответственно). Внимание: удаляйте только папки с кэшем (длинные буквенно-цифровые имена), не трогайте файлы конфигурации.
  4. Запустите службы в обратном порядке.
  5. Выполните команду iisreset.

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

← На главную