第 4 章 应用程序配置


4.1. 配置 Web 应用程序以使用 Elytron 或传统安全性进行身份验证

在配置了 elytron 或 传统 安全 子系统以进行身份验证后,您需要将应用配置为使用它。

  1. 配置应用程序的 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>

  2. 将您的应用配置为使用安全域。

    您可以配置应用程序的 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

    注意

    EJB 的安全域在 EJB 配置中定义,可以是 ejb3 子系统、jboss-ejb3.xml 文件中的 EJB 描述符,还是使用 @SecurityDomain 注释。

    如需更多信息,请参阅《开发 EJB 应用指南》中的 EJB 应用程序安全性

静默 BASIC 身份验证

您可以将 elytron 配置为执行静默的 BASIC 身份验证。启用静默身份验证后,不会提示用户登录以访问该 Web 应用。改为使用另一种身份验证机制。如果用户的请求包含授权标头,则使用 BASIC 身份验证机制。

要启用静默 BASIC 身份验证,请将 auth-method 属性的值设置为以下内容:

<auth-method>BASIC?silent=true</auth-method>

在 Parallel 中使用 Elytron 和传统安全子系统

您可以在 elytron 和旧 安全 子系统中定义身份验证,并并行使用它们。如果您在 undertow 子系统中使用 jboss -web.xml 和 default-security-domain,则 JBoss EAP 将首先尝试匹配 elytron 子系统中配置的安全域。如果未找到匹配项,则 JBoss EAP 将尝试将安全域与传统 安全性 子系统中配置的安全域匹配。如果 elytron 和传统 安全 子系统各自具有名称相同的安全域,则使用 elytron 安全域。

注意

如果您使用一个安全域定义了 Webservlet,并且您从使用 EJB 特定安全域的另一个 EAR 模块调用 EJB,则可能会出现以下情况之一:

  • 如果 WAR 和 EJB 映射到不同的 Elytron 安全域,您需要配置流或受信任的安全域,以便它们的身份从一个部署域传播到下一个部署域。除非执行此操作,否则在调用到达 EJB 后,身份将变为匿名身份。有关如何为身份验证配置安全身份的更多信息,请参阅配置可信安全域流
  • 如果 WAR 和 EJB 引用了不同的安全域名,但它们映射到相同的 Elytron 安全域,则它们的身份将传播,而无需任何其他步骤。

迁移时,最好迁移整个应用程序。不建议并行迁移 EJB 和 WAR,不建议同时使用 elytron 和旧版 安全 子系统。有关如何将应用迁移到使用 Elytron 的更多信息,请参阅 JBoss EAP 迁移指南中的 Migrating to Elytron

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.