JBoss EAP 6.2:war-file 的交换 auth-method

Posted

技术标签:

【中文标题】JBoss EAP 6.2:war-file 的交换 auth-method【英文标题】:JBoss EAP 6.2: Exchange auth-method of war-file 【发布时间】:2019-12-10 17:57:41 【问题描述】:

我有一个应用程序(打包为 war),用于在 JBoss EAP 6.2 上运行的两个客户。其中一个使用 Basic JBoss Authentication,另一个使用 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>

我想防止构建两个不同的战争文件(因为 web.xml 在战争文件中)所以我想知道如何在 JBoss 配置中而不是在 web.xml 中配置这些行。

【问题讨论】:

【参考方案1】:

您可以如下定义您的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>

【讨论】:

以上是关于JBoss EAP 6.2:war-file 的交换 auth-method的主要内容,如果未能解决你的问题,请参考以下文章

在 JBoss EAP 6.2 中无法通过 SSL 连接到 SOAP 服务

JBoss EAP 6.2 CDI beans.xml

如何在 JBoss EAP 6.2 中使用 ManagementRealm 保护 Web 应用程序?

如何更新jboss EAP -6.2中的JSP / JS而无需重新启动或重新部署构建

Jboss EAP 6.2 log4j.properties 不记录输出但创建日志文件

javax.jms.TransactionInProgressException: 无法在 JBoss EAP 6.2 和 Active MQ 5.10.0 上的 XASession 中回滚()