Убираем авторизацию пользователя у веб-сервиса
Механизм Web-сервисов позволяет использовать 1С:Предприятие 8 как набор сервисов в сложных распределенных и гетерогенных системах, а также позволяет интегрировать 1С:Предприятие 8 с другими промышленными системами использованием сервисно-ориентированной архитектуры.
Допустим, необходимо, что бы веб-сервис exchange.1cws не требовал авторизацию. Для этого из файла default.vrd удаляем информацию о данном веб-сервисе, то есть удаляем строчки:
<point name="Exchange"
alias="exchange.1cws"
enable="true"/>
Создаем рядом с файлом default.vrd файл с именем exchange и расширением 1cws (exchange.1cws). Откроем файл текстовым редактором, укажем кодировку UTF-8 без BOM и запишем следующие строчки:
Публикация веб-сервисов выполняется через конфигуратор, для этого нужно открыть окно Публикация на веб-сервере, нажав Администрирование -> Публикация на веб-сервере...
![]() |
1. Опубликованный веб-клиент и веб-сервисы |
Процесс публикации описывать не буду, для каждого случая он свой, но обычно достаточно выбрать веб-сервер, указать каталог публикации и нажать на кнопку Опубликовать.
Послу публикации в указанном каталоге создастся файл default.vrd. Его содержимое будет примерно таким:
<?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="/DemoSSL"
ib="File="C:\1с\БиблиотекаСтандартныхПодсистем\DemoSSL";">
<ws>
<point name="Exchange"
alias="exchange.1cws"
enable="true"/>
<point name="Exchange_2_0_1_6"
alias="exchange_2_0_1_6.1cws"
enable="true"/>
<point name="InterfaceVersion"
alias="InterfaceVersion.1cws"
enable="true"/>
<point name="MessageExchange"
alias="messageexchange.1cws"
enable="true"/>
<point name="MessageExchange_2_0_1_6"
alias="messageexchange_2_0_1_6.1cws"
enable="true"/>
<point name="RemoteAdministrationOfExchange"
alias="RemoteAdministrationOfExchange.1cws"
enable="true"/>
<point name="RemoteAdministrationOfExchange_2_0_1_6"
alias="RemoteAdministrationOfExchange_2_0_1_6.1cws"
enable="true"/>
</ws>
</point>
Тег ws содержит описание публикации веб-сервисов. Если мы обратимся к веб-сервису с помощью браузера, введя его адрес, например, http://192.168.0.85/DemoSSL/ws/exchange.1cws, то увидим окно авторизации, которое попросит ввести логи и пароль пользователя 1С:
Обратите внимание, адрес к веб-сервису строится по следующему шаблону:
[СетевойАдресКомпьютера]/[ИмяПубликации]/ws/[АдресВебСервиса]
![]() |
2. Окно авторизации веб-сервиса |
[СетевойАдресКомпьютера]/[ИмяПубликации]/ws/[АдресВебСервиса]
Создадим пользователя 1С с логином User и паролем 123456, от имени которого в дальнейшем будет происходить автоматическая авторизация.
Замечено, окно авторизации корректно работает с логином, написанным на латинице, иначе может появится ошибка:
Замечено, окно авторизации корректно работает с логином, написанным на латинице, иначе может появится ошибка:
<html>
<head><title> A server error occurred. </title></head>
<h1> а?б?б?аЕаНб?аИб?аИаКаАб?аИб? аПаОаЛб?аЗаОаВаАб?аЕаЛб? аНаЕ аВб?аПаОаЛаНаЕаНаА. </h1>
<hr/>
An error occurred processing this request.</html>
Допустим, необходимо, что бы веб-сервис exchange.1cws не требовал авторизацию. Для этого из файла default.vrd удаляем информацию о данном веб-сервисе, то есть удаляем строчки:
<point name="Exchange"
alias="exchange.1cws"
enable="true"/>
Создаем рядом с файлом default.vrd файл с именем exchange и расширением 1cws (exchange.1cws). Откроем файл текстовым редактором, укажем кодировку UTF-8 без BOM и запишем следующие строчки:
<?xml version="1.0" encoding="UTF-8"?>
<service
namespace="http://www.1c.ru/SSL/Exchange"
name="Exchange"
connectString="File="C:\1с\БиблиотекаСтандартныхПодсистем\DemoSSL";usr="User";pwd="123456""/>
Значения атрибутов тэга service берем из следующих мест:
Теперь веб-сервис Exchange доступен без запроса авторизации по адресу http://192.168.0.85/DemoSSL/exchange.1cws. Обратите внимание, что изменился путь к веб-сервису, теперь он не содержит уровень ws.
UPD 15.03.2016:
Если стоит апач(а может и не только) — то по дефолту 1С пытается авторизовать пользователя системы вида: \\[DOMAIN]\HOSTNAME$, если в базе создать такого пользователя с авторизацией системы — то плясать с бубном не нужно, а дальше рулите ролями.
UPD 12.04.2017:
Создать в операционной системе пользователя, под ним настроить запуск Apache. В 1С завести пользователя, установить галку Аутентификация операционной системы и выбрать пользователя Apache. Правда при такой настройке не получится выборочной аутентификации - будут доступны все сервисы, связанные с WEB.
- namespace - указываем пространство имен веб-сервиса (см. рисунок 3);
- name - указываем имя сервиса (см. рисунок 1);
- connectString - указывается расположение информационной базы (см. рисунок 4) + логин и пароль пользователя, от имени которого будет производиться авторизация. Для файлового варианта и клиент-серверного значение данного атрибута будет отличаться. Пример для клиент-серверного варианта: Srvr="localhost";Ref="DemoSSL";usr="User";pwd="123456"
![]() |
3. Пространство имен веб-сервиса |
![]() |
4. Расположение информационной базы |
UPD 15.03.2016:
Если стоит апач(а может и не только) — то по дефолту 1С пытается авторизовать пользователя системы вида: \\[DOMAIN]\HOSTNAME$, если в базе создать такого пользователя с авторизацией системы — то плясать с бубном не нужно, а дальше рулите ролями.
UPD 12.04.2017:
Создать в операционной системе пользователя, под ним настроить запуск Apache. В 1С завести пользователя, установить галку Аутентификация операционной системы и выбрать пользователя Apache. Правда при такой настройке не получится выборочной аутентификации - будут доступны все сервисы, связанные с WEB.
Если стоит апач(а может и не только) — то по дефолту 1С пытается авторизовать пользователя системы вида: \\[DOMAIN]\HOSTNAME$, если в базе создать такого пользователя с авторизацией системы — то плясать с бубном не нужно, а дальше рулите ролями ;-)
ОтветитьУдалитьСпасибо, бро! Добавлю в мануал :)
УдалитьОтличная статья! А при работе с HTTP-сервисом, как уйти от авторизации???
ОтветитьУдалитьСейчас не работаю в данном направлении, ответить на ваш вопрос не имею возможности.
Удалитьпросто в строку в коце добавить по аналогии
Удалитьib="File="C:\Users\user\Desktop\1С\АВТОМАТ ОФИКИ\1Cv8Log";usr="Admin";pwd="123456""
usr="Admin";pwd="123456"
Admin - это логин
123456 - это пароль
Спасибо.
ОтветитьУдалитьспасибо
ОтветитьУдалитьСоздать в операционке пользователя, под ним настроить запуск Apache. В 1С завести пользователя, установить галку Аутентификация операционной системы и выбрать пользователя Apache... Правда при такой настройке не получится выборочной аутентификации - будут доступны все сервисы, связанные с WEB...
ОтветитьУдалитьСпасибо за ваш метод!
УдалитьЗдравствуйте. у меня немного иная проблема.
ОтветитьУдалить1. Сервер кластера 1с = Сервер1с
2. Веб сервер 1с базы Документооборота 8.3 = app01 (опубликован на ИИС)
3. Клиенты 1с, работающее через тонкий/толстый клиент авторизуются через доменного аккаунта (т.е. 1с не запрашивает логин пароль) Это сделано в конфигураторе 1с.
Web сервер 1с, открывается и запрашивает у меня пароль, т.е. не передает домен\логин в 1с. (как я понимаю)
При этом в логах IIS, при открытии веб узла 1с, я вижу. что он видит пользователя как домен\юзер.
IIS настроен/ в нем прописаны MIEM. сопоставление обработчика. проверка подлинности "ТОЛЬКО проверка подлинности Windows"
Но веб 1с все равно спрашивает логин и пароль. бьюсь уже несколько месяцев, ничего не могу понять.
Здравствуйте, тяжело представить на словах вашу ситуацию. Может вам стоит пойти более легким путем:
Удалить1) создать в ИБ пользователя со стандартной авторизацией специально для веб-сервиса
2) настроить авторизацию как описано в статье.
Никита, привет!
УдалитьУдалось справится с проблемой автоматической авторизации 1С в Браузере?
Имею точно такую-же ситуацию описанную вами (когда в обычном приложении работает авторизация через AD, а при переходе на браузер - не работает) тоже ищу решение.
Поделитесь решением.
Спасибо!
Привяжите "IIS настроен/ в нем прописаны MIEM. сопоставление обработчика. проверка подлинности "ТОЛЬКО проверка подлинности Windows"" по другому: по сайту в проверке подлинности выберите галку "анонимная проверка подлинности" и укажите пользователя ОС (изменит). В конфигураторе у пользователя 1С укажите аутентификация ОС и укажите пользователя ОС.
УдалитьНе забывайте про " в серверном варианте
ОтветитьУдалить