5.3. サービスクラスについて
サービスクラス (CoS) は、アプリケーションが認識できない方法でエントリー間で属性を共有します。CoS では、一部の属性値がエントリー自体と一緒に保存されない場合があります。代わりに、エントリーがクライアントアプリケーションに送信される際に、サービスクラスのロジックにより生成されます。
たとえば、ディレクトリーには、すべてが共通の属性
facsimileTelephoneNumber
を共有する数千ものエントリーが含まれています。従来は、FAX 番号を変更するためには、各エントリーを個別に更新する必要があり、管理者にとっては大きな負担となり、すべてのエントリーが更新されないリスクがありました。CoS を使用すると、属性値を動的に生成できます。facsimileTelephoneNumber
属性は 1 つのロケーションに保存され、各エントリーはその場所から fax number 属性を取得します。アプリケーションの場合、これらの属性は、実際にはエントリー自体に保存されていないにもかかわらず、他のすべての属性と同じように表示されます。
各 CoS は、ディレクトリー内の複数のエントリーで設定されています。
CoS 定義エントリーとテンプレートエントリーは相互に作用して、ターゲットエントリー (そのスコープ内のエントリー) に属性値を提供します。提供する値は、以下によって異なります。
- エントリーの DN (ディレクトリーツリーの異なる部分に異なる CoS が含まれる場合があります)。
- エントリーで保存されるサービスクラスの属性値。サービスクラス属性がない場合、特定のデフォルト CoS を意味することがあります。
- CoS テンプレートエントリーに保存される属性値。各 CoS テンプレートエントリーは、特定の CoS の属性値を提供します。
- エントリーのオブジェクトクラス。COS の属性値は、スキーマチェックが有効な場合、エントリーに属性を許可するオブジェクトクラスが含まれている場合にのみ生成され、そうでない場合は、すべての属性値が生成されます。
- ディレクトリーツリーの特定エントリーの一部に保存される属性。
重要
CoS 定義で使用する属性をインデックス化しないでください(
cosAttribute
パラメーター)。
注記
ロールと従来の CoS を併用することで、ロールベースの属性を提供することができます。これらの属性は、エントリーが特定のロールを持ち、関連する CoS テンプレートを持っているために表示されます。たとえば、ロールベースの属性を使用して、サーバーのルックスルー制限をロールごとに設定することができます。
5.3.1. Pointer CoS について
ポインター CoS は、テンプレート DN のみを使用してテンプレートエントリーを特定します。各ポインター CoS ごとに、1 つのテンプレート DN しか存在しない場合があります。ポインター CoS は、テンプレートエントリーの範囲内にあるすべてのエントリーに適用されます。
たとえば、図5.1「Pointer CoS のサンプル」 のポインター CoS は、dc=example,dc=com に保存されているすべてのエントリーと共通の郵便番号を共有します。
図5.1 Pointer CoS のサンプル
テンプレートエントリーは、CoS 定義エントリーの DN cn=exampleUS,cn=data で識別されます。
postalCode
属性がエントリー cn=wholiday,ou=people,dc=example,dc=com に対してクエリーされるたびに、Directory Server は、テンプレートエントリー cn=exampleUS,cn=data で使用可能な値を返します。
5.3.2. 間接的な CoS について
間接的な CoS は、ターゲットエントリーの属性の 1 つを使用して、テンプレートエントリーを識別します。ターゲットエントリーの属性には、既存のエントリーの DN が含まれる必要があります。
図5.2 間接的な CoS の例
この例では、Wiiam Holiday のターゲットエントリーには間接指定子 (
manager
属性) が含まれます。William のマネージャーは Carla Fuentes であるため、manager
属性にはテンプレートエントリーの DN へのポインター cn=Carla Fuentes,ou=people,dc=example,dc=com が含まれます。テンプレートエントリーは次に、318842 の departmentNumber
属性値を提供します。
5.3.3. Classic CoS について
従来の CoS は、DN とターゲットエントリーのいずれかの属性の値の両方で、テンプレートエントリー を特定します。Classic CoS には、他の CoS テンプレートに属していないエントリーに適用されるデフォルトの CoS テンプレートなどの複数のテンプレートエントリーを持つことができます。
図5.3 Classic CoS のサンプル
この例では、CoS 定義エントリーの
cosSpecifier
属性は、employeeType
属性を指定しています。この属性は、テンプレート DN と組み合わせて、テンプレートエントリーを cn=sales,cn=exampleUS,cn=data として特定します。その後、テンプレートエントリーは、postalCode
属性値をターゲットエントリーに提供します。