Keycloak Keyclope Admin CLI-使用JSON文件更新域

Keycloak Keyclope Admin CLI-使用JSON文件更新域,keycloak,keycloak-admin-cli,Keycloak,Keycloak Admin Cli,目标: 我们的目标是更新提供了json文件的整个领域 问题: 目前的问题是,我们似乎无法完全更新领域以包括客户端更改 采取的行动: 备选案文1: 基于,可以使用以下命令从JSON文件更新KeyClope领域: kcadm.sh更新领域/demorealm-f demorealm.json 但是,当更新JSON文件的客户机部分中的属性(即客户机的描述)时,该更改不会反映在KeyClope领域中 我们还尝试查看kcadm.sh帮助更新。我们尝试使用合并标志(将新值与服务器上的现有配置合并。除非指定了

目标:
我们的目标是更新提供了json文件的整个领域

问题:
目前的问题是,我们似乎无法完全更新领域以包括客户端更改

采取的行动:
备选案文1: 基于,可以使用以下命令从JSON文件更新KeyClope领域:

kcadm.sh更新领域/demorealm-f demorealm.json

但是,当更新JSON文件的
客户机
部分中的属性(即客户机的描述)时,该更改不会反映在KeyClope领域中

我们还尝试查看
kcadm.sh帮助更新
。我们尝试使用合并标志(将新值与服务器上的现有配置合并。除非指定了
--file
,否则将自动启用合并)。我们确实指定了一个文件,因此尝试使用该标志启用它,但没有成功。客户没有如预期的那样改变

备选案文2: 我们已尝试在中找到的部分导入命令

$kcadm.sh创建partialImport-r demorealm-s ifResourceExists=OVERWRITE-o-f demorealm.json

ifResourceExists
设置为
OVERWRITE
时,它可以准确地更改客户端。但是,它会改变其他领域配置,例如分配的用户角色。例如:在通过KeyClope UI手动创建新用户并为该用户设置角色后,在运行设置了
覆盖
标志的命令后,这些角色将丢失。将
ifResourceExists
设置为
SKIP
不会正确更新客户端的值,因为它会被完全跳过

问题: 是否可以使用不同的命令或不同的标志,使用单个keydove admin命令更新keydove领域的整体?上述选项1或选项2均不适用于我们。我们希望在更新领域时避免单独调用
updateclient

备注:

我们已正确验证并确认在领域级别所做的更改反映在KeyClope中。

经过进一步研究,我们决定采用以下方法更新领域级别设置:

kcadm.sh更新领域/demorealm-f demorealm.json

然后,我们迭代客户端,并使用以下内容添加/更新它们:

kcadm.sh update clients/{clients uuid}-f clientfile.json

由于前面的命令不更新客户端角色,因此我们必须使用以下命令添加角色:

kcadm.sh update clients/{clients uuid}/roles/{role name}-f rolefile.json

最后,要添加复合角色,我们使用以下命令:


kcadm.sh add roles--cclientid{clientID}--rid{id of client role}--rolename{name of role to add}

另外,请注意,使用OVERWRITE会删除ovewite中的所有用户角色,即使您的文件包含相同的id。