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-factory
和 sasl-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}]}])
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")
在配置 SSL 或使用
elytron
的 TLS 中,可以看到将身份验证
与sasl-mechanism-selector
搭配使用 的示例。对于 Elytron Client,它在客户端配置文件的
authentication-
配置元素下指定,通常称为configuration
swildfly-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>
有关使用 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)
在客户端,您可以在客户端的身份验证配置中定义验证机制属性:
在
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)
对于 Elytron 客户端,身份验证机制属性在客户端配置文件中的
authentication-
配置元素下指定,通常命名为configuration
swildfly-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> ...
您可以在 Java 文档 中看到标准 Java SASL 验证机制属性列表。其他 JBoss EAP 特定的 SASL 身份验证机制属性列在身份验证机制参考 中。