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。