Keycloak:检索映射到特定角色的客户端范围

问题描述 投票:0回答:1

在我的 Keycloak 设置中,我有多个客户端范围和角色:

  • 范围代表特定权限(例如,entity.create、 实体.视图、实体.删除)。
  • 角色聚合这些权限(例如,“访客”角色映射到 entity.view,“管理员”角色映射到entity.create, 实体.视图和实体.删除)。

现在我需要获取分配给特定角色(例如“访客”)的范围列表,以将其呈现在前端并允许用户映射新范围或删除映射范围。

有一个 keycloak 端点来接收这个列表吗?根据我的理解,获取此信息的唯一方法是使用 GET /admin/realms/{realm}/client-scopes 获取客户端范围的完整列表,然后使用 GET /admin/realms/ 迭代每个范围 id {realm}/client-scopes/{client-scope-id}/scope-mappings/clients/{client} 检查角色是否在映射的角色中。但这完全没有效率......

我现在正在为此苦苦挣扎一段时间......我希望有一个解决方案。

谢谢大家。

Copilot 建议我使用端点 GET admin/realms/{realm}/clients/{client-id}/scope-mappings,但此端点似乎只返回客户端和角色之间的映射,并且没有引用范围(尽管端点名称...)

keycloak keycloak-rest-api
1个回答
0
投票

不幸的是,Keycloak 不提供直接端点来列出分配给特定角色的范围。但是,您可以使用 GET /admin/realms/{realm}/roles-by-id/{role-id} 端点来获取有关角色的详细信息。如果角色是复合角色,则响应将包括所有关联的角色和权限(范围)。或者,您可以使用 GET /admin/realms/{realm}/clients/{client-id}/scope-mappings 检索客户端的所有范围映射,并将它们与您的角色交叉引用。

© www.soinside.com 2019 - 2024. All rights reserved.