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 中直接使用环境变量指定路径。

一个选项是在 web.xml 中使用 keycloak.config.resolver context-param 动态解析 keycloak 配置 您可以在 keycloak document and sample implementation here

中找到有关此配置的更多信息