我为在 JBoss EAP 6.2 上运行的两个客户提供了一个应用程序(打包为 war)。其中之一使用基本 JBoss 身份验证,另一个使用 Keycloak 身份验证提供程序。两个 war 文件完全相同,只有一个区别:WEB-INF/web.xml 包含<login-config> <auth-method>BASIC</auth-method> <realm-name>ApplicationRealm</realm-name></login-config>分别<login-config> <auth-method>keycloak</auth-method> <realm-name>application</realm-name></login-config>我想防止构建两个不同的 war 文件(因为 web.xml 在 war 文件中)所以我想知道如何在 JBoss 配置中而不是在 web.xml 中配置这些行。
1 回答
萧十郎
TA贡献1815条经验 获得超12个赞
您可以定义login-config如下:
<login-config>
<auth-method>${authentication.method}</auth-method>
<realm-name>${authentication.realm}</realm-name>
</login-config>
然后在应用程序服务器启动时将这些参数作为系统属性传递:
-Dauthentication.method=BASIC -Dauthentication.realm=ApplicationRealm
但您应该记住,默认情况下 WildFly/JBoss 不会替换部署描述符中的变量。您应该在子系统下的服务器配置中明确启用此选项ee。在WildFly 13.0.0.Final中是这样的:
<subsystem xmlns="urn:jboss:domain:ee:4.0">
<spec-descriptor-property-replacement>true</spec-descriptor-property-replacement>
<!-- remaining of the configurations -->
</subsystem>
添加回答
举报
0/150
提交
取消