«Вопрос/Ответ»: автономный сервер и http-авторизация

«Вопрос/Ответ»: автономный сервер и http-авторизация

28.04.2023      48546

В телеграм-канале INFOSTART Enterprise есть еженедельная рубрика «Вопрос/Ответ». Мы предлагаем подписчикам задавать любые вопросы по работе с конфигурациями 1С и стараемся давать полезные ответы. 

На этот раз поговорим об автономном сервере и http-авторизации: разбирается в теме и отвечает на вопрос ведущий 1C-разработчик ИТ-лаборатории Инфостарт Александр Кунташов.

Вопрос

Есть ли возможность в 1С автономном сервере использовать HTTPзапросы расширений конфигурации и прописывать пользователя, под которым данные HTTPзапросы будут выполняться? На Apache реализовать через расширение HTTPзапрос не проблема, но раз у нас импортозамещение, хотелось бы использовать функции 1С автономного сервера вместо Apache.


Ответ

Если я правильно понял по контексту, тут вопрос не про возможность использовать объект HTTPЗапрос в базе, работающей под управлением автономного сервера, а про возможность публикации для этой базы HTTP-cервиса, реализованного в установленном в этой ИБ расширении.

Если вопрос про первое — то автономный сервер не имеет ограничений с точки зрения объектной модели, предоставляемой платформой 1С:Предприятие 8, и код, использующий объект HTTPЗапрос, будет прекрасно исполняться и под управлением автономного сервера.

Но мне кажется, вопрос был именно про http-сервисы, точнее тут даже целых два технических вопроса:

  • В1. Можно ли для информационной базы (ИБ), работающей под управлением автономного сервера, опубликовать http-сервис, реализованный в расширении, установленном в эту ИБ?
  • В2. Можно ли вызвать методы http-сервиса, опубликованного для ИБ, работающей под управлением автономного сервера, без необходимости на стороне клиента указывать логин и пароль (без basic-авторизации)?

Давайте попробуем разобраться и ответить на них.


В1: Можно ли при помощи автономного сервера опубликовать http-сервис из расширения?

TL;DR Да, можно.

По умолчанию, как и в случае с полноценным сервером 1С, http- и web-сервисы из расширений не публикуются автоматически, их нужно публиковать явно, равно как приходится это делать и при использовании веб-сервера. Если этого не сделать, при попытке обращения к http-сервису мы ожидаемо получим 503-ю ошибку:

 

 

Публикация http-сервиса на автономном сервере осуществляется при помощи конфигурационного yaml-файла. Его можно создать вручную, опираясь на примеры и документацию, либо сгенерировать при помощи утилиты ibcmd на основании данных ИБ уже опубликованной "классическим" способом (default.vrd).


Ручная настройка конфигурации для публикации http-сервиса

Допустим, у нас есть информационная база с расширением МойСервис, в котором реализован одноименный http-сервис c корневым URL myservice и единственным методом ping, возвращающим текстовую строку pong

Для публикации этого сервиса для ИБ под управлением автономного сервера нужно создать конфигурационный файл, назовем его publication.yaml, следующего содержания:

# publication.yaml
http:
  - base: /
    http-services:
      service:
        - name: МойСервис
          root: myservice
          publish: true

Как мы видим, имена свойств этого файла соответствуют атрибутам описания веб-сервиса в vrd-файле. Подробнее о них можно прочитать в документации.

Допустим, наша ИБ файловая и размещена в каталоге C:\Bases1C\InfoBase, в этом случае запуск автономного сервера для этой ИБ с публикацией нашего http-сервиса будет выглядеть так:

ibsrv --db-path="C:\Bases1C\InfoBase" --config="C:\Bases1C\publication.yml"

После запуска автономного сервера этой командой, наш метод ping мы сможем «дернуть», перейдя в браузере по ссылке:

http://localhost:8314/hs/myservice/ping

 

 


Конвертация настроек публикации http-сервиса из файла default.vrd

Второй способ, который мы выше упоминали — сгенерировать конфигурационный файл на основе уже существующей публикации в виде файла default.vrd.

Делается это командой ibcmd server config import:

