摘要
我需要一个预配置的Keycloak实例在测试期间被自动部署。
将用户导入到Keycloak似乎是一个挑战。
方法
我创建了一个带有预定义Realm / Users / Clients的Docker容器。
使用导出/导入功能,我可以轻松地重建具有客户端的Realm,但无法重建Users。
明确一点,用户显示在JSON文件中。因此,导出看起来合法。
绝望的尝试
我尝试过多种方法,包括但不限于:
ENV KEYCLOAK_IMPORT my-realm.json
在docker文件中 => Realm ✔ Clients ✔ Users ✖
未创建用户,但在工作流方面完美无缺。它在docker构建期间运行。
- 通过
docker exec ... action=import
导入 => Realm ✔ Clients ✔ Users ✖
docker exec -it <id> /opt/jboss/keycloak/bin/standalone.sh -Djboss.socket.binding.port-offset=100 -Dkeycloak.migration.action=import -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.realmName=myrealm -Dkeycloak.migration.file=/tmp/my-realm.json
- 将用户和提供者的策略设置为
singleFile
,并将其命名为Strategy: OVERWRITE_EXISTING
,以便一次性完成所有操作。 - 通过管理控制台手动导入,Realm ✖ Clients ✔ Users ✔
很明显这不适合自动化,但我 JSON 格式的用户可以被导入。
因此
是否存在某些像 KEYCLOAK_FULL_IMPORT
这样的代码环境变量,可以在 Dockerfile 中一次性完成所有操作?