При настройке веб-сервисов или публикации информационной базы на 1С часто возникает архитектурная сложность: веб-сервер IIS располагается в «демилитаризованной зоне» (вне домена), в то время как сервер приложений 1С:Предприятие находится внутри корпоративного домена. В такой ситуации стандартная сквозная Windows-аутентификация перестает работать «из коробки». Мы часто сталкиваемся с ошибкой HTTP Error 401.5 - Unauthorized или бесконечными окнами ввода логина и пароля.
В этой статье мы подробно разберем, как обеспечить стабильное взаимодействие между IIS и 1С, настроим права доступа и выясним, почему версия платформы 8.3.12 и выше накладывает дополнительные ограничения на безопасность.
Прежде чем приступать к сложным манипуляциям с IIS, нам необходимо выяснить, есть ли связь между серверами на уровне сетевых протоколов 1С. Рассмотрим методику первичной проверки:
1540, 1541 и диапазона 1560-1591.Проанализируем ситуацию: если тонкий клиент успешно заходит в базу, а веб-сервис выдает ошибку 401.5, значит, проблема кроется в настройках прав самого IIS или в способе передачи учетных данных между компонентами.
Поскольку наш веб-сервер не в домене, он не может проверить Kerberos-билет доменного пользователя. Чтобы обойти это ограничение, мы можем использовать механизм NTLM через создание идентичных учетных записей. Разберем этот алгоритм по шагам:
1c_web_user) и задаем ему сложный пароль.1c_web_user и идентичным паролем..\1c_web_user.Теперь, когда IIS обращается к 1С, он делает это от имени локального пользователя. Если пароли на обоих серверах совпадают, система авторизации воспримет это подключение как доверенное.
Для HTTP-сервисов крайне важно правильно настроить файл default.vrd. Начиная с платформы 8.3.12, требования к безопасности стали жестче. Посмотрим на пример структуры файла, которая позволяет автоматизировать вход:
<?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="/MyBase"
ib="Srvr="Srv-1C";Ref="Base1C";usr="WebUser";pwd="123456";">
<httpServices>
<service name="MyService" rootUrl="v1" enable="true"/>
</httpServices>
</point>
Важный момент: если мы указываем параметры usr и pwd непосредственно в строке соединения ib, то авторизация 1С будет приоритетнее доменной. Проанализируем типичную ошибку: если в базе 1С для пользователя не задан пароль, платформа может заблокировать вход через веб-сервис из соображений безопасности. Всегда используйте пароли для учетных записей, предназначенных для веб-публикаций.
Разберем, какие режимы проверки подлинности должны быть включены в диспетчере IIS для корректной работы:
Если возникает ошибка 401.5, попробуем отключить Kernel-mode authentication (проверка подлинности в режиме ядра) в расширенных настройках Windows-авторизации. Это часто помогает в конфигурациях, где участвуют серверы вне домена.
Часто мы забываем, что процесс IIS (рабочий процесс w3wp.exe) должен иметь физический доступ к программным файлам 1С. Выясним, какие права нужно предоставить:
Учетная запись, от имени которой запущен пул приложений (наш 1c_web_user или IIS AppPool\ИмяПула), должна иметь права «Чтение и выполнение» на следующие каталоги:
wsapip.dll в папке bin).bin\conf, где могут лежать файлы настроек.C:\Windows\Temp), так как 1С активно использует ее для формирования кэша при работе через веб-сервер.Рассмотрим ситуацию, описанную в одном из сообщений форума: если ваш веб-сервер находится за роутером и используется NAT. Например, внешний порт 8082 проброшен на внутренний 80. В некоторых случаях компоненты 1С при формировании обратных ссылок могут терять информацию о порте, что приводит к ошибкам авторизации. Старайтесь соблюдать идентичность портов: если база опубликована на 80 порту, то и снаружи она должна быть доступна по 80 порту.
Если доменная авторизация никак не поддается настройке из-за сетевых ограничений, проанализируем самый стабильный вариант для HTTP-сервисов — это Basic Authentication в связке с HTTPS. В этом случае мы:
Authorization: Basic [base64_encoded_credentials].Это снимает все вопросы с доверием между доменами, так как 1С сама проверяет логин и пароль в своей внутренней таблице пользователей.
Для успешного подключения IIS вне домена к доменной 1С мы должны либо настроить «зеркальных» локальных пользователей для NTLM-авторизации, либо жестко прописать учетные данные в default.vrd. Не забываем проверять права доступа пула приложений к папке bin платформы 1С и открывать необходимые порты в брандмауэре для взаимодействия между сервером веб-компонентов и сервером приложений.