Авторизация пользователя при обращении к web сервису 1с
Если попытаться получить доступ к web сервису опубликованному под Apache не исправляя файл default.vrd, то появиться стандартный диалог авторизации:
Как убрать обязательную авторизацию веб-сервиса 1с?
По ссылке перехожу на wsdl страницу. Требуется авторизоваться.
Проблема в том, если я укажу ссылку для создания классов в Visual Studio, то у меня повиснет процесс. Он будет постоянно висеть и пытаться авторизоваться. Ошибка 401.
Можно ли как-то обойти эту проблему? С примерами, пожалуйста, что и как делать.
Как вариант, что я думаю:
1. Убрать авторизацию обязательную => уберется для все веб-сервером, что будет плохо.
2. Попытаться снять только для этого веб-сервера авторизацию.
3. Как-то в Visual Studio сделать авторизацию (Через Проект – Подключение Веб-служб)
После чего рабочий web.config для опубликованного web сервиса 1с будет выглядеть следующим образом:
Эквивалент последней выполненной операции (настройка <authentication>) — публикация сервиса с включенной галкой в чекбоксе «Использовать аутентификацию операционной системы на веб-сервере». 1С при публикации меняет эту настройку не в web.config, а в настройках IIS через API. В любом случае изменения должны быть видны в консоли управления IIS:
Простой пример работы с аутентификацией openid на iis
Если “веб морда” расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С – это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.
20.08.2022
15461
Fragster
11
Публикация web сервиса 1с на iis 7.5
Как уже упоминал выше, с публикацией web сервиса на IIS 7.5 с первого раза у меня не задалось, хотя тонкий клиент запускается без проблем. Поскольку пароль в конфигурационном файле по соображениям безопасности меня не устраивал, вернулся к вопросу настройки IIS.
Убрать форму авторизации опубликованной базы 1с
При обращении, например через браузер, к веб-сервисам опубликованной базы 1С с настройками по умолчанию, будет всегда выходить окно для авторизации к базе 1С. Чаще всего это окно авторизации не нужно, и его необходимо убрать. Покажу один из способов, как это можно сделать. Необходимо найти и открыть файл default.vrd, который находится в каталоге, указанном для публикации базы 1С. Структура данного файла имеет следующий вид:
<?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=”/ИмяБД”
ib=”Srvr="ИмяСервера:ПортСервера";Ref="ИмяБД";”
enableStandardOData=”true”>
<ws>
<point name=”ИмяВебСервиса”
alias=”ИмяВебСервиса.1cws”
enable=”true”/>
</ws>
</point>
Необходимо отредактировать данный файл. Важно: если для редактирования данного файла воспользоваться обычным редактором Notepad, то эти изменения скорее всего правильно сохранить не получиться, по причине неправильной кодировки. Но можно воспользоваться Notepad . Открываем файл и добавляем в строке
ib=”Srvr="ИмяСервера:ПортСервера";Ref="ИмяБД";”
свои данные для авторизации, то есть указываем пользователя БД и его пароль. В итоге структура данного файла примет следующий вид:
<?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=”/ИмяБД”
ib=”Srvr="ИмяСервера:ПортСервера";Ref="ИмяБД";Usr="ИмяПользователяБД";Pwd="ПарольПользователяБД";”
enableStandardOData=”true”>
<ws>
<point name=”ИмяВебСервиса”
alias=”ИмяВебСервиса.1cws”
enable=”true”/>
</ws>
</point>
Если использование веб-сервисов предполагается только определенному кругу пользователей, тогда необходимо настроить доступ к веб-серверу только по определнным IP-адресам.