Как правильно настроить авторизацию для HTTP-сервиса 1С при работе с веб-сервером?

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

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

Понимание зоны ответственности авторизации

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

Решение: необходимо настроить анонимный доступ на стороне веб-сервера. Это не делает базу доступной для всех, а лишь передает задачу идентификации пользователя платформе 1С. В этом случае 1С сама анализирует заголовок Authorization, который передает клиент (например, ваш бот или Postman), и сопоставляет его с пользователем из конфигуратора.

Настройка анонимного доступа

Для IIS необходимо зайти в настройки публикации и включить «Анонимный доступ». Для Apache этот параметр обычно включен по умолчанию или настраивается в файле httpd.conf. Убедитесь, что веб-сервер не требует от входящего запроса «человеческой» аутентификации, иначе запрос будет отклонен до того, как он дойдет до кода 1С.

Работа с файлом default.vrd

Файл default.vrd, расположенный в каталоге публикации, напрямую влияет на то, как происходит вход в базу. Рассмотрим его структуру подробнее:

Если вы хотите, чтобы каждый запрос содержал индивидуальные данные пользователя (логин и пароль), не прописывайте их жестко в строке подключения. Однако, если требуется «технический» вход для бота, можно использовать параметры Usr и Pwd.

Пример корректной настройки для автоматической авторизации в default.vrd:


<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       base="/ut"
       ib="Srvr="srv1c";Ref="ut";Usr="BotUser";Pwd="SecretPassword"">
</point>

Почему возникают проблемы с «старым» паролем?

Если вы сменили пароль в 1С, а сервис продолжает требовать старый, причина кроется в кэшировании сессий. Платформа 1С может удерживать соединение в памяти (сеанс COM-соединения или веб-сервиса).

  1. Перезапустите Пул приложений (в IIS) или службу Apache.
  2. Очистите кэш вашего клиента (Postman или браузер), так как заголовки авторизации сохраняются в кэше.
  3. Убедитесь, что у пользователя, под которым работает HTTP-сервис, нет ограничений на тип клиента.

Настройка прав пользователя

Помните, что для работы с HTTP-сервисом пользователю не требуется полных прав. Достаточно создать отдельного пользователя, назначить ему роль, в которой разрешено «Использование» для вашего HTTP-сервиса.

Совет: Если вы столкнулись с ошибкой доступа, внимательно читайте сообщение: 1С четко разграничивает отсутствие доступа к объекту (роли) и отказ в авторизации (неверный пароль). Если пароль принимается, а сервис выдает ошибку 403 или 401, значит проблема в назначении прав на конкретные методы сервиса внутри конфигурации 1С.

Рекомендации по безопасности

Поскольку HTTP-сервисы передают учетные данные в заголовках (обычно в формате Basic Auth), критически важно:

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

← На главную