给定是wildfly上的JavaEE应用程序,它使用keycloak作为身份验证后端,在project-stages.yml中配置:
swarm:
deployment:
my.app.war:
web:
login-config:
auth-method: KEYCLOAK
应用程序将使用Gitlab-CD-Pipeline部署在不同的环境中。因此,必须根据环境配置keycloak细节。
到目前为止,我发现唯一的工作配置是添加一个keycloak.json(在每个环境中都是相同的文件):
{
"realm": "helsinki",
"bearer-only": true,
"auth-server-url": "http://localhost:8180/auth",
"ssl-required": "external",
"resource": "backend"
}
根据Wildfly-Swarm Documentation,应该可以在project-stages.yml中配置keycloak,如:
swarm:
keycloak:
secure-deployments:
my-deployment:
realm: keycloakrealmname
bearer-only: true
ssl-required: external
resource: keycloakresource
auth-server-url: http://localhost:8180/auth
但是当我部署应用程序时,没有读取任何配置:
2018-03-08 06:29:03,540 DEBUG [org.keycloak.adapters.undertow.KeycloakServletExtension] (ServerService Thread Pool -- 12) KeycloakServletException initialization
2018-03-08 06:29:03,540 DEBUG [org.keycloak.adapters.undertow.KeycloakServletExtension] (ServerService Thread Pool -- 12) using /WEB-INF/keycloak.json
2018-03-08 06:29:03,542 WARN [org.keycloak.adapters.undertow.KeycloakServletExtension] (ServerService Thread Pool -- 12) No adapter configuration. Keycloak is unconfigured and will deny all requests.
2018-03-08 06:29:03,545 DEBUG [org.keycloak.adapters.undertow.KeycloakServletExtension] (ServerService Thread Pool -- 12) Keycloak is using a per-deployment configuration.
如果您查看上述类的source,看起来唯一的方法是提供KeycloakConfigResolver。 Wildfly-Swarm是否提供了一个读取project-stages.yml?
的解析器如何配置特定于环境的auth-server-urls?
解决方法是使用不同的keycloak.json-Files,但我宁愿使用project-stages.yml。
答案 0 :(得分:0)
我有一个小型的WildFly Swarm项目,可以通过project-defaults.yml
来完全配置Keycloak:https://github.com/Ladicek/swarm-test-suite/tree/master/wildfly/keycloak
从您发布的片段中,唯一看起来错误的是:
swarm:
keycloak:
secure-deployments:
my-deployment:
my-deployment
名称必须是部署的实际名称,与
swarm:
deployment:
my.app.war:
如果您已经拥有它,那么我担心我必须开始推测:您使用哪个WildFly Swarm版本?哪个Keycloak版本?
答案 1 :(得分:0)
您还可以在yml中指定swarm.keycloak.json.path属性:
swarm:
keycloak:
json:
path: path-to-keycloak-config-files-folder/keycloak-prod.json
并且您可以使用-Dswarm.project.stage
选项在应用程序启动期间动态选择yml文件配置。
进一步的参考: