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