Как определить более детальные разрешения или пользовательскую логику для встроенных ролей в Keycloak - PullRequest
0 голосов
/ 10 мая 2019

Keycloak предоставляет некоторые встроенные роли для управления самим Keycloak. Эти роли определены в realm-management клиенте каждой неосновной области. В качестве примера я могу определить пользователя, у которого есть права на управление пользователями. Но теперь этот пользователь может изменить все роли всех пользователей. Пользователь может даже изменить роль самого себя.

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

Я попытался смоделировать это в keycloak следующим образом. У меня есть две роли области root и admin, а также некоторые роли клиента (my-app) root, admin, edit и view. Роли области - это составные роли, которые используют своего аналога в клиенте (root -> may-app.root, admin -> my-app.admin).

Теперь проблема в том, что пользователь с правами администратора может изменить свою роль на root. Как я могу ограничить разрешения пользователя-администратора, чтобы разрешить управление только теми пользователями или ролями, которые находятся на том же уровне или ниже? Являются ли они такими встроенными функциями или я должен предоставить свой собственный интерфейс поверх Keycloak REST API?

...