如何通过kcadm为Keycloak添加专用作用域



我想为客户端添加专用作用域,以便它可以访问来自其他客户端的信息。打开完全访问可以工作,但授予太多权限。

已经用它们各自的客户端创建了作用域。这是"仅"分配范围从客户端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上复制

  1. 登录Keycloak管理控制台
  2. 点击客户端选项卡
  3. 点击createClient
  4. 创建客户端id并单击next。
  5. 单击save。
  6. 在新客户端上。点击上面的标签"客户范围"。
  7. 点击第一个蓝色项目。
  8. 点击上面的标签'scope'并关闭允许的全范围。
  9. 单击分配角色,添加一个项目。

这就是我想在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。

相关内容

  • 没有找到相关文章

最新更新