Настройка образца для подражания с двумя слоями в keycloak - PullRequest
0 голосов
/ 02 июля 2019

Я являюсь частью проекта внешнего интерфейса, и мне нужна помощь, чтобы перенести нашу модель авторизации в keycloak. Мы опираемся на node.js, и весь проект использует микросервисы без сохранения состояния, а также наше промежуточное промежуточное ПО в качестве целых серверных служб, которые мы используем. Интерфейс использует стандартный адаптер JS для управления сеансами и токенами.

На данный момент мы определили четыре роли: турагент, бэк-офис, конфигуратор и сотрудник по безопасности данных. Пока все просто. Моя проблема в том, как смоделировать следующий необходимый нам уровень авторизации.

Например: для турагентов мы хотим иметь возможность предоставлять каждому человеку, может ли он просматривать конкретные данные клиента или может отменить заказы. Есть около 6-8 вариантов для турагентов. Таким образом, для бэк-офиса должны быть опции для операций с запасами или другие виды заказов.

Как и бэкэнд, мы не сохраняем никаких данных! Вот почему я храню все эти вещи в keycloak и нахожу способ легко перенести эту информацию в наше промежуточное ПО.

Вот что я пытался / думал до сих пор:
* Используйте группы для первого слоя и роли для второго. -> не работает, потому что группы не раскрываются в токене.
* Используйте роли областей для верхней и атрибуты для нижней иерархии. -> атрибуты не включены в токен доступа.
* Используйте роли областей для верхних ролей и ролей клиентов в нижней иерархии. -> работает, но мы должны убедиться, что роли на втором уровне определенно связаны только с одной ролью на первом уровне. Я пока не знаю как.
* Используйте роли для первого слоя и ресурсы для второго. -> Кажется, это очень близко к тому, что нам нужно. Но в настоящее время я не могу понять правильный подход со всеми этими политиками и разрешениями ...

Обсуждения здесь, в Stack Overflow, кажутся очень плодотворными, и я хотел попробовать, хотя у меня нет кода, чтобы предложить.

Спасибо за любую помощь и, пожалуйста, дайте мне знать, если я предоставлю дополнительную информацию.

Sven

1 Ответ

0 голосов
/ 03 июля 2019

В отличие от downvoter, я считаю, что это законный вопрос.

Похоже, вы на правильном пути с точки зрения использования групп / ролей / атрибутов Keycloak. Вы можете выбрать комбинацию, которая соответствует вашим потребностям. Например, если вам нужна иерархическая структура, вы можете использовать группы. Или вы можете использовать роли, так как они могут быть составными.

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

Например, для предоставления ролей пользователю необходимо создать сопоставитель «Роль пользовательского царства», который добавляет ваши роли в качестве заявки на токены. Для этого:

  1. нажмите «клиенты» в боковом меню
  2. нажмите на клиент, который вы используете
  3. нажмите на вкладку "Mappers"
  4. добавить маппер типа «Роль пользовательской области».

Существуют также сопоставители для «Членство в группе» и «Атрибут пользователя», которые можно использовать для добавления этих двух понятий в качестве утверждений. Если этого недостаточно, или если вам нужен более детальный контроль, вы можете свернуть свой собственный маппер. Чтобы узнать, как это сделать, см. Документацию Keycloak и другие вопросы по переполнению стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...