При настройке бесшовной интеграции между 1С:ERP Управление предприятием и 1С:Документооборот системные администраторы и программисты часто сталкиваются с ошибкой: «Аутентификация пользователя не выполнена. URL сервиса...». Эта проблема возникает на этапе инициализации объекта WSОпределения, когда ERP пытается получить описание веб-сервиса (WSDL) из опубликованной базы Документооборота. Ситуация осложняется тем, что под тем же пользователем в базу можно успешно зайти через интерактивный веб-клиент в браузере, но программный доступ через SOAP-запрос блокируется.
Рассмотрим подробно причины возникновения этой ошибки и разберем пошагово методы её устранения, основываясь на практическом опыте настройки веб-серверов IIS и публикации информационных баз 1С.
Одной из наиболее частых причин является конфликт методов авторизации на стороне веб-сервера Internet Information Services (IIS). Когда 1С обращается к веб-сервису, она ожидает определенного поведения от сервера. Если в настройках сайта включено несколько методов проверки подлинности, IIS может требовать авторизацию Windows (NTLM/Kerberos), в то время как код 1С передает учетные данные для внутренней базы 1С.
Проанализируем ситуацию: для корректной работы веб-сервисов в режиме «бесшовной интеграции» рекомендуется настроить Анонимную проверку подлинности. Выполним следующие действия:
Помимо этого, выясним причину в «Правилах авторизации .NET» (или Authorization Rules). Нам необходимо убедиться, что для анонимных пользователей разрешен доступ к ресурсам. Добавим разрешающее правило для «Все анонимные пользователи» в соответствующем разделе настроек IIS для конкретной публикации.
Файл конфигурации публикации default.vrd является связующим звеном между веб-сервером и платформой 1С. Если в нем допущены ошибки или отсутствуют необходимые параметры, веб-сервис dm.1cws (основной сервис Документооборота) не будет доступен для ERP.
Разберем структуру файла .vrd. Нам необходимо убедиться, что в секции ws разрешена публикация нужного нам сервиса. Пример корректной секции кода в файле:
<ws>
<point name="dm"
alias="dm.1cws"
enable="true"
reuseSessions="true"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</ws>
Обратим внимание на следующие параметры:
enable="true" — явно разрешает использование веб-сервиса.reuseSessions="true" — позволяет использовать существующие сеансы, что значительно ускоряет работу интеграции и снижает нагрузку на сервер..vrd (параметр ib), однако для продуктивных систем это не рекомендуется из соображений безопасности. Тем не менее, для диагностики на тестовом стенде это отличный способ проверить, исчезнет ли ошибка аутентификации.Иногда ошибка аутентификации вызвана не отсутствием прав, а невозможностью правильно разрешить имя сервера или проблемами в работе сетевых протоколов (например, когда ERP и ДО находятся на одном физическом сервере). Проанализируем сообщение одного из участников обсуждения: замена сетевого имени (например, server-dc-01) на локальный адрес localhost или 127.0.0.1 в настройках интеграции внутри ERP иногда решает проблему.
Почему это происходит? При использовании доменных имен в дело вступает Windows-авторизация и попытки сервера «пробросить» текущие учетные данные пользователя (механизм Double Hop). Если мы используем локальный адрес, запрос обрабатывается проще. Попробуем изменить строку подключения в ERP на:
http://localhost/DO_Base/ws/dm.1cws?wsdl
Если после этого ошибка сменится на другую или всё заработает — значит, проблему нужно искать в настройках DNS или SPN (Service Principal Name) для доменной учетной записи, под которой работает служба сервера 1С.
Рассмотрим, как правильно инициализировать соединение в коде 1С, чтобы минимизировать ошибки аутентификации. Часто разработчики забывают передать параметры прокси или некорректно обрабатывают защищенное соединение. Посмотрим на пример кода, который обеспечивает более стабильное подключение:
МестоположениеWSDL = "http://server/do/ws/dm.1cws?wsdl";
ИмяПользователя = "Admin_Integrator";
Пароль = "P@ssw0rd123";
// Если используется HTTPS, обязательно настраиваем защищенное соединение
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
Попытка
Определения = Новый WSОпределения(МестоположениеWSDL, ИмяПользователя, Пароль, , 30, ЗащищенноеСоединение);
Прокси = Новый WSПрокси(Определения, "http://www.1c.ru/do/ws/dm", "DMService", "DMServiceSoap");
Прокси.Пользователь = ИмяПользователя;
Прокси.Пароль = Пароль;
Исключение
Сообщить("Ошибка подключения: " + ОписаниеОшибки());
КонецПопытки;
Важный совет: всегда проверяйте, чтобы пользователь, под которым выполняется интеграция в базе Документооборота, обладал ролью «Выполнение синхронизации данных» или специализированными ролями для веб-сервисов (например, Ответственный за интеграцию с 1С:Документооборот). Также убедитесь, что в самой базе ДО в разделе «Настройка программы -> Общие настройки» установлена галочка «Использовать бесшовную интеграцию».
Выясним еще одну скрытую причину: права доступа пользователя, от имени которого запущен Пул приложений (Application Pool) в IIS. По умолчанию это может быть IIS AppPool\DefaultAppPool или IUSR. Этому пользователю необходимы права «Чтение и выполнение» на следующие объекты:
bin, где лежат библиотеки веб-компонентов wsap24.dll).default.vrd.Проверим эти настройки в свойствах папок на вкладке «Безопасность». Нехватка прав на чтение библиотек 1С часто приводит к тому, что IIS выдает общую ошибку 401, которую платформа 1С интерпретирует как «Аутентификация не выполнена».
Если вышеперечисленные шаги не помогли, воспользуемся проверенным методом диагностики: попробуем открыть ссылку на WSDL (например, http://server/do/ws/dm.1cws?wsdl) непосредственно в браузере на сервере, где установлена ERP. Если браузер бесконечно запрашивает логин и пароль или выдает ошибку доступа — проблема однозначно в настройках IIS или правах доступа к папкам на сервере Документооборота, а не в коде 1С.
Использование утилит типа Fiddler позволит перехватить HTTP-трафик и увидеть, какой именно заголовок Authorization отправляет ERP и какой точный HTTP-код (401.1, 401.2 и т.д.) возвращает IIS. Это позволит локализовать проблему максимально быстро.