При попытке протестировать опубликованный веб-сервис 1С через браузер разработчики часто сталкиваются с тем, что система запрашивает учетные данные (имя пользователя и пароль). Рассмотрим, почему это происходит и как настроить автоматическую аутентификацию для корректной работы ваших сервисов.
Когда вы обращаетесь к адресу веб-сервиса (например, http://127.0.0.1/serv/ws/averagecalculation.1cws), веб-сервер Apache или IIS пытается авторизовать запрос в информационной базе 1С. Поскольку доступ к сервисам по умолчанию требует идентификации, система просит ввести данные пользователя 1С. Разница в поведении браузеров (в одном запрашивает, в другом нет) часто объясняется настройками безопасности самого браузера и наличием сохраненных кук или политиками обработки заголовков аутентификации.
Чтобы не вводить логин и пароль вручную каждый раз при тестировании, нам необходимо указать параметры пользователя непосредственно в файле публикации default.vrd. Этот файл создается в каталоге, где опубликован веб-сервис.
default.vrd в директории публикации (например, C:\inetpub\wwwroot\serv\default.vrd).point.Рассмотрим структуру файла с настроенными параметрами:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/serv"
ib="File="C:\InfoBase"">
<ws pointEnableCommon="true"/>
<standardOdata enable="false"/>
<httpServices publishByDefault="true"/>
<user name="ИмяПользователя" password="ВашПароль"/>
</point>
После внесения правок сохраните файл. Теперь при обращении к веб-сервису 1С будет автоматически использовать указанного пользователя, и браузер перестанет выдавать окно с запросом пароля.
Хранение пароля в открытом виде — это упрощение, которое удобно для среды разработки, но требует осторожности в продуктивной среде. Обязательно ограничивайте права доступа к самому файлу default.vrd на уровне операционной системы, чтобы его могли читать только учетные записи, под которыми работает веб-сервер.
Если вы хотите избежать хранения паролей в файлах, рассмотрите следующие подходы:
IIS, этот механизм работает почти «из коробки» через протоколы NTLM или Kerberos. В этом случае пользователь авторизуется под своей учетной записью Windows, и вводить пароль 1С не требуется.Apache существуют специальные модули авторизации (например, mod_auth_sspi), позволяющие связать веб-сервер с авторизацией ОС. Это требует дополнительной настройки конфигурационных файлов веб-сервера.OAuth2 или JWT.Если после настройки вы все равно получаете ошибки, воспользуйтесь инструментами разработчика. Нажмите клавишу F12 в браузере и перейдите на вкладку Network (Сеть). Проанализируйте заголовки ответа сервера при попытке обращения к сервису:
Edge и Chrome при работе через 127.0.0.1).Таким образом, для большинства задач по тестированию и интеграции достаточно прописать пользователя в default.vrd, но для высоконагруженных или публичных систем рекомендуем переходить к использованию авторизации ОС или современных протоколов передачи токенов.