5.2. 使用传统核心管理身份验证
要使用 LDAP 目录服务器作为使用旧 安全
子系统管理接口的身份验证源,必须执行以下步骤:
创建与 LDAP 服务器的出站连接。
创建出站 LDAP 连接的目的是允许安全域(和 JBoss EAP 实例)建立与 LDAP 服务器的连接。这类似于创建数据源以用于安全域中的
Database
登录模块。LDAP 出站连接允许以下属性:
属性 必填 描述 url
是
目录服务器的 URL 地址。
search-dn
否
被授权执行搜索的用户的完全可分辨名称(DN)。
search-credential
否
有权执行搜索的用户密码。此元素支持的属性有:
-
store
- 对凭据存储的引用,以获取搜索凭据。 -
alias
- 引用存储中的凭证别名。 -
type
- 要从凭证存储获取的凭证类型的完全限定类名称。 -
clear-text
- 不引用凭据存储,此属性可用于指定明文密码。
initial-context-factory
否
建立连接时要使用的初始上下文工厂。默认为
com.sun.jndi.ldap.LdapCtxFactory
。security-realm
否
要引用的安全域,以获取在建立连接时要使用的已配置
SSLContext
。引用
否
指定在进行搜索时遇到引用时的行为。有效的选项包括
IGNORE
、FOLL
OW 和THROW
。-
IGNORE
:默认选项。忽略引用。 -
FOLLOW
:搜索过程中遇到参考时,使用的DirContext
将尝试紧随该引用。这假设相同的连接设置可用于连接第二台服务器,并且引用中使用的名称可被访问。 -
THROW
:DirContext
将抛出异常LdapReferralException
,以指示需要引用。安全域将处理并尝试识别要用于引用的替代连接。
always-send-client-cert
否
默认情况下,验证用户凭据时不会发送服务器的客户端证书。如果设置为
true
,它将始终被发送。handles-referrals-for
否
指定连接可处理的引用。如果指定 URI 列表,它们应当用空格分开。这允许在需要不同凭证后续引用时定义和使用与连接属性的连接。如果需要不同的凭据才能对第二服务器进行身份验证,或者服务器返回无法从 JBoss EAP 安装访问的引用中的名称,并且可以替换替代地址,这非常有用。
注意search-dn
和search-credential
与用户的用户名和密码不同。此处提供的信息专门用于在 JBoss EAP 实例和 LDAP 服务器之间建立初始连接。此连接允许 JBoss EAP 对尝试进行身份验证的用户的 DN 执行后续搜索。用户的 DN 是搜索的结果,它试图进行身份验证,并且他们提供的密码用于建立用于完成身份验证流程的单独第二个连接。根据以下示例 LDAP 服务器,以下是用于配置出站 LDAP 连接的管理 CLI 命令:
表 5.1. LDAP 服务器示例 属性 值 url
127.0.0.1:389
search-credential
myPass
search-dn
cn=search,dc=acme,dc=com
用于添加出站连接的 CLI
/core-service=management/ldap-connection=ldap-connection/:add(search-credential=myPass,url=ldap://127.0.0.1:389,search-dn="cn=search,dc=acme,dc=com") reload
注意这会在 JBoss EAP 实例和 LDAP 服务器之间创建未加密的连接。有关使用 SSL/TLS 设置加密连接的详情,请参考对出站 LDAP 连接使用 SSL/TLS。
-
创建一个新的启用 LDAP 的安全域。
创建出站 LDAP 连接后,必须创建一个新的支持 LDAP 的安全域才能使用它。
LDAP 安全域具有以下配置属性:
属性 描述 连接
用于连接 LDAP 目录的出站连接中定义的连接名称。
base-dn
用于开始搜索用户的上下文的 DN。
递归
搜索应在整个 LDAP 目录树中递归,还是仅搜索指定的上下文。默认值为
false
。user-dn
包含 DN 的用户属性。这随后用于测试用户能够完成的身份验证。默认值为 to
dn
。allow-empty-passwords
此属性确定是否接受空密码。默认值为
false
。username-attribute
要搜索用户的属性名称。此过滤器执行简单的搜索,其中用户输入的用户名与指定的属性匹配。
advanced-filter
用于根据提供的用户 ID 搜索用户的完全定义过滤器。此属性包含标准 LDAP 语法中的过滤器查询。过滤器必须包含以下格式的变量:
{0}
。之后,这会被用户提供的用户名替代。如需了解更多详细信息和advanced-filter
示例,请参阅用于授权的组合 LDAP 和 RBAC 部分。警告确保不允许空 LDAP 密码非常重要,因为它是一个严重的安全问题。除非环境中特别需要此行为,否则请确保不允许空密码,并且 allow-empty-passwords 始终为 false。
以下是用于使用
ldap-connection
出站 LDAP 连接配置支持 LDAP 的安全域的管理 CLI 命令。/core-service=management/security-realm=ldap-security-realm:add /core-service=management/security-realm=ldap-security-realm/authentication=ldap:add(connection="ldap-connection", base-dn="cn=users,dc=acme,dc=com",username-attribute="sambaAccountName") reload
在管理界面中引用新的安全域。创建安全域并使用出站 LDAP 连接后,管理接口必须引用新的安全域。
/core-service=management/management-interface=http-interface/:write-attribute(name=security-realm,value="ldap-security-realm")
注意显示的管理 CLI 命令假定您在运行 JBoss EAP 单机服务器。有关将管理 CLI 用于 JBoss EAP 受管域的更多详细信息,请参见 JBoss EAP管理 CLI 指南。
5.2.1. 将双向 SSL/TLS 用于出站 LDAP 连接
按照以下步骤创建由 SSL/TLS 保护的出站 LDAP 连接:
红帽建议显式禁用 SSLv2、SSLv3 和 TLSv1.0,以便在所有受影响的软件包中明确禁用 TLSv1.1 或 TLSv1.2。
配置要使用的出站 LDAP 连接的安全域。
安全域必须包含一个密钥存储,配置有 JBoss EAP 服务器将用于解密自身和 LDAP 服务器之间通信的密钥存储。此密钥存储还允许 JBoss EAP 实例根据 LDAP 服务器验证其自身。安全域还必须包含包含 LDAP 服务器证书的信任存储,或者用于签署 LDAP 服务器证书的证书颁发机构的证书。 有关配置密钥存储和信任存储以及创建使用它们的安全域的说明,请参阅 JBoss EAP 如何配置服务器安全指南中的双向 SSL/TLS。
使用 SSL/TLS URL 和安全域创建一个出站 LDAP 连接。
与使用传统核心管理身份验证中定义的进程类似,应创建出站 LDAP 连接,但是将 SSL/TLS URL 用于 LDAP 服务器和 SSL/TLS 安全域。
为 LDAP 服务器创建出站 LDAP 连接和 SSL/TLS 安全域后,需要利用该信息更新出站 LDAP 连接。
使用 SSL/TLS URL 添加出站连接的 CLI 示例
/core-service=management/ldap-connection=ldap-connection/:add(search-credential=myPass, url=ldaps://LDAP_HOST:LDAP_PORT, search-dn="cn=search,dc=acme,dc=com")
使用 SSL/TLS 证书添加安全域
/core-service=management/ldap-connection=ldap-connection:write-attribute(name=security-realm,value="CertificateRealm") reload
创建一个新的安全域,它使用出站 LDAP 连接供管理接口使用。
按照创建新 LDAP 启用安全域的步骤 ???,并根据使用传统核心管理身份验证中的流程引用管理界面中的新安全域 。
注意显示的管理 CLI 命令假定您在运行 JBoss EAP 单机服务器。有关将管理 CLI 用于 JBoss EAP 受管域的更多详细信息,请参见 JBoss EAP管理 CLI 指南。