tia*_*ang 5 keycloak keycloak-admin-cli
目标:
我们的目标是更新提供 json 文件的整个领域。
问题:
当前的问题是我们似乎无法完全更新领域以包含客户端更改。
采取的操作:
选项 1:根据Keycloak 管理 CLI 文档,可以使用以下命令从 JSON 文件更新 Keycloak 领域:
kcadm.sh update realms/demorealm -f demorealm.json
但是,当更新clientsJSON 文件部分中的属性(即客户端的描述)时,更改不会反映在 Keycloak 领域中。
我们也尝试着看一下kcadm.sh help update。我们尝试利用合并标志(将新值与服务器上的现有配置合并。除非--file指定,否则合并将自动启用)。我们确实指定了一个文件,因此尝试使用该标志来启用它 - 但没有成功。客户并没有像预期的那样发生变化。
选项 2:我们尝试了Keycloak 文档中的部分导入命令
$ kcadm.sh create partialImport -r demorealm -s ifResourceExists=OVERWRITE-o -f demorealm.json
设置为ifResourceExists后OVERWRITE,它可以准确地更改客户端。但是,它会更改其他领域配置,例如分配的用户角色。例如:通过 Keycloak UI 手动创建新用户并为用户设置角色后,运行设置了标志的命令后角色将丢失OVERWRITE。设置ifResourceExists为SKIP不会正确更新客户端的值,因为它被完全跳过。
问题:
是否可以使用不同的命令或不同的标志,使用单个 Keycloak 管理命令来更新整个 Keycloak 领域?上面列出的选项 1 或选项 2 对我们都不起作用。我们希望避免update client在更新领域时进行单独的调用。
注意:
我们已正确验证并确认在领域级别所做的更改已反映在 Keycloak 中。
经过进一步研究,我们决定采用的方法是更新领域级别设置:
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}
| 归档时间: |
|
| 查看次数: |
6883 次 |
| 最近记录: |