Использование Gatekeeper для авторизации доступа к HTTP публикации сервера 1С

22.10.21

Администрирование - Информационная безопасность

В статье опишу вариант настройки Keycloack и GoGatekepper для авторизации доступа к HTTP публикации сервера 1С

Вводные

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

Вариант реализации

Развернуть сервис аутентификации Keycloack, который выдает access_token в формате JWT по предъявлению login и password 

Поставить перед 1С HTTP публикацией прокси, который проверит JWT токен, при его валидности из него получит данные о правах доступа до конкретного сервиса и при  наличии прав переадресует запрос к публикации.

Схема

 

Настройка Apache

 
 default.vrd

 

В конфигурации добавил

  • HTTP сервис "test_http"
  • роль "ВнешнийПользователь" с правами доступа к ВнешнееСоединение и к HTTP сервису
  • сервисный пользователь с ролью "ВнешнийПользователь"
 
 Скриншот проверки

 

В "/etc/apache2/ports.conf" заменил "Listen 80" на "Listen 127.0.0.1:8080"

 

Запуск GateKeeper

Скачиваю архив с релизом с https://github.com/gogatekeeper/gatekeeper, распаковываю, копирую файл "gatekeeper" в "/usr/bin"

Запускаю сервис с конфигурацией  sudo gatekeeper --config gate_config.yml

 
 gate_config.yml

 

Настраиваю KeyCloak

Создаю realm "onec_token", в нем создаю client "client_token" c типом public

 
 Скриншот настройки

Для GateKeeper обязателен параметр aud, делаю мапинг значений для clients в этот параметр

 
 Скриншот настройки

Источник: https://stackoverflow.com/questions/53550321/keycloak-gatekeeper-aud-claim-and-client-id-do-not-match

В ограничениях присутствуют группы, делаю их мапинг для clients

 
 Скриншот настройки

 

В realm создаю роль "client:test1" и группу "users", создаю пользователя добавляю его в группу и добавляю ему роль.

Изменяю длительность действия access_token с 5 мин до 1 часа, сделал для тестов.

 

Проверка ограничения

Отправляю запрос без аутентификации, получаю 401

 
 Скриншот

 

Запросом к keycloack получаю токен

 
 Скриншот
 
 Текстом

 

Из тела ответа беру значение access_token, добавляю его в bearer аутентификацию основного запроса, повторяю запрос, получаю в ответе идентификатор user.

 
 Скриншот

 

Использую перенаправленные от GateKeeper заголовки авторизации.

 
 Код HTTP сервиса

 

При установке параметра "enable-authorization-header" передается весь токен в заголовок Authorization, но это может конфликтовать с авторизацией на уровне 1С.

 

Итог

За счет внешних сервисов можно организовать безопасный доступ к HTTP публикациям 1С.

Как организовать gatekeeper в качестве сервиса отдельный вопрос. Самое простое через docker. Возможно имеет смысл скомпоновать в один образ gatekeeper с WS компонентой 1С.

Проверку на подделку JWT не делал, тема отдельного блока тестов, думаю в данной реализации работает корректно.

 

Благодарю за внимание.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Администрирование веб-серверов Сервера Нейросети Программист Платные (руб)

Сервер поиска по метаданным и поиска по коду, Сервер экспорта и поиска по документации, Сервер синтаксической проверки кода

17.06.2025    17039    0    Infostart    20    

113

Информационная безопасность Поиск данных ServiceDesk, HelpDesk Журналы и реестры данных 8.3.14 Россия Бухгалтерский учет Бюджетный учет Налоговый учет Управленческий учет Платные (руб)

Полный контроль над изменениями в 1С без нагрузки на вашу базу. Мгновенный доступ к истории изменений, удобное сравнение и откат данных в один клик. Простой отчет с визуальным отображением изменений Откат на любую версию объекта в два клика История изменения данных хранится во внешней базе

180000 руб.

05.09.2025    1335    1    0    

3

Администрирование веб-серверов Linux Системный администратор Программист 1С v8.3 Бесплатно (free)

Проблема: При переходе с Windows на Linux многие сталкиваются с затруднениями при настройке аутентификации ОС в веб-клиенте 1С через Apache 2.4 (Debian). Решение: Команда Magnit Tech (Центр экспертизы 1С и Сопровождение 1C) разработала готовую инструкцию по настройке веб-клиента 1С на Debian 12 с поддержкой как Windows, так и Linux-серверов. Экономьте время — внедряйте проверенное!

25.07.2025    4239    biryukmikh    30    

25

Администрирование веб-серверов Системный администратор Программист 1С v8.3 Управляемые формы 1C:Бухгалтерия Узбекистан Абонемент ($m)

Внешняя обработка, подходит для любых конфигураций. Поддерживает apache и iis! Публикуйте базы легко и просто!

1 стартмани

22.11.2024    3697    43    Rafael-87    36    

33

Информационная безопасность Пароли 1С v8.3 Бесплатно (free)

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    11267    kamisov    19    

63

Информационная безопасность Программист 1С v8.3 Бесплатно (free)

Рассмотрим в статье более подробную и последовательную настройку аутентификации в 1С с использованием распространенной технологии JWT, которая пришла в программу в платформе версии 8.3.21.1302.

27.02.2024    17128    AlexeyPROSTO_1C    10    

43

WEB-интеграция Администрирование веб-серверов Платные (руб)

Превратите стандартный интерфейс 1С:ITIL/ITILIUM, Управление IT-отделом 8 в быстрый и интуитивно понятный веб-портал. Универсальный инструмент для работы с заявками из любого браузера и с любого устройства. Полный контроль за качеством работ и 100% прозрачность для заказчиков. 25+ лет на рынке. Полностью отечественный продукт из реестра ПО

128000 руб.

19.12.2023    7214    4    0    

12

Информационная безопасность Программист 1С v8.3 Абонемент ($m)

Интеграционные решения стали неотъемлемой частью нашей жизни. Правилом хорошего тона в современных приложениях является не давать интегратору доступ к чувствительным данным. Device flow позволяет аутентифицировать пользователя, не показывая приложению чувствительные данные (например: логин и пароль)<br> Рассмотрим Device flow аутентификацию, в приложении, на примере OpenID провайдера Yandex.

1 стартмани

27.10.2023    3757    platonov.e    1    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Gakuseii 1 22.03.23 08:40 Сейчас в теме
для гейткипера в конфиге есть параметр
    skip-access-token-clientid-check: true

чтобы не создавать клиент скоуп aud
И версии кк выше 19 убрали auth из url, то в вашем примере discovery url будет
discovery_url: http://auth.malikov.lan:8080/realms/
Для отправки сообщения требуется регистрация/авторизация