Использование 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 не делал, тема отдельного блока тестов, думаю в данной реализации работает корректно.

 

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

См. также

AUTO VPN (portable)

Информационная безопасность Платные (руб)

Автоматизация подключения пользователей к удаленному рабочему месту или сети посредством создания автоматического VPN (L2TP или L2TP/IPSEC и т.д.) подключения без ввода настроек пользователем (с возможностью скрытия этих настроек от пользователя). Программа автоматически выполняет подключение к VPN серверу и после успешного коннекта , если необходимо, подключение к серверу удаленных рабочих столов (RDP).

1200 руб.

24.03.2020    14398    22    32    

33

Настройка аутентификации в 1С с использованием стандарта RFC 7519 (JWT)

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

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

27.02.2024    2608    PROSTO-1C    9    

29

Device flow аутентификация, или туда и обратно

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

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

1 стартмани

27.10.2023    1618    platonov.e    1    

23

Анализатор безопасности базы сервера 1С

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

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

5 стартмани

24.04.2023    5438    14    soulner    7    

29

Путь самурая. Ставим локальный Сервер взаимодействия

Сервера Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подробная пошаговая инструкция (как делал я) установки Сервера взаимодействия версия 22.0.26 на Windows Server 2022. Установка собственного объектного хранилище с помощью системы MinIO (https://min.io/). Настройка Сервера взаимодействия для обмена файлами в сообщениях.

1 стартмани

07.04.2023    12595    VPanin56    40    

72

Публикатор 1С. Как публиковать базы с комфортом

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

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

20.03.2023    6709    72    Segate    4    

26

Публикация 1С на Apache SSL в локальной среде разработки

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

В статье описывается установка и настройка веб-сервера Apache для работы с 1С через https.

09.02.2023    5359    lone_mayson    4    

41
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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/
Оставьте свое сообщение