如何查询Keycloak中单个资源关联的已分配用户数量
Keycloak获取指定资源下已分配用户总数的实现方法
- 前置准备
先获取对应Realm下拥有view-authorization权限的账号的Access Token,后续所有接口请求都需要在请求头携带参数Authorization: Bearer <你的Access Token> - 方法1:通用资源权限查询法
- 调用接口查询目标工作空间对应的资源ID:
GET /<你的Realm名称>/authz/protection/resource_set?name=<工作空间对应的资源名称>
从返回结果中提取_id字段,即为该资源的唯一标识 - 调用权限关联查询接口,获取该资源绑定的所有授权主体:
GET /<你的Realm名称>/authz/protection/permission?resource=<上一步获取的资源ID>&returnNames=true
对返回结果中的用户主体去重后统计数量,就是直接分配给该资源的用户总数。如果你的资源同时给角色、用户组分配了权限,需要额外查询对应角色、用户组下的用户列表,汇总后再去重统计得到最终总数。
- 调用接口查询目标工作空间对应的资源ID:
- 方法2:用户策略直接统计法
如果你的资源权限是通过独立的用户策略绑定的,可以用更简便的方式:- 先查询资源关联的权限策略列表:
GET /<你的Realm名称>/clients/<授权客户端的UUID>/authz/resource-server/resource/<资源ID>/permissions
从返回结果中筛选出类型为user的策略ID - 查询该用户策略下绑定的所有用户:
GET /<你的Realm名称>/clients/<授权客户端的UUID>/authz/resource-server/policy/user/<用户策略ID>
返回结果中的users字段即为所有绑定的用户,直接统计该数组的长度即可得到用户总数。
- 先查询资源关联的权限策略列表:
内容的提问来源于stack exchange,提问作者Chouaib Elmakhlouk
相关产品推荐
相关产品推荐

