Авторизация пользователя при обращении к 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-адресам.
Вход в личный кабинет