スマートリフェラルを使用して、ディレクトリエントリやディレクトリツリーを、特定の 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 (http://www.ietf.org/rfc/rfc4511.txt) のセクション 4.1.10 に指定されている標準に準拠する必要があります。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および 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 を使用する必要があります。その他の特殊文字はエスケープする必要があります。
スマートリフェラルを定義すると、別のサーバー上の cn=Babs Jensen エントリで、uid=bjensen エントリの修正が実際に行われます。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 |