Keycloak, распределение ресурсов между клиентами - PullRequest
1 голос
/ 24 марта 2020

Мы разрабатываем приложение с архитектурой на основе микросервисов, где пользователи могут быть членами организаций, и в каждой организации они могут иметь ограничения доступа на основе ресурсов. Примером может служить рекрутер, который является членом нескольких организаций на платформе; в организации A они могут видеть список всех объявлений о вакансиях и интервьюеров, а в организации B они могут видеть только объявления о вакансиях, которые им разрешено видеть напрямую.

По структуре это выглядит примерно так: enter image description here

Все это, кажется, легко сделать с помощью Keycloak, мы создаем конфиденциальных клиентов (по одному для каждого микросервиса) и включаем управление ресурсами для них. Однако в некоторых случаях различные микросервисы (например, клиенты Keycloak) должны проверять области доступа пользователя к одному и тому же ресурсу. Примером может служить установка, где у нас есть 2 микросервиса: один для публикации и управления объявлениями о работе, другой для управления приложениями и собеседованиями, поэтому job-manager и application-manager . Теперь, когда подается новое приложение или интервьюер пытается получить доступ к приложению application-manager должен убедиться, что у пользователя есть доступ к публикации вакансии (ресурсу), настроенной в job- менеджер Keycloak клиент. Я думаю, что это не то, что поддерживает Keycloak.

В масштабах мы говорим о пользователях X00k, о 4-5-кратной организации соединений пользователей и о десятках миллионов ресурсов. Поэтому, чтобы минимизировать количество объектов, которые мы создаем в Keycloak, мы решили использовать атрибуты ресурсов, в которых мы храним JSON структур.

Итак, как один микросервис может проверить пользователя доступ к менеджеру ресурсов другим микросервисом?

...