Как правильно настроить веб-сервис 1С на IIS и устранить ошибки авторизации?

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

Развертывание веб-сервисов 1С:Предприятие на платформе Microsoft Internet Information Services (IIS) — это стандартная задача для интеграции систем, однако она часто сопровождается техническими сложностями. Чаще всего проблемы возникают из-за некорректной ручной правки конфигурационных файлов, несовпадения разрядности библиотек или ошибок в настройке прав доступа и аутентификации. В этой статье мы подробно разберем, как избежать «детских болезней» при публикации и что делать, если сервер выдает ошибки доступа.

Исправление ошибок в файле web.config

Одной из первых проблем, с которой сталкиваются разработчики, является ошибка «Нераспознанный атрибут Path». Проанализируем причину: XML-конфигурация IIS чувствительна к регистру символов. В системных файлах web.config все атрибуты должны записываться со строчной буквы.

Если вы редактируете файл вручную, убедитесь, что секция обработчиков выглядит следующим образом:


<handlers>
    <add name="1C_WebAPI" 
         path="*" 
         verb="*" 
         modules="IsapiModule" 
         scriptProcessor="C:\Program Files\1cv8\8.3.x.xxxx\bin\wsisapi.dll" 
         resourceType="Unspecified" 
         requireAccess="None" />
</handlers>

Однако мы крайне рекомендуем отказаться от ручного редактирования web.config. Рассмотрим правильный алгоритм публикации веб-сервиса через Конфигуратор:

  1. Запустите Конфигуратор 1С:Предприятие от имени администратора (это критически важно для записи настроек в системные папки IIS).
  2. Перейдите в меню Администрирование — Публикация на веб-сервере.
  3. Выберите установленный IIS в списке серверов.
  4. На вкладке «Веб-сервисы» установите флажки напротив нужных сервисов.
  5. Нажмите кнопку «Опубликовать».

При таком подходе платформа 1С самостоятельно сформирует корректный XML-файл, учитывая версию платформы и необходимые параметры модуля расширения веб-сервера.

Решение проблемы с ошибкой HTTP 401.2 — Unauthorized

После исправления конфигурации часто возникает следующая преграда: ошибка 401.2 Unauthorized. Она означает, что сервер не смог определить права пользователя для доступа к ресурсу. Выясним, как правильно настроить авторизацию, чтобы пользователи не видели назойливых окон ввода логина и пароля.

Разберем три способа решения этой ситуации:

1. Использование файла default.vrd для автоматического входа. Если вы хотите, чтобы веб-сервис подключался к базе данных под конкретной учетной записью 1С, необходимо отредактировать файл default.vrd, который находится в папке публикации. Рассмотрим пример строки соединения внутри тега point:


<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       base="/MyBase"
       ib="Srvr="ServerName";Ref="BaseName";usr="WebServiceUser";pwd="Password123";">

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

2. Настройка анонимной авторизации в IIS. Чтобы веб-сервер позволял подключаться без запроса системного пароля Windows, проанализируем настройки в консоли управления IIS:

3. Синхронизация пользователя с пользователем 1С. Вы можете создать в базе 1С пользователя, имя которого совпадает с именем учетной записи анонимного доступа IIS (по умолчанию это IUSR). В настройках этого пользователя в 1С установите флаг «Аутентификация операционной системы» и выберите пользователя IUSR. В этом случае 1С автоматически пустит «анонима» под этой ролью.

Настройка разрядности и прав доступа к файловой системе

Часто веб-сервис не взлетает из-за конфликта разрядности. Если вы используете 32-битную версию платформы 1С на 64-битной Windows, выполним следующие действия:

  1. В консоли IIS перейдите в Пулы приложений (Application Pools).
  2. Найдите пул, на котором работает ваше приложение (обычно это DefaultAppPool или пул с именем вашей публикации).
  3. Нажмите «Дополнительные параметры».
  4. Установите значение True для параметра Разрешены 32-разрядные приложения (Enable 32-Bit Applications).

Проанализируем также права на папки. Пользователь, от имени которого запущен пул приложений (например, IIS AppPool\DefaultAppPool), должен иметь права «Чтение и выполнение» на каталог bin платформы 1С, где лежит файл wsisapi.dll. Без этого IIS просто не сможет загрузить библиотеку-обработчик, и вы получите ошибку 500.

Программное обращение к веб-сервису

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


Определение = Новый WSОпределения(АдресWSDL, Логин, Пароль);
ТочкаПодключения = Определение.Сервисы[0].ТочкиПодключения[0];
Прокси = Новый WSПрокси(Определение, 
                         ТочкаПодключения.Имя, 
                         ТочкаПодключения.Имя, 
                         ТочкаПодключения.Имя);
// Явное указание данных авторизации для прокси
Прокси.Пользователь = Логин;
Прокси.Пароль = Пароль;

Использование этого метода гарантирует, что даже если на сервере настроена «Основная проверка подлинности» (Basic Authentication), ваше приложение корректно передаст заголовки авторизации в HTTP-запросе.

Подведем итог: для успешного поднятия веб-сервиса 1С на IIS следует избегать ручного вмешательства в web.config, использовать стандартные механизмы публикации Конфигуратора, следить за разрядностью пула приложений и четко определять модель безопасности (через default.vrd или системную проверку подлинности). Следуя этим шагам, вы создадите стабильную и производительную точку интеграции для ваших систем.

← На главную