5.6. リファラルとチェイニングの使い分け
ディレクトリーの特定のニーズに基づいて、リファラルとチェイニングのどちらかを選択します。
- チェイニングにより、クライアントの複雑さが軽減されますが、その代償としてサーバーの複雑さが増します。ただし、チェイニングを使用すると、クライアントアプリケーションは単一のサーバーと対話しながら、複数のサーバーに保存されているデータに引き続きアクセスできます。クライアントは、要求がチェーンされているサーバーに対して認証を行う必要はありません。
リファラルの場合、クライアントアプリケーションはリファラルを見つけて検索結果を再送信する必要があります。クライアントは、参照先のサーバーに対して正しく認証できる必要もあります。
さらに、ある会社のネットワークがプロキシーを使用している場合、リファラルが失敗することがあります。たとえば、クライアントアプリケーションは、ファイアウォール内の 1 つのサーバーのみと通信するパーミッションを持っている場合があります。そのアプリケーションが別のサーバーに参照されている場合、アプリケーションは正常に接続できない可能性があります。
ただし、リファラルにより、クライアントアプリケーションの作成者にはより柔軟性が提供され、開発者は分散ディレクトリー操作の進行状況についてユーザーに優れたフィードバックを提供できます。
5.6.1. アクセス制御の評価 リンクのコピーリンクがクリップボードにコピーされました!
チェイニングは、リファラルとは異なる方法でアクセス制御を評価します。リファラルを使用する場合、クライアントエントリー (バインド DN) がすべてのターゲットサーバー上に存在している必要があります。チェイニングでは、クライアントエントリーはすべてのターゲットサーバー上にある必要はありません。
5.6.1.1. リファラルを使用した検索要求の実行 リンクのコピーリンクがクリップボードにコピーされました!
次の図は、リファラルを使用するサーバーへのクライアント要求を示しています。
図5.11 リファラルを使用したクライアント要求のサーバーへの送信
検索要求は次のように発生します。
- クライアントアプリケーションは、最初に Server A にバインドします。
- Server A にはユーザー名とパスワードを提供するクライアントのエントリーが含まれるため、バインドの受け入れメッセージを返します。リファラルを機能させるためには、クライアントエントリーが Server A に存在する必要があります。
- クライアントアプリケーションは操作要求を Server A に送信します。
- ただし、Server A には要求された情報が含まれていません。代わりに、Server A はクライアントアプリケーションにリファラルを返し、Server B に接続するように指示します。
- 次に、クライアントアプリケーションは Server B にバインド要求を送信します。バインドを正常に実行するには、Server B にクライアントアプリケーションのエントリーも含まれている必要があります。
- バインドに成功し、クライアントアプリケーションは検索操作を Server B に再送信できるようになりました。
この方法では、Server B が、Server A からのクライアントエントリーのレプリケートされたコピーを持つ必要があります。
5.6.1.2. チェイニングを使用した検索要求の実行 リンクのコピーリンクがクリップボードにコピーされました!
サーバー全体でクライアントエントリーをレプリケートする問題は、チェイニングを使用して解決できます。
図5.12 チェイニングを使用したクライアント要求のサーバーへの送信
検索要求は次のように発生します。
- クライアントアプリケーションが Server A にバインドすると、Server A はユーザー名とパスワードが正しいか確認しようとします。
- Server A にはクライアントアプリケーションに対応するエントリーが含まれません。代わりに、クライアントの実際のエントリーが含まれる Server B へのデータベースリンクが含まれます。Server A はバインド要求を Server B に送信します。
- Server B は Server A に受け入れ応答を送信します。
- 次に、Server A はデータベースリンクを使用して、クライアントアプリケーションの要求を処理します。データベースリンクは、Server B にあるリモートデータストアに問い合わせ、検索操作を処理します。
チェーンシステムでは、クライアントアプリケーションに対応するエントリーは、クライアントが要求するデータと同じサーバーに置く必要はありません。次の図は、2 つのチェーンサーバーを使用してクライアントの検索要求を完了する方法を示しています。
図5.13 2 つの異なるサーバーを使用してクライアントを認証し、データを取得する
検索要求は次のように発生します。
- クライアントアプリケーションは Server A にバインドし、Server A はユーザー名とパスワードが正しいことを確定します。
- Server A にはクライアントアプリケーションに対応するエントリーが含まれません。代わりに、クライアントの実際のエントリーが含まれる Server B へのデータベースリンクが含まれます。Server A はバインド要求を Server B に送信します。
- Server B は Server A に受け入れ応答を送信します。
- 次に、Server A は別のデータベースリンクを使用して、クライアント要求を処理します。データベースリンクは、Server C にあるリモートデータストアに問い合わせ、検索操作を処理します。
5.6.1.3. サポートされないアクセス制御 リンクのコピーリンクがクリップボードにコピーされました!
データベースリンクは、以下のアクセス制御をサポートしません。
- ユーザーエントリーが別のサーバー上にある場合に、ユーザーエントリーのコンテンツにアクセスする必要があるコントロール。これには、グループ、フィルター、およびロールに基づくアクセス制御が含まれます。
- クライアント IP アドレスまたは DNS ドメインに基づいた制御は拒否される可能性があります。これは、データベースリンクがリモートサーバーに問い合わせする際に、クライアントになりすますためです。リモートデータベースに IP ベースのアクセス制御が含まれている場合は、元のクライアントドメインではなく、データベースリンクドメインを使用してそれらを評価します。