若用戶端應用程式在本機無法得知所應連絡的伺服器,您可以使用參照予以告知。參照是目錄伺服器傳回用戶端以替代結果之遠端尾碼或項目的指標。用戶端必須接著在參照中所命名的遠端伺服器上再次執行此作業。
有三種情況下會執行重新導向:
用戶端應用程式所請求的項目不存在於本機伺服器上,同時該伺服器依配置會傳回預設參照。
整個尾碼已因維護或安全性考量而停用時。
伺服器將會傳回該尾碼所定義的參照。尾碼層級參照的說明請見設定參照並使尾碼成為唯讀模式。當用戶端請求寫入作業時,尾碼的唯讀複本也會傳回參照至主伺服器。
當用戶端特別存取智慧型參照時。
智慧型參照是您所建立的項目。伺服器會傳回智慧型參照所定義的參照。
在任何情況下,參照皆是含有主機名稱、連接埠號與其他伺服器之 DN (選用) 的 LDAP URL。例如,ldap://east.example.com:389。
如需有關如何在目錄部署中使用參照的概念性資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Deployment Planning Guide」。
以下幾節將說明設定目錄預設參照以及建立與定義智慧型參照的程序。
若是用戶端應用程式提交作業所在的 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 物件類別可讓預期的 ref 屬性包含 LDAP URL。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 |