ibcmd server config import --cluster-data="C:\srvinfo" --name=mybase --publication="C:\www\mybase\default.vrd" --out="C:\Bases1C\puclication.yaml"

В аргументах команды, как видно, нужно указать каталог с данными кластера сервера 1С, где опубликована база (аргумент --cluster-data), имя этой базы в кластере (аргумент --name) и путь к default.vrd (--publication). В аргументе --out указывается путь к файлу, в который будет сохранена конфигурация для автономного сервера.

Далее полученный файл можно использовать для запуска этой ИБ под управлением автономного сервера, либо как шаблон для создания файлов конфигурации для других баз.

Этот способ работает только для информационных баз, зарегистрированных в кластере серверов 1С:Предприятия, файловые базы командой ibcmd server config import не поддерживаются.

Подробнее разные примеры создания конфигурационного файла описаны в официальной документации.


В2. Можно ли вызвать методы http-сервиса, опубликованного на автономном сервере, без Basic-авторизации?

TL;DR Да, если использовать промежуточный реверс-прокси. Нет, если ограничиться только штатными возможностями автономного сервера. По крайней мере, я такой возможности не нашел — напишите в комментариях, если я вдруг не прав и что-то упустил.


Почему штатно не работает, и как можно попытаться обойти

В default.vrd есть возможность указать имя пользователя и пароль, под которыми расширение для веб-сервера подключается к ИБ, в строке соединения с базой данных. Но при импорте этих параметров при помощи ibcmd эта строка соединения игнорируется и не переносится, и об этом явно написано в документации:

Следует помнить, что механизм импорта файла публикации игнорирует командную строку доступа к информационной базе, которая указана в атрибуте ib элемента point файла default.vrd. Пользователь, выполняющий импорт, должен осмысленно указывать параметры импортируемой базы и файла публикации.

Да и в принципе, в описании конфигурационного файла автономного сервера свойств для указания имени пользователя и пароля нет (см. справку).

Поэтому для использования http-сервисов (равно как и web-сервисов), опубликованных средствами автономного сервера, нужно либо в коде клиентов этих сервисов указывать явно логин и пароль, либо включить в вашу инфраструктуру реверс-прокси, при помощи которого добавить в заголовки запроса заголовок с параметрами авторизации.

Если клиентом вашего сервиса является какое-то внешнее приложение, реализованное не на 1С, проверьте, возможно оно поддерживает формат URL с явным указанием логина и пароля в виде http://login:password@host:port/endpoint.

Например, к сервису из моего примера выше от имени пользователя httpservice с паролем 12345 можно обратиться таким образом:

http://httpservice:12345@localhost:8314/hs/myservice/ping

Но такой способ поддерживается не везде, поэтому рекомендуется универсальный способ — использовать промежуточный реверс-прокси и добавлять с его помощью в заголовки запросов заголовок с данными авторизации.


Пробросить авторизацию при помощи реверс-прокси (nginx/Angie)

Этот способ подразумевает, что запросы от клиента вашего http-сервиса будут сначала попадать на специальный сервер (реверс-прокси), который уже будет перенаправлять запрос на http-сервис.

Одним из популярных реверс-прокси является сервер nginx или, в контексте импортозамещения, можно использовать, например, его отечественный форк Angie.

Для демонстрации возможности я создал следующий конфигурационный файл для Angie (он же подойдет и для nginx):

# angie-default.conf
server {
    listen       80;
    server_name  _;

    location / {            
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://host.docker.internal:8314;
        proxy_set_header Authorization "Basic aHR0cHNlcnZpY2U6MTIzNDU=";
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Здесь нужно обратить внимание на две строки, которые вам придется изменить, чтобы настроить данный файл под себя:

proxy_pass http://host.docker.internal:8314;

Команда proxy_pass говорит, что входящие запросы нужно перенаправить на хост/порт, указанные в качестве аргумента.

В моем случае я запустил автономный сервер на своей локальной машине на порту по умолчанию (8314), а Angie — в docker-контейнере на этой же машине. Имя host.docker.internal — это предопределенное имя хоста, по которому из докер-контейнера можно получить доступ к хостовой машине. Вам нужно будет заменить это на имя или IP-адрес вашего хоста, на котором запущен автономный сервер 1С:Предприятия.

Вторая строка, на которую нужно обратить внимание — добавление в запрос к нашему http-сервису заголовка basic-авторизации. Значение после слова Basic — это строка вида «логин:пароль», закодированная в base64:

proxy_set_header Authorization "Basic aHR0cHNlcnZpY2U6MTIzNDU=";

Средствами 1С закодировать строку можно следующим образом (в данном фрагменте кода логин и пароль из моего примера выше):

СтрокаАвторизации = "httpservice:12345";
ДД = ПолучитьДвоичныеДанныеИзСтроки(СтрокаАвторизации);
ЗакодированнаяСтрока = Base64Строка(ДД);
Сообщить(ЗакодированнаяСтрока);

// aHR0cHNlcnZpY2U6MTIzNDU=

Используя данный конфигурационный файл, я запустил докер-контейнер с Angie следующей командой:

docker run --name myangie -p 8080:80 -v "C:\Bases1C\angie-default.conf:/etc/angie/http.d/default.conf" -d docker.angie.software/angie

После этого мой тестовый http-сервис начал отвечать по адресу http://localhost:8080/hs/myservice/ping, не требуя авторизацию.


Заключение

С точки зрения публикации http-сервисов из расширений, установленных в информационной базе, автономный сервер не имеет никаких ограничений.

Так же, как и в случае с использованием веб-сервера (Apache/IIS), http-сервисы расширения, которые вы хотите опубликовать, нужно явным образом перечислить в конфигурационном файле. Только делается это не в файле default.vrd, а непосредственно в yaml-файле конфигурации автономного сервера.

Но указание параметров авторизации конфигурационный файл автономного сервера не поддерживает, поэтому в http-запросах к опубликованному при помощи автономного сервера http-сервису нужно явно указывать параметры авторизации.

Когда у вас нет никакой возможности повлиять на потребителя/клиента вашего http-сервиса, чтобы он явно указывал логин/пароль в запросах к вашему сервису, можно прибегнуть к «инфраструктурному» способу — использовать промежуточный реверс-прокси.

В качестве реверс-прокси можно использовать сервер nginx или его форк Angie, разработанного в России и сертифицированного на совместимость с РЕД ОС и Astra Linux SE.

Использование реверс-прокси вдвойне оправдано, потому что он также необходим для организации доступа к автономному серверу по защищенному протоколу HTTPS, т.к. сам автономный сервер работает только по HTTP.

 



Источник: https://infostart.ru/journal/news/mir-1s/vopros-otvet-avtonomnyy-server-i-http-avtorizatsiya_1855370/
Автор:
Ведущий 1С разработчик


Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1429 03.05.23 09:37 Сейчас в теме
Обалденная статья-конфетка - подробная, детальная, техническая, рассмотрена прорва вариантов и возможностей!

Рекомендую всем!
2. kuntashov 446 03.05.23 11:15 Сейчас в теме
Оставьте свое сообщение

См. также

Конференция «Анализ & Управление в ИТ-проектах» завершилась. Рассказываем, как все прошло

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия Бизнес-аналитик Руководитель проекта

Премьера конференции «Анализ & Управление в ИТ-проектах» состоялась. Все три дня мы вам рассказывали, как проходит мероприятие. И теперь пришло время подвести итоги первой практической конференции и поделиться планами на будущее.

сегодня в 16:57    6153    AnastasiaKl    0       

3

Изменение цен на 1С-Отчетность: новые зоны и новые тарифы

Новость ИТ-новость Отчетность Сервисы

В сервисе 1С-Отчетность с 1 июля территориальные зоны будут распределяться по-новому, а цена на основной тариф для большинства регионов увеличится. Треть российских городов подорожание не затронет.

сегодня в 12:30    4834    ЕленаЧерепнева    1       

2

Сегодня весь день на конференции «Анализ & Управление в ИТ-проектах» работает секция «Открытый микрофон»

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия

В секции выступят участники, которым есть что рассказать аудитории. Формат выступления свободный, правила более лояльные, чем при приеме в основную программу. Возможна импровизация.

27.05.2023    8262    AnastasiaKl    0       

1

27 мая – третий день конференции «Анализ & Управление в ИТ-проектах»: полет нормальный

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия

Подводим итоги второго дня конференции «Анализ & Управление в ИТ-проектах» и рассказываем, что запланировано на сегодня.

27.05.2023    10805    AnastasiaKl    0       

2

Квест-бот Инфостарта уже ждет первых игроков. Подключайтесь!

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия

Подключайтесь к боту, отвечайте на вопросы и выигрывайте призы! Игра пройдет 26 и 27 мая. А мы пока расскажем о механике прохождения игры.

26.05.2023    10371    AnastasiaKl    0       

1

Открыта запись на онлайн-курс по обмену данными в системе 1С:Предприятие по ранней цене!

Новость Обучение, бизнес-тренинг, курсы Интеграция Инфостарт ИТ-новость

19 июня стартует базовый курс по обмену данными в 1С:Предприятие. Успейте записаться на курс по ранней цене, скидка будет действовать до 4 июня

25.05.2023    9261    dklimchuk    0       

16

Фотоконкурс: проявите свою креативность и выиграйте бесплатную поездку на следующую конференцию

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия

Конференция «Анализ & Управление в ИТ-проектах» насыщена событиями, которые хочется запечатлеть на память. Фотографируйте и сохраняйте воспоминания, а чтобы выиграть приз от Инфостарта, делитесь лучшими фотографиями в соцсетях.

25.05.2023    15950    AnastasiaKl    0       

1

Первая практическая конференция «Анализ & Управление в ИТ-проектах»: объявляем открытие

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия

Официальное открытие конференции «Анализ & Управление в ИТ-проектах» состоялось! Рассказываем о самом важном и интересном, что мы заготовили на первый день мероприятия.

25.05.2023    8543    AnastasiaKl    0       

2

Новый курс по «1С:Библиотеке стандартных подсистем» пройдет с 6 по 27 июня

Новость Обучение, бизнес-тренинг, курсы Инфостарт ИТ-новость

Приглашаем начинающих разработчиков 1С изучить набор универсальных подсистем и технологий для разработки прикладных решений «1С:Библиотека стандартных подсистем» (БСП) на новом курсе Николая Бондаренко.

24.05.2023    19527    dklimchuk    6       

18

Акциз на газировку: особенности поддержки новых требований в УНФ и Рознице 3.0

Новость 1С:Розница 3.0 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Infostart Software Partners ИТ-новость

С 1 июля начинает действовать новый акциз для сахаросодержащих напитков. Преимущественно речь идет о сладких газировках и энергетиках. Рассказываем, как данное требование поддерживается в решениях 1С:УНФ и 1С:Розница редакции 3.0.

24.05.2023    21615    ЕленаЧерепнева    1       

1

Новые форматы электронных документов: изменения уже вступили в силу

Новость ИТ-новость Сервисы ЭДО

Фирма «1С» напоминает всем пользователям сервиса 1С-ЭДО о необходимости обновления учетных систем: ФНС ввела новый формат служебных документов, используемых при выставлении и получении «первички», в том числе электронных счетов-фактур.

23.05.2023    19889    ЕленаЧерепнева    2       

1

Получите 25% кешбэка на товары и услуги Инфостарта при первичном подключении к сервису «1С-Отчетность»

Новость Инфостарт ИТ-новость Отчетность Сервисы Стартмани

Подключиться к «1С-Отчетность» с Инфостартом выгодно – для всех новых пользователей сервиса мы начисляем 25% бонуса в стартмани или в рублях, который можно потратить у нас на сайте.

23.05.2023    16815    user1763361    0       

3

Издательство МИФ дарит участникам конференции «Анализ & Управление в ИТ-проектах» промокод на скидку 10%

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия Бизнес-аналитик Руководитель проекта

Издательство МИФ – официальный партнер конференции «Анализ & Управление в ИТ-проектах». Это значит, что на конференции можно будет потрогать, посмотреть и купить книги об управлении, тайм-менеджменте и бизнесе. Стенд издательства расположится рядом с зоной кофе\чая.

23.05.2023    12061    eselyanina    0       

1

Новые возможности для работы с расширениями в 1С 8.3.25: по просьбам сообщества

Новость Платформа 1С v8.3 Зазеркалье Infostart Software Partners

В платформе 8.3.25 разработчики смогут создавать и модифицировать в расширениях бизнес-процессы, задачи и управлять составом собственных и заимствованных критериев отбора.

22.05.2023    15754    ЕленаЧерепнева    0       

1

Новая «Мобильная касса 3.18» с документами оприходования и списания

Новость ИТ-новость Новый релиз

Начиная с релиза 3.18, пользователи прямо с мобильного телефона смогут формировать в приложении документы списания, оприходования и инвентаризации, а также использовать коды весовых товаров SKU, новые типы маркировки и другие возможности.

22.05.2023    13021    ЕленаЧерепнева    0       

1

Уже собираетесь на конференцию «Анализ & Управление в ИТ-проектах»? Не забудьте взять ноутбук!

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия Бизнес-аналитик Руководитель проекта

До конференции «Анализ & Управление в ИТ-проектах» остались считанные дни. Программа готова, докладчики в последний раз прогоняют выступления. А мы напоминаем, что нужно взять с собой, чтобы получить от события максимум пользы.

22.05.2023    11288    dklimchuk    0       

3

1С:Шина 3: вышла обновленная версия ESB-системы для решений на платформе 1С

Новость ИТ-новость Новый релиз

Третья редакция 1С:Шины включает существенное обновление всех функциональных подсистем: элементов проекта, встроенного языка и других. Рассказываем, что нового в «тройке», а также говорим о практике применения 1С:Шины.

19.05.2023    37972    ЕленаЧерепнева    14       

4

КРОК – технологический партнер конференции «Анализ&Управление в ИТ-проектах»

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия Бизнес-аналитик Руководитель проекта

Компания КРОК уже не в первый раз приезжает на мероприятия Инфостарта в статусе партнера. И первая практическая конференция «Анализ&Управление в ИТ-проектах» не стала исключением – на майскую конференцию команда КРОК приедет большой командой 1С.

18.05.2023    18107    eselyanina    1       

17

Новый курс от Инфостарт: быстрый старт в 1С-разработке для новичков

Новость Обучение, бизнес-тренинг, курсы ИТ-новость Программист

Если вы ищете возможность быстро и эффективно начать свой путь в ИТ-сфере, мы предлагаем вам пройти курс по программированию на платформе 1С:Предприятие.

18.05.2023    24506    dklimchuk    0       

17

Среди совместных предприятий фирмы «1С» появился разработчик ПО для тайм-менеджмента

Новость ИТ-новость

Новая компания «Таймлист» будет заниматься разработкой программных решений для тайм-менеджмента. 51% совместного бизнеса принадлежит фирме «1С», а 49% – гендиректору нового предприятия Глебу Архангельскому

18.05.2023    15067    ЕленаЧерепнева    0       

1

До старта конференции «Анализ & Управление в ИТ-проектах» осталась всего неделя

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия

Через 7 дней встречаемся в питерском отеле Park Inn by Radisson Pribaltiyskaya на первой практической конференции для аналитиков и руководителей проектов 1С «Анализ & Управление в ИТ-проектах».

17.05.2023    13499    eselyanina    0       

16

Конференция «Анализ & Управление в ИТ-проектах»: преимущества VIP-участия

Новость Инфостарт Aнализ&Управление ИТ-новость Мероприятия Бизнес-аналитик Руководитель проекта

Участие в первой практической конференции «Анализ & Управление в ИТ-проектах» доступно по трем тарифам: Онлайн, Офлайн и VIP. Рассказываем, в чем преимущества покупки билета по тарифу VIP. Какие дополнительные удобства, приятные бонусы и сюрпризы ждут наших VIP-участников.

17.05.2023    12903    eselyanina    0       

17