首页 > 解决方案 > 在 WildFly 的 keycloak 子系统中参数化安全部署名称

问题描述

我正在寻找一种方法来参数化 KeyCloak 子系统(WildFly 适配器属性)以允许安全部署名称属性的外部输入。

除了 WAR 名称之外,我正在将应用程序部署到具有完全相同配置的多个环境中,因此我希望将所有内容都配置为输入参数,无论是来自standalone.xml 的系统属性还是环境变量。但是,我无法使用上述子系统实现结果。我已经尝试过设置系统属性、环境变量。以下是子系统的当前配置示例,其中

    some_war_name.war 

被硬编码

        <secure-deployment name="some_war_name.war">
            <realm>${keycloak.realm}</realm>
            <resource>${keycloak.client.id}</resource>
            <auth-server-url>${keycloak.server.url}</auth-server-url>
            <ssl-required>external</ssl-required>
            <credential name="secret">${keycloak.credential.secret}</credential>
        </secure-

不幸的是,我无法以任何方式参数化安全部署名称。它甚至可以实现吗?

标签: jbosswildflykeycloak

解决方案


参数化安全部署名称不适用于子系统。

您可以通过在 WAR 目录中 创建keycloak.json适配器配置文件来解决此问题,如文档中所述: https ://www.keycloak.org/docs/latest/securing_apps/#required-per-war-configurationWEB-INF

例如:

{
  "realm": "${env.keycloak.realm}",
  "auth-server-url": "${env.keycloak.auth-server-url}",
  "ssl-required": "${env.keycloak.ssl-required}",
  "resource": "${env.keycloak.resource}",
}

推荐阅读