Wildfly Swarm:Keycloak 后端的环境特定配置
Wildfly Swarm: Environment specific configuration of Keycloak Backend
Given是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 应该可以在项目中配置 keycloak-stages.yml 如:
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.
如果你看一下上面class的source,看起来唯一的解决办法就是提供一个KeycloakConfigResolver。 Wildfly-Swarm 是否提供读取项目的解析器-stages.yml?
如何配置特定于环境的 auth-server-urls?
解决方法是使用不同的 keycloak.json-Files,但我宁愿使用项目-stages.yml.
我有一个小型 WildFly Swarm 项目,它通过 project-defaults.yml
专门配置 Keycloak:https://github.com/Ladicek/swarm-test-suite/tree/master/wildfly/keycloak
从您 post 的片段中,唯一看起来不对的地方是:
swarm:
keycloak:
secure-deployments:
my-deployment:
my-deployment
名称需要是部署的实际名称,与您在
中的名称相同
swarm:
deployment:
my.app.war:
如果您已经拥有它,那么恐怕我不得不开始猜测:您使用的是哪个 WildFly Swarm 版本?哪个 Keycloak 版本?
你也可以在你的 yml 中指定 swarm.keycloak.json.path 属性:
swarm:
keycloak:
json:
path: path-to-keycloak-config-files-folder/keycloak-prod.json
您可以在应用程序启动期间使用 -Dswarm.project.stage
选项动态 select yml 文件配置。
更多参考资料:
- 作弊sheet:http://design.jboss.org/redhatdeveloper/marketing/wildfly_swarm_cheatsheet/cheat_sheet/images/wildfly_swarm_cheat_sheet_r1v1.pdf
- 使用多个 swarm 项目阶段(配置文件)示例:https://github.com/thorntail/thorntail/tree/master/testsuite/testsuite-project-stages/src/test/resources
- https://docs.thorntail.io/2018.1.0/#_keycloak
Given是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 应该可以在项目中配置 keycloak-stages.yml 如:
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.
如果你看一下上面class的source,看起来唯一的解决办法就是提供一个KeycloakConfigResolver。 Wildfly-Swarm 是否提供读取项目的解析器-stages.yml?
如何配置特定于环境的 auth-server-urls?
解决方法是使用不同的 keycloak.json-Files,但我宁愿使用项目-stages.yml.
我有一个小型 WildFly Swarm 项目,它通过 project-defaults.yml
专门配置 Keycloak:https://github.com/Ladicek/swarm-test-suite/tree/master/wildfly/keycloak
从您 post 的片段中,唯一看起来不对的地方是:
swarm:
keycloak:
secure-deployments:
my-deployment:
my-deployment
名称需要是部署的实际名称,与您在
swarm:
deployment:
my.app.war:
如果您已经拥有它,那么恐怕我不得不开始猜测:您使用的是哪个 WildFly Swarm 版本?哪个 Keycloak 版本?
你也可以在你的 yml 中指定 swarm.keycloak.json.path 属性:
swarm:
keycloak:
json:
path: path-to-keycloak-config-files-folder/keycloak-prod.json
您可以在应用程序启动期间使用 -Dswarm.project.stage
选项动态 select yml 文件配置。
更多参考资料:
- 作弊sheet:http://design.jboss.org/redhatdeveloper/marketing/wildfly_swarm_cheatsheet/cheat_sheet/images/wildfly_swarm_cheat_sheet_r1v1.pdf
- 使用多个 swarm 项目阶段(配置文件)示例:https://github.com/thorntail/thorntail/tree/master/testsuite/testsuite-project-stages/src/test/resources
- https://docs.thorntail.io/2018.1.0/#_keycloak