Доброго всем дня!
подскажите настроил сервис. выводит пользователям список документов. сделал без авторизации. вот пример файла 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="/srvimp"
ib="File="C:\1c\test";usr=site;pwd=12345"
enableStandardOData="true">
<ws>
<point name="WebService"
alias="ws1.1cws"
enable="true"/>
</ws>
</point>
но как при обращении к базе через веб интерфейс захожу под пользователем site а хотелось бы под своим. подскажите как настроить параметры для входа под своим логином?
подскажите настроил сервис. выводит пользователям список документов. сделал без авторизации. вот пример файла 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="/srvimp"
ib="File="C:\1c\test";usr=site;pwd=12345"
enableStandardOData="true">
<ws>
<point name="WebService"
alias="ws1.1cws"
enable="true"/>
</ws>
</point>
но как при обращении к базе через веб интерфейс захожу под пользователем site а хотелось бы под своим. подскажите как настроить параметры для входа под своим логином?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
День добрый!
Тоже интересует данная тема.
Может есть возможность через строку запроса передать логин и пароль???
Типа дописать в концеhttp://localhost/str/hs/our-services/list...логин%пароль
Может кто знает как это можно сделать???
С уважением, Андрей
Тоже интересует данная тема.
Может есть возможность через строку запроса передать логин и пароль???
Типа дописать в конце
Может кто знает как это можно сделать???
С уважением, Андрей
(9) serko8547, Привет! По факту нет опыта написания команд для подключения к 1C через GET/PUT запросы. Но думаю, что это возможно. В этом и состоял вопрос может у Вас есть этот опыт и Вы можете поделиться информацией и объяснить что и как нужно делать правильно. Спасибо за понимание.
(9) serko8547, Привет! подкинули ссылку на http://www.forum.mista.ru/topic.php?id=636109
проверил...
Все верно если делать сквозную авторизацию по веб-клиенту в 1С то да
http://localhost/str?N=имяпользователя&P=парольпользователя выполняется на ура,
1С не запрашивает логин и пароль и открывает сразу 1С и рабочий стол,
в случае вызова через http-сервис и задать строкой
http://localhost/str/hs/our-services/list?N=имяпользователя&P=парольпользователя
непроходит и все равно запрашивает логин и пароль, значит неправильно строка составлена...
вот в чем вопрос...
С уважением, Андрей
проверил...
Все верно если делать сквозную авторизацию по веб-клиенту в 1С то да
1С не запрашивает логин и пароль и открывает сразу 1С и рабочий стол,
в случае вызова через http-сервис и задать строкой
непроходит и все равно запрашивает логин и пароль, значит неправильно строка составлена...
вот в чем вопрос...
С уважением, Андрей
Собственно если кто-то озадачится этим вопросом, то как писали выше можно сделать 2 публикации, в одной прописать логин и пароль (мы так сделали для HTTP сервисов, там свою авторизацию сделали) и запретить там веб клиент и сделать 2ю публикацию (стандартную), собственно можно скопировать папку с публикацией и донастроить IIS \ Apache и .vrd файл
Пример действий для IIS
1) Есть папка client со стадартной авторизацией, публикация сделана из конфигуратора.
2) Копируем папку, называем ее api
3) В IIS конвертим в веб приложение.
4) В .vrd файл добавляем логин и пароль, а так же самое важное изменение, без него не будет работать, нужно сменить директиву base="/client" соответственно на base="/api"
В Апаче все тоже самое только 3 шаг меняется на правку конфига апача.
Пример действий для IIS
1) Есть папка client со стадартной авторизацией, публикация сделана из конфигуратора.
2) Копируем папку, называем ее api
3) В IIS конвертим в веб приложение.
4) В .vrd файл добавляем логин и пароль, а так же самое важное изменение, без него не будет работать, нужно сменить директиву base="/client" соответственно на base="/api"
В Апаче все тоже самое только 3 шаг меняется на правку конфига апача.
Для публикации http-сервисов на Linux без авторизации через webinst:
Делаем две публикации:
webinst -apache24 -wsdir BASENAME -dir /var/www/base -connstr "Srvr=localhost;Ref=BASE" -confPath /etc/apache2/apache2.conf
webinst -apache24 -wsdir BASENAME-NOAUTH -dir /var/www/base-noauth -connstr "Srvr=localhost;Ref=BASE" -confPath /etc/apache2/apache2.conf
Редактируем /var/www/base/default.vrd
Редактируем /var/www/base-noauth/default.vrd
service apache2 restart
Итог:
Имеем два подключения:
http://localhost/BASENAME/ - доступна работа с авторизацией чрез браузер (веб-клиент) и сервис OData
http://localhost/BASENAME-NOAUTH/hs/TestHTTP/<ВашРоут> ; - Доступен только http-сервис без авторизации (веб-клиент не зайдет)
Делаем две публикации:
webinst -apache24 -wsdir BASENAME -dir /var/www/base -connstr "Srvr=localhost;Ref=BASE" -confPath /etc/apache2/apache2.conf
webinst -apache24 -wsdir BASENAME-NOAUTH -dir /var/www/base-noauth -connstr "Srvr=localhost;Ref=BASE" -confPath /etc/apache2/apache2.conf
Редактируем /var/www/base/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="/BASENAME"
ib="Srvr=localhost;Ref=BASE>
<debug enable="true" protocol="tcp" url="tcp://localhost" />
<ws enable="false"/>
<standardOdata enable="true"
reuseSessions="dontuse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</point>
ПоказатьРедактируем /var/www/base-noauth/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="/BASENAME-NOAUTH"
ib="Srvr=localhost;Ref=BASE;usr=user;pwd=password" enable="false">
<debug enable="true" protocol="tcp" url="tcp://localhost" />
<ws enable="false"/>
<standardOdata enable="false"
reuseSessions="dontuse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<httpServices>
<service name="TestHTTP"
rootUrl="TestHTTP"
enable="true"/>
</httpServices>
</point>
Показатьservice apache2 restart
Итог:
Имеем два подключения:
(21) тут есть неточность.
Если оставить /var/www/base-noauth/default.vrd в таком виде, то будут доступны все HTTP-сервисы
Пришлось выключить каждый сервис
Если оставить /var/www/base-noauth/default.vrd в таком виде, то будут доступны все HTTP-сервисы
Пришлось выключить каждый сервис
<?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="/BASENAME-NOAUTH"
ib="Srvr=localhost;Ref=BASE;usr=user;pwd=password" enable="false">
<debug enable="true" protocol="tcp" url="tcp://localhost" />
<ws enable="false"/>
<standardOdata enable="false"
reuseSessions="dontuse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<httpServices>
<service name="TestHTTP"
rootUrl="TestHTTP"
enable="true"/>
</httpServices>
<httpServices>
<service name="TestHTTP-2"
rootUrl="TestHTTP-2"
enable="false"/>
</httpServices>
</point>
Показать
Ребята, я НАШЕЛ КАК АВТОРИЗОВАТЬСЯ!!!
что делаем:
в хед (head) пишем:
Authorization Basic VXNlcjE6NTU1
где VXNlcjE6NTU1 это зашифрованный в base64 кодировке логин:пароль
Например: Authorization Basic VXNlcjE6NTU1
VXNlcjE6NTU1 расшифровывается User1:555
где Логин User1, пароль 555
Для тестирования запроса использовал приложение тест клиент для хрома
https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo
Скриншот от туда же
что делаем:
в хед (head) пишем:
Authorization Basic VXNlcjE6NTU1
где VXNlcjE6NTU1 это зашифрованный в base64 кодировке логин:пароль
Например: Authorization Basic VXNlcjE6NTU1
VXNlcjE6NTU1 расшифровывается User1:555
где Логин User1, пароль 555
Для тестирования запроса использовал приложение тест клиент для хрома
Скриншот от туда же
Прикрепленные файлы:

В файле default.vrd, который создает 1с при публикации вашего веб сервера (смотрите его в этой же папке, в которой публикуете ваш веб-сервер) в строке: ib="Srvr="localhost";Ref="MY_1CBD";">
добавляем:
ib="Srvr="localhost";Ref="MY_1CBD";Usr="USR";Pwd="PASS";">
где USR и PASS ваш логин и пароль пользователя 1С
добавляем:
ib="Srvr="localhost";Ref="MY_1CBD";Usr="USR";Pwd="PASS";">
где USR и PASS ваш логин и пароль пользователя 1С
Apache 2.4 через <location> в httpd.conf. Удобно что после перепубликации не слетает
Для работы должны быть включены модули:
Как работает: при обращении на www.ВашСервер.ru/ИмяРесурсаДляВходаБезПароля/ запрос будет перенаправлен на опубликованный сервис с добавленным заголовком авторизации.
SSLProxyEngine on # Если используется SSL
<Location "/ИмяРесурсаДляВходаБезПароля/" >
ProxyPreserveHost On
LimitRequestBody 102400
ProxyPass "https://localhost/ИмяПубликации/hs/ИмяСервиса/"
RequestHeader set Authorization "Basic dGаfaG5vazo3Nk12Zmli" # Имя:Пароль в base64
</Location>
Для работы должны быть включены модули:
LoadModule headers_module modules/mod_headers.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Как работает: при обращении на www.ВашСервер.ru/ИмяРесурсаДляВходаБезПароля/ запрос будет перенаправлен на опубликованный сервис с добавленным заголовком авторизации.
Круто! без всяких двойных публикаций!
по короткому пути коннект к сервисам. Огонь!
Нашел также вариант почти такой же - с редиректом с помощью nginxhttps://www.youtube.com/watch?v=ZTU8V22SYvc
Это для тех, у кого IIS.
А с апачем можно и нужно ваш метод применять.
Единственный минус обоих способов - практически открытое хранение пароля.
Но в двойной публикации даже basic-шифрования нету, просто открытый пароль в vrd-файле хранится.
Так что здесь даже чуток надёжнее.
по короткому пути коннект к сервисам. Огонь!
Нашел также вариант почти такой же - с редиректом с помощью nginx
Это для тех, у кого IIS.
А с апачем можно и нужно ваш метод применять.
Единственный минус обоих способов - практически открытое хранение пароля.
Но в двойной публикации даже basic-шифрования нету, просто открытый пароль в 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="/KiwiBotProg"
ib="Srvr="localhost";Ref="KiwiBot_Prog";">
<ws pointEnableCommon="true"
publishExtensionsByDefault="true">
<point name="InterfaceVersion"
alias="InterfaceVersion.1cws"
enable="true"
reuseSessions="dontuse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</ws>
<httpServices publishExtensionsByDefault="true">
<service name="HTTPBot"
rootUrl="HTTPBot"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<service name="HTTPСервис_Pyrus"
rootUrl="pyrus"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</httpServices>
<standardOdata enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<analytics enable="true"/>
</point>
Показать
(40)
<?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="/KiwiBotProg"
ib="Srvr="localhost";Ref="KiwiBot_Prog";">
<ws pointEnableCommon="true"
publishExtensionsByDefault="true">
<point name="InterfaceVersion"
alias="InterfaceVersion.1cws"
enable="true"
reuseSessions="dontuse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</ws>
<httpServices publishExtensionsByDefault="true">
<service name="HTTPBot"
rootUrl="HTTPBot"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<service name="HTTPСервис_Pyrus"
rootUrl="pyrus"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</httpServices>
<standardOdata enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<analytics enable="true"/>
</point>
b="Srvr="localhost";Ref="KiwiBot_Prog";">
<?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="/KiwiBotProg"
ib="Srvr="localhost";Ref="KiwiBot_Prog";">
<ws pointEnableCommon="true"
publishExtensionsByDefault="true">
<point name="InterfaceVersion"
alias="InterfaceVersion.1cws"
enable="true"
reuseSessions="dontuse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</ws>
<httpServices publishExtensionsByDefault="true">
<service name="HTTPBot"
rootUrl="HTTPBot"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<service name="HTTPСервис_Pyrus"
rootUrl="pyrus"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</httpServices>
<standardOdata enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<analytics enable="true"/>
</point>
(40)Что ему нужно?
1C:Enterprise 8 application error:
Ошибка при разборе дескриптора виртуальных ресурсов
by reason:
Ошибка разбора XML: - [6,100] Фатальная ошибка: EntityRef: expecting ';' SystemId:file://C:/inetpub/wwwroot/KiwiBotProg/default.vrd
1C:Enterprise 8 application error:
Ошибка при разборе дескриптора виртуальных ресурсов
by reason:
Ошибка разбора XML: - [6,100] Фатальная ошибка: EntityRef: expecting ';' SystemId:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот