При работе с веб-сервисами и публикациями 1С на веб-сервере Internet Information Services (IIS) пользователи часто сталкиваются с ошибкой 401.2 - Unauthorized. Эта проблема особенно коварна тем, что одна база может работать абсолютно нормально, а другая, опубликованная с теми же (на первый взгляд) параметрами, выдает ошибку авторизации сразу после ввода адреса в браузере. Рассмотрим природу этой ошибки и разберем пошагово все способы ее решения, от простых манипуляций в мастере публикации до ручного редактирования конфигурационных файлов.
Ошибка 401.2 в контексте IIS означает «Отказано в доступе из-за конфигурации сервера». Простыми словами: сервер настроен на использование определенного метода проверки подлинности (например, встроенной Windows-авторизации), который клиент (браузер) не может выполнить или который настроен некорректно для данного ресурса. Проанализируем ситуацию: когда вы пытаетесь зайти в базу 1С, IIS пытается определить, кто вы. Если в настройках указано использование учетных данных операционной системы, но сервер не может сопоставить ваш запрос с конкретным пользователем Windows, возникает конфликт, и 1С даже не успевает показать свое окно логина.
Это самый распространенный случай, с которым сталкиваются разработчики. В современных версиях платформы 1С при публикации информационной базы на веб-сервере по умолчанию может быть включена опция использования доменной авторизации. Выясним, как это исправить:
После этих действий 1С при обращении к веб-сервису не будет ожидать от IIS передачи данных Windows-пользователя, а сразу инициирует собственный механизм авторизации (диалоговое окно выбора пользователя 1С и ввода пароля).
Рассмотрим более сложный случай. В некоторых старых конфигурациях, таких как УПП 1.3, в мастере публикации может отсутствовать заветная галочка управления аутентификацией ОС. В этой ситуации нам поможет прямое редактирование файла описания публикации. Проанализируем алгоритм действий:
Найдем в каталоге, куда была произведена публикация (путь вы указывали в поле "Каталог" при публикации), файл с именем default.vrd. Это XML-файл, который управляет поведением расширения веб-сервера 1С. Откроем его любым текстовым редактором (например, Notepad++).
Разберем структуру файла. Нам нужна корневая секция point. Найдем атрибут osauth. Если он установлен в значение true, это и является причиной ошибки 401.2. Изменим его:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/Buh_Dubl"
ib="Srvr="Server1C";Ref="Buh_DB";"
osauth="false">
<ws>
<point name="Exchange"
alias="exchange.1cws"
enable="true"/>
</ws>
</point>
Установив osauth="false", мы принудительно сообщаем модулю расширения, что не нужно пытаться пробрасывать авторизацию Windows. Сохраним файл и обязательно перезапустим службу World Wide Web Publishing Service (или просто выполните команду iisreset в командной строке).
Даже если в 1С всё настроено верно, сам сервер IIS может блокировать анонимные запросы, что также приводит к 401.2. Разберем, как проверить настройки на стороне сервера:
Важный нюанс: если включена только Windows-авторизация, браузер будет пытаться передать токен текущего пользователя ПК. Если сайт не находится в зоне "Местная интрасеть" или сервер не входит в домен, запрос завершится ошибкой 401.2.
Иногда сервер выдает 401.2, когда он не может получить доступ к ресурсам, необходимым для инициализации процесса проверки подлинности. Выясним, есть ли у системного пользователя IIS необходимые права. Посмотрим на два ключевых места:
Во-первых, папка с самой публикацией (где лежит default.vrd). Во-вторых, папка с бинарными файлами платформы 1С (обычно это C:\Program Files\1cv8\номер_версии\bin). Пользователь, от имени которого работает пул приложений (по умолчанию это IIS AppPool\ИмяПула или встроенная учетная запись IUSR), должен иметь права "Чтение и выполнение" на эти каталоги.
Если вы используете файловую базу 1С, этот же пользователь должен иметь полные права на папку с самой базой данных, иначе веб-сервис просто не сможет ее открыть после прохождения этапа авторизации.
Проанализируем ситуацию, когда платформа 1С установлена в 32-битной версии на 64-битную операционную систему Windows Server. В этом случае IIS по умолчанию может не позволить загрузить библиотеку wsapimod.dll.
Для исправления перейдем в Пулы приложений (Application Pools) в консоли IIS. Найдем пул, который обслуживает вашу базу (обычно он называется так же, как сайт). Правой кнопкой мыши выберем Дополнительные параметры.... В пункте Разрешить 32-разрядные приложения (Enable 32-Bit Applications) установим значение True.
Если все вышеперечисленное не помогло, проанализируем файл web.config, который создается в папке публикации. Иногда в нем могут быть жестко прописаны правила безопасности, переопределяющие глобальные настройки IIS. Поищем секцию:
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="false" />
<anonymousAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
Убедимся, что настройки соответствуют нашим целям. Также стоит помнить о защитном механизме Windows Loopback Check. Если вы открываете базу, находясь прямо на сервере через localhost, система безопасности может блокировать проверку подлинности. В таких случаях помогает добавление параметра DisableLoopbackCheck в реестр Windows по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa (тип DWORD, значение 1), однако это следует делать только в крайнем случае, понимая риски безопасности.
Подводя итог, можно сказать, что в 90% случаев ошибка 401.2 лечится простым снятием галочки "Аутентификация операционной системы" в мастере публикации 1С или исправлением атрибута osauth="false" в файле default.vrd. Все остальные шаги — это тонкая настройка окружения сервера, которая требуется при нестандартных конфигурациях безопасности.