如何使用嵌入式密钥斗篷进行完整导出(包括用户)
Posted
技术标签:
【中文标题】如何使用嵌入式密钥斗篷进行完整导出(包括用户)【英文标题】:How to do a full export (including users) with embedded keycloak 【发布时间】:2021-07-18 16:38:06 【问题描述】:我有一个使用嵌入式 keycloak 的 Springboot 应用程序。
我正在寻找一种从中加载 keycloak 服务器、更改配置、添加用户然后导出这个新版本的 keycloak 的方法。
This question 得到了有关如何进行部分导出的答案,但我在 Keycloak Admin REST API 的文档中找不到有关如何进行完全导出的任何内容。
使用独立的 keycloak 服务器,我可以简单地使用 CLI 并键入
-Dkeycloak.migration.action=export -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=/tmp/keycloak-dump.json
但这是嵌入式版本。
这很可能是微不足道的,因为我知道新创建的用户必须存储在某个地方。
我添加了一个用户,但重新启动应用程序并没有将其删除,因此 keycloak 以某种方式将其持久化。但是我用于 keycloak 服务器和领域设置的 json 文件没有改变。
因此,在没有独立服务器的情况下无法访问 CLI,也没有用于完整导出的 REST 端点,我如何加载服务器、进行一些更改并通过导出生成新的 json,我可以简单地将其放入我的 Spring 应用程序代替?
【问题讨论】:
【参考方案1】:您可以使用以下命令进行完整导出(如果 Springboot 与 Docker 容器一起使用):
[podman | docker] exec -it <pod_name> opt/jboss/keycloak/bin/standalone.sh
-Djboss.socket.binding.port-offset=<interger_value> Docker recommend an offset of 100 at least
-Dkeycloak.migration.action=[export | import]
-Dkeycloak.migration.provider=[singleFile | dir]
-Dkeycloak.migration.dir=<DIR TO EXPORT TO> Use only iff .migration.provider=dir
-Dkeycloak.migration.realmName=<REALM_NAME_TO_EXPORT>
-Dkeycloak.migration.usersExportStrategy=[DIFFERENT_FILES | SKIP | REALM_FILE | SAME_FILE]
-Dkeycloak.migration.usersPerFile=<integer_value> Use only iff .usersExportStrategy=DIFFERENT_FILES
-Dkeycloak.migration.file=<FILE TO EXPORT TO>
我正在创建一个带有文档的开源 keycloak 示例;您可以在我的company's GitHub 中查看有关导入/导出的完整指南。
【讨论】:
以上是关于如何使用嵌入式密钥斗篷进行完整导出(包括用户)的主要内容,如果未能解决你的问题,请参考以下文章