如何在密钥斗篷中导入多个领域?

时间:2020-04-13 09:27:40

标签: keycloak

我有两个不同的领域,我必须通过两个领域的JSON导入不同的配置(即,同时导入两个领域)。

我为上述内容创建了Docker compose。

这是代码。

version: "3"
services:
  keycloak:
    image: jboss/keycloak
    ports:
      - "8080:8080"
    volumes:
      - "/Users/msn/Downloads/:/Users/msn/Downloads/"
    environment:
      - "KEYCLOAK_USER=admin"
      - "KEYCLOAK_PASSWORD=admin"
      - "KEYCLOAK_IMPORT=/Users/msn/Downloads/realm-export.json,/Users/msn/Downloads/realm-expor.json"

但是它仅导入第一个JSON而不导入第二个JSON,请提出导入两个领域的解决方案。

3 个答案:

答案 0 :(得分:2)

将两个领域都放入一个.json文件,其中内容是数组。因此:

[
{...realm1...},
{...realm2...}
]

编辑: 也许您需要调整一些参数。我只使用Dockerfile,所以这里是内容。希望对您有帮助。

FROM jboss/keycloak:9.0.2
COPY "src/main/jib/opt/jboss/keycloak/imports/realm.json" "/opt/jboss/keycloak/imports/realm.json"
CMD ["-Dkeycloak.migration.action=import", "-Dkeycloak.migration.provider=singleFile", "-Dkeycloak.migration.file=/opt/jboss/keycloak/imports/realm.json", "-Dkeycloak.migration.strategy=IGNORE_EXISTING"]

答案 1 :(得分:1)

正在开发 Keycloak 12.0.4(在单独的文件中导入多个领域)

这是来自 Dockerfile,但您可以轻松地在 docker-compose 中使用相同的配置。

Dockerfile

首先必须将领域文件复制到容器中

COPY keycloak-files/realm-config/* /opt/jboss/keycloak/realm-config/

现在我可以配置 JAVA_OPTS 环境变量,包括:

ENV JAVA_OPTS -server \
 -Xms1303m \
 -Xmx1303m \
 -XX:MetaspaceSize=96M \
 -XX:MaxMetaspaceSize=256m \
 -Djboss.modules.system.pkgs=org.jboss.byteman \
 -Djava.awt.headless=true \
 -Djava.net.preferIPv4Stack=true \
 -Dkeycloak.migration.action=import \
 -Dkeycloak.migration.provider=dir \
 -Dkeycloak.migration.dir=/opt/jboss/keycloak/realm-config \
 -Dkeycloak.migration.strategy=OVERWRITE_EXISTING 

重要的行以 keycloak.migration. 为前缀 - 此处我们将迁移目录(文件将从其中导入的位置)设置为与我们之前复制文件的位置相同。

Docker-compose

version: '3.8'
services:
  keycloak:
    image: jboss/keycloak:12.0.4
    command:
      [
        '-b',
        '0.0.0.0',
        '-Dkeycloak.migration.action=import',
        '-Dkeycloak.migration.provider=dir',
        '-Dkeycloak.migration.dir=/opt/jboss/keycloak/realm-config',
        '-Dkeycloak.migration.strategy=OVERWRITE_EXISTING',
      ]
    volumes:
      - ./keycloak-files/realm-config:/opt/jboss/keycloak/realm-config

...

基本上是一样的。

你可以复制realm-config中的任何json文件,并且应该导入。

可以使用 IGNORE_EXISTING 迁移策略来避免覆盖。

答案 2 :(得分:0)

version: "3"
services:
  keycloak:
    image: jboss/keycloak
    ports:
      - "8080:8080"
    volumes:
      - "/Users/msn/Downloads/:/Users/msn/Downloads/"
    environment:
      - "KEYCLOAK_USER=admin"
      - "KEYCLOAK_PASSWORD=admin"
      #- "KEYCLOAK_IMPORT=/Users/msn/Downloads/realm-export.json,/Users/msn/Downloads/realm-expor.json"
    command:
      - "-b 0.0.0.0"
      - "-Dkeycloak.migration.action=import"
      - "-Dkeycloak.migration.provider=singleFile"
      - "-Dkeycloak.migration.file=/Users/msn/Downloads/realm-export.json"
      - "-Dkeycloak.migration.strategy=IGNORE_EXISTING"

请注意:所有领域都必须位于同一文件“ realm-export.json”中。