我想为客户端添加专用作用域,以便它可以访问来自其他客户端的信息。打开完全访问可以工作,但授予太多权限。
已经用它们各自的客户端创建了作用域。这是"仅"分配范围从客户端a到客户端b的问题。我有一个本地可用的名称和客户id列表。如何通过kcadm.sh有效地分配它们?
我已经尝试打开网络选项卡,但我无法理解分配作用域背后的逻辑是什么。
。,有一个
- POST/admin/realms/master/clients/968c7b36-95dd-4121-b92b-37b324298890/scope-mappings/realm with a empty array as payload
- POST/admin/realms/master/clients/968c7b36-95dd-4121-b92b-37b324298890/scope-mappings/clients/74cb7b05-34d5-4657-8fe6-bb19a7c8a07f从APIDOC它只是说客户端。但是我不知道客户端应该是什么。
如何在Keycloak (X) 20.0.3上复制
- 登录Keycloak管理控制台
- 点击客户端选项卡
- 点击createClient 创建客户端id并单击next。
- 单击save。
- 在新客户端上。点击上面的标签"客户范围"。
- 点击第一个蓝色项目。
- 点击上面的标签'scope'并关闭允许的全范围。
- 单击分配角色,添加一个项目。
这就是我想在kcadm.sh的帮助下实现的,因为客户端是动态添加的。您甚至不能从Actions中导出客户端-从UI中再次导出和导入它。当再次导入时,每个作用域都会丢失。
要最小限度地将角色从客户端A分配给客户端B,您需要以下Rest Full API调用:
- POST
/admin/realms/ <REALM NAME> /clients/< ID OF THE CLIENT >/scope-mappings/clients/< ID OF THE CLIENT where the role comes from>
在你的例子中是/admin/realms/ <REALM NAME> /clients/< ID OF CLIENT B >/scope-mappings/clients/ < ID OF CLIENT A>
载荷应为[{"id":"<ID OF ROLE>","name":"<ROLE NAME>"}]
您将需要调用来获取您可以调用的客户端的id:
GET /{realm}/clients
以clientId
为查询参数。
然后需要调用来获取角色的ID,为此可以使用:
GET /{realm}/clients/{id}/roles/{role-name}
id为客户端的id。