【问题标题】:Is there an elegant way to clone a Keycloak realm with all its configurations (clients and roles) for a multitenant application?是否有一种优雅的方法可以为多租户应用程序克隆具有所有配置(客户端和角色)的 Keycloak 领域?
【发布时间】:2023-03-29 12:06:01
【问题描述】:

我正在构建一个多租户应用程序,并且我正在使用 Keycloak 进行身份验证和授权。

对于每个租户,我们的想法是拥有一个专用的 Keycloak 领域。每个租户都将拥有完全相同的角色和客户。

我尝试导出一个现有领域,将其用作模板并将其导入新租户。问题:由于内部 id,我正面临违反数据库约束的问题。

问题:有没有一种优雅的方式来实现这一点,有一个模板来创建一个新领域?

【问题讨论】:

  • 如果您在 kubenetes 中,您可以使用 KC 运算符,否则只需从 .json 模板中删除所有 id
  • 您也可以使用 Keycloak Terraform Provider,但这当然会增加其他地方的复杂性。

标签: keycloak


【解决方案1】:
  • 确保已启用上传脚本功能。对于使用 docker-compose 的部署,只需添加以下内容:

      command: -Dkeycloak.profile.feature.upload_scripts=enabled      
    
  • 导出您的领域(用作模型的领域)

  • 删除所有包含“id:”和“_id:”的行

  • 用新域名搜索和替换模板域名

  • 在 Keycloak UI 管理控制台中,添加新领域,提供文件,仅此而已。

您可以将清理后的导出文件用作模板。

【讨论】: