Как настроить подключение IIS к базе 1С, если веб-сервер находится вне домена?

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

При настройке веб-сервисов или публикации информационной базы на 1С часто возникает архитектурная сложность: веб-сервер IIS располагается в «демилитаризованной зоне» (вне домена), в то время как сервер приложений 1С:Предприятие находится внутри корпоративного домена. В такой ситуации стандартная сквозная Windows-аутентификация перестает работать «из коробки». Мы часто сталкиваемся с ошибкой HTTP Error 401.5 - Unauthorized или бесконечными окнами ввода логина и пароля.

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

Шаг 1. Локализация проблемы с помощью тонкого клиента

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

  1. Установим на компьютере, где запущен IIS, платформу 1С:Предприятие (тонкий клиент).
  2. Попробуем добавить базу 1С в список и подключиться к ней под доменной учетной записью.
  3. Если тонкий клиент не может подключиться, значит, проблема в брандмауэре или сетевой доступности портов 1540, 1541 и диапазона 1560-1591.

Проанализируем ситуацию: если тонкий клиент успешно заходит в базу, а веб-сервис выдает ошибку 401.5, значит, проблема кроется в настройках прав самого IIS или в способе передачи учетных данных между компонентами.

Шаг 2. Метод «Зеркальных» учетных записей (Shadow Accounts)

Поскольку наш веб-сервер не в домене, он не может проверить Kerberos-билет доменного пользователя. Чтобы обойти это ограничение, мы можем использовать механизм NTLM через создание идентичных учетных записей. Разберем этот алгоритм по шагам:

  1. На сервере с IIS создаем локального пользователя (например, 1c_web_user) и задаем ему сложный пароль.
  2. На сервере приложений 1С создаем точно такого же локального пользователя с тем же именем 1c_web_user и идентичным паролем.
  3. В консоли управления IIS находим «Пулы приложений» (Application Pools) и для пула, на котором опубликована 1С, в разделе «Дополнительные параметры» меняем «Удостоверение» (Identity) на нашу новую учетную запись .\1c_web_user.

Теперь, когда IIS обращается к 1С, он делает это от имени локального пользователя. Если пароли на обоих серверах совпадают, система авторизации воспримет это подключение как доверенное.

Шаг 3. Настройка файла публикации default.vrd

Для 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=&quot;Srv-1C&quot;;Ref=&quot;Base1C&quot;;usr=&quot;WebUser&quot;;pwd=&quot;123456&quot;;">
    <httpServices>
        <service name="MyService" rootUrl="v1" enable="true"/>
    </httpServices>
</point>

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

Шаг 4. Настройка проверки подлинности в IIS

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

  1. Анонимная проверка подлинности: должна быть включена, если мы передаем логин/пароль внутри строки соединения или используем Basic Authentication. В настройках анонимной проверки выберем «Удостоверение пула приложений».
  2. Проверка подлинности Windows: если мы хотим использовать именно доменную авторизацию (при условии, что серверы в одном доверительном пространстве), включаем этот пункт.

Если возникает ошибка 401.5, попробуем отключить Kernel-mode authentication (проверка подлинности в режиме ядра) в расширенных настройках Windows-авторизации. Это часто помогает в конфигурациях, где участвуют серверы вне домена.

Шаг 5. Права доступа к файловой системе

Часто мы забываем, что процесс IIS (рабочий процесс w3wp.exe) должен иметь физический доступ к программным файлам 1С. Выясним, какие права нужно предоставить:

Учетная запись, от имени которой запущен пул приложений (наш 1c_web_user или IIS AppPool\ИмяПула), должна иметь права «Чтение и выполнение» на следующие каталоги:

Шаг 6. Работа через NAT и проброс портов

Рассмотрим ситуацию, описанную в одном из сообщений форума: если ваш веб-сервер находится за роутером и используется NAT. Например, внешний порт 8082 проброшен на внутренний 80. В некоторых случаях компоненты 1С при формировании обратных ссылок могут терять информацию о порте, что приводит к ошибкам авторизации. Старайтесь соблюдать идентичность портов: если база опубликована на 80 порту, то и снаружи она должна быть доступна по 80 порту.

Шаг 7. Использование Basic Authentication как надежная альтернатива

Если доменная авторизация никак не поддается настройке из-за сетевых ограничений, проанализируем самый стабильный вариант для HTTP-сервисов — это Basic Authentication в связке с HTTPS. В этом случае мы:

  1. Отключаем в IIS все виды авторизации, кроме анонимной (или включаем Basic, если хотим, чтобы сам IIS запрашивал пароль).
  2. В базе 1С создаем обычного пользователя с типом аутентификации «Аутентификация 1С:Предприятия».
  3. При вызове сервиса передаем заголовок Authorization: Basic [base64_encoded_credentials].

Это снимает все вопросы с доверием между доменами, так как 1С сама проверяет логин и пароль в своей внутренней таблице пользователей.

Резюме

Для успешного подключения IIS вне домена к доменной 1С мы должны либо настроить «зеркальных» локальных пользователей для NTLM-авторизации, либо жестко прописать учетные данные в default.vrd. Не забываем проверять права доступа пула приложений к папке bin платформы 1С и открывать необходимые порты в брандмауэре для взаимодействия между сервером веб-компонентов и сервером приложений.

← На главную