Keycloak 和 JBoss:编辑配置文件的位置 keycloak.json
Keycloak and JBoss: Edit location of config file keycloak.json
我正在使用 JBoss EAP 6.2、JavaEE 6.0 和 keycloak-eap6-adapter-dist 6.0.1 对 Keycloak 进行身份验证。
keycloak.json 目前打包在已部署的 war 存档中(在 WEB-INF 下),因此每个客户不能互换。
您知道如何将 keycloak.json 的路径更改为外部路径以使其可被每个 installation/stage 互换(例如使用 Docker)吗?
解决方案:感谢 ravthiru,我们实现了一个自定义配置解析器,如下所示:
public class CustomKeycloakResolver implements KeycloakConfigResolver {
private KeycloakDeployment deployment;
@Override
public KeycloakDeployment resolve(OIDCHttpFacade.Request request) {
if (deployment != null) {
return deployment;
}
InputStream is;
try {
is = new FileInputStream(System.getenv("KEYCLOAK_CONFIG_FILE"));
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
deployment = KeycloakDeploymentBuilder.build(is);
return deployment;
}
}
并像这样在 WEB-INF/web.xml
中注册它:
<context-param>
<param-name>keycloak.config.resolver</param-name>
<param-value>my.package.CustomKeycloakResolver</param-value>
</context-param>
现在您可以在 Docker-Container 中直接使用环境变量指定路径。
我正在使用 JBoss EAP 6.2、JavaEE 6.0 和 keycloak-eap6-adapter-dist 6.0.1 对 Keycloak 进行身份验证。
keycloak.json 目前打包在已部署的 war 存档中(在 WEB-INF 下),因此每个客户不能互换。
您知道如何将 keycloak.json 的路径更改为外部路径以使其可被每个 installation/stage 互换(例如使用 Docker)吗?
解决方案:感谢 ravthiru,我们实现了一个自定义配置解析器,如下所示:
public class CustomKeycloakResolver implements KeycloakConfigResolver {
private KeycloakDeployment deployment;
@Override
public KeycloakDeployment resolve(OIDCHttpFacade.Request request) {
if (deployment != null) {
return deployment;
}
InputStream is;
try {
is = new FileInputStream(System.getenv("KEYCLOAK_CONFIG_FILE"));
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
deployment = KeycloakDeploymentBuilder.build(is);
return deployment;
}
}
并像这样在 WEB-INF/web.xml
中注册它:
<context-param>
<param-name>keycloak.config.resolver</param-name>
<param-value>my.package.CustomKeycloakResolver</param-value>
</context-param>
现在您可以在 Docker-Container 中直接使用环境变量指定路径。