4.2. 使用 Elytron 客户端配置客户端身份验证

连接 JBoss EAP 的客户端(如 EJB)可以使用 Elytron 客户端进行身份验证。Elytron 客户端是一种客户端框架,使远程客户端能够使用 Elytron 进行身份验证。Elytron Client 有以下组件:

身份验证配置
身份验证配置包含身份验证信息,如用户名、密码、允许 SASL 机制,以及在摘要身份验证期间要使用的安全域。身份验证配置中指定的连接信息会覆盖初始上下文的 PROVIDER_URL 中指定的任何值。
MatchRule
此规则用于决定要使用的身份验证配置。
身份验证上下文
用于建立连接的一组规则和身份验证配置。

建立连接时,客户端使用身份验证上下文。此身份验证上下文包含用于每个出站连接的身份验证配置的规则。例如,您可以在连接 server 2 时具有在连接 server1 时使用一种身份验证配置的规则,以及另一个身份验证配置。身份验证上下文包含一组身份验证配置和一组规则,用于定义在建立连接时如何选择它们。身份验证上下文也可以引用 ssl-context,并可与规则匹配。

在建立连接时创建使用安全信息的客户端:

  • 创建一个或多个身份验证配置。
  • 通过创建规则和身份验证配置对创建身份验证上下文。
  • 为建立连接创建一个可运行。
  • 使用您的身份验证上下文运行您的可运行。

当您建立连接时,Elytron 客户端将使用身份验证上下文提供的一组规则与身份验证期间要使用的正确身份验证配置匹配。

您可以在建立客户端连接时使用以下方法之一:

重要

当使用 Elytron 客户端进行 EJB 调用时,任何硬编码的程序身份验证信息(如在 javax .naming.InitialContext 中设置 context. SECURITY_PRINCIPAL )将覆盖 Elytron 客户端配置。

4.2.1. 配置文件方法

配置文件方法包括使用您的身份验证配置、身份验证上下文和匹配规则创建 XML 文件。

示例: custom-config.xml

<configuration>
    <authentication-client xmlns="urn:elytron:client:1.2">
        <authentication-rules>
            <rule use-configuration="monitor">
                <match-host name="127.0.0.1" />
            </rule>
            <rule use-configuration="administrator">
                <match-host name="localhost" />
            </rule>
        </authentication-rules>
        <authentication-configurations>
            <configuration name="monitor">
                <sasl-mechanism-selector selector="DIGEST-MD5" />
                <providers>
                  <use-service-loader />
                </providers>
                <set-user-name name="monitor" />
                <credentials>
                    <clear-password password="password1!" />
                </credentials>
                <set-mechanism-realm name="ManagementRealm" />
             </configuration>

             <configuration name="administrator">
                <sasl-mechanism-selector selector="DIGEST-MD5" />
                <providers>
                  <use-service-loader />
                </providers>
                <set-user-name name="administrator" />
                <credentials>
                    <clear-password password="password1!" />
                </credentials>
                <set-mechanism-realm name="ManagementRealm" />
             </configuration>
        </authentication-configurations>
    </authentication-client>
</configuration>

然后,您可以通过在运行客户端时设置系统属性,在客户端的代码中引用该文件。

$ java -Dwildfly.config.url=/path/to/custom-config.xml ...
重要

如果您使用 编程方法,它将覆盖任何提供的配置文件,即使设置了 wildfly.config.url 系统属性。

在创建规则时,您可以查找各种参数(如 主机名端口 协议或 user-name)的 匹配项。Javadocs 中提供了 MatchRule 的完整选项列表。规则按照配置的顺序进行评估。

如果规则中没有包含匹配设置,则整个规则匹配并选择身份验证配置。如果规则中包含多个匹配设置,则所有匹配设置都必须匹配才能选择身份验证配置。

表 4.1. 通用规则

属性描述

match-local-security-domain

取单个 name 属性来 指定要匹配的本地安全域。

match-host

取单个 name 属性来 指定要匹配的主机名。例如:主机 127.0.0.1 将与 http://127.0.0.1:9990/my/path 上的匹配。

match-no-user

匹配没有用户的 URI。

match-path

取单个 name 属性来指定要匹配的路径。例如:路径 /my/path/ 匹配 http://127.0.0.1:9990/my/path

match-port

取单个 name 属性来 指定要匹配的端口。例如:端口 9990 将与 http://127.0.0.1:9990/my/path 上的匹配。

match-protocol

取单个 name 属性来 指定要匹配的协议。例如:协议 httphttp://127.0.0.1:9990/my/path 上匹配。

match-urn

取单个 name 属性来 指定要匹配的 URN。

match-user

取单个 name 属性来 指定要匹配的 用户

wildfly-config.xml 示例文件可以在 wildfly-config.xml示例 中找到。有关如何配置 wildfly-config.xml 文件的更多信息,请参阅 JBoss EAP 开发指南 中的使用 wildfly-config.xml 文件进行客户端配置