首页 > 解决方案 > Keycloak Docker 导入用户

问题描述

抽象的

我需要在测试期间自动部署一个预配置的 keycloak 实例。
将用户导入 Keycloak 似乎是一个挑战

方法

我用预定义的 Realm/Users/Clients 创建了一个 Docker 容器
使用导出/导入功能,我可以轻松地用客户端重建一个 Realm,但不是用户。
需要明确的是,用户显示在 JSON 文件中。所以出口看起来是合法的。

绝望的尝试

我尝试了多种方法,包括但不限于:

  1. ENV KEYCLOAK_IMPORT my-realm.json在泊坞窗文件中=>Realm ✔ Clients ✔ Users ✖

没有创建用户,但在工作流程方面非常完美。它在 docker 构建期间运行。

  1. 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
  1. Strategy: OVERWRITE_EXISTING用户和提供者的 设置为singleFile。一口气拥有一切。
  2. 通过管理控制台手动导入,Realm ✖ Clients ✔ Users ✔

Keycloak 控制台截图

显然不适合自动化,但至少我的 JSON 用户是可导入的。

因此

是否有一些像这样的作弊码环境变量KEYCLOAK_FULL_IMPORT可以在 Dockerfile 中一次性完成所有操作?

标签: dockerkeycloak

解决方案


我承认这是我的 Dockerfile 中的一个愚蠢的错字

简而言之,我从错误的文件中复制。正确的配置看起来像这样

FROM jboss/keycloak:latest

COPY my-realm.json /tmp/my-realm.json

ENV KEYCLOAK_USER admin
ENV KEYCLOAK_PASSWORD admin

ENV DB_VENDOR h2

ENV KEYCLOAK_IMPORT /tmp/my-realm.json

错字实际上不包括用户COPY some-realm.json /tmp/my-realm.jsonsome-realm.json


推荐阅读