第 5 章 使用 LDAP 保护管理接口
管理接口可以针对 LDAP 服务器(包括 Microsoft Active Directory)进行身份验证。这通过使用 LDAP 身份验证器来完成。LDAP 身份验证器首先通过建立与远程目录服务器的连接(使用出站 LDAP 连接)运行。然后,它将使用用户传递给身份验证系统的用户名执行搜索,以查找 LDAP 记录的完全限定可分辨名称(DN)。如果成功,将使用用户的 DN 作为凭证和用户提供的密码来创建新的连接。如果这第二个连接和 LDAP 服务器的身份验证成功,则 DN 被验证为有效并且身份验证成功。
使用 LDAP 保护管理接口将身份验证从摘要更改为 BASIC/Plain,默认情况下,会导致用户名和密码通过网络进行未加密发送。可以在出站连接上启用 SSL/TLS 来加密此流量,并避免在明文中发送此信息。
如果传统安全域使用 LDAP 服务器来执行身份验证,例如使用 LDAP 保护管理接口,JBoss EAP 将返回 500 或内部服务器错误 ,
如果该 LDAP 服务器无法访问,则返回错误代码。此行为与之前版本的 JBoss EAP 不同,后者在相同的条件下返回 401
或未授权的错误代码。
5.1. 使用 Elytron
您可以使用 LDAP 和 elytron
子系统来保护管理接口,其方式与使用任何身份存储相同。有关将身份存储用于 elytron
子系统安全性的信息,请参见 《如何使用 配置服务器安全性的新身份存储》的安全管理接口。例如,使用 LDAP 保护管理控制台:
如果 JBoss EAP 服务器没有读取密码的权限,例如使用 Active Directory LDAP 服务器时,需要在定义的 LDAP 域中 将直接验证
设置为 true
。此属性允许直接在 LDAP 服务器上执行验证,而非 JBoss EAP 服务器。
LDAP 身份服务示例
/subsystem=elytron/dir-context=exampleDC:add(url="ldap://127.0.0.1:10389",principal="uid=admin,ou=system",credential-reference={clear-text="secret"}) /subsystem=elytron/ldap-realm=exampleLR:add(dir-context=exampleDC,identity-mapping={search-base-dn="ou=Users,dc=wildfly,dc=org",rdn-identifier="uid",user-password-mapper={from="userPassword"},attribute-mapping=[{filter-base-dn="ou=Roles,dc=wildfly,dc=org",filter="(&(objectClass=groupOfNames)(member={0}))",from="cn",to="Roles"}]}) /subsystem=elytron/simple-role-decoder=from-roles-attribute:add(attribute=Roles) /subsystem=elytron/security-domain=exampleLdapSD:add(realms=[{realm=exampleLR,role-decoder=from-roles-attribute}],default-realm=exampleLR,permission-mapper=default-permission-mapper) /subsystem=elytron/http-authentication-factory=example-ldap-http-auth:add(http-server-mechanism-factory=global,security-domain=exampleLdapSD,mechanism-configurations=[{mechanism-name=BASIC,mechanism-realm-configurations=[{realm-name=exampleApplicationDomain}]}]) /core-service=management/management-interface=http-interface:write-attribute(name=http-authentication-factory, value=example-ldap-http-auth) reload
5.1.1. 将 Elytron 用于出站 LDAP 连接的双向 SSL/TLS
使用 LDAP 保护管理接口时,您可以将出站 LDAP 连接配置为使用双向 SSL/TLS。为此,请创建一个 ssl-context
,并将其添加到您的 ldap
中。在如何使用 配置服务器安全性 -realm 使用的dir-
context的 Elytron Subsystem 部分为应用启用双向 SSL/TLS 中介绍了 创建
双向 SSL/TLS。
红帽建议显式禁用 SSLv2、SSLv3 和 TLSv1.0,以便在所有受影响的软件包中明确禁用 TLSv1.1 或 TLSv1.2。