2.5. 使用引用

引用告知客户端应用程序要联系哪些服务器以获取特定信息。当客户端应用程序请求本地服务器上不存在的目录条目或数据库已脱机进行维护时,会发生此重定向。本节包含有关引用的以下信息:
有关如何在目录中使用引用的概念信息,请参阅 红帽目录服务器部署指南

2.5.1. 以引用模式启动服务器

引用用于将客户端应用程序重定向到另一台服务器,而当前服务器不可用时,或者客户端请求未保存在当前服务器上的客户端请求信息。例如,在对目录服务器进行配置更改时,以引用模式启动目录服务器将在该服务器不可用时引用所有客户端。以引用 模式启动目录服务器通过 refer 命令完成。
使用 refer 选项运行 nsslapd
# ns-slapd refer -D /etc/dirsrv/slapd-instance_name [-p port] -r referral_url
  • /etc/dirsrv/slapd-instance_name/ 是目录服务器配置文件所在的目录。这是 Red Hat Enterprise Linux 中的默认位置。
  • port 是以引用模式启动的目录服务器的可选端口号。
  • referral_url 是返回到客户端的引用。LDAP URL 的格式在 附录 C, LDAP URL 中介绍。

2.5.2. 设置默认引用

目录服务器将默认引用返回到客户端应用程序,该应用提交在目录中维护的任何后缀中不包含的 DN 上的操作。以下流程描述了使用命令行为目录设置默认引用。

2.5.2.1. 使用命令行设置默认引用

使用 dsconf config replace 命令在 nsslapd-referral 参数中设置默认引用。例如,要将 ldap://directory.example.com/ 设置为默认引用:
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-referral="ldap://directory.example.com/"

2.5.3. 创建智能引用

智能引用将目录条目或目录树映射到特定的 LDAP URL。通过使用智能引用,客户端应用程序可以引用特定服务器或特定服务器上的特定条目。
例如,客户端应用程序请求目录条目 uid=jdoe,ou=body,dc=example,dc=com。为客户端返回一个智能引用,它指向服务器 directory.europe.example.com 中的条目 cn=john doe,o=people,ou=europe,dc=example,dc=com
目录使用智能引用的方式符合 RFC 2251 第 4.1.11 中指定的标准。RFC 可从 http://www.ietf.org/rfc/rfc2251.txt 下载。

2.5.3.1. 使用命令行创建智能引用

要创建一个智能引用,创建带有 referral 对象类的相对目录条目,并将 ref 属性设置为引用 LDAP URL。
例如,要创建一个名为 uid=user,ou=body,dc=example,dc=com 的智能引用,引用 ldap://directory.europe.example.com/cn=user,ou=people,ou=europe,dc=example,dc=com
# ldapadd -D "cn=Directory Manager" -W -p 389 -h server2.example.com -x
dn: uid=user,ou=people,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: referral
sn: user
uid: user
cn: user
ref: ldap://directory.europe.example.com/cn=user,ou=people,ou=europe,dc=example,dc=com
注意
目录服务器在 LDAP URL 中的空格后忽略任何信息。因此,在用作引用的 LDAP URL 中使用 %20 而不是空格。
如果 DN 路径中已有引用,请将 -M 选项与 ldapadd 一起使用。有关智能引用的更多信息,请参阅 目录服务器部署指南

2.5.4. 创建后缀引用

以下流程描述了在 后缀 中创建引用。这意味着后缀使用引用而不是数据库链接处理操作。
警告
当您将后缀配置为返回引用时,会忽略与后缀关联的数据库中的 ACI。另外,创建后缀引用仅适用于非复制后缀。

2.5.4.1. 使用命令行创建后缀引用

创建后缀引用:
  1. (可选)创建 root 或子修复(如果尚不存在)。详情请查看 第 2.1.1 节 “创建后缀”
  2. 将引用添加到后缀。例如:
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix set --add-referral="ldap://directory.example.com/" database_name

2.5.4.2. 使用 Web 控制台创建后缀引用

创建后缀引用:
  1. 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”
  2. 选择实例。
  3. 打开 Database 菜单。
  4. (可选)创建 root 或子修复(如果尚不存在)。详情请查看 第 2.1.1 节 “创建后缀”
  5. 选择列表中的后缀,并打开 referrals 选项卡
  6. Create referral
  7. 填写字段以创建引用 URL。
  8. Create referral