Как убрать авторизацию пользователя при вызове веб-сервиса в 1С 8.1?

Программист IT и автоматизация бизнеса
← На главную

При публикации веб-сервисов на платформе 1С:Предприятие 8.1 с использованием веб-сервера Apache 2.2 разработчики часто сталкиваются с проблемой: при попытке получить описание сервиса (WSDL-файл) или выполнить запрос, браузер или внешняя система запрашивают имя пользователя и пароль. Это происходит потому, что база данных 1С защищена списком пользователей, а веб-сервер по умолчанию требует аутентификации для доступа к ресурсам базы.

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

Обратите внимание, что в платформе 1С 8.1 архитектура публикации отличается от версий 1С 8.2 и 8.3. Здесь не используется единый файл конфигурации default.vrd. Вместо него для каждого веб-сервиса генерируется собственный файл с расширением .1cws. Именно с ним мы и будем работать.

---

Способ 1. Автоматическая авторизация через файл публикации .1cws

Самый простой и быстрый способ убрать окно авторизации — жестко прописать учетные данные специального пользователя 1С (под которым должен выполняться веб-сервис) непосредственно в файл публикации .1cws. В таком случае веб-сервер будет автоматически авторизовать все входящие запросы.

Рассмотрим по шагам, как это сделать:

  1. Создайте пользователя в базе 1С. Откройте базу в режиме «Конфигуратор», перейдите в меню «Администрирование» — «Пользователи» и создайте нового пользователя (например, с именем WebUser и паролем 123456). Назначьте ему минимально необходимые роли для выполнения методов вашего веб-сервиса. Крайне не рекомендуется использовать для этого пользователей с полными правами.
  2. Найдите файл публикации. Перейдите в каталог на сервере, куда вы опубликовали веб-сервис (путь к этой папке настраивается в конфигурационном файле Apache или при публикации из конфигуратора). В этой папке должен находиться файл с именем вашего веб-сервиса и расширением .1cws (например, MyWebService.1cws).
  3. Отредактируйте файл. Откройте файл .1cws с помощью любого текстового редактора (например, Блокнота). По умолчанию его структура выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<service xmlns="http://www.w3.org/2001/XMLSchema" 
         namespace="http://www.yourdomain.ru/WS/Exchange" 
         name="MyWebService" 
         connectString="File=&quot;C:\1C_Bases\WorkBase&quot;;" />

Нам необходимо модифицировать атрибут connectString (строку подключения), добавив параметры usr и pwd. Проанализируем структуру параметров. Так как значения параметров внутри XML-атрибута должны быть экранированы, вместо обычных двойных кавычек используйте конструкцию &quot;.

Для файлового варианта базы данных:


<?xml version="1.0" encoding="UTF-8"?>
<service xmlns="http://www.w3.org/2001/XMLSchema" 
         namespace="http://www.yourdomain.ru/WS/Exchange" 
         name="MyWebService" 
         connectString="File=&quot;C:\1C_Bases\WorkBase&quot;;usr=&quot;WebUser&quot;;pwd=&quot;123456&quot;;" />

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


<?xml version="1.0" encoding="UTF-8"?>
<service xmlns="http://www.w3.org/2001/XMLSchema" 
         namespace="http://www.yourdomain.ru/WS/Exchange" 
         name="MyWebService" 
         connectString="Srvr=&quot;SQLServerName&quot;;Ref=&quot;WorkBaseSQL&quot;;usr=&quot;WebUser&quot;;pwd=&quot;123456&quot;;" />

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

---

Оценка безопасности при хранении паролей в .1cws

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

В штатном режиме работы веб-сервера Apache 2.2 внешние пользователи не могут увидеть содержимое файла .1cws. При обращении к этому файлу (например, по ссылке http://localhost/MyPub/MyWebService.1cws?wsdl) веб-сервер перехватывает запрос с помощью специального модуля расширения 1С (обработчика запросов). Модуль считывает параметры подключения, обращается к базе 1С, генерирует ответ (WSDL-схему) и отдает клиенту только ее. Исходный код файла .1cws наружу не передается.

Однако существуют серьезные риски:

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

---

Способ 2. Использование Nginx или Apache в качестве реверс-прокси (Reverse Proxy)

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

Выясним суть этого метода. Сама публикация веб-сервиса 1С настраивается в обычном режиме — без указания логина и пароля в файле .1cws. При прямом обращении база будет требовать авторизацию. Однако перед веб-сервером 1С разворачивается прокси-сервер (например, Nginx или отдельный виртуальный хост Apache), который смотрит во внешнюю сеть.

Схема взаимодействия выглядит следующим образом:

  1. Внешний клиент отправляет анонимный HTTP-запрос (без авторизации) на адрес прокси-сервера.
  2. Прокси-сервер принимает этот запрос и «на лету» добавляет в него HTTP-заголовок базовой авторизации (Authorization: Basic ...), содержащий имя пользователя и пароль 1С, закодированные в Base64.
  3. Прокси-сервер перенаправляет уже авторизованный запрос на реальный адрес публикации 1С.
  4. 1С успешно обрабатывает запрос и возвращает ответ через прокси-сервер клиенту.

Для настройки такой схемы на Nginx в конфигурационный файл добавляется директива proxy_set_header. Рассмотрим пример настройки, где строка dXNyOnB3ZA== представляет собой закодированную в Base64 пару логин:пароль:


location /MyPub/MyWebService.1cws {
    proxy_pass http://internal-1s-server/MyPub/MyWebService.1cws;
    proxy_set_header Authorization "Basic dXNyOnB3ZA==";
}

Этот метод полностью исключает утечку паролей при сбоях веб-сервера 1С, так как авторизационные данные хранятся в защищенном конфиге прокси-сервера, находящегося во внутреннем контуре сети.

---

Способ 3. Сквозная доменная авторизация (SSPI/Kerberos)

Еще один профессиональный вариант — настроить сквозную авторизацию операционной системы. Автор темы на форуме упоминал системного пользователя IUSR_, который используется веб-сервером IIS от Microsoft для анонимного доступа. В веб-сервере Apache 2.2 под Windows этот механизм устроен иначе.

По умолчанию служба Apache работает под учетной записью SYSTEM. Вы можете перенастроить службу на запуск от имени доменного пользователя, а в самом веб-сервере подключить модуль авторизации Windows (например, mod_auth_sspi для Apache 2.2).

Разберем общую схему интеграции:

  1. В операционной системе Windows создается доменный пользователь.
  2. В веб-сервере Apache настраивается модуль авторизации SSPI для каталога публикации веб-сервиса.
  3. В базе данных 1С создается пользователь, у которого взведен флаг «Аутентификация операционной системы», и указывается его доменное имя в формате \\DOMAIN\UserName.

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

---

Способ 4. Программный обход авторизации на стороне клиента

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

Правильнее передавать параметры авторизации непосредственно из вызывающего кода. Большинство современных платформ и языков программирования поддерживают стандартную HTTP-авторизацию (Basic Access Authentication).

Передать логин и пароль можно двумя путями:

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

← На главную