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}]}])
/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")
/subsystem=elytron/authentication-configuration=myAuthConfig:write-attribute(name=sasl-mechanism-selector,value="DIGEST-MD5")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在配置 SSL 或使用
elytron的 TLS 中,可以看到将身份验证与sasl-mechanism-selector搭配使用 的示例。对于 Elytron Client,它在客户端配置文件的
authentication-配置元素下指定,通常称为configurationswildfly-config.xml。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
有关使用 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)
/subsystem=elytron/configurable-sasl-server-factory=mySASLServerFactory:map-put(name=properties,key=com.sun.security.sasl.digest.utf8,value=false)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在客户端,您可以在客户端的身份验证配置中定义验证机制属性:
在
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)
/subsystem=elytron/authentication-configuration=myAuthConfig:map-put(name=mechanism-properties,key=wildfly.sasl.local-user.quiet-auth,value=true)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Elytron 客户端,身份验证机制属性在客户端配置文件中的
authentication-配置元素下指定,通常命名为configurationswildfly-config.xml。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以在 Java 文档 中看到标准 Java SASL 验证机制属性列表。其他 JBoss EAP 特定的 SASL 身份验证机制属性列在身份验证机制参考 中。