我在领域中定义了多个客户端范围和一些角色。 我的域中的“范围”表示特定权限,例如“entity.create”、“entity.view”、“entity.delete”等。“角色”表示将分配给用户的权限的聚合,例如作为“管理员”、“线路操作员”、“访客”等 例如,“Guest”角色将仅映射到“entity.view”范围,“Administrator”角色将映射到“entity.view”、“entity.create”和“entity.delete”范围。
现在我需要获取分配给特定角色(例如“Guest”)的范围列表,以将其呈现在前端并允许用户映射新范围或删除映射范围。
有一个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 不提供直接端点来列出分配给特定角色的范围。但是,您可以使用 GET /admin/realms/{realm}/roles-by-id/{role-id} 端点来获取有关角色的详细信息。如果角色是复合角色,则响应将包括所有关联的角色和权限(范围)。或者,您可以使用 GET /admin/realms/{realm}/clients/{client-id}/scope-mappings 检索客户端的所有范围映射,并将它们与您的角色交叉引用。