5.4. 在目录服务器中使用引用
Directory Server 返回的信息是目录服务器返回的信息,告知客户端应用程序要联系以继续请求。当客户端应用程序请求本地服务器不包含的目录条目时,会发生此重定向机制。
目录服务器支持以下引用类型:
- 默认引用
- 当客户端应用程序请求不属于本地树的条目时,该目录会返回默认的引用。您可以在服务器和后缀级别上配置默认引用。
- 智能引用
- 目录服务器在目录中存储智能引用条目。智能引用指向包含子树的服务器,其 DN 与包含智能引用的条目的 DN 匹配。
目录服务器返回 LDAP 统一资源 locator 或 LDAP URL 格式的所有引用。
其他资源
5.4.1. LDAP 引用的结构
目录服务器返回 LDAP URL 格式的所有引用。LDAP URL 包含以下信息:
- 要联系的服务器的主机名。
- 服务器配置为侦听 LDAP 请求的服务器上的端口号。
- 基本 DN(用于搜索操作)或目标 DN(用于添加、删除和修改操作)。
例如,客户端应用程序通过 dc=example,dc=com
分支搜索带有 surname Jensen
的条目。但是,目录树的一部分存储在欧洲服务器上。引用会将以下 LDAP URL 返回到客户端应用程序:
ldap://europe.example.com:389/ou=people,l=europe,dc=example,dc=com
本引用指示客户端应用程序在端口 389 上联系主机 europe.example.com
,并通过欧洲分支 ou=people,l=europe,dc=example,dc=com
提交一个新的搜索。
您使用的 LDAP 客户端应用程序决定了如何处理引用。有些客户端应用程序会自动重试服务器中的操作。其他客户端应用程序将引用信息返回给用户。红帽目录服务器提供的大多数 LDAP 客户端应用程序(如命令行工具)自动遵循引用。目录服务器使用初始目录请求中提供的同一绑定凭证来访问服务器。
大多数客户端应用程序都遵循有限的引用数,或 跃点。对引用数量的限制可减少客户端应用程序试图完成目录查找请求的时间,并有助于消除由循环引用模式导致的挂起进程。
5.4.2. 目录服务器中的默认引用
当联系的服务器或数据库不包含请求的数据时,目录服务器会返回 默认的引用。
例如,客户端请求以下目录条目: uid=bjensen,ou=people,dc=example,dc=com
。
但是,服务器仅管理存储在 dc=europe,dc=example,dc=com
后缀下的条目。目录向客户端返回一个引用,其中包含要联系 dc=example,dc=com
后缀下的条目的信息。然后,客户端联系适当的服务器并重新提交原始请求。
您可以在服务器和后缀级别配置默认引用:
-
要设置服务器级别引用,请使用服务器级配置属性
nsslapd-referral
。目录服务器在dse.ldif
配置文件中存储属性值。当服务器不可用或者客户端没有访问本地服务器上的数据时,Directory 服务器会返回默认的引用。 -
要设置后缀级别引用,请使用后缀配置属性
nsslapd-referral
和nsslapd-state
。当整个后缀离线时,Directory 服务器会将引用返回到对该后缀发出的客户端请求。
5.4.3. 目录服务器中的智能引用
除了默认的引用外,Directory 服务器 还支持智能引用,它将目录条目或目录树与特定 LDAP URL 关联。因此,目录服务器可以将客户端请求转发到以下任意一个:
- 包括在不同服务器上的同一命名空间。
- 不同服务器上的不同命名空间。
- 同一服务器上的不同命名空间。
与默认引用不同,目录服务器将智能引用存储在目录中,而不是在配置文件中。
例如,ExampleCom 的美国办公室的目录包含 ou=people,dc=example,dc=com
目录分支点。
要将此分支上的请求重定向到 ExampleCom 欧洲办事处的 ou=people
分支,您可以在 ou=people
条目上指定一个智能引用。智能引用具有以下值:
ldap://europe.example.com:389/ou=people,dc=example,dc=com
美国目录的 ou=people
分支的请求将按照以下方式重定向到欧洲目录中:
图 5.7. 使用智能引用重定向请求
您可以使用相同的机制将查询重定向到使用不同的命名空间的不同服务器。例如,在 ExampleCom 办事处工作的员工为美国的 ExampleCom 员工的电话号码提出了欧洲目录服务的请求。目录服务器返回以下引用:
ldap://america.example.com:389/ou=people,dc=example,dc=com
下图显示了引用不同命名空间的工作方式:
图 5.8. 将查询重定向到不同的服务器和命名空间
最后,在同一服务器上提供多个后缀时,您可以将查询从一个命名空间重定向到同一服务器上提供的另一项。例如,要将本地服务器上的 o=example,c=us
的所有查询重定向到 dc=example,dc=com
,请在 o=example,c=us
条目上设置 smart referral ldap:///dc=example,dc=com
。LDAP URL 中的第三个斜杠表示 URL 指向同一服务器。
从一个命名空间到另一个命名空间的引用仅适用于其搜索以可分辨名称的客户端。其他类型的操作(如 ou=people,o=example,c=US
)没有正确执行。
5.4.4. 使用智能引用时的注意事项
在使用智能引用前请考虑以下点:
保持设计简单。
复杂的引用网络使管理变得困难。智能引用也可以导致循环引用模式。例如,一个指向一个 LDAP URL 的引用指向另一个 LDAP URL,以此类推,直到链中的某个位置指向原始服务器。下图显示了循环引用模式:
图 5.9. 圆形引用模式
重定向至主要分支点。
为提高安全性并降低维护成本,请限制引用使用在后缀和主要分支点级别处理重定向。不要使用 smart 引用作为别名机制。
考虑安全隐患。
访问控制不会跨引用边界。即使发送请求的服务器最初允许访问条目,智能引用也会向其他服务器发送客户端请求,客户端应用可能会被拒绝访问。
此外,客户端应用程序需要凭据来向引用客户端的服务器进行身份验证。