JP5102841B2 - プロキシを伴う分散ディレクトリのための方法、プロキシ・サーバ、及びプロキシ・ディレクトリ・システム - Google Patents

プロキシを伴う分散ディレクトリのための方法、プロキシ・サーバ、及びプロキシ・ディレクトリ・システム Download PDF

Info

Publication number
JP5102841B2
JP5102841B2 JP2009539748A JP2009539748A JP5102841B2 JP 5102841 B2 JP5102841 B2 JP 5102841B2 JP 2009539748 A JP2009539748 A JP 2009539748A JP 2009539748 A JP2009539748 A JP 2009539748A JP 5102841 B2 JP5102841 B2 JP 5102841B2
Authority
JP
Japan
Prior art keywords
directory
server
proxy
directory server
distributed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009539748A
Other languages
English (en)
Other versions
JP2010511948A (ja
Inventor
クマール、アプルヴァ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010511948A publication Critical patent/JP2010511948A/ja
Application granted granted Critical
Publication of JP5102841B2 publication Critical patent/JP5102841B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、プロキシを伴う分散ディレクトリのための方法、プロキシ・サーバ、及びプロキシ・ディレクトリ・システムに関する。
ディレクトリは、読み取りアクセスのために最適化された専門データベースであり、実世界における異なる種類のエンティティ(人物、リソース、ポリシー、サービス、アプリケーションなど)に関する情報を、そうしたエンティティを企業におけるセキュリティ及び識別情報の管理フレームワークの重要な要素とする単一のインスタンスに格納する機能を有する。典型的には、ディレクトリは、エントリのディレクトリ情報ツリー(DIT)から成る。一例として、インターネットを介してディレクトリにアクセスする標準的な方法は、LDAP(Lightweight Directory Access Protocol(v3):TechnicalSpecification,RFC3377,http://www.ietf.org/rfc/rfc3377.txt)であり、これによって、複数のサーバにわたるDITの分散が可能になる。LDAPは、照会メカニズム(referral mechanism)を用いて、ディレクトリ操作の分散処理をサポートする。各々のサーバは、名前付けコンテキスト(naming context)と呼ばれるエントリのサブツリーと、関連コンテキストを含む他のサーバへの参照とを含む。サーバは、クライアント要求に完全に応えることができないときには、別のサーバについての照会をクライアントに返信する。これには、操作処理に非常に時間がかかるという欠点がある。
分散ディレクトリのためのLDAPプロトコル及びサポート
LDAPは、TCP/IPを介してX.500情報モデルに準拠したディレクトリにアクセスする標準的な方法である。LDAPv3は、RFC2251、RFC2252(http://www.ietf.org/rfc/rfc2251.txt及びhttp://www.ietf.org/rfc/rfc2252.txt)によって定められるように、ディレクトリにアクセスするために用いられる機能モデルに加えて、情報モデル、名前付けモデル及びセキュリティ・モデルを指定する。
LDAP情報及び名前付けモデル
LDAPは、エントリから成るDITに共通にアクセスする1つ又は複数のディレクトリ・サーバが存在することを想定している。エントリは、必須属性及び任意属性を定める必要なオブジェクト・クラス属性を持つ属性値ペアの組と定義される。各々のエントリは、階層型名前空間(hierarchical namespace)に属する識別名(DN)を有する。DITのルートは、DN「null」を有する。図1は、inetOrgPerson[RFC2798]エントリを有する例示的なディレクトリ・ツリー10を示す。各々のノード(円で表される)は、相対DN(RDN)を用いて名前が付けられる。エントリのDNは、そのRDNを親DNの前に付けることによって作成される。
機能モデル
LDAPによって採用される機能モデル[RFC2251]は、サーバに対するプロトコル操作を実施するクライアントの1つである。LDAPは、3つのタイプの操作、すなわち、検索、比較などのクエリ操作と、追加、修正、削除、DN修正(エントリ移動)などの更新操作と、バインド、バインド解除、放棄などの接続/解除操作とを定める。追加操作は、個々のエントリをディレクトリに追加するのに用いられ、削除操作は、個々のエントリをディレクトリから削除するのに用いられる。修正操作は、エントリの1つ又は複数の属性について1つ又は複数の値を追加、削除又は置換するのに用いることができる。
ディレクトリは、読み取りアクセスのために最適化されているため、最も一般的なLDAP操作は検索であり、検索は、ディレクトリから情報にアクセスする融通性のある手段を提供する。LDAP検索操作(クエリとも呼ばれる)は、クエリと関連付けられた意味情報を表す以下のパラメータ、すなわち、(i)ベース:DITにおける検索の開始点を定めるDN、(ii)スコープ:{BASE、SINGLE、SUBTREE}が、ベースから検索するためのDIT内の深さを特定する、(iii)フィルタ:一般的な演算子であるAND(&)、OR(|)及びNOT(!)を用いる述語のブール組み合わせであり、検索条件を特定する、(iv)属性:フィルタに適合するエントリからの必要な属性の組、から成る。特殊値「*」は、すべてのユーザ属性を選択することに相当する。ディレクトリにおける各々のエントリは、少なくとも1つの(オブジェクト)クラスに属し、したがって、フィルタ(オブジェクト・クラス=*)は、ディレクトリにおけるすべてのエントリに適合する。LDAPフィルタは、RFC2254[3]の括弧前置表記(parentheses prefixnotation)、例えば(&(sn=Doe)(givenName=John))を用いて表される。述語の例として、(sn=Doe)、(age≧30)、(sn=smith*)があり、“Doe”、“30”及び“smith*”は、それぞれ等価、範囲及び文字列のアサーションを表すアサーション値である。
分散ディレクトリ・モデル
LDAPは、ディレクトリを、各々が1つ又は複数の名前付けコンテキストを保持する複数のサーバに分割することをサポートする。名前付けコンテキストは、接尾辞(suffix)として知られるエントリをルートとし、リーフ・エントリ又は特殊な照会オブジェクトによって終了する、DITのサブツリーである。照会オブジェクトは、他の従属名前付けコンテキスト(subordinate naming context)を保持するサーバを指し示す。DITを指し示す(point down)これらの従属照会(subordinatereferrals)に加えて、サーバは、DITにおいてDITのルートに近いサーバを指し示す(point upwards)上位(又はデフォルト)照会も持つように構成される。照会オブジェクトに遭遇したときには、それらを用いて、クライアントのための照会メッセージが作成される。照会メッセージは、ldap://<host>:<port>/<DN>の形式のLDAP URLを含み、ここでDNは、指し示されている名前付けコンテキストの接尾辞であり、hostは、名前付けコンテキストを含むサーバの、完全に記述された(fully qualified)ドメイン名又はIPアドレスである。クライアントは、照会された1つ又は複数のサーバとコンタクトを取ることによって、操作を進める。
いずれかのディレクトリ操作が実施される前に、対象オブジェクト(例えば、検索要求のベース)を探さなければならない。分散ディレクトリにおいては、これは、「分散名前解析(distributed name resolution)」と呼ばれる。一般に、分散名前解析は、ルート、又は、対象オブジェクトの先祖である接尾辞を有する名前付けコンテキストのいずれかに遭遇するまで、デフォルト照会を介してDITを上方に進む。この後、分散名前解析は、対象オブジェクトに遭遇するまで、従属照会を介してDITを下方に進む。対象が判明すると、対象が発見されたサーバで操作評価段階が開始する。評価段階の間に従属照会に遭遇するサブツリー範囲指定検索(subtree scoped search)は、クライアントに照会メッセージを送信して操作を進める。
図2は、o=xyz名前空間を共同で提供する3つのサーバ、ホストA22、ホストB24及びホストC26を有するシステム20を示す。ホストA22は、o=xyzを接尾辞とする単一の名前付けコンテキストを含み、従属サーバであるホストC26及びホストB24のそれぞれによって保持されるc=inサブツリー及びou=research、c=usサブツリーの下にあるエントリを除く、o=xyzの下にあるすべてのエントリを含む。クライアント28は、ホストB24から、ベースをo=xyzとするサブツリー検索を要求する。ホストB24は、対象を含まないため、デフォルト照会を用いてクライアントにホストA22を照会させる。クライアント28は、対象オブジェクトを含むホストA22にコンタクトする。ホストA22は、保持するパーティションに対して検索を実施し、3つの適合するエントリ及び照会(ホストB24及びホストC26については、従属名前付けコンテキスト)をクライアントに戻す。最後に、クライアント28は、(ベースが修正された)検索要求をホストB24及びホストC26に送信し、両ホストは、残りのエントリを戻す。1つの要求を評価するために、クライアントとサーバとの間で4回のやりとりが必要となる。最悪の場合には、クライアントとサーバとの間で交換されるメッセージの全往復回数は、サーバ数のほぼ2倍に達する。この例は、LDAPにおける照会ベースの分散クエリ評価メカニズムがなぜ遅いのかを示すものである。
他のソリューション
照会を排除する1つの方法は、ITU−T勧告 X.500:Open Systems Interconnection-The Directory:Overview ofconcept,models and services、及び、X.518|9594「Part4:Procedures forDistributed Operationsに記載されるように、ディレクトリ要求の連鎖(chaining)を用いることである。この手法では、照会をクライアントに返送する代わりに、サーバは、照会されたサーバに要求を「連鎖」させ、その結果をクライアントに転送する。しかしながら、一般に、クライアントがサーバに含まれていない対象エントリを要求した場合には、連鎖は非効率となる可能性がある。このような場合には、エントリDNのソリューションが必要であり、連鎖には多数のサーバが関係することがあるため、クライアントに到達する前に幾つかのサーバ間で結果を流すことが必要である。この結果、不要なサーバ間通信が生じる。
照会を排除するより良い方法は、分散ディレクトリのフロント・エンドに「ディレクトリ・プロキシ(これ以降「プロキシ」という)」を有することである。プロキシは、典型的には、クライアントと分散ディレクトリ・サーバとの間に配置される。プロキシは、クライアント要求を傍受するサーバとして機能することも、クエリを評価するための分散ディレクトリ・サーバに対するクライアントとして機能することもできる。プロキシは、分散環境においてディレクトリ内の名前付けコンテキストがどのようにサーバにマッピングされているかに関する知識を有する。このディレクトリ・トポロジ情報を持つように構成されたプロキシを用いて、クライアントの操作を(必要に応じて)サブ操作に分散すること、要求を適切なサーバにルーティングすること、及び、統合された結果をクライアントに送信することができる。現在のプロキシ・ディレクトリ・ソリューション(例えば、オープンソースOpenLDAPサーバ、http://www.openldap.orgの「プロキシ・ディレクトリ」)は、トポロジ情報を持つようにプロキシを構成することに基づいている。
プロキシにおいてこうしたパーティション情報の静的構成を用いることに関する欠点は、分散ディレクトリを構成する各々のサーバが、名前付けコンテキストを追加/除去することを可能にする独自の管理インターフェースを有することである。ディレクトリ・プロトコルは、クライアント(又はこの場合にはプロキシ)への更新の通知をサポートしない。さらなる欠点は、分散ディレクトリ構成に変更を行うための中心となる方法がないことである。例えば、ディレクトリ設定の構成変更は、複数のディレクトリ・サーバにおける変更を必要とすることがある。現在のソリューションに伴うさらなる欠点は、分散ディレクトリを管理することがますます難しくなり、プロキシにおけるトポロジ情報に起因するディレクトリ・クエリの不正確な評価につながることである。
本発明の目的は、クライアントに提供されるプロキシ・サービスに何ら混乱を生じさせることなく、関連する分散ディレクトリの動的トポロジ変更に適合した、方法、プロキシ・サーバ、及びプロキシ・ディレクトリ・システムを提供することである。
本発明のさらなる目的は、プロキシ・サーバを通して分散ディレクトリ・サーバの特定の構成属性の集中管理(動的再構成と呼ばれる)をサポートする、方法、プロキシ・サーバ、及びプロキシ・ディレクトリ・システムを提供することである。
本発明は、ディレクトリ標準の一般的な実装形態では、(パーティショニング及び複製などの)「ディレクトリ分散情報」を、構造化データ(すなわち、ディレクトリ・スキーマに適合するデータ)として、分散ディレクトリ・サービスに関与するディレクトリ・サーバ内に格納するということを利用する。
本発明は、プロキシに格納されたトポロジ情報と実際の分散ディレクトリ・トポロジとの間の双方向同期を提供する。トポロジ変更に対するプロキシの「オンライン」での動作は、トポロジ発見と、一方向の同期を行うトポロジ適応とを実装することによって、達成される。さらに、他の方向の同期を行う動的トポロジ再構成を実装することができる。
実施形態によれば、プロキシ・ディレクトリ・サーバは、起動の直後かつクライアント要求の受信前に、分散ディレクトリ・サーバのトポロジを発見するように構成される。有利な点は、プロキシ・ディレクトリ・サーバは、トポロジ情報を持つように構成されないことである。その代わりに、プロキシ・ディレクトリ・サーバは、プロキシ・サービスを提供することが予想される分散ディレクトリ・サーバの各々への接続情報を持つように構成される。起動の直後に、プロキシ・ディレクトリ・サーバは、ディレクトリ分散情報に対応する構造化データを分散ディレクトリ・サーバから抽出する特定の専用クエリを実行する。
分散ディレクトリの動的トポロジ再構成は、以下のようにプロキシ・サーバを通して達成される:動作中にプロキシ・ディレクトリ・サーバにおいてトポロジ情報に直接加えられた動的構成変更は、ディレクトリ更新動作によって分散ディレクトリ・サーバに伝達される。こうした更新動作は、トポロジ発見段階で発見された分散ディレクトリ・サーバ内の同一の構造化データに適用される。
発見されたトポロジ情報は、分散ディレクトリ・サーバと同期した専用クエリに対応するプロキシ・サーバのフィルタを保持することによって、最新に保たれる。
公知のLDAPディレクトリ情報ツリー及び関連エントリの例を示す。 分散クエリ処理のための典型的なサーバ・システムを示す。 プロキシ・ディレクトリ・システムの概略的なブロック図である。 二分木で表された6つの名前付けコンテキストを示す。 図1から図4の発生器、アーキテクチャ及び方法を実装するのに用いることができるコンピュータ・システムの概略的なブロック図である。
概要
図3は、プロキシ・ディレクトリ・システム40を示す。システム40は、まず、プロキシ・ディレクトリ・サーバ42を含む。プロキシ・ディレクトリ・サーバ42は、クライアント・サーバ44と接続され、クライアント・サーバ44からディレクトリ要求(クライアント要求)を受信する。プロキシ・ディレクトリ・サーバ42はまた、それぞれホスト1、ホスト2及びホスト3として特定される複数のディレクトリ・サーバ46、48、及び50と接続される。プロキシ・ディレクトリ・サーバ42は、プロセッサ62及びデータ・ストア64も含み、その機能は以下に説明される。
ディレクトリ・トポロジの発見
プロキシ・ディレクトリ・サーバ42は、クライアント要求をルーティングすることができるように、以下のトポロジ情報、すなわち、
(i)名前付けコンテキストのサーバへのマッピング
(ii)どのサーバが複製されたコンテキストのマスタであるかの判断
を必要とする。
プロキシ・ディレクトリ・サーバ42は、名前付けコンテキストをサーバにマッピングするために、以下のステップを実施する。
1.プロキシ・ディレクトリ・サーバ42は、データ・ストア64に、ディレクトリ・サーバ46、48及び50についての接続情報(証明書)を格納する。1つの例においては、この情報は、URL(LDAP URL)、識別名(DN)及びパスワードである。起動時に、プロキシ・ディレクトリ・サーバ42のプロセッサ62は、接続情報を用いてディレクトリ・サーバ46、48及び50に(例えばLDAPバインド要求を用いて)接続する。
2.すべてのディレクトリ・サーバ接続が成功した場合には、ブール型局所変数partial_resultsはFALSEに設定される。それ以外の場合には、partial_resultsはTRUEに設定される。コンタクトすることができないディレクトリ・サーバ46、48、及び50については、「Tretry_limit」と定義される試行の制限値に達するまで、所定の間隔「Tretry_interval」で要求が送信される。
3.プロキシ・ディレクトリ・サーバ42は、ディレクトリ・サーバ46、48、50に保持されている名前付けコンテキストを取得するために、接続が成功したディレクトリ・サーバの各々に対してクエリを送信する。プロキシ・ディレクトリ・サーバ42は、base:“”、scope:base、filter:(objectclass=*)、attrs:{namingcontexts}を有するLDAP検索要求を、LDAPディレクトリに対して送信することができる。このクエリは、サブツリーのルートから名前付けコンテキスト属性値を取り出す。この属性は多値であり、そうした値の例としては、cn=users、dc=xyz、dc=com、及び、cn=groups、dc=xyz、dc=comがある。
4.ネーミング・コンテキスト属性値は、ディレクトリ・サーバ46、48、50の各々に保持された名前付けコンテキストのルートをプロキシ・ディレクトリ・サーバ42に与える。しかしながら、名前付けコンテキストは、照会エントリ内で終了する場合には、エントリの完全なサブツリーではないことがある。照会エントリを取り出すために、ディレクトリ・サーバ46、48、50によって戻された名前付けコンテキスト属性の各々の値について、別のクエリが送信される。LDAPクエリ、base:<naming context value>、scope:subtree、filter:(objectclass=referral)、attrs:refを用いて、すべての照会URLを取り出すことができる。
5.ディレクトリ・サーバ46、48、50において定められた名前付けコンテキストが完全に発見されると、この情報を用いてルーティング・テーブルが作成される(及び、データ・ストア64に格納される)。ルーティング・テーブルは、ディレクトリ・サーバ46、48、50内の固有の名前付けコンテキストを、それらの名前付けコンテキストを含むサーバ・ホスト名にマッピングする。名前付けコンテキストは、そのルートと0又は複数の照会とによって、完全に定義される。図2の場合には、名前付けコンテキスト対サーバのテーブルは、以下の通りである。
Figure 0005102841
複製が存在しない場合(上記の例のように)には、ルーティング・テーブルは、名前付けコンテキストとディレクトリ・サーバとの間で1対1マッピングを有することになる。複製が存在する場合には、複数のディレクトリ・サーバ(すなわちサーバ46、48、50)は、所与の名前付けコンテキストを含むことができる。このテーブルは、プロキシ・ディレクトリ・サーバ42において読み取り専用のクライアント要求をルーティングするのに用いることができるが、マスタ情報を含まないため、更新操作のための別のテーブルが必要となる。
6.ディレクトリにおける複製の単位は、名前付けコンテキストである。典型的には、(ディレクトリ・サーバ間の)複製承諾(replication agreement)の詳細は、複製された名前付けコンテキストのルート・エントリと関連付けられたサブエントリ又は属性に格納される。照会を取り出すために用いられるクエリと同様のクエリを用いて、名前付けコンテキストを含むディレクトリ・サーバがその特定の名前付けコンテキスト属性についてのマスタであるかスレーブであるかを指定する複製承諾から、属性を取り出すことができる。
7.マスタ/スレーブ情報が利用可能になると、名前付けコンテキストを、その名前付けコンテキストの「マスタ」となるディレクトリ・サーバ46、48、50にマッピングする、新たなルーティング・テーブルが作成される。プロキシ42は、このテーブルを用いてクライアント44からの更新要求をルーティングすることができる。
前述のように、接続情報とは、ディレクトリ・サーバ46、48、50との通信を認証してセットアップするためにプロキシ・ディレクトリ・サーバ42(又はクライアント)が必要とする証明書(例えば、ユーザネーム、パスワード、又はX509認証)のことをいう。一方、トポロジ情報は、ディレクトリが複数のサーバ間でどのようにパーティショニングされるかに関する知識である。有利な点として、本明細書で開示されるプロキシ・ディレクトリ・サーバ42は、接続情報のみを持つように構成される。プロキシ・ディレクトリ・サーバ42は、上記のステップ3、4、及び6で説明されたように、分散ディレクトリ・サーバに対してクエリを実行することによって、トポロジ情報を発見する。
例示的な実施形態は、プロキシ・ディレクトリ・サーバ42におけるトポロジ発見及び同期を提供する。トポロジ情報は、プロキシ・ディレクトリ・サーバ42に格納されるメタ情報の一例である。従って、プロキシ・ディレクトリ・サーバの主な機能は、クライアント要求をルーティングすることであり、トポロジ情報は、考慮される唯一のメタ情報である。
トポロジ変更への適合
プロキシ・ディレクトリ・サーバ42は、分散ディレクトリ・サーバ46、48、50のトポロジ変更に適合するように、以下の2つの手法のうちの1つを用いることができる。
(i)(名前付けコンテキスト、照会及び複製承諾についての)トポロジ・クエリを周期的にディレクトリ・サーバ46、48、50に送信する、すなわち、トポロジ変更についてディレクトリ・サーバにポーリングする。
(ii)ディレクトリ・サーバが、クエリを行う持続モード(クエリ結果が送信された後も接続が終了せず、その後のコンテンツへの変更はいずれも同じ接続で送信される)をサポートする場合には、トポロジ・クエリは、持続モードを用いて実施される。このモードでは、ディレクトリ・サーバ46、48、50は、トポロジの変更をプロキシ・ディレクトリ・サーバ42に通知する。
これらのモードのいずれかを用いて、プロキシ・ディレクトリ・サーバ42で以下のトポロジ変更を検知することができる。
(i)名前付けコンテキストがディレクトリ・サーバに追加される。
(ii)名前付けコンテキストがディレクトリ・サーバから削除される。
(iii)名前付けコンテキストがディレクトリ・サーバ上で修正される。
ケース(iii)は、名前付けコンテキストを除去して別の名前付けコンテキストを追加することと同等であり、別個に考慮されることはない。
名前付けコンテキストの追加
ディレクトリ・サーバ46、48、50において新たな名前付けコンテキストが追加されるときには、3つの可能性が存在する。
(i)その名前付けコンテキストが別のディレクトリ・サーバ上に存在する。
(ii)その名前付けコンテキストのどの部分も既存の名前付けコンテキストと重複しない。
(iii)その名前付けコンテキストのある部分が1つ又は複数の既存のディレクトリ・サーバと重複する。
ルートDNをrootとし、照会リストをRefsとして持つ新たな名前付けコンテキストが、サーバと呼ばれるホストで発見された場合には、ルーチンADDCONTEXT(以下に説明される)を用いてルーティング情報を更新することができる。「DnForest」は、各々のノードが名前付けコンテキストを表すツリーの集合体である。
各々のノードは、以下のフィールドを含む。
・dn:名前付けコンテキストのルートの識別名
・ServerList:その名前付けコンテキストを有するサーバのリスト
・Leftchild:第1の従属名前付けコンテキストを指す
・Rightchild:ピアの名前付けコンテキストを指す
図4は、二分木で表される6つの名前付けコンテキスト(円で表される)を示す。ノードの名前は、対応する名前付けコンテキストのルートである。名前付けコンテキストは、leftchildがNILではない場合には、1つ又は複数の照会を有する。rightchildは、照会連鎖における他の照会を指すのに用いられる。
Figure 0005102841
説明:
ISSUFFIX(x、y)は、xがyの先祖である場合にはTRUEを戻し、そうでなければFALSEを戻す。
INITTREE(T):ツリーを初期化する。
2行目〜11行目:フォレストDnForest内の各々の名前付けコンテキスト・ツリー全体をループする。各々のツリーTについて、追加される名前付けコンテキストのルートが、ツリーのルートと一致するか又はその子孫であるかを判断する。いずれかの場合には、名前付けコンテキストのルート及びその照会を、関数INSERT(以下に説明される)を用いてTに挿入する。
12行目〜19行目:こうした(名前付けコンテキストのルートを挿入することができる)ツリーが発見されない場合には、名前付けコンテキストを含む新たな名前付けコンテキスト・ツリーNewTreeが作成され、ツリーのリスト(DnForest)に追加される。
以下のルーチンを検討する。
Figure 0005102841
説明:
INSERT(x、y、isroot、server)は、ノードxをyの下のサブツリーに挿入する。挿入されているノードが名前付けコンテキストのルートである場合には、isrootはTRUEに設定され、serverは名前付けコンテキストを含むホストである。
INITLIST:リストを初期化する。
1行目〜2行目:yの下にノードが存在しない場合には、xをyのleftchildにすることによってyの下に置く。
5行目〜18行目:yの従属コンテキストを通して反復し、追加されているノードを従属コンテキストのルートと比較する。6行目〜9行目は、追加されているノードが既に存在しているケース(ケース1)を扱う。このケースでは、追加されているノードがコンテキストのルートである場合には、名前付けコンテキストを含むサーバは、コンテキストのServerListに追加される。10行目〜11行目は、xがyの従属コンテキストの先祖であるケース(ケース2)を扱う。12行目〜16行目は、xがyの従属コンテキストの子孫であるケース(ケース3)を扱う。これは、INSERTへの再帰呼び出しを含む。17行目は、残りのケース(ケース4)を扱う。ケース2及び4の場合には、19行目〜22行目は実際にノード挿入を行う。
名前付けコンテキストの除去
名前付けコンテキストの除去は、以下のルーチンによって実施される。
Figure 0005102841
説明:
ルーチンREMOVECONTEXT及びルーチンREMOVEは、ADDCONTEXT及びINSERTに類似している。引数の説明は、root、Refsが除去される名前付けコンテキストを指すこと以外は同じである。
動的トポロジ再構成
プロキシ・ディレクトリ・サーバ42において構成された接続情報は、構造化データとして格納することができ、動作中に修正することができる。これにより、ディレクトリ・サーバ46、48、50についての接続情報を追加/削除することによって新たなサーバの追加/除去をプロキシすることが可能になる。プロキシ・ディレクトリ・サーバ42は、接続情報の変更を定期的にチェックし、接続情報が追加/修正された分散ディレクトリ・サーバ46、48、50に接続/再接続する。
プロキシ構成からディレクトリ・サーバ46、48、50を動的に追加及び除去することとは別に、プロキシ42を介した分散ディレクトリのトポロジ変更も行うことができる。ディレクトリ・サーバ46、48、50においてトポロジ構成の変更が必要な場合には、複数のディレクトリ・サーバの変更を手動で組み込むのではなく、プロキシ・ディレクトリ・サーバ42に格納されたトポロジ情報を直接変更することができる。プロキシ・ディレクトリ・サーバ42は、次に追加、削除及び修正などのディレクトリ更新操作を用いて、分散ディレクトリ・サーバの構造化データに対応する更新を行う。
コンピュータ・プラットフォーム
図5は、本明細書で説明される方法を実施するのに用いることができるコンピュータ・システム100の概略的なブロック図を示す。より具体的には、コンピュータ・システム100は、プログラム・コードから語彙素(lexemes)を生成し、2つ又はそれ以上のコード本体の間のコード変更記述を生成するようにプログラムされたコンピュータ・ソフトウェアを実行する。コンピュータ・ソフトウェアは、コンピュータ・システム100にインストールされた、MS Windows2000TM、MS WindowsXPTM、又はLinuxTMなどのオペレーティング・システムの下で動作する。
コンピュータ・ソフトウェアは、プログラムされた論理命令の組を含み、これらの論理命令の組は、命令によって指定される所定の機能を実施するようにコンピュータ・システム100に命令するために、コンピュータ・システム100によって実行することができる。コンピュータ・ソフトウェアは、直接又は別の言語、コード若しくは表記への変換後に、特定の機能を互換性のある情報処理システムに実施させるように意図された命令の組を含む、いずれかの言語、コード又は表記で表すか又は記録することができる。
コンピュータ・ソフトウェア・プログラムは、コンピュータ言語による命令文を含む。コンピュータ・プログラムは、コンパイラを用いて処理し、オペレーティング・システムによる実行に適したバイナリ形式にすることができる。コンピュータ・プログラムは、前述の方法の特定のステップを実施する種々のソフトウェア・コンポーネント又はコードを含むようにプログラムされる。
コンピュータ・システム100のコンポーネントは、コンピュータ120と、入力装置110、115と、ビデオ・ディスプレイ190とを含む。コンピュータ120は、処理ユニット140と、メモリ・ユニット150と、入力/出力(I/O)インターフェース160と、通信インターフェース165と、ビデオ・インターフェース145と、記憶デバイス155とを含む。コンピュータ120は、前記のユニット、インターフェース及びデバイスのいずれかのうちの2つ以上を含むものとすることができる。
処理ユニット140は、オペレーティング・システムとそのオペレーティング・システムの下で動作するコンピュータ・ソフトウェアとを実行する1つ又は複数のプロセッサを含むことができる。メモリ・ユニット150は、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュ・メモリ、及び/又は、処理ユニット140の命令の下で用いられる当該技術分野で公知の他のいずれかのタイプのメモリを含むことができる。
ビデオ・インターフェース145は、ビデオ・ディスプレイ190に接続され、ビデオ・ディスプレイ190に表示するためのビデオ信号を提供する。コンピュータ120を操作するためのユーザ入力は、それぞれキーボード及びマウスを含む入力デバイス110及び115を介して提供される。記憶デバイス155は、ディスク・ドライブ又は他のいずれかの適切な不揮発性記憶媒体を含むものとすることができる。
コンピュータ120のコンポーネントの各々は、データ・バス、アドレス・バス及びコントロール・バスを含むバス130に接続され、コンポーネントは、バス130を介して互いに通信できるようになる。コンピュータ・システム100は、インターネットとして表されるネットワーク180への通信チャネル185を用いて、通信インターフェース165を介して、1つ又は複数の他の同様のコンピュータに接続することができる。
コンピュータ・ソフトウェア・プログラムは、コンピュータ・プログラム製品として提供し、携帯記憶媒体上に記憶することができる。この場合には、コンピュータ・ソフトウェア・プログラムは、記憶デバイス155からコンピュータ・システム100によってアクセスすることができる。あるいは、コンピュータ・ソフトウェア・プログラムは、コンピュータ120によってネットワーク180から直接アクセスするようにしてもよい。いずれの場合にも、ユーザは、キーボード110及びマウス115を用いてコンピュータ・システム100と対話し、コンピュータ120上で実行されるプログラムされたコンピュータ・ソフトウェアを操作することができる。
コンピュータ・システム100は、例示を目的として説明された。従って、前述の説明は、本明細書に説明された方法及びコンピュータ・プログラム製品を実現するのに適した、パーソナル・コンピュータ(PC)などの特定のタイプのコンピュータ・システムの例に関するものである。コンピュータ・プログラミング技術分野の当業者であれば、代替的な構成又は別のタイプのコンピュータ・システムを用いて、本明細書で説明された方法及びコンピュータ・プログラム製品を実現できることが容易に理解できるだろう。
方法、システム及びコンピュータ・プログラム製品の実施形態は、本明細書において、コード変更記述を生成するための標準的なプログラム・コードと配置されたプログラム・コードとの比較に関連して説明された。前述の詳細な説明は、例示的な実施形態のみを提示しており、本発明の範囲、適用性又は構成を限定することを意図するものではない。むしろ、例示的な実施形態の説明は、本発明の実施形態を実施するための実施可能要件を当業者に提供するものである。特許請求の範囲に記載される本発明の趣旨及び範囲から逸脱することなく、要素の機能及び配置を様々に変更することができる。
本明細書で言及される特定の特徴、要素及びステップが、本発明が関連する技術分野において公知の均等物を有する場合には、こうした均等物は、個々に説明された場合でも本明細書に組み込まれるものと見なされる。さらに、特定の実施形態に関して言及された特徴、要素及びステップは、特に記載のない限り必要に応じて他の実施形態のいずれかの一部を形成することができる。

Claims (13)

  1. 1つ又は複数の分散ディレクトリ・サーバ(46、48、50)をプロキシするプロキシ・ディレクトリ・サーバ(42)を、前記プロキシ・ディレクトリ・サーバを起動した直後かつ前記プロキシ・ディレクトリ・サーバがクライアント要求を受信する前に、構成するための方法であって、
    前記プロキシ・ディレクトリ・サーバに接続情報を格納するステップであって、前記接続情報は、前記ディレクトリ・サーバとの通信を認証してセットアップするために前記プロキシ・ディレクトリ・サーバが必要とする証明を含む、ステップと、
    前記接続情報を用いて前記プロキシ・ディレクトリ・サーバを前記分散ディレクトリ・サーバのうちの1つ又は複数と接続するステップと、
    前記分散ディレクトリ・サーバのうち接続に成功した分散ディレクトリ・サーバについて、前記接続された分散ディレクトリ・サーバのトポロジを作成するために構造化データを抽出するクエリを実行するステップであって、前記トポロジは、ディレクトリが複数のディレクトリ・サーバ間でどのようにパーティショニングされるかに関する情報を含む、ステップとを含み、
    各々の前記接続された分散ディレクトリ・サーバについての前記構造化データは、それぞれの前記分散ディレクトリ・サーバへの名前付けコンテキストのマッピングと、前記分散ディレクトリ・サーバのどれが複製されたコンテキストのマスタであるかに関する情報とを含む、
    方法。
  2. 前記接続情報は、Universal Resource Locator、識別名、及びパスワードを含む、請求項1に記載の方法。
  3. 前記クエリは、それぞれの前記分散ディレクトリ・サーバによって以前に戻された名前付けコンテキスト属性の各々の値についてのさらに別のクエリを含む、請求項1に記載の方法。
  4. 前記クエリの結果に変更が発生したときに前記トポロジを再構成するステップをさらに含む、請求項1に記載の方法。
  5. 結果の変更の前記発生は、クエリを定期的に繰り返すことによって判断される、請求項4に記載の方法。
  6. 結果の変更の前記発生は、前記分散ディレクトリ・サーバからの通知によって判断される、請求項4に記載の方法。
  7. 前記分散ディレクトリ・サーバのトポロジを動的に再構成するステップをさらに含む、請求項1に記載の方法。
  8. 前記再構成は、前記分散ディレクトリ・サーバに格納された前記構造化データを修正するように構成されたディレクトリ更新操作によって達成される、請求項7に記載の方法。
  9. 前記更新された構造化データは、それぞれの前記分散ディレクトリ・サーバへの名前付けコンテキストのマッピング、及び、前記分散ディレクトリ・サーバのどれが複製されたコンテキストのマスタであるかを表す、請求項8に記載の方法。
  10. 前記再構成は、前記分散ディレクトリ・サーバに新たなサーバを追加することと、前記分散ディレクトリ・サーバから既存のサーバを除去することとのうちの少なくとも一方によって達成される、請求項7に記載の方法。
  11. 前記接続情報を修正するステップと、
    再構成された分散ディレクトリ・サーバのトポロジに対応する構造化データを抽出するために前記クエリを再実行するステップと、
    をさらに含む、請求項1に記載の方法。
  12. 請求項1から請求項11までの請求項のいずれかに記載の前記方法のすべてのステップを実行するのに適した手段を含むシステム。
  13. コンピュータ・システム上で実行されたときに、請求項1から請求項11までの請求項のいずれかに記載の前記方法のすべてのステップを実行するための命令を含むコンピュータ・プログラム。
JP2009539748A 2006-12-07 2007-12-05 プロキシを伴う分散ディレクトリのための方法、プロキシ・サーバ、及びプロキシ・ディレクトリ・システム Expired - Fee Related JP5102841B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/567,803 US7562075B2 (en) 2006-12-07 2006-12-07 Change approvals for computing systems
US11/567,803 2006-12-07
PCT/EP2007/063371 WO2008068291A2 (en) 2006-12-07 2007-12-05 Automatic discovery and reconfiguration of dynamic topology changes in directory services

Publications (2)

Publication Number Publication Date
JP2010511948A JP2010511948A (ja) 2010-04-15
JP5102841B2 true JP5102841B2 (ja) 2012-12-19

Family

ID=39492656

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009539748A Expired - Fee Related JP5102841B2 (ja) 2006-12-07 2007-12-05 プロキシを伴う分散ディレクトリのための方法、プロキシ・サーバ、及びプロキシ・ディレクトリ・システム

Country Status (6)

Country Link
US (2) US7562075B2 (ja)
EP (1) EP2102765A2 (ja)
JP (1) JP5102841B2 (ja)
KR (1) KR20090079245A (ja)
CN (1) CN101563686B (ja)
WO (1) WO2008068291A2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0408868D0 (en) 2004-04-21 2004-05-26 Level 5 Networks Ltd Checking data integrity
GB0506403D0 (en) * 2005-03-30 2005-05-04 Level 5 Networks Ltd Routing tables
EP3217285B1 (en) 2005-03-10 2021-04-28 Xilinx, Inc. Transmitting data
GB0505300D0 (en) 2005-03-15 2005-04-20 Level 5 Networks Ltd Transmitting data
GB0600417D0 (en) 2006-01-10 2006-02-15 Level 5 Networks Inc Virtualisation support
US8402147B2 (en) * 2007-04-10 2013-03-19 Apertio Limited Nomadic subscriber data system
US9112873B2 (en) 2007-04-10 2015-08-18 Apertio Limited Alias hiding in network data repositories
US8782085B2 (en) * 2007-04-10 2014-07-15 Apertio Limited Variant entries in network data repositories
US8042153B2 (en) * 2008-01-09 2011-10-18 International Business Machines Corporation Reducing overhead associated with distributed password policy enforcement operations
US8347347B2 (en) * 2008-01-09 2013-01-01 International Business Machines Corporation Password policy enforcement in a distributed directory when policy information is distributed
US8045486B2 (en) * 2008-05-15 2011-10-25 Solarwinds Worldwide, Llc Discovery and visualization of active directory domain controllers in topological network maps
US8423581B2 (en) * 2009-10-07 2013-04-16 International Business Machines Corporation Proxy support for special subtree entries in a directory information tree using attribute rules
US20110153563A1 (en) * 2009-12-22 2011-06-23 International Business Machines Corporation Enhanced replication of databases
FR2962621A1 (fr) * 2010-07-08 2012-01-13 Alcatel Lucent Acces confidentiel ou protege a un reseau de noeuds repartis sur une architecture de communication a l'aide d'un serveur de topologie
US20140006427A1 (en) * 2011-03-14 2014-01-02 Telefonaktiebolaget LM Ericsson (publ) a Corporation Ldap operation for multiple directory entries
WO2013000165A1 (en) * 2011-06-30 2013-01-03 France Telecom Research & Development Beijing Company Limited Data routing
US8645316B2 (en) * 2011-08-16 2014-02-04 International Business Machines Corporation Storing records in databases in a randomized manner to effectively utilize database servers
CN102867029B (zh) * 2012-08-27 2016-06-22 浪潮(北京)电子信息产业有限公司 一种管理分布式文件系统目录的方法及分布式文件系统
CN102982141B (zh) * 2012-11-20 2016-01-20 北京搜狐新媒体信息技术有限公司 一种实现分布式数据库代理的方法及装置
US10511566B2 (en) 2013-11-11 2019-12-17 Amazon Technologies, Inc. Managed directory service with extension
US10908937B2 (en) * 2013-11-11 2021-02-02 Amazon Technologies, Inc. Automatic directory join for virtual machine instances
US9407615B2 (en) 2013-11-11 2016-08-02 Amazon Technologies, Inc. Single set of credentials for accessing multiple computing resource services
US9736159B2 (en) 2013-11-11 2017-08-15 Amazon Technologies, Inc. Identity pool bridging for managed directory services
US10257184B1 (en) 2014-09-29 2019-04-09 Amazon Technologies, Inc. Assigning policies for accessing multiple computing resource services
US10509663B1 (en) * 2015-02-04 2019-12-17 Amazon Technologies, Inc. Automatic domain join for virtual machine instances
US10251060B2 (en) * 2016-09-27 2019-04-02 Intel Corporation Modifying access to a service based on configuration data
CN108021472B (zh) * 2017-11-28 2021-02-02 厦门市美亚柏科信息股份有限公司 ReFS文件系统的格式化恢复方法及存储介质
CN109710693A (zh) * 2018-12-26 2019-05-03 北京北信源信息安全技术有限公司 一种ldap域数据同步的递归实现方法及系统
CN114650251B (zh) * 2022-03-18 2024-02-20 北京百度网讯科技有限公司 路由表构建方法、装置、设备和介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864862A (en) * 1996-09-30 1999-01-26 Telefonaktiebolaget Lm Ericsson (Publ) System and method for creating reusable components in an object-oriented programming environment
US5864852A (en) 1996-04-26 1999-01-26 Netscape Communications Corporation Proxy server caching mechanism that provides a file directory structure and a mapping mechanism within the file directory structure
US6553368B2 (en) 1998-03-03 2003-04-22 Sun Microsystems, Inc. Network directory access mechanism
US6085188A (en) 1998-03-30 2000-07-04 International Business Machines Corporation Method of hierarchical LDAP searching with relational tables
EP1009130A1 (en) 1998-12-11 2000-06-14 International Business Machines Corporation Distributed directory services for locating network resources in a very large packet switching network
US6629132B1 (en) * 1998-12-23 2003-09-30 Novell, Inc. Predicate indexing of data stored in a computer with application to indexing cached data
US6345266B1 (en) * 1998-12-23 2002-02-05 Novell, Inc. Predicate indexing for locating objects in a distributed directory
US6564370B1 (en) * 1999-05-06 2003-05-13 International Business Machines Corporation Attribute signature schema and method of use in a directory service
US6665674B1 (en) * 2000-02-02 2003-12-16 Nortel Networks Limited Framework for open directory operation extensibility
US6609121B1 (en) * 2000-07-17 2003-08-19 International Business Machines Corporation Lightweight directory access protocol interface to directory assistance systems
US7024476B1 (en) * 2000-09-13 2006-04-04 Canon Kabushiki Kaisha Directory-enabled device management
US6769011B1 (en) * 2000-11-08 2004-07-27 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for scalable event notification in lightweight directory access protocol systems
US6625615B2 (en) * 2000-12-19 2003-09-23 International Business Machines Corporation Data processing system and method for multi-level directory searches
US7313598B1 (en) * 2002-06-13 2007-12-25 Cisco Technology, Inc. Method and apparatus for partial replication of directory information in a distributed environment
US7389337B2 (en) * 2003-09-26 2008-06-17 Nortel Networks Limited Management of network elements using a proxy agent
KR100562907B1 (ko) * 2003-12-18 2006-03-21 삼성전자주식회사 미디어 컨텐츠의 통합 관리 장치 및 그 방법
US7315854B2 (en) * 2004-10-25 2008-01-01 International Business Machines Corporation Distributed directory replication
US8838795B2 (en) * 2004-12-03 2014-09-16 At&T Intellectual Property I, L.P. System, method, apparatus, and product for resource sharing
US7617257B2 (en) 2004-12-03 2009-11-10 Oracle International Corporation System for persistent caching of LDAP metadata in a cluster LDAP server topology
US20060235850A1 (en) * 2005-04-14 2006-10-19 Hazelwood Kristin M Method and system for access authorization involving group membership across a distributed directory

Also Published As

Publication number Publication date
WO2008068291A3 (en) 2008-09-25
US7562075B2 (en) 2009-07-14
CN101563686B (zh) 2012-05-30
US20080140618A1 (en) 2008-06-12
JP2010511948A (ja) 2010-04-15
EP2102765A2 (en) 2009-09-23
CN101563686A (zh) 2009-10-21
US20080189256A1 (en) 2008-08-07
WO2008068291A2 (en) 2008-06-12
KR20090079245A (ko) 2009-07-21
US8285753B2 (en) 2012-10-09

Similar Documents

Publication Publication Date Title
JP5102841B2 (ja) プロキシを伴う分散ディレクトリのための方法、プロキシ・サーバ、及びプロキシ・ディレクトリ・システム
US8423581B2 (en) Proxy support for special subtree entries in a directory information tree using attribute rules
US20030088656A1 (en) Directory server software architecture
US7188094B2 (en) Indexing virtual attributes in a directory server system
US6470332B1 (en) System, method and computer program product for searching for, and retrieving, profile attributes based on other target profile attributes and associated profiles
Bowman et al. Harvest: A scalable, customizable discovery and access system
EP0955761B1 (en) Method and server for accessing a network directory
US6973463B2 (en) Replication architecture for a directory server
US8326899B2 (en) Method and system for improving write performance in a supplemental directory
US20080126434A1 (en) Protocol virtualization for a network file system
JP2003203029A (ja) スイッチ方法、装置およびプログラム
US7877457B2 (en) Peer to peer gateway
JP2003030079A (ja) コンテンツ共有集合とそれを構成する装置が実行するソフトウェアプログラム
US20080040365A1 (en) Table arrangement for a directory service and for related method and facilitating queries for the directory
US20050033795A1 (en) Identifying resource and data instances in management systems
US20090234805A1 (en) Sorted search in a distributed directory environment using a proxy server
EP1565839A2 (en) Index server support to file sharing applications
Kuz et al. The globe infrastructure directory service
JPH11296456A (ja) サーバ統合用プロキシサーバ
US20030088614A1 (en) Directory server mapping tree
JP3559471B2 (ja) 設定情報サーバ装置、利用者計算機及び設定情報配送方法
JP2000517453A (ja) 分散型オブジェクト指向計算用システム開発ツール
Flater et al. Alibi: A novel approach to resource discovery
Kong et al. DCE Directory Services
AU712451B2 (en) X.500 system and methods

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120717

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120904

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120928

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees