使用 Operator 部署自定义 Keycloak 主题(v15.1.1 和 v16.0.0)

Deploying custom Keycloak theme with Operator (v15.1.1 & v16.0.0)

我有一个大小 >1MB 的主题(这排除了 提供的配置映射解决方案)。

这个主题已经按照Server Development Guide打包 - 它的文件夹结构是

META-INF/keycloak-themes.json
themes/[themeName]/login/login.ftl
themes/[themeName]/login/login-reset-password.ftl    
themes/[themeName]/login/template.ftl
themes/[themeName]/login/template.html
themes/[themeName]/login/theme.properties
themes/[themeName]/login/messages/messages_de.properties
themes/[themeName]/login/messages/messages_en.properties
themes/[themeName]/login/resources/[...]

keycloak-themes.json的内容是

{
    "themes": [{
        "name" : "[themeName]",
        "types": [ "login" ]
    }]
}

其中 [themeName] 是我的主题名称。

Keycloak 是 运行 3 个实例,其资源规范包括:

extensions:
  - [URL-to-jar]

根据每个 pod 的日志部署成功 - 每个日志包含一条消息包含

Deployed "[jar-name].jar" (runtime-name : "[jar-name].jar")

但是,在管理控制台中,我无法 select 来自登录主题扩展的主题。通过 spec-entry

使用预配置的登录主题通过 crd 创建新领域
loginTheme: [themeName]

也不起作用 - 在管理控制台中,登录主题的 selected 条目为空。

我可能遗漏了一些基本的东西,但如果我没记错的话,这似乎应该有效

通常情况下,未发现的拼写错误是错误的根源。

目录结构必须而不是

  • META-INF/keycloak-themes.json
  • 主题/[主题名称]/[主题角色]/theme.properties
  • [...]

而是

  • META-INF/keycloak-themes.json
  • 主题/[主题名称]/[主题角色]/theme.properties
  • [...]

如果结构正确,keycloak-operator 可以成功部署和加载自定义主题作为 jar 扩展。