目标:
我们的目标是更新提供json文件的整个领域。
问题:
当前的问题是,我们似乎无法完全更新领域以包括客户端更改。
采取的措施:
选项1:根据Key斗篷管理CLI文档,可以使用以下命令从JSON文件更新Key斗篷领域:
kcadm.sh update realms/demorealm -f demorealm.json
但是,当对JSON文件的clients
部分中的属性(即客户端的描述)进行更新时,该更改不会反映在Key斗篷领域中。
我们还试图查看kcadm.sh help update
。我们尝试使用合并标志(将新值与服务器上的现有配置合并。除非指定了--file
,否则会自动启用合并)。我们确实指定了一个文件,因此尝试使用标志启用它,但没有成功。客户端没有按预期更改。
选项2:我们已经尝试了在Key斗篷文档中找到的部分导入命令
$ kcadm.sh create partialImport -r demorealm -s ifResourceExists=OVERWRITE-o -f demorealm.json
将ifResourceExists
设置为OVERWRITE
后,它可以准确地更改客户端。然而,它会更改其他Realm配置,例如分配的用户角色。例如:通过Key斗篷UI手动创建新用户并为用户设置角色后,在运行设置了OVERWRITE
标志的命令后,角色将丢失。将ifResourceExists
设置为SKIP
并不能正确地更新客户端的值,因为它被完全跳过。
问题:是否可以使用不同的命令或不同的标志,用一个Key斗篷管理命令更新整个Key斗篷领域?上面列出的选项1和选项2都不适用于我们。我们希望在更新Realm时避免单独调用update client
。
注意:
我们已经正确地验证并确认在领域级别所做的更改反映在Key斗篷中。
经过进一步的研究,我们决定采用的方法是用更新领域级设置
kcadm.sh update realms/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}