Как отключить запрос логина и пароля при открытии HTTP-сервиса 1С на веб-сервере Apache?

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

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

Способ 1. Удаление пользователей (только для тестовых баз)

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

Способ 2. Указание учетных данных в файле default.vrd

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

Чтобы Apache не спрашивал пароль, нам нужно передать ему данные служебного пользователя напрямую в строке подключения базы данных. Для этого найдем атрибут ib в файле и дополним его параметрами Usr (пользователь) и Pwd (пароль).

Посмотрим на пример, как это часто пытаются написать разработчики (и допускают ошибку):

ib="Srvr="Ala01-app1c02";Ref="surp_test";Usr="тест2";Pwd="030514";"

Разберем причину «Ошибки 500» при редактировании default.vrd

Если вы отредактировали файл публикации так, как показано в примере выше, и при обращении к сервису веб-сервер возвращает статус «500 Internal Server Error», выясним причину. Дело в том, что default.vrd — это файл в формате XML. Использование двойных кавычек внутри уже открытых двойных кавычек грубо ломает структуру XML-документа. Веб-сервер просто не может прочитать конфигурацию и мгновенно «падает» с ошибкой 500.

Проанализируем правильные варианты синтаксиса. Если в именах сервера, базы и в пароле нет пробелов, внутренние кавычки можно просто убрать:

ib="Srvr=Ala01-app1c02;Ref=surp_test;Usr=тест2;Pwd=030514;"

Если же пробелы присутствуют (или вы хотите использовать строгий синтаксис), необходимо экранировать внутренние кавычки с помощью HTML-сущности ". Настроим строку правильно:

ib="Srvr="Ala01-app1c02";Ref="surp_test";Usr="тест2";Pwd="030514";"

После внесения изменений обязательно перезапустите службу Apache. Также рекомендуется использовать логины на латинице (английском языке), чтобы избежать проблем с кодировкой.

Вопросы безопасности и Basic Authentication

Обратим внимание на важный нюанс безопасности. Прописывая логин и пароль в default.vrd, вы делаете ваш HTTP-сервис полностью открытым для анонимного доступа. Любой человек или бот в интернете, узнавший URL вашего сервиса, сможет вызывать его методы.

Для реальных проектов правильной практикой является использование Basic Authentication. В этом случае логин и пароль не хранятся в default.vrd, а передаются самой вызывающей системой (клиентом) в защищенных заголовках каждого HTTP-запроса.

Настройка отладки HTTP-сервисов

Если авторизация проходит, но сервис все равно работает некорректно, нам потребуется отладка кода модуля HTTP-сервиса. Настроим отладку на веб-сервере по шагам:

  1. Откройте файл default.vrd.
  2. Добавьте в него строку для включения отладки:

<debug enable="true" url="tcp://localhost"/>

  1. Перезапустите службу веб-сервера Apache.
  2. В Конфигураторе 1С перейдите в настройки отладки и установите флажок «Отладка HTTP-сервисов».
  3. Поставьте точку останова в коде обработки запроса вашего сервиса и выполните вызов из браузера или стороннего клиента.

Дополнительные неочевидные нюансы при ошибке 500 или 404

Рассмотрим еще несколько причин, из-за которых HTTP-сервисы могут не работать должным образом:

  1. HTTP-сервис находится в расширении: По умолчанию платформа 1С не публикует HTTP-сервисы, созданные в расширениях. Если ваш сервис именно такой, в файл default.vrd внутри тега <httpServices> нужно вручную добавить параметр publishExtensionsByDefault="true".
  2. Права доступа на уровне ОС: Часто Apache выдает ошибку доступа, если пользователю операционной системы, под которым запущена служба (например, SYSTEM в Windows или www-data в Linux), не хватает прав. Убедитесь, что у этого пользователя есть права на чтение папки bin платформы 1С и права на папку, где лежит default.vrd.
  3. Чтение тела ошибки 500: Ошибку 500 может возвращать как сам веб-сервер, так и код 1С (при возникновении исключения). Всегда просматривайте файл error.log веб-сервера Apache. Кроме того, при вызове сервиса (например, через Postman) читайте тело ответа сервера — платформа 1С очень часто возвращает подробный текст ошибки с указанием строки кода прямо в теле ответа.

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

← На главную