1.7. SASL 身份验证机制


使用 简单的身份验证和安全层(SASL) 验证机制来定义使用 elytron 子系统验证与 JBoss EAP 服务器的连接的机制,以及用于连接到服务器的客户端。客户端可以是其他 JBoss EAP 实例,也可以是 Elytron 客户端。JBoss EAP 中的 SASL 身份验证机制也显著地用于 Elytron 与 Remoting subsystem 集成

1.7.1. 选择 SASL 身份验证机制

注意

虽然 JBoss EAP 和 Elytron 客户端可处理各种 SASL 身份验证机制,但必须确保支持以下机制。有关 SASL 验证机制的支持级别请查看此列表

您所使用的验证机制取决于您的环境和所需的身份验证方法。以下列表总结了一些支持的 SASL 验证机制的使用:

匿名
未经身份验证的客户端访问。
DIGEST-MD5
使用 HTTP 摘要身份验证作为 SASL 机制。
EXTERNAL
使用在请求上下文中表示的身份验证凭据。例如: IPsec 或 TLS 身份验证。
GS开始的机制
使用 Kerberos 进行身份验证。
JBOSS-LOCAL-USER
通过测试客户端具有与运行 JBoss EAP 服务器的本地用户相同的文件访问来提供身份验证。这对在同一计算机上运行的其他 JBoss EAP 实例有用。
OAUTHBEARER
使用 OAuth 提供的身份验证作为 SASL 机制。
PLAIN
纯文本用户名和密码身份验证。
SCRAM开头的机制
使用指定散列功能的 salt 挑战响应机制 (SCRAM)
-PLUS结尾的机制
表示特定身份验证机制的频道绑定变体。当底层连接使用 SSL/TLS 时,您应该使用这些变体。

有关各个 SASL 身份验证机制的更多信息,请参阅 IANA SASL 机制列表和单个机制 memos

1.7.2. 在服务器范围内配置 SASL 身份验证机制

在服务器端配置 SASL 验证机制是使用 SASL 身份验证工厂完成的。

需要两种配置:

  • 指定身份验证机制的 sasl-authentication-factory
  • 可配置-sasl-server-factory,用于聚合一个或多个 sasl-authentication-factory,并配置机制属性,并选择性地应用过滤器来启用或禁用某些验证机制。

以下示例演示了创建一个新的 configurable-sasl-server-factorysasl-authentication-factory,它使用 DIGEST-MD5 作为应用程序客户端的 SASL 身份验证机制。

/subsystem=elytron/configurable-sasl-server-factory=mySASLServerFactory:add(sasl-server-factory=elytron)

/subsystem=elytron/sasl-authentication-factory=mySASLAuthFactory:add(sasl-server-factory=mySASLServerFactory,security-domain=ApplicationDomain,mechanism-configurations=[{mechanism-name=DIGEST-MD5,mechanism-realm-configurations=[{realm-name=ApplicationRealm}]}])
Copy to Clipboard Toggle word wrap

1.7.3. 在客户端方中指定 SASL 身份验证机制

客户端使用的 SASL 验证机制通过 sasl-mechanism-selector 指定。您可以指定由客户端连接的服务器公开的任何支持的 SASL 身份验证机制。

sasl-mechanism-selector 在配置了身份验证的 Elytron 配置中定义:

  • elytron 子系统中,这是 authentication-configuration 的属性。例如:

    /subsystem=elytron/authentication-configuration=myAuthConfig:write-attribute(name=sasl-mechanism-selector,value="DIGEST-MD5")
    Copy to Clipboard Toggle word wrap

    在配置 SSL 或使用 elytron的 TLS 中,可以看到将 身份验证sasl-mechanism-selector 搭配使用 的示例。

  • 对于 Elytron Client,它在客户端配置文件的 authentication- configuration s 配置元素下指定,通常称为 wildfly-config.xml。例如:

    <configuration>
      <authentication-client xmlns="urn:elytron:client:1.2">
        <authentication-rules>
          <rule use-configuration="default" />
        </authentication-rules>
        <authentication-configurations>
          <configuration name="default">
            <sasl-mechanism-selector selector="#ALL" />
          ...
          </configuration>
        </authentication-configurations>
      </authentication-client>
    </configuration>
    Copy to Clipboard Toggle word wrap

