Когда вы создаете HTTP-сервис в 1С для взаимодействия между двумя информационными системами, вопрос безопасности и корректной авторизации становится приоритетным. Давайте разберем, как грамотно организовать процесс обмена данными, чтобы обеспечить надежность и безопасность соединения.
Основной способ авторизации в HTTP-сервисе 1С — это использование учетных записей пользователей, заведенных непосредственно в информационной базе, к которой вы обращаетесь. При отправке HTTP-запроса вы передаете логин и пароль в заголовке Authorization. 1С автоматически пытается выполнить вход в систему под этим пользователем.
Важный аспект: Права пользователя, указанного в запросе, определяют границы доступных действий. Если вы используете администратора, то сервис будет обладать неограниченными правами в рамках кода, который он выполняет. Это небезопасно.
Чтобы следовать принципу минимальных привилегий, мы рекомендуем создавать отдельного служебного пользователя специально для интеграционных обменов. Рассмотрим, как это реализовать:
Интеграция_HTTP).Посмотрим на пример формирования заголовка в коде 1С:
// Формируем строку авторизации в формате base64
СтрокаАвторизации = "Интеграция_HTTP:ВашПароль";
ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки(СтрокаАвторизации, "UTF-8", Ложь);
Base64Строка = Base64Строка(ДвоичныеДанные);
Заголовки = Новый Соответствие();
Заголовки.Вставить("Content-Type", "application/json; charset=UTF-8");
Заголовки.Вставить("Authorization", "Basic " + Base64Строка);
// Создаем соединение и запрос
HTTPСоединение = Новый HTTPСоединение("сайт.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
HTTPЗапрос = Новый HTTPЗапрос("/api/orders", Заголовки);
Существует возможность указать пользователя по умолчанию в файле default.vrd, который создается при публикации базы на веб-сервере. Если вы пропишете там пользователя, то запросы будут выполняться от его имени, даже если в самом HTTP-запросе аутентификационные данные не переданы.
Однако, проанализировав ситуацию, мы не рекомендуем использовать этот метод как основной. Во-первых, это может привести к конфликтам, если в базе работают другие пользователи через веб-клиент. Во-вторых, разделение прав становится менее прозрачным. Лучше всего иметь отдельную публикацию для HTTP-сервисов, если требуется специфическая настройка доступа на уровне веб-сервера.
Разберем основные правила, которые помогут избежать проблем при работе с сервисами:
base64, который легко декодируется. Работа без шифрования делает ваши данные уязвимыми для перехвата.HTTP-сервису инициирует создание сеанса 1С. При высокой интенсивности обмена необходимо следить за производительностью базы и лимитами соединений на веб-сервере.Таким образом, использование отдельного пользователя с ограниченными правами является «золотым стандартом» при разработке интеграций на HTTP-сервисах 1С. Это обеспечивает гибкость управления доступом и высокий уровень безопасности вашей информационной системы.