Keycloak/Undertow/JBoss-CLI - 从环境变量中设置“web-context”

Posted

技术标签:

【中文标题】Keycloak/Undertow/JBoss-CLI - 从环境变量中设置“web-context”【英文标题】:Keycloak/Undertow/JBoss-CLI - Set "web-context" from environment variable 【发布时间】:2018-04-04 04:38:54 【问题描述】:

我对 Wildfly/Undertow 和 JBoss-CLI 设置 Keycloak 的 Web 上下文有疑问。

环境变量本身似乎没有被解析,但其他环境变量似乎被解析了。

我创建了以下 CLI 脚本:

/subsystem=keycloak-server/:write-attribute(name=web-context,value=$env.KEYCLOAK_WEB_CONTEXT:auth)

由 docker build 执行,standalone.xml 中的结果看起来也不错:)

当启动 Keycloak-Service 时,它​​不会解析变量,它只会使用变量本身:

14:30:30,556 INFO  [org.wildfly.extension.undertow] (ServerService
Thread Pool -- 60) WFLYUT0021: Registered web context:
'/$env.KEYCLOAK_WEB_CONTEXT:auth' for server 'default-server'

在将 jboss-cli.sh 连接到容器并请求我得到的变量后:

[standalone@localhost:9990 subsystem=keycloak-server] ls -l
ATTRIBUTE VALUE TYPE
web-context $env.KEYCLOAK_WEB_CONTEXT:auth STRING

使用已解析的表达式:

[standalone@localhost:9990 subsystem=keycloak-server] ls -l --resolve-expressions
ATTRIBUTE VALUE TYPE
web-context helloworld/auth  STRING

到目前为止,一切看起来都很好。任何想法为什么 Undertow 以变量而不是已解析变量开头?这是一个潜在的错误吗?

最好的问候,感谢您的帮助!

【问题讨论】:

【参考方案1】:

我知道这已经有两年了,但我最近试图解决这个问题,我想通了,所以我想如果有人遇到这个问题,我会跟进。

不要在表达式中使用 $env.VAR 模式,而是在脚本顶部使用它们作为变量赋值。借鉴父示例:

set CONTEXT=$env.KEYCLOAK_WEB_CONTEXT
/subsystem=keycloak-server/:write-attribute(name=web-context,value=$CONTEXT)

环境变量作为 $CONTEXT 的值被拉入,即使它在 write-attribute 行中使用时对我没有用。

【讨论】:

我刚刚用它创建了一个 cli,但是在启动服务器时它失败并出现以下错误:No connection to the controller. 看起来应该首先启动服务器,但是如果服务器正在运行,我会得到一个不同的错误Can't reset to root in the middle of the path @74 ...知道吗?你如何以及何时运行你的脚本......你能分享一下吗?

以上是关于Keycloak/Undertow/JBoss-CLI - 从环境变量中设置“web-context”的主要内容,如果未能解决你的问题,请参考以下文章