有关使用 Elytron 客户端配置客户端身份验证的更多信息,请参阅如何配置身份管理

SASL-mechanism-selector Grammar

sasl-mechanism-selector 的选择器字符串有特定的 grammar。

在简单形式中,通过按顺序列出各个机制的名称(用空格分隔)来指定各个机制。例如,要将 DIGEST-MD5、SCRAM-SHA-1 和 SCRAM-SHA-256 指定为允许的验证机制,请使用以下字符串:DIGEST-MD5 SCRAM-SHA-1 SCRAM-SHA-256

对 grammar 的更多高级用法可使用以下特殊令牌:

  • #ALL :所有机制。
  • #FAMILY(NAME): Mechanisms 属于指定机制系列。例如,系列可以是 DIGEST、EAP、GS2、SCRAM 或 IEC-ISO-9798。
  • #PLUS: 使用频道绑定的机制。例如: SCRAM-SHA-XXX-PLUS 或 GS2-XXX-PLUS.
  • #MUTUAL: Mechanisms 以某种方式验证服务器,例如使服务器能够证明服务器知道该密码。#MUTUAL 包括 系列,如 #FAMILY(SCRAM)#FAMILY(GS2)
  • #HASH(ALGORITHM): 使用指定的哈希算法的机制机制。例如,算法可以是 MD5、SHA-1、SHA-256、SHA-384 或 SHA-512。

以上令牌和名称也可以用于以下操作和 predicates:

  • -: 表示禁止
  • !: 反转
  • &&: 和
  • ||: 或
  • ==: 等于
  • ?: : if if
  • #TLS: 在 TLS 处于活跃状态时是 true,否则为 false。

以下是 sasl-mechanism-selector 字符串及其含义的一些示例:

  • #TLS && !#MUTUAL : 当 TLS 处于活跃状态时,所有没有相互身份验证的机制。
  • #ALL -ANONYMOUS :除 ANONYMOOUS 以外的所有机制。
  • SCRAM-SHA-1 SCRAM-SHA-256 :按顺序添加这两种机制。
  • (SCRAM-SHA-1 || SCRAM-SHA-256) :根据供应商或服务器提供的顺序添加两种机制。
  • !#HASH(MD5):不使用 MD5 哈希算法的任何机制。
  • #FAMILY(DIGEST) :任何摘要机制。

1.7.4. 配置 SASL 身份验证机制属性

您可以在服务器端和客户端上配置身份验证机制属性。

  • 在服务器端,您可以在 configurable-sasl-server-factory 中定义身份验证机制属性。以下示例定义了 com.sun.security.sasl.digest.utf8 属性,值设为 false

    /subsystem=elytron/configurable-sasl-server-factory=mySASLServerFactory:map-put(name=properties,key=com.sun.security.sasl.digest.utf8,value=false)
    Copy to Clipboard Toggle word wrap
  • 在客户端,您可以在客户端的身份验证配置中定义验证机制属性:

    • elytron 子系统中,定义 身份验证配置中的验证机制 属性。以下示例定义了 wildfly.sasl.local-user.quiet-auth 属性,值设为 true

      /subsystem=elytron/authentication-configuration=myAuthConfig:map-put(name=mechanism-properties,key=wildfly.sasl.local-user.quiet-auth,value=true)
      Copy to Clipboard Toggle word wrap
    • 对于 Elytron 客户端,身份验证机制属性在客户端配置文件中的 authentication- configuration s 配置元素下指定,通常命名为 wildfly-config.xml。例如:

      ...
      <authentication-configurations>
        <configuration name="default">
          <sasl-mechanism-selector selector="#ALL" />
          <set-mechanism-properties>
            <property key="wildfly.sasl.local-user.quiet-auth" value="true" />
          </set-mechanism-properties>
          ...
        </configuration>
      </authentication-configurations>
      ...
      Copy to Clipboard Toggle word wrap

您可以在 Java 文档 中看到标准 Java SASL 验证机制属性列表。其他 JBoss EAP 特定的 SASL 身份验证机制属性列在身份验证机制参考 中。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部