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

 

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

См. также

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

Предлагается внешняя обработка для просмотра данных в формате ASN1. Есть 2 режима: загрузка из бинарного формата и из BASE64. Реализована функция извлечения всех сертификатов, которые можно найти в ASN1-файле. В дополнении к этому продукту предлагается методическая помощь по вопросам, связанным с технической реализацией криптографии и шифрования в 1С.

2400 руб.

29.08.2016    30186    10    1    

11

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

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

1 стартмани

22.11.2024    1720    36    Rafael-87    36    

31

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

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

30.05.2024    6841    kamisov    18    

61

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

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

27.02.2024    8608    PROSTO-1C    10    

39

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

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL, 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    1726    1    0    

9

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

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

1 стартмани

27.10.2023    2606    platonov.e    1    

23

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

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

5 стартмани

24.04.2023    6447    21    soulner    8    

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