Keycloak
1 前言
一个问题,一篇文章,一出故事。
今天接到一个新的任务,需要将一个Realm的配置导出然后导入到一个新的Realm中,于是整理操作步骤。
2 最佳实践
2.1 导出的步骤
2.1.1 停止 Keycloak 服务(导出/导入必须停服务)
systemctl stop keycloak
2.1.2 创建备份目录
mkdir -p /data/backup/
2.1.3 导出旧Realm不含用户数据)
kc.sh export --realm cmdschoolGroup --dir /data/backup/ --users skip
2.2 导入的步骤
2.2.1 备份原始导出文件,防止改错
cp /data/backup/cmdschoolGroup-realm.json /data/backup/cmdschoolGroup-realm.json.default
2.2.2 一键清洗 JSON
jq 'del(.. | .id?) | del(.clients[].authenticationFlowBindingOverrides) | .realm="cmdschoolConnect"' /data/backup/cmdschoolGroup-realm.json > /data/backup/cmdschoolConnect-realm.json
需要注意的是,以上完成以下操作
– 删除所有ID
– 删掉认证流绑定
– 将realm名称改为cmdschoolConnect
2.2.3 验证JSON格式是否正常(无报错即合法)
jq . /data/backup/cmdschoolConnect-realm.json
然后,使用如下命令检查清洗结果(必须全部无输出)
grep '"id"' /data/backup/cmdschoolConnect-realm.json grep "authenticationFlowBindingOverrides" /data/backup/cmdschoolConnect-realm.json grep '"realm"' /data/backup/cmdschoolConnect-realm.json
2.2.4 导入新Realm
kc.sh import --file /data/backup/cmdschoolConnect-realm.json
2.2.5 启动Keycloak
systemctl start keycloak
没有评论