可以使用引用通知客户端应用程序应该联系哪个服务器(如果无法在本地获取此信息)。引用是指向远程后缀或条目的指针,目录服务器将其代替结果返回给客户端。然后,客户端必须在引用中所指定的远程服务器上再次执行操作。
在以下三种情况下将发生重定向:
客户端应用程序请求本地服务器上不存在的条目,并且服务器已被配置为返回默认引用。
出于维护或安全原因已禁用整个后缀。
服务器将返回该后缀所定义的引用。设置引用并使后缀变为只读状态中介绍了后缀级别的引用。客户端请求写入操作时,后缀的只读副本也会将引用返回给主服务器。
客户端专门访问智能引用。
智能引用是您创建的一个条目。服务器将返回智能引用所定义的引用。
在任何情况下,引用都是一个 LDAP URL,其中包含主机名、端口号以及其他服务器上的 DN(可选)。例如 ldap://east.example.com:389。
有关如何在目录部署中使用引用的概念性信息,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Deployment Planning Guide》。
以下部分介绍设置目录默认引用以及创建和定义智能引用的过程。
客户端应用程序在某个 DN 上提交操作时,如果由目录服务器维护的任何后缀都不包含该 DN,则会将默认引用返回给该客户端应用程序。服务器将返回定义的所有引用,但不会定义返回引用的顺序。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
使用 dsconf 命令行实用程序设置一个或多个默认引用。
$ dsconf set-server-prop -h host -p port suffix-DN referral-url:referral-URL |
例如:
$ dsconf set-server-prop -h host1 -p 1389 dc=example,dc=com \ referral-url:ldap://east.example.com:1389 |
智能引用允许您将目录条目或目录树映射到特定的 LDAP URL。使用智能引用时,可以将客户端应用程序引用到特定服务器或特定服务器上的特定条目。
智能引用通常指向另一个服务器上具有相同 DN 的实际条目。但是,您可以将智能引用定义为指向相同服务器或不同服务器上的任何条目。例如,您可以将具有以下 DN 的条目定义为智能引用:
uid=bjensen,ou=People,dc=example,dc=com |
该智能引用指向服务器 east.example.com 上的另一个条目:
cn=Babs Jensen,ou=Sales,o=east,dc=example,dc=com |
目录使用智能引用的方式应符合 RFC 4511 的 4.1.10 部分所指定的标准 (http://www.ietf.org/rfc/rfc4511.txt)。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
要创建智能引用,请使用 referral 和 extensibleObject 对象类创建条目。
referral 对象类允许使用应包含 LDAP URL 的 ref 属性。extensibleObject 对象类允许您将任何模式属性用作命名属性,以便与目标条目相匹配。
例如,要定义以下可返回智能引用(而不是条目 uid=bjensen)的条目,请使用如下命令:
$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: uid=bjensen,ou=People,dc=example,dc=com objectclass: top objectclass: extensibleObject objectclass: referral uid: bjensen ref: ldap://east.example.com/cn=Babs%20Jensen,ou=Sales,o=east,dc=example,dc=com |
服务器将忽略 LDAP URL 中位于空格后的所有信息。因此,在用作引用的任何 LDAP URL 中,都必须使用 %20 代替空格。其他特殊字符必须进行转义。
定义智能引用之后,对 uid=bjensen 条目的修改实际上将在其他服务器的 cn=Babs Jensen 条目上执行。ldapmodify 命令将自动跟踪引用,例如:
$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: uid=bjensen,ou=People,dc=example,dc=com changetype: replace replace: telephoneNumber telephoneNumber: (408) 555-1234 |
(可选的)要修改智能引用条目,请使用 ldapmodify 的 -M 选项:
$ ldapmodify -M -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: uid=bjensen,ou=People,dc=example,dc=com changetype: replace replace: ref ref: ldap://east.example.com/cn=Babs%20Jensen,ou=Marketing,o=east,dc=example,dc=com |