我正在寻找一种参数化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-
不幸的是,我无法以任何方式参数化安全部署名称。甚至可以实现吗?
答案 0 :(得分:0)
不幸的是,我没有答案,但是在这里使用Wildfly 16.0完全相同的问题(docker镜像)。
提供时:
<subsystem xmlns="urn:jboss:domain:keycloak:1.1">
<secure-deployment name="my.very.special.war.file.war">
<realm>${env.keycloak.realm}</realm>
<auth-server-url>${env.keycloak.auth-server-url}</auth-server-url>
<ssl-required>${env.keycloak.ssl-required}</ssl-required>
<resource>${env.keycloak.resource}</resource>
<credential name="secret">${env.keycloak.credentials.secret}</credential>
<principal-attribute>preferred_username</principal-attribute>
<use-resource-role-mappings>${env.keycloak.use-resource-role-mappings}</use-resource-role-mappings>
</secure-deployment>
</subsystem>
一切正常。但是当做
<subsystem xmlns="urn:jboss:domain:keycloak:1.1">
<secure-deployment name="${env.keycloak.deployment.name}">
<realm>${env.keycloak.realm}</realm>
<auth-server-url>${env.keycloak.auth-server-url}</auth-server-url>
<ssl-required>${env.keycloak.ssl-required}</ssl-required>
<resource>${env.keycloak.resource}</resource>
<credential name="secret">${env.keycloak.credentials.secret}</credential>
<principal-attribute>preferred_username</principal-attribute>
<use-resource-role-mappings>${env.keycloak.use-resource-role-mappings}</use-resource-role-mappings>
</secure-deployment>
</subsystem>
我收到以下警告日志:
[org.keycloak.adapters.undertow.KeycloakServletExtension] (ServerService线程池-54)没有适配器配置。钥匙斗篷 未配置,将拒绝所有请求。
环境变量可用并且其中没有错字 干杯
答案 1 :(得分:0)
对安全部署名称进行参数设置不适用于子系统。
您可以通过在WAR的keycloak.json
目录中创建WEB-INF
适配器配置文件来解决该问题,如文档中所述:
https://www.keycloak.org/docs/latest/securing_apps/#required-per-war-configuration
例如:
{
"realm": "${env.keycloak.realm}",
"auth-server-url": "${env.keycloak.auth-server-url}",
"ssl-required": "${env.keycloak.ssl-required}",
"resource": "${env.keycloak.resource}",
}