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?