Keycloak 21.0.2限制realm-management角色分配权限的实现问询
Keycloak 21.0.2 实现仅指定用户拥有realm-management角色并拦截非法请求
Keycloak 21.0.2原生支持该需求,无需修改源码,通过内置权限控制机制即可实现,具体操作如下:
限制realm-management角色的分配权限
- 登录Keycloak管理控制台,进入目标realm
- 切换到「Clients」页面,找到「realm-management」客户端
- 进入该客户端的「Authorization」标签页,在「Permissions」中配置:
- 对「manage-users」「manage-roles」这类涉及角色分配的权限,仅给「administrator」用户或其专属角色组授权
- 移除其他所有用户、角色对这些权限的访问权限
确保仅administrator持有realm-admin角色
- 进入「Users」页面,排查除administrator外的所有用户的角色映射
- 移除这些用户身上所有属于realm-management客户端的角色(包括realm-admin)
- 新创建用户默认不会自动获得realm-management相关角色,只有administrator能执行角色分配操作
API请求拦截效果
当非administrator用户调用以下角色分配API时:POST https://{keycloak-url}/auth/admin/realms/{realm-name}/users/{user-id}/role-mappings/clients/{realm-management-id}Keycloak会自动校验请求发起者的权限,无权限请求会被直接拦截并返回403 Forbidden状态码。
内容的提问来源于stack exchange,提问作者b0w92
相关产品推荐
相关产品推荐

