首页 > 解决方案 > Keycloak 和 JBoss:编辑配置文件 keycloak.json 的位置

问题描述

我正在使用 JBoss EAP 6.2、JavaEE 6.0 和 keycloak-eap6-adapter-dist 6.0.1 对 Keycloak 进行身份验证。

keycloak.json 目前打包在部署的战争档案中(在 WEB-INF 下),因此每个客户都不能互换。

您知道如何将 keycloak.json 的路径更改为外部路径,以使其在每个安装/阶段(例如使用 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 中使用环境变量指定路径。

标签: jakarta-eejbosskeycloak

解决方案


一种选择是使用keycloak.config.resolver上下文参数动态解析 keycloak 配置您可以在 keycloak文档和示例实现web.xml 中找到有关此配置的更多信息here


推荐阅读