从KeyCloak导出所有用户

问题描述 投票:7回答:1

我有一个特定的用例,我们想每天向所有用户询问Keycloak以及每个用户的组和角色。为了与其他内部系统和解。

当前,我们正在为此使用UsersResource中提供的Keycloak端点。但是我们看到,每次调用到某个点后,我们的性能都会降低,我们无法再使用此解决方案了。该领域中有超过3万名用户。

我们还看到Keycloak可以导出数据库,但是只能在系统启动时导出(我想是出于迁移目的)。鉴于我们要每天提取所有用户,因此我们无法使用它。

有一些已知的功能或解决方法吗?

java redhat keycloak keycloak-services redhat-sso
1个回答
0
投票

我已经通过docker使用并行启动容器完成了该任务,该容器连接到现有的keycloak数据库。

EXPORT

docker run --rm\
    --name keycloak_exporter\
    -v /tmp:/tmp/keycloak-export:Z\
    -e POSTGRES_DATABASE=keycloak\
    -e POSTGRES_PASSWORD=PASSOWRD_PLEASE\
    -e POSTGRES_USER=keycloak\
    -e DB_VENDOR=POSTGRES\
    -e POSTGRES_PORT_5432_TCP_ADDR=postgresql.local\
    jboss/keycloak:3.4.3.Final\
    -Dkeycloak.migration.action=export\
    -Dkeycloak.migration.provider=dir\
    -Dkeycloak.migration.dir=/tmp/keycloak-export\
    -Dkeycloak.migration.usersExportStrategy=SAME_FILE\
    -Dkeycloak.migration.realmName=therealm

IMPORT

docker run --rm\
    --name keycloak_importer\
    -v /tmp:/tmp/keycloak-import:Z\
    -e POSTGRES_DATABASE=keycloak_dest\
    -e POSTGRES_PASSWORD=PASSOWRD_DEST_PLEASE\
    -e POSTGRES_USER=keycloak\
    -e DB_VENDOR=POSTGRES\
    -e POSTGRES_PORT_5432_TCP_ADDR=postgresql2.local\
    jboss/keycloak:3.4.3.Final\
    -Dkeycloak.migration.action=import\
    -Dkeycloak.migration.provider=dir\
    -Dkeycloak.migration.dir=/tmp/keycloak-import\
    -Dkeycloak.migration.strategy=IGNORE_EXISTING\
    -Dkeycloak.migration.usersExportStrategy=SAME_FILE\
    -Dkeycloak.migration.realmName=therealm

可能的配置选项:https://github.com/keycloak/keycloak-documentation/blob/master/server_admin/topics/export-import.adoc

© www.soinside.com 2019 - 2024. All rights reserved.