Keycloak提供了一些内置角色来管理keycloak本身。这些角色在每个非主领域的realm-management
客户端中定义。例如,我可以定义一个有权管理用户的用户。但是现在该用户可以更改所有用户的所有角色。用户甚至可以更改自己的角色。
在我们的应用程序中,我们需要采用以下方式的分层角色结构。我们有一个root
,admin
和其他一些特定的应用程序角色。 root
角色应该能够管理密钥库客户领域以及某些特定于应用程序的功能。 admin
角色应具有管理用户的权限以及某些特定于应用程序的功能。
我已经尝试通过以下方式在keycloak中进行建模。我有两个领域角色root
和admin
,还有一些客户端(我的应用程序)角色root
,admin
,edit
和view
。领域角色是复合角色,它们在客户端中使用其对应角色(root-> may-app.root,admin-> my-app.admin)。
现在,问题在于管理员用户可以将其角色更改为root。如何限制管理员用户的权限,使其仅允许管理同一级别或更低级别的用户或角色?它们是这样的内置功能,还是我应该在Keycloak REST API之上提供自己的UI?