Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

HTTP-сервис в расширении - что ему надо для запуска

HTTP-сервис в расширении - что ему надо для запуска
Я
   bolero
 
12.02.19 - 11:05
К типовой УТ11 сделал расширение.

В расширении HTTP сервис и роль.
У роли права "Использование" на все методы HTTP-сервиса проставлены.

Создал профиль групп доступа с этой ролью и галочкой "Запуск внешнего соединения". Добавил группу доступа к пользователю, который и так уже был администратором

В default.vrd прописал все варианты наименования сервиса:

<httpServices publishExtensionsByDefault="true">
  <service name="ПересчитатьИтоги" enable="true"/>
  <service name="ПересчитатьИтоги" rootUrl="RecalcTotals" enable="true"/>
  <service name="ЦЗПрава_ПересчитатьИтоги" enable="true"/>
  <service name="ЦЗПРава_ПересчитатьИтоги" rootUrl="RecalcTotals" enable="true"/>
  <service rootUrl="RecalcTotals" enable="true"/>
</httpServices>


/c ЗапуститьОбновлениеИнформационнойБазы сделал

Все равно получаю 403 Недостаточно прав для использования ресурса с данным HTTP методом.

Для сравнения, встроенный в конфу HTTP-сервис отрабатывает.

Чего ему надобно??
 
 
   bolero
 
1 - 12.02.19 - 11:17
В отладчике до обработчика не доходит, по ошибке не останавливается.

В ЖР только три записи:
Сеанс. Начало; Сеанс. Аутентификация и через 20 секунд Сеанс. Завершение.

20 секунд - это session reuse timeout по-умолчанию.
   Мыш
 
2 - 12.02.19 - 11:27
(0) Ставлю дайм, коннектится под пользователем, от имени которого работает веб-сервер
   bolero
 
3 - 12.02.19 - 11:47
(2) веб-сервер работает от системного пользователя httpd, и находится на машине, отдельной от сервера 1с и клиента 1с

К HTTP-сервису пытаюсь прицепиться, используя http auth basic, указывая имя пользователя и пароль пользователя 1с, и то и другое только латиница.

URL полностью латиница.
   Мыш
 
4 - 12.02.19 - 11:50
(3) Заведи в базе пользователя servername\httpd$
Не забудь про доллар.
   bolero
 
5 - 12.02.19 - 11:59
(4) да едрён батон
имя пользователя 1С передается корректно, сеанс создается - видно в ЖР

У httpd нет пароля на linux-хосте, где он запущен, потому что пользователь системный. С каким паролем мне его, по-твоему, заводить в 1С?
   Мыш
 
6 - 12.02.19 - 12:10
(5) А, так веб под линухом. На винде системный без пароля заходит через пользователя ос.

Сеанс создается, хорошо. Попробуй программно назначить пользователю роль из расширения. Не через группу доступа, а программно.
   Мыш
 
7 - 12.02.19 - 12:14
+(6) В конфигураторе у этого пользователя должен стоять флаг <Роли, добавленные расширениями конфигурации>
   trantor77
 
8 - 12.02.19 - 12:49
Включить технологический журнал и посмотреть логи.
Посмотреть логи на веб-сервере.
   bolero
 
9 - 12.02.19 - 12:50
(7) во, вот это по делу, спасибо!

У пользователя-администратора с полными правами какие группы не добавляй - ролей не прибавляется, их остается ровно две: Администратор системы и Полные права.

Через конфигуратор галочка <Роли, добавленные расширениями конфигурации> для пользователя-администратора даже не появляется, поэтому нажать ее не могу.

Сейчас пытаю счастья с ПриЗаполненииПоставляемыхПрофилейГруппДоступа(), но похоже счастья не будет.
   bolero
 
10 - 12.02.19 - 12:51
** мне нужно именно админу дать доступ к этому сервису
   Юрий Лазаренко
 
11 - 12.02.19 - 12:53
А что в коде http-сервиса? Может там нет прав на чтение каких-то объектов конфигурации?
   Мыш
 
12 - 12.02.19 - 12:53
(9) Дык это, роли из расширения только так, вроде:

Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
Пользователь.Роли.Добавить(Метаданные.Роли.РольИзРасширения);
Пользователь.Записать();
   Мыш
 
13 - 12.02.19 - 12:55
(11) Не, у него именно роль из расширения не назначена пользователю.
   bolero
 
14 - 12.02.19 - 13:56
(12) Спасибо, взлетело!

В этом же HTTP-сервисе в соседний метод вставил:

Функция update_POST(Запрос)
    УстановитьПривилегированныйРежим(Истина);
    Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени("admin3");
    Пользователь.Роли.Добавить(Метаданные.Роли.ЦЗПрава_HTTP_Сервисы);
    Пользователь.Записать();
    УстановитьПривилегированныйРежим(Ложь);

    Ответ = Новый HTTPСервисОтвет(200);
    Возврат Ответ;
КонецФункции


Один раз после подключения расширения запустить этот метод от обычного пользователя с профилем, а потом можно работать от нужного.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки - вот настоящая работа.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.