Я использую 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-контейнере.