При обновлении платформы 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С этот код имеет совершенно иное, техническое значение. Рассмотрим подробнее, что он означает:
Проблема заключается в том, что IIS по умолчанию настроен так, чтобы перехватывать любые ответы, отличные от успешного 200 OK, и заменять их своими стандартными страницами ошибок. Когда 1С отправляет код 402, IIS «думает», что произошла ошибка, и вместо технических данных от 1С отправляет браузеру стандартную HTML-заглушку. Браузер не получает ожидаемых инструкций от платформы, сбрасывает сессию и очищает поля ввода пароля.
Это основное решение, которое позволяет заставить веб-сервер передавать ответ от 1С «как есть», не вмешиваясь в процесс формирования HTTP-пакета. Разберем выполнение этой настройки по шагам:
После этого рекомендуется выполнить команду iisreset в командной строке, запущенной от имени администратора, чтобы применить изменения. Эта настройка позволяет IIS игнорировать статус 402 как ошибку и передавать тело ответа клиенту, что восстанавливает механизм авторизации.
Иногда удаленный доступ блокируется из-за того, что IIS считает URL-адреса, генерируемые платформой 1С, потенциально опасными. Это часто случается при использовании специфических символов или двойного экранирования. Проанализируем, как это исправить через конфигурационный файл web.config, который находится в физической папке вашей публикации.
Нам необходимо разрешить двойное экранирование. Найдите в файле секцию <system.webServer> и добавьте (или измените) следующие строки:
<configuration>
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>
</configuration>
Без этого параметра IIS может прерывать соединение еще до того, как запрос дойдет до расширения 1С, что также приведет к невозможности входа для удаленных пользователей.
Начиная с последних релизов ветки 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="Server1C";Ref="MyBaseName";">
<ws>
<point name="Mobile" alias="mobile.1cws" enable="true"/>
</ws>
<httpServices publishByDefault="true" />
</point>
Если вы подозреваете проблемы с OpenID, которые часто вызывают ошибку 402, можно попробовать явно отключить использование внешних провайдеров, если ваша инфраструктура их не использует. Проверьте параметры в default.vrd, связанные с аутентификацией.
При обновлении платформы важно следить за соответствием разрядности установленной платформы 1С и настроек пула приложений в IIS. Выясним причину возможных сбоев в этом узле:
False.True.Несоответствие этих параметров часто приводит к тому, что библиотека wsisapi.dll не может корректно инициализироваться или работать с памятью, что вызывает непредсказуемые ошибки при обработке POST-запросов авторизации.
После любых манипуляций с обновлением платформы 1С крайне важно выполнить «гигиенические» процедуры на сервере. Разберем их по порядку:
C:\Users\ИмяПользователя\AppData\Local\1C\1cv8\ и Roaming соответственно). Внимание: удаляйте только папки с кэшем (длинные буквенно-цифровые имена), не трогайте файлы конфигурации.iisreset.Проанализировав все вышеперечисленные шаги, мы можем сделать вывод: наиболее вероятной причиной "цикличного" ввода пароля в браузере при удаленном доступе является перехват веб-сервером IIS специфических статус-кодов платформы 1С. Установка режима Detailed Errors в большинстве случаев полностью решает данную проблему и восстанавливает нормальную работу пользователей через веб-клиент.