Почему не работает веб-сервис 1С после создания пользователя и как исправить ошибку сеанса?

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

При разработке и публикации веб-сервисов на веб-серверах (Apache или IIS) разработчики часто сталкиваются с ситуацией: пока в информационной базе не было ни одного пользователя, веб-сервис и его WSDL-описание открывались без проблем. Однако как только в конфигураторе создается первый пользователь, прямое обращение через браузер по ссылке вида http://localhost/eduweb/ws/otvet.1cws?wsdl возвращает ошибку в формате JSON или XML со статусом 404/500 и текстом «Текущему соединению с информационной базой не назначен сеанс».

Проанализируем ситуацию, выясним внутреннюю причину такого поведения платформы 1С:Предприятие и разберем все способы решения проблемы.

Причина возникновения ошибки

Когда информационная база пуста и в ней нет пользователей, платформа разрешает анонимный вход. Веб-сервер автоматически инициирует сеанс от имени неавторизованного пользователя.

Как только в списке пользователей появляется хотя бы одна учетная запись, для базы активируется обязательная аутентификация. При прямом запросе через веб-браузер запрос отправляется анонимно (без HTTP-заголовка Authorization). Модуль расширения веб-сервера 1С не получает учетных данных, не может стартовать сеанс в базе и возвращает внутреннее исключение платформы Текущему соединению с информационной базой не назначен сеанс.

Поскольку веб-расширение 1С в ряде версий возвращает тело ошибки с внутренним кодом вместо стандартного HTTP-заголовка WWW-Authenticate, браузер не всегда отображает стандартное всплывающее окно для ввода логина и пароля.

Способ 1. Передача учетных данных в коде 1С при вызове веб-сервиса

Если веб-сервис вызывается программно из другой базы 1С, учетные данные необходимо передавать объекту WSПрокси или WSОпределения. Посмотрим на пример кода подключения к веб-сервису с явным указанием логина и пароля:


Определения = Новый WSОпределения("http://localhost/eduweb/ws/otvet.1cws?wsdl", "user", "321");
Прокси = Новый WSПрокси(Определения, "http://www.sample-package.org", "otvet", "otvetSoap");
Прокси.Пользователь = "user";
Прокси.Пароль = "321";

// Вызов операции веб-сервиса
Результат = Прокси.ПолучитьДанные();

В этом случае платформа передает заголовок базовой аутентификации (Basic Auth), сеанс в базе успешно создается под указанной учетной записью, и ошибка не возникает.

Способ 2. Указание сервисного пользователя в файле default.vrd

Если требуется, чтобы веб-сервер подключался к информационной базе всегда под одной и той же сервисной учетной записью (например, для открытого получения схемы WSDL или интеграций без Basic Auth), можно прописать логин и пароль в файле дескриптора публикации default.vrd.

Разберем по шагам, как отредактировать файл публикации:

  1. Откроем каталог публикации веб-сервиса на диске, где лежит файл default.vrd.
  2. Откроем файл default.vrd в текстовом редакторе.
  3. Найдем атрибут ib в корневом теге point и добавим параметры Usr и Pwd.

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

ib="File="C:\Bases\eduweb";Usr="user";Pwd="321";"

Для клиент-серверной базы (SQL):

ib="Srvr="Server1C";Ref="eduweb";Usr="user";Pwd="321";"

После сохранения изменений в файле default.vrd обязательно перезапустим службу веб-сервера Apache или пул приложений IIS.

Важное ограничение: если в дальнейшем выполнить повторную публикацию через Конфигуратор (меню «Администрирование -> Публикация на веб-сервере»), файл default.vrd будет перезаписан платформой заново, и вручную добавленные параметры Usr и Pwd могут сброситься.

Способ 3. Просмотр WSDL в браузере через авторизацию в корне публикации

Если необходимо открыть WSDL-описание в браузере без изменения default.vrd, воспользуемся сессионной авторизацией:

  1. Перейдем в браузере по корневому адресу опубликованной базы (например, http://localhost/eduweb/).
  2. Введем имя пользователя и пароль в открывшейся форме авторизации 1С.
  3. После успешного входа в веб-клиент откроем в этой же вкладке или соседней вкладке прямого URL веб-сервиса: http://localhost/eduweb/ws/otvet.1cws?wsdl. Браузер переиспользует существующий сеанс, и схема WSDL отобразится корректно.

Требования к настройке прав пользователя в 1С

Проанализируем параметры созданного пользователя в Конфигураторе, чтобы исключить сопутствующие ошибки доступа:

  1. Тип аутентификации: у учетной записи должен быть установлен флаг «Аутентификация 1С:Предприятия». При использовании внешней авторизации без доменной настройки вызовы Basic Auth работать не будут.
  2. Роли и права: пользователю должна быть назначена роль, в которой установлен флаг «Использование» для вызываемого веб-сервиса, а также базовое право «Запуск» (для тонкого/веб-клиента или внешнего соединения).
← На главную