Как исправить ошибку 401.5 при работе с HTTP-сервисами 1С в IIS?

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

При публикации HTTP-сервисов на веб-сервере IIS многие разработчики сталкиваются с ошибкой 401.5 — Unauthorized. Данная ошибка свидетельствует о том, что веб-сервер блокирует доступ к ресурсу на этапе обработки запроса модулем ISAPI или CGI. Простыми словами, IIS пытается проверить ваши учетные данные до того, как запрос будет передан на исполнение платформе 1С.

Давайте разберем по шагам, как настроить систему, чтобы обмен данными заработал стабильно.

Шаг 1: Настройка анонимной аутентификации в IIS

Основная причина возникновения ошибки — конфликт между настройками безопасности веб-сервера и методами авторизации в 1С. Для того чтобы 1С могла самостоятельно обработать передаваемый логин и пароль (например, через Basic Auth в Postman), нам необходимо разрешить анонимный доступ на уровне веб-сервера.

  1. Откройте Диспетчер служб IIS (IIS Manager).
  2. Перейдите к разделу с вашей опубликованной базой 1С.
  3. Выберите пункт Проверка подлинности (Authentication).
  4. Убедитесь, что Анонимная проверка подлинности (Anonymous Authentication) включена (Enabled).
  5. Выполните команду Изменить (Edit). В открывшемся окне убедитесь, что выбрана настройка Идентификатор пула приложений (Application Pool Identity), а не конкретный пользователь (например, IUSR). Это обеспечит корректные права доступа для процесса 1С.

Шаг 2: Настройка публикации в конфигураторе 1С

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

  1. В конфигураторе перейдите в меню Администрирование -> Публикация на веб-сервере.
  2. Обратите внимание на галочку Использовать аутентификацию операционной системы. Если вы планируете передавать логин и пароль пользователя 1С напрямую через заголовки HTTP (или прописывать их в файле default.vrd) (поможет расширение для реализации REST API с Basic Auth), снимите эту галочку. Использование доменной авторизации часто является избыточным при работе с HTTP-сервисами и приводит к ошибкам 401.

Шаг 3: Работа с файлом default.vrd

Файл default.vrd — это «сердце» настроек публикации вашей базы. Если вам необходимо, чтобы сервис всегда работал под определенным пользователем 1С, вы можете задать его учетные данные непосредственно в этом файле. Это упрощает работу при интеграции, когда нет возможности передавать заголовки авторизации с клиента — для этого есть организация обмена данными через веб-сервисы.

Откройте файл default.vrd в корневом каталоге опубликованной базы и приведите строку подключения к следующему виду:

ib="Srvr="ИмяСервера";Ref="ИмяБазы";Usr=ИмяПользователя;Pwd=Пароль;"

Важное примечание: Если вы прописали пользователя в default.vrd, при тестировании запросов в Postman или других программах поле авторизации можно оставлять пустым, так как аутентификация происходит автоматически при обращении к ресурсу.

Шаг 4: Анализ работы HTTP-клиента (Postman или внутренняя обработка 1С)

Если вы не используете жестко заданные данные в default.vrd, вам необходимо корректно передавать учетные данные через заголовок Authorization (популярный вариант — использование JWT-токенов) — для этого подойдёт инструмент логирования и анализа HTTP-запросов для 1С.

  1. В Postman перейдите на вкладку Authorization.
  2. Выберите тип Basic Auth.
  3. Введите логин и пароль пользователя 1С.
  4. Убедитесь, что галочка Доменная аутентификация снята. Если вы работаете с мобильными устройствами (например, на iOS), будьте внимательны: иногда автоматические инструменты подставляют системные данные, поэтому вводите учетные данные пользователя 1С вручную.

Почему ошибка может возникать «иногда»?

Если проблема носит эпизодический характер, причина, скорее всего, кроется в кэшировании данных аутентификации. Браузер или клиент могут запоминать старые, неверные учетные данные и автоматически отправлять их при последующих запросах. В таких ситуациях рекомендуем очистить куки (Cookies) в Postman или попробовать отправить запрос в режиме инкогнито. Также стоит проверить журнал событий Windows в разделе Windows Logs -> System — IIS часто записывает туда более подробную причину отказа, которая укажет, какой именно модуль блокирует ваш запрос.

Следуя этим рекомендациям, вы сможете локализовать и устранить конфликт уровней доступа и успешно публиковать свои HTTP-сервисы.

← На главную