第 4 章 应用程序配置
4.1. 配置 Web 应用程序以使用 Elytron 或传统安全性进行身份验证 复制链接链接已复制到粘贴板!
在配置了 elytron 或 传统 安全 子系统以进行身份验证后,您需要将应用配置为使用它。
配置应用程序的
web.xml。您的
web.xml需要配置为使用适当的身份验证方法。使用elytron子系统时,这在您创建的http-authentication-factory中定义。在使用旧安全子系统时,这取决于您的登录模块以及您要配置的身份验证类型。使用
BASIC身份验证的web.xml示例<web-app> <security-constraint> <web-resource-collection> <web-resource-name>secure</web-resource-name> <url-pattern>/secure/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>Admin</role-name> </auth-constraint> </security-constraint> <security-role> <description>The role that is required to log in to /secure/*</description> <role-name>Admin</role-name> </security-role> <login-config> <auth-method>BASIC</auth-method> <realm-name>exampleApplicationDomain</realm-name> </login-config> </web-app>将您的应用配置为使用安全域。
您可以配置应用程序的
jboss-web.xml,以指定您要用于身份验证的安全域。使用elytron子系统时,这在您创建application-security-domain时定义。在使用传统安全子系统时,这是传统安全域的名称。jboss-web.xml示例<jboss-web> <security-domain>exampleApplicationDomain</security-domain> </jboss-web>使用
jboss-web.xml,您可以仅为单个应用配置安全域。或者,您也可使用undertow子系统为所有应用指定默认安全域:这样,您可以省略使用jboss-web.xml来配置各个应用的安全域。/subsystem=undertow:write-attribute(name=default-security-domain, value="exampleApplicationDomain")重要在
undertow子系统中设置default-security-domain将应用到 所有 应用。如果设置了default-security-domain,并且应用在jboss-web.xml文件中指定了安全域,则jboss-web.xml中的配置将覆盖undertow子系统中的default-security-domain。注意Jakarta Enterprise Beans 的安全域在 Jakarta Enterprise Beans 配置中定义(在
ejb3子系统中)、jboss-ejb3.xml文件中的 Jakarta 企业 Bean 的描述符,或使用@SecurityDomain注释。如需更多信息,请参阅开发 Jakarta 企业 Bean 应用程序指南中的 Jakarta 企业 Beans 应用程序 安全性。
静默 BASIC 身份验证
您可以将 elytron 配置为执行静默的 BASIC 身份验证。启用静默身份验证后,不会提示用户登录以访问该 Web 应用。改为使用另一种身份验证机制。如果用户的请求包含授权标头,则使用 BASIC 身份验证机制。
要启用静默 BASIC 身份验证,请将 auth-method 属性的值设置为以下内容:
<auth-method>BASIC?silent=true</auth-method>
在 Parallel 中使用 Elytron 和传统安全子系统
您可以在 elytron 和旧 安全 子系统中定义身份验证,并并行使用它们。如果您在 undertow 子系统中使用 jboss ,则 JBoss EAP 将首先尝试匹配 -web.xml 和 default-security-domainelytron 子系统中配置的安全域。如果未找到匹配项,则 JBoss EAP 将尝试将安全域与传统 安全性 子系统中配置的安全域匹配。如果 elytron 和传统 安全 子系统各自具有名称相同的安全域,则使用 elytron 安全域。
如果您使用一个安全域定义了 Web servlet,并且您从另一个使用 Jakarta Enterprise Beans 特定安全域的另一个 EAR 模块调用 Jakarta Enterprise Beans,则可能会出现以下情况之一:
- 如果 WAR 和 Jakarta Enterprise Beans 映射到不同的 Elytron 安全域,您需要配置流流或可信安全域,以便其身份从一个部署域传播到下一个部署域。除非这样做,否则一旦呼叫到达 Jakarta Enterprise Beans,其身份将变为匿名身份。有关如何为身份验证配置安全身份的更多信息,请参阅配置可信安全域流。
- 如果 WAR 和 Jakarta Enterprise Beans 引用了不同的安全域名,但是它们映射到相同的 Elytron 安全域,则它们的身份将传播,而无需额外的步骤。
迁移时,最好迁移整个应用程序。不建议单独迁移 Jakarta Enterprise Beans 和 WAR,不建议并行使用 elytron 和旧版 安全 子系统。有关如何将应用迁移到使用 Elytron 的更多信息,请参阅 JBoss EAP 迁移指南中的 Migrating to Elytron。