前のトピック: ビューを使用する方法

次のトピック: DSA によるビューの段階を処理する方法

ビューの動作方法

例: 携帯電話サービス プロバイダ

携帯電話プロバイダを例にとります。 プロバイダのディレクトリ構造で電話の SIM カード番号を検索するには、まず顧客の携帯電話番号を検索し、次にそれを使用して SIM カード番号を検索します。 以下の表に、ビューを使用して完全なタスクを実行する方法を示します。

ビュー コマンドの定義

注釈

set view "SIM View" = {
description = "Display Sim Number given a name"

この行はビューを定義し、それに名前を与えます。 名前と説明は get view コマンドで表示されます。

entry = <o ACME><ou Views><cn "SIM">

この行は、このビューのベース オブジェクト DN を定義します。 ユーザは仮想エントリを指定して、ビューを呼び出します。さらに、ldapsearch コマンドでこのビューを呼び出すために、コマンド ラインに以下のオプションを含める必要があります。

-b "cn=SIM,ou=Views,o=ACME"

この組織(ACME)では、単にビュー DN のすべてが一意であることを確実にするために、管理者に Views と呼ばれる組織単位を含めています。

(phase = 1
 subtree = "ou=Customers,o=ACME"
 filter = "(cn=$cn)"
 ),

これはビューの第 1 段階であり、1 とラベルされる必要があります。

ビューが呼び出されると、段階では以下の DN から開始するサブツリーを検索します。

"ou=Customers,o=ACME"

段階で $cn を使用することは、ユーザがビューを呼び出すとき cn の値を指定する必要があることを意味します。 たとえば、以下のように検索にフィルタを含めることができます。

(cn="John Smith")

DSA はこの値を使用して、$cn を置換します。 そのため、段階 1 は、以下のフィルタを持った検索を実行します。

(cn="John Smith")

段階には他のオプションが含まれないので、段階はフィルタに一致するサブツリー内のエントリ情報をすべて返します。

(phase = 2
 subtree = "ou=cellphones,ou=Accounts,o=ACME"
 filter = "(account=$1:cellphone)"
 eis = simCardNumber
 options = result-required
 )
};

これはビューの第 2 段階であり、2 とラベルされる必要があります。

この段階では以下のサブツリーを検索します。

"ou=cellphones,ou=Accounts,o=ACME"

DSA は $1:cellphone を、段階 1 によって返される cellphone 属性の値で置換します。たとえば 01001001001 などの値です。

eis オプションは、段階が返すただ 1 つの属性値が simCardnumber であることを意味します。

顧客が 2 台の電話を持つ場合、以下の例のように、返された電話番号の OR (論理和)がフィルタです。

(|(account=01001001001)(account=01001001002)

2 つの simCardNumber 値がこの場合返されます。

この段階で result-required が指定されるので、DSA は各サブツリーにおける属性間のリンクが有効なことを確認します。 リンクが有効でない場合、アラームが生じます。

前の表で定義されたビューがある場合、顧客の SIM カード番号を見つけるために以下の検索を実行できます。

ldapsearch -h hostname:3000 -s subtree -b "cn=SIM,ou=Views,o=ACME" "(cn=John Smith)" simCardNumber