説明

非管理ネットワークにおける共通識別情報のアカウント同期

グループ内のコンピュータ間での共通ユーザ・アクセスおよびセキュアなリソース共有のための、サーバを持たない非管理セキュア・ワークグループをサポートするプラットフォームである。ユーザ・アカウントの同期は、非管理セキュア・ワークグループの各コンピュータにおいてアカウントを複製および修正することによって行われる。アカウント情報の変更は、非管理セキュア・ワークグループ内でコンピュータから他のコンピュータに宣伝される。非管理セキュア・ワークグループのコンピュータの1つで、その変更が現在のアカウント情報に反映されていないことが判明した場合、そのコンピュータは、更新されたアカウント情報を、宣伝する側のコンピュータに要求する。異なるコンピュータにおけるユーザ・アカウントの間にコンフリクトがあれば、これが解決されてから、非管理セキュア・ワークグループ内のユーザ・アカウントの同期が行われる。さらに、アプリケーション・プログラム・インターフェース(API)により、アプリケーションは、ネットワーク・コンピュータ・システムおよび非管理セキュア・ワークグループのプロパティをクエリすること、および非管理セキュア・ワークグループに参加することが可能である。

【発明の詳細な説明】
【背景技術】
【0001】
コンピュータ・ネットワーク技術の進歩に伴い、大規模コンピュータ・ネットワークは、ネットワークのユーザ・アクセスおよびセキュリティを管理する先進的な管理方式によって、非常に複雑になっている。たとえば、大規模コンピュータ・ネットワークは、典型的には、複数のドメインを有し、各ドメインは、そのドメインにあるマシンに対するユーザ名、パスワード、およびパーミッション(permissions)のデータベースを収容するプライマリ・ドメイン・コントローラを有する。
【0002】
これに対し、家庭内ネットワークや小規模事業所ネットワークのような小規模ローカル・ネットワークは、どちらかといえば単純なままであり、先進的とは言えない。小規模ネットワークのほとんどは、大規模ネットワークにおけるドメイン・コントローラのような、集中方式でアカウント情報を処理する専用エンティティがないという点で、非管理状態である。そのような非管理ネットワーク(unmanaged network)におけるマシンは、通常、同じネットワーク・ハブに接続され、ゆるいピア・ツー・ピア・グループ(loose peer-to-peer group)(「ワークグループ」と呼ばれることもある)として動作する。これは、ユーザがそのワークグループ内でプリンタや共有フォルダのようなものを見つけることを支援することのみを意図したグループである。それ以外では、各マシンは、スタンド・アロン・マシンのように動作する。したがって、非管理ネットワークは、わずかの付加価値しかユーザに提供しない。
【発明の開示】
【発明が解決しようとする課題】
【0003】
非管理ネットワークには、効果的なセキュリティ管理は存在せず、複数のマシン同士は、ネットワーク・アクセスおよびリソース共有を推進するための統合が良好に行われていない。ローカル・アカウントの作成は、マシンごとに手動で行われなければならず、そのワークグループ内の異なるマシン上のアカウントには関係が存在しない。したがって、ユーザは、1つのマシンにはログオンできても、そのユーザのアカウントが別のマシンにおいてセットアップされていないと言う理由で、同じネットワークにある別のマシンにはログオンできない場合がある。そこには、ネットワーク内のコンピュータを列挙する、信頼できるメカニズムは存在しない。また、それらのマシン上のリソースを共有することは、実装したり、維持したりすることが困難である場合があり、セキュリティを与えるための管理も困難である場合がある。
【課題を解決するための手段】
【0004】
ネットワーク・コンピュータ・システムが、1つのコンピュータから別のコンピュータに移動する可能性のあるユーザをサポートするのは、よくあることである。発明が解決しようとする課題に鑑みて、本発明は、コンピュータ・ネットワーク上の複数のコンピュータを、サーバを持たない非管理セキュア・ワークグループ(unmanaged secured workgroup)に編成するためのプラットフォームを提供する。この非管理セキュア・ワークグループは、グループ内のコンピュータ間での共通ユーザ・アクセスおよびセキュアなリソース共有を可能にする。本発明の態様によれば、非管理セキュア・ワークグループのコンピュータの1つでユーザ・アカウント情報の修正または追加が行われると、非管理セキュア・ワークグループの各コンピュータにおいてユーザ・アカウントの同期が行われる。非管理セキュア・ワークグループ内のアカウント情報を同期させるために、ユーザ・アカウントを複製または修正することが可能である。
【0005】
本発明の別の態様によれば、非管理セキュア・ワークグループにおいて、コンピュータが他のコンピュータにアカウント情報の変更を宣伝(advertise)する。非管理セキュア・ワークグループのコンピュータの1つで、その変更が現在のアカウント情報に反映されていないことが判明した場合、そのコンピュータは、更新されたアカウント情報を、宣伝する側のコンピュータに要求することが可能である。
【0006】
本発明の別の態様によれば、本発明は、非管理セキュア・ワークグループ内の更新されたユーザ・アカウントを同期させる前に、ユーザ・アカウントのコンフリクトが存在するかどうかを判定する。コンフリクトが解決されると、非管理セキュア・ワークグループの各コンピュータにおいて、変更されたユーザ・アカウントが複製される。
【0007】
本発明の別の態様によれば、アプリケーションが、ネットワーク・コンピュータ・システムおよび非管理セキュア・ワークグループのプロパティをクエリすることを、アプリケーション・プログラム・インターフェース(API)が可能にする。本発明の例示的実施形態では、APIが、コンピュータ・ネットワーク内の非管理セキュア・ワークグループのリストを提供し、指定された非管理セキュア・ワークグループに関する情報を提供し、非管理セキュア・ワークグループ内の指定されたコンピュータに関する情報を提供し、新しい非管理セキュア・ワークグループを作成し、非管理セキュア・ワークグループにコンピュータが参加(join)したり、非管理セキュア・ワークグループからコンピュータが離脱したりすることを許可する。
【0008】
本発明の別の態様によれば、要求する側のコンピュータが、非管理セキュア・ワークグループ内のメンバ・コンピュータからの信頼を確立することによって、非管理セキュア・ワークグループに参加する。そのメンバ・コンピュータは、要求する側のコンピュータを認証する。要求する側のコンピュータは、自己署名証明書を用いて、そのメンバ・コンピュータ上にアカウントを確立する。その後、要求する側のコンピュータは、非管理セキュア・ワークグループに関する情報を格納し、自身を非管理セキュア・ワークグループのメンバとしてパブリッシュする。
【0009】
この「発明の開示」は、後で「発明を実施するための最良の形態」において詳述される概念をひととおり簡潔に紹介するために設けられたものである。この「発明の開示」は、請求の範囲に記載された対象の重要な特徴または必須の特徴を識別することを意図したものではなく、請求の範囲に記載された対象の範囲を決定することを助けるものとして用いられることを意図したものでもない。
【0010】
上述の本発明の概要、ならびに以下の、本発明の例示的実施形態の詳細説明は、添付図面と併せて読むことにより、よりよい理解が可能である。添付図面は、請求の範囲に記載された本発明に関する限定としてではなく、例として含まれている。
【発明を実施するための最良の形態】
【0011】
類似の参照符号が類似の要素を表す添付図面では、本発明を、好適なコンピューティング環境に実装されるものとして例示している。必須ではないが、本発明の説明は、パーソナル・コンピュータで実行される、コンピュータ実行可能命令(プログラム・モジュールなど)の一般コンテクストで行うものとする。一般に、プログラム・モジュールは、特定のタスクを実行したり、特定の抽象データ型を実装したりする、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。さらに、当業者であれば、本発明が、他のコンピュータ・システム構成(たとえば、ハンドヘルド装置、マルチプロセッサ・システム、マイクロ・プロセッサ・ベースの、またはプログラム可能な、家庭用電子機器、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータなど)でも実施可能であることを理解されよう。本発明は、通信ネットワークでリンクされたリモート処理装置でタスクが実行される分散コンピューティング環境で実施されることが可能である。分散コンピューティング環境では、プログラム・モジュールがローカルおよびリモートの両方のメモリ・ストレージ装置に格納されることが可能である。
【0012】
以下の用語の定義は、詳細説明の理解に役立つように示したものである。
・ドメイン:ドメイン・コントローラ(たとえば、サーバ)によって集中管理されるネットワーク・コンピュータのグループ。ドメイン・コントローラは、そのドメインについてのユーザ・アクセスおよびセキュリティを管理する。ドメイン・コントローラは、通常、そのドメインにあるコンピュータ(マシン)に対するユーザ名(user name)、パスワード(password)、およびパーミッション(permission)のデータベースを収容する。
・非管理セキュア・ワークグループ:サーバなしでユーザ・アクセスおよびセキュリティが提供される、ネットワーク・コンピュータのピア・ツー・ピア・グループ。通常、ピア・ツー・ピア・グループ内の各コンピュータ(マシン)にアカウント・データ構造体が保持される。概念的には、非管理セキュア・ワークグループを、ローカル・ネットワーク内に存在するコンピュータのセキュア・グループと見ることが可能である。この中では、コンピュータ同士が協同して、外部のユーザおよびマシンによってありうる侵入から自身らを保護する一方、セキュア・グループ内のユーザは、そのグループのマシンおよびリソースにアクセスする際に高度の免除および連携(freedom and cooperation)が得られる。
【0013】
以下では、本発明の例示的態様による小規模非管理セキュア・ワークグループで使用可能な汎用コンピューティング装置について説明する。図1は、汎用コンピューティング装置を、通常のパーソナル・コンピュータ20のかたちで示したものであり、これには、処理ユニット21、システム・メモリ22、および、システム・メモリをはじめとする様々なシステム・コンポーネントを処理ユニット21に結合するシステム・バス23が含まれる。システム・バス23は、様々なバス・アーキテクチャのうちの任意のものを用いるメモリバスまたはメモリ・コントローラ、ペリフェラル・バス、およびローカル・バスを含む、様々なタイプのバス構造のうちの任意のものであってよい。システム・メモリは、読み出し専用メモリ(ROM)24およびランダム・アクセス・メモリ(RAM)25を含む。起動時などにパーソナル・コンピュータ20内の各要素間の情報転送を支援する基本ルーチンを収容する基本入出力システム(BIOS)26が、ROM24に格納される。パーソナル・コンピュータ20はさらに、ハードディスク60の読み書きを行うハードディスク・ドライブ27、リムーバブル磁気ディスク29の読み書きを行う磁気ディスク・ドライブ28、およびCD−ROMや他の光媒体のようなリムーバブル光ディスク31の読み書きを行う光ディスク・ドライブ30を含む。
【0014】
ハードディスク・ドライブ27、磁気ディスク・ドライブ28、および光ディスク・ドライブ30は、それぞれ、ハードディスク・ドライブ・インターフェース32、磁気ディスク・ドライブ・インターフェース33、および光ディスク・ドライブ・インターフェース34によってシステム・バス23に接続される。ドライブとそれに関連付けられたコンピュータ可読媒体は、パーソナル・コンピュータ20用のコンピュータ可読命令、データ構造体、プログラム・モジュール、および他のデータの不揮発性ストレージを提供する。本明細書に記載の例示的環境では、ハードディスク60、リムーバブル磁気ディスク29、およびリムーバブル光ディスク31を用いているが、当業者であれば、コンピュータによるアクセスが可能なデータを格納することができる他のタイプのコンピュータ可読媒体(たとえば、磁気カセット、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、ベルヌーイ・カートリッジ、ランダム・アクセス・メモリ、読み出し専用メモリ、ストレージ・エリア・ネットワークなど)も、この例示的オペレーティング環境において使用可能であることを理解されよう。
【0015】
ハードディスク60、磁気ディスク29、光ディスク31、ROM24、またはRAM25には、オペレーティング・システム35、1つまたは複数のアプリケーション・プログラム36、他のプログラム・モジュール37、およびプログラム・データ38を含む、いくつかのプログラム・モジュールを格納することが可能である。ユーザは、キーボード40やポインティング装置42などの入力装置を介してパーソナル・コンピュータ20にコマンドおよび情報を入力することが可能である。他の入力装置(図示せず)として、マイク、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、スキャナなども可能である。これらおよび他の入力装置は、システム・バスと結合されているシリアル・ポート・インターフェース46を介して処理ユニット21に接続されることが多いが、他のインターフェース(たとえば、パラレル・ポート、ゲーム・ポートまたはユニバーサル・シリアル・バス(USB)、またはネットワーク・インターフェース・カードなど)で接続されることも可能である。モニタ47または他のタイプのディスプレイ装置も、ビデオ・アダプタ48のようなインターフェースを介してシステム・バス23に接続される。モニタに加えて、パーソナル・コンピュータは、典型的には、他のペリフェラル出力装置(図示せず)(スピーカやプリンタなど)を含む。
【0016】
パーソナル・コンピュータ20は、ネットワーク環境において、1つまたは複数のリモート・コンピュータ(リモート・コンピュータ49など)との論理接続を用いて動作することが可能である。リモート・コンピュータ49は、別のパーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の共有ネットワークノードであってよく、典型的には、パーソナル・コンピュータ20に対して相対的な上述の要素の多数またはすべてを含むが、図1には、メモリ・ストレージ装置50のみを示した。図1に示された論理接続は、ローカル・エリア・ネットワーク(LAN)51およびワイド・エリア・ネットワーク(WAN)52を含む。そのようなネットワーキング環境は、オフィス、事業体規模のコンピュータ・ネットワーク、イントラネット、およびインターネットでは、ごく一般的なものである。
【0017】
パーソナル・コンピュータ20は、LANネットワーキング環境で使用された場合には、ネットワーク・インターフェースまたはアダプタ53を介してローカル・ネットワーク51と接続される。WANネットワーク環境で使用された場合には、パーソナル・コンピュータ20は、典型的には、モデム54または他の、WAN52経由の通信を確立する手段を含む。モデム54は、内蔵でも外付けでもよく、シリアル・ポート・インターフェース46を介してシステム・バス23に接続される。ネットワーク環境では、パーソナル・コンピュータ20またはその一部に対して相対的に示されているプログラム・モジュールは、リモート・メモリ・ストレージ装置に格納可能である。図示されたネットワーク接続は例示的であって、コンピュータ間の通信リンクを確立する他の手段を用いることも可能であることを理解されたい。
【0018】
以下の説明では、特に断らない限り、操作と、1つまたは複数のコンピュータによって実行される動作のシンボリック表現とに関して、本発明を説明する。したがって、そのような操作と(コンピュータによって実行される、と称されることもある)動作とは、コンピュータの処理ユニットによる、データを構造体形式で表現する電気信号の操作を含むことを理解されたい。この操作は、データを変換するか、コンピュータのメモリ・システム内の場所に保持する。これによって、コンピュータの動作は、当業者であればよく理解される形式で、再構成もしくは変更される。データが保持されるデータ構造は、データのフォーマットで定義される特定のプロパティを有する、メモリの物理的位置である。しかしながら、本発明は前述のコンテクストで説明されるが、これは限定的であることを意図しておらず、当業者であれば理解されるように、以下で説明する操作および動作は、ハードウェアで実装されることも可能である。
【0019】
図2は、本発明の例示的実施形態を示しており、これは、非管理ローカル・ネットワーク200上の少数のコンピュータ(たとえば、10台以下のメンバ・コンピュータ)が非管理セキュア・ワークグループを形成して、集中管理コンポーネントの使用を必要とせずに、ユーザ・アクセスおよびリソース共有をグループ全体として制御するプラットフォームを示している。例示的実施形態では、非管理ローカル・ネットワーク200は、ピア・ツー・ピア関連付け(peer-to-peer association)により構成されている。非管理ローカル・ネットワーク200は、ユーザ・アカウント情報を管理および格納する中央サーバがないため、非管理として分類される。非管理セキュア・ワークグループでは、グループに属さないコンピュータまたはユーザによる不正アクセスおよびリソース使用を防ぎ、同時に、グループ内でのリソース共有を個々のユーザ単位で可能にするために、セキュリティ・ポリシーおよびアクセス制御がグループ全体として実装される。
【0020】
本発明の例示的実施形態として、図2は、家庭内ネットワークおよび小規模事業所ネットワークの典型である、小規模ローカル・ネットワーク70を示している。このローカル・ネットワークは、ドメイン・コントローラなどのような集中管理コンポーネントを持たないという意味で、非管理である。図2に示されるように、このローカル・ネットワークは、ネットワーク・ハブまたはスイッチ72を有し、複数のコンピュータ(またはコンピューティング装置)がこれに接続されている。コンピュータ間の接続は、無線であってよい。たとえば、装置76は、アクセス・ポイント78を介してネットワークと通信する無線装置である。
【0021】
本発明の例示的態様によれば、ローカル・ネットワーク70上のコンピュータのいくつかが、非管理セキュア・ワークグループを形成することが可能である。非管理セキュア・ワークグループは、ネットワークの特定のトポロジに依存しないことを理解されたい。たとえば、無線装置で形成されたアドホック・ネットワークにおいて非管理セキュア・ワークグループを確立することが可能である。管理上の問題とデータの複製が必要であることから、非管理セキュア・ワークグループ・プラットフォームは、グループ内のコンピュータの台数が少なく保たれれば、より効果的に動作する。たとえば、所与の非管理セキュア・ワークグループに参加できるコンピュータの数を、所定の最大数(たとえば、1つの非管理セキュア・ワークグループに10台のメンバ)に限定することが可能である。
【0022】
たとえば、図2に示されるように、コンピュータ90、92、94、および96が、ユーザ・フレンドリ名「TobyClub」を有する(コンピュータ同士をつなぐ破線で摸式図的に示された)非管理セキュア・ワークグループ100を形成している。参加すべき既存グループがない場合、あるいは、コンピュータのユーザがどの既存グループにも参加したくない場合には、新しい非管理セキュア・ワークグループを作成することが可能である。この点において、本発明の例示的実施形態では、各コンピュータは、1つの非管理セキュア・ワークグループにのみ属することが可能である。後で詳述するように、非管理セキュア・ワークグループ内のコンピュータは、互いの間で信頼を確立しており、グループ内のユーザ・アカウント・データやユーザ・プロファイル・データのような情報を共有している。コンピュータ102のような新しいコンピュータが非管理セキュア・ワークグループ100に参加することが可能であり、グループ内のコンピュータは、そのセキュア・ワークグループを離脱することが可能であり、特殊なケースでは、そのグループから追放されることもありうる。
【0023】
非管理ローカル・ネットワーク上に小規模非管理セキュア・ワークグループを形成することの基礎をなす概念を、図3に示す。非管理セキュア・ワークグループを形成するために、コンピュータ102が別のコンピュータ96と合流する場合、コンピュータ102は、最初に、第2のコンピュータ96からの信頼を確立しなければならない。これが行われるのは、コンピュータ96が属する既存のセキュア・ワークグループにコンピュータ102が参加しようとする場合か、コンピュータ96からの、新しいグループを形成する誘いにコンピュータ102が応じる場合である。2つのコンピュータの間で信頼を確立するには、様々な方法がある。典型的には、信頼を確立するには、一方のコンピュータが、他方のコンピュータに対して、他方のコンピュータが知っている何らかの秘密を知っていることを示すことによって、自身を認証することが必要である。本発明の例示的実施形態では、その秘密は、他方のコンピュータに受け入れられたグループ管理者のユーザ名およびパスワードである。別の例示的実施形態では、その秘密は、他方のコンピュータで生成された、ランダムなパーソナル識別番号(personal identification number)(PIN)である。実装によっては、2つのコンピュータの間の相互認証が必要とされる場合がある。2つのコンピュータの間で信頼を確立する具体的な方法は、本発明にとって重要ではないことを理解されたい。
【0024】
コンピュータ96および102の間で信頼が確立された後、それらのコンピュータは、非管理セキュア・ワークグループを形成する。あるいは、コンピュータ96が既存の非管理セキュア・ワークグループに属している場合には、コンピュータ102がそのグループに受け入れられる。これを受けて、例示的実施形態では、各非管理セキュア・ワークグループおよびそのセキュア・ワークグループ内の各ノードに、一意識別子であるGUID(グローバル一意識別子)が割り当てられる。コンピュータが(新しいグループを作成するか、既存のグループに参加することによって)非管理セキュア・ワークグループのメンバになると、そのマシンのGUID、およびそのマシン上のユーザ・アカウントのGUIDが、変更または再作成されて、そのグループのGUIDになり、そのネットワークグループの権限/識別情報(authority/identities)が反映される。
【0025】
非管理セキュア・ワークグループが形成された後、ユーザ・アカウント・データおよびユーザ・プロファイルがグループ内の各コンピュータに複製される。図3に示されるように、コンピュータ96上のユーザ・アカウント・データ110がコンピュータ102に複製され、コンピュータ102上のユーザ・アカウント・データ110がコンピュータ96に複製される。ユーザ・アカウントが複製された後、それらのユーザ・アカウントに関連付けられたユーザ・プロファイル112が他方のコンピュータに複製される。「ユーザ・プロファイル」という用語は、本明細書では、特定のユーザに関連するデータを意味する。たとえば、ユーザ・プロファイルは、そのユーザ、そのユーザの選択された文書、およびセキュリティ・ポリシーに関するレジストリ設定、ユーザ・タイル(すなわち、そのユーザのアイコン化表現)、ならびに、ユーザ・セッションをパーソナライズするための設定、構成、およびファイルなどを含むことが可能である。ユーザ・プロファイルの具体的なコンテンツは、実装によって異なる。セキュア・ワークグループの管理者が、ユーザ・アカウントを作成し、グループ内の1つのコンピュータに対してセキュリティ・ポリシーを設定することが可能であり、それらのアカウントおよびセキュリティ・ポリシーが、セキュア・ワークグループ内のすべてのマシンに複製される。グループ内の各コンピュータが、すべてのユーザ・アカウントおよびユーザ・プロファイルを有するため、有効なアカウントを有するユーザは、自分のユーザ名およびパスワードでグループ内の任意のコンピュータにログオンすることが可能である。ユーザ・タイルや、パーソナライズされたユーザ・セッションのための設定、構成、およびファイルのようなデータを複製することにより、ユーザは、非管理セキュア・ワークグループ内のコンピュータ全体にわたって均質のユーザ・エクスペリエンス(ユーザ体験)を有することも可能になる。本発明の実施形態では、アカウント・データおよびユーザ・プロファイルのサブセットを、文字どおりに同期させる代わりに、実質的に統一することが可能である。本発明の実施形態は、アプリケーションの仮想化/同期をサポートする。この場合、ユーザは、非管理セキュア・ワークグループの1つのメンバにアプリケーションをインストールした後、非管理セキュア・ワークグループのその他のメンバにそのソフトウェアをインストールすることなく、その他の任意のメンバからそのアプリケーションを使用することが可能である。
【0026】
図2に戻ると、本発明の例示的実施形態では、非管理セキュア・ワークグループに参加することが可能なコンピュータ96に、非管理セキュア・ワークグループの作成、非管理セキュア・ワークグループへの参加、および非管理セキュア・ワークグループの操作を行うセキュア・グループ・サービス・モジュール116が提供される。コンピュータ96はさらに、ローカル・セキュリティ・オーソリティ(LSA)118、およびセキュリティ・アカウント・マネージャ(SAM)120を有する。ローカル・セキュリティ・オーソリティ118は、ローカル・システム・セキュリティ・ポリシー、ユーザ認証、およびオペレーティング・システムのイベント・ログへのセキュリティ・メッセージ送信を担当するユーザ・モード・プロセスである。セキュリティ・ポリシーは、たとえば、マシンへのログオンを許可されているユーザ、パスワード・ポリシー、ユーザおよびグループに許可されている特権、システム・セキュリティ監査設定などを指定する。セキュリティ・アカウント・マネージャ120は、マシンへのアクセスを許可されているユーザおよびグループを識別するデータを、それらのパスワードおよび他の属性とともに収容する、コンピュータのシステム・レジストリに格納されているデータベースを管理する。コンピュータはさらに、選択された認証プロトコルに従って認証動作を実行する1つまたは複数の認証モジュール(Windows(登録商標)NT(登録商標)LAN Manager(NTLM)モジュール122またはケルベロス(Kerberos)・モジュール126など)を含む。さらに、ユーザ・アカウントおよびユーザ・プロファイルを含むデータおよびファイルを非管理セキュア・ワークグループ内の他のコンピュータに複製するために、File Replication Server(FRS)128が使用される。
【0027】
図2に示された実施形態では、アプリケーション121が、APIレイヤ・モジュール119を介して、非管理セキュア・ワークグループの作成、非管理セキュア・ワークグループへの参加、および非管理セキュア・ワークグループの操作を行うセキュア・グループサービス・モジュール116とインターフェースされる。後述されるように、APIレイヤ・モジュール119は、非管理セキュア・ワークグループに関する情報を取得し、非管理セキュア・ワークグループを作成し、非管理セキュア・ワークグループに参加し、非管理セキュア・ワークグループから離脱するためのアプリケーション・プログラム・インターフェース(API)をサポートする。
【0028】
次に図2および図4の両方を参照すると、本発明の例示的実施形態では、スタンドアロン・コンピュータ102がローカル・ネットワーク70に接続され、電源投入されると(ステップ170)、そのオペレーティング・システムが、ローカル・ネットワーク上に非管理セキュア・ワークグループが存在するかどうかを自動的に検出する(ステップ172)。これを受けて、コンピュータ102は、そのローカル・ネットワークに接続されているその他のマシンを検出するために、シンプル・サービス検出プロトコル(Simple Service Discovery Protocol)(SSDP)に従って検出要求136をブロードキャストする。この場合、セキュア・ワークグループに属しているコンピュータ96のセキュア・グループ・サービス・モジュール116は、そのセキュア・ワークグループのフレンドリ名およびGUIDをコンピュータのSSDPサービス138に既に登録している。ローカル・ネットワーク70上の各コンピュータは、SSDP要求に対して応答を返す。応答は、応答する側のコンピュータを識別し、そのコンピュータが非管理セキュア・ワークグループに含まれるかどうかを明らかにし、含まれる場合は、そのグループに関する情報を示す。たとえば、コンピュータ96からの応答150は、コンピュータ96が「TobyClub」という非管理セキュア・ワークグループのメンバであることを示すグループ名152を含む。
【0029】
本発明の実施形態では、コンピュータ102が、ローカル・ネットワーク上で1つまたは複数の既存の非管理セキュア・ワークグループを検出した場合(ステップ176)、そのユーザ158(図2の「Patrick」)がログインすると、ユーザ・インターフェース・ウィンドウがポップアップ表示され、そのコンピュータが既存の非管理セキュア・ワークグループのいずれかに参加することをそのユーザが望むかどうかを尋ねられる(ステップ178)。ユーザ・インターフェース・ウィンドウの例を、図5に示す。ユーザ・インターフェース・ウィンドウ160は、そのコンピュータが検出した、ローカル・ネットワーク上の既存の非管理セキュア・ワークグループのリスト162を提供し、ユーザは、いずれかのグループの名前をクリックすることにより、参加するグループを選択することが可能である。ローカル・ネットワーク上で既存の非管理セキュア・ワークグループが検出されていない場合、このリストは空である。このユーザ・インターフェースはさらに、新しい非管理セキュア・ワークグループを作成するオプションをユーザに与えるクエリ166を含む。したがって、既存の非管理セキュア・ワークグループがない場合には、ユーザは、新しい非管理セキュア・ワークグループを作成することを選択できる(ステップ180)。ローカル・ネットワーク上に非管理セキュア・ワークグループが存在する場合でも、ユーザは、いずれかの既存のグループに参加するのではなく、新しいグループを作成することを選択できる。たとえば、ローカル・ネットワーク上のコンピュータ88がどのセキュア・ワークグループのメンバでもないこと(すなわち、コンピュータ88が「スタンドアロン」マシンであること)を、コンピュータ102が検出した場合、ユーザ158は、新しいセキュア・ワークグループ(1つのコンピュータからなるセキュア・ワークグループ)を作成して(ステップ184)、コンピュータ88をそのグループに参加するよう勧誘する(ステップ186)ことを決定することが可能である。
【0030】
ユーザ158(「Patrick」)が、新しい非管理セキュア・ワークグループを作成するオプションを選択した場合(ステップ180)、セキュア・グループ・サービス・モジュール116は、新しいグループのGUIDを新しく作成し、そのコンピュータのアカウント・ドメインGUIDを、そのグループの新しいGUIDに変更する。次に、セキュア・グループ・サービス・モジュール116は、「セキュア・グループ・ノード」グループを作成する。このグループは、その非管理セキュア・ワークグループにあるコンピュータを表すコンピュータ・アカウントを収容するローカル・セキュリティ・グループである(「セキュア・グループ・ノード」は、グループ名の例である。この実施形態は、他のグループ名も同様にサポートする)。「セキュア・グループ・ノード」グループとしてリストされたコンピュータだけが、そのグループの他のコンピュータとの複製を実行することが可能である。強力かつランダムなパスワードを有するアカウントを作成することが可能である。
【0031】
セキュア・グループ・サービス168はさらに、新しい非管理セキュア・ワークグループの1人または複数人の管理者の資格証明を保持する「セキュア・グループ管理者」グループを作成する。「セキュア・グループ管理者」グループにおいて識別された管理者だけが、そのセキュア・グループにノードを追加したり、そこからノードを除去したりすることを許可されている。「セキュア・グループ管理者」アカウントが作成され、ユーザ158は、適正な(空白ではない)パスワードを入力するよう求められる(「セキュア・グループ管理者」は、グループ名の例である(後述されるように、本発明の実施形態は、パスワードの代替として、またはパスワードとともに用いられることが可能な個人識別番号(PIN)をサポートする)。この実施形態は、他のグループ名も同様にサポートする)。ユーザがパスワードを入力すると、「セキュア・グループ管理者」グループに「セキュア・グループ管理者」アカウントが追加される。
【0032】
一方、ユーザ158が、コンピュータ102によって検出された既存の非管理セキュア・ワークグループに参加することを選択した場合は(ステップ178)、そのグループの、SSDP要求に応答したノードのうちの1つが選択され、その選択されたノードのセキュア・グループ・サービスのリモート・プロシージャ・コール(RPC)インターフェースとの接続が確立される。図2に示された例では、コンピュータ102が、コンピュータ96と通信することを選択している。これを受けて、コンピュータ96は、コンピュータ102に対し、自身を認証するよう、要求を出す。コンピュータ102は、自身を適正に認証することによって、コンピュータ96からの信頼を確立する(ステップ182)。そうすることで、コンピュータ102は、そのグループ100の残りのノードからの信頼も確立する。これは、残りのノードが、コンピュータ96を信頼していて、コンピュータ96が信頼するコンピュータであれば信頼することになっているためである。これに対し、代替実施形態では、非管理セキュア・ワークグループに参加しようとするコンピュータは、そのグループ内の各コンピュータからの信頼を個別に確立しなければならない可能性がある。
【0033】
前述のように、信頼を確立する一般的な方法は、コンピュータが、他方のコンピュータに対して、他方のコンピュータが知っている秘密を提示することである。本発明の実施形態では、ピア間の相互認証のための自己署名証明書を利用する。ターゲット・ノードの証明書を、認証された、参加する側のコンピュータに戻すことが可能である。本発明の例示的実施形態では、秘密は、ターゲット・ノード・コンピュータ96の「セキュア・グループ管理者」グループに登録されているグループ管理者の名前およびパスワードである。コンピュータ102は、ターゲット・ノード・コンピュータ96からの質問に対して、ユーザ158に、有効な管理者名およびパスワードを入力するよう求める。一例示的実装では、(図2で「Toby」として示されている)管理者196は、単純に、非管理セキュア・ワークグループに参加しようとしているコンピュータ102まで歩いていって、自分のユーザ名およびパスワードを入力することが可能である。コンピュータ102は、入力された管理者名およびパスワードをターゲット・ノード・コンピュータ96に送信する。ターゲット・ノード・コンピュータ96は、コンピュータ102から返された管理者名およびパスワードを検査する。それらが有効であって、「セキュア・グループ管理者」グループにある管理者アカウントと一致すれば、コンピュータ102は、非管理セキュア・ワークグループ100のメンバになる。ターゲット・ノード・コンピュータ96は、参加する側のコンピュータ102のコンピュータ・アカウントを作成し、ターゲット・ノード・コンピュータの秘密を、参加する側のコンピュータ102に回す。次に、参加する側のコンピュータ102は、ターゲット・ノード・コンピュータの秘密を保存する。この時点で、参加する側のコンピュータ102は、ターゲット・ノード・コンピュータ96との「同期」動作を開始する。同期動作が完了すると、完全な信頼が確立される。
【0034】
その後は、非管理セキュア・ワークグループのメンバ間でユーザ・アカウントおよびユーザ・プロファイルの変更があると、それらが複製される(ステップ188)。一例示的実装では、非管理セキュア・ワークグループのメンバであるコンピュータが定期的に(たとえば、4分ごとに)グループ内の他のすべてのノードに「Hello」メッセージを送信する。Helloメッセージは、グループGUID、ノードの現在のシステム時刻、および複製の最終更新カウントを含む。その他のグループ・メンバは、応答する必要はないが、各自のグループ・メンバのテーブルを適宜更新し、上記のメンバから「Hello」を受け取った最終時刻を記録する。LSAからSAM変更を受け取った場合、そのコンピュータ上のセキュア・グループ・サービスは、セキュア・ワークグループ内のすべてのノードに「Notify」メッセージを送信する。グループ・ノードがNotifyメッセージを受け取ると、グループ・ノードは、メッセージの中のUpdateCountと、自身の現在のUpdateCountとを比較する。受け取ったUpdateCountが現在のUpdateCountより新しい場合、受信者は、送信者にコールバックして変更の具体的なリストを求め、それらの変更をローカルに適用する。
【0035】
代替の例示的実施形態では、ターゲット・ノード・コンピュータ96は、管理者名およびパスワードを秘密として使用する代わりに、ランダムな個人識別番号(PIN)を秘密として生成する。ターゲット・ノード・コンピュータ96のユーザ196(「Toby」)は、グループに参加しようとしているコンピュータ102のユーザ158(「Patrick」)に秘密PINを与える。次に、ユーザ158は、そのPINを、求めに応じてコンピュータ102に入力し、そのPINが、ネットワーク接続を介してターゲット・ノード96に配信されて、信頼が確立される。
【0036】
図6は、本発明の実施形態による、コンピュータ・システム(KitchenPC)601が非管理セキュア・ワークグループ603に参加する例示的シナリオを示す(本発明の他の実施形態は、他の手法を利用して、非管理セキュア・ワークグループ603に参加しようとするマシンの認証を与えることが可能である)。この例示的シナリオでは、コンピュータ・システム(DenPC)605が、既に非管理セキュア・ワークグループ603のメンバである。参加は、まだ参加していないマシンが既存の非管理セキュア・ワークグループのメンバと連係して、その非管理セキュア・ワークグループにおいてメンバシップを取得するためのプロセスである。この例示的実装には、以下の10個の主要ステップがある。
1)KitchenPC 601が、HouseCastle_Kpublicを用いてDenPC 605に問いかけることにより、DenPC 605を非管理セキュア・ワークグループ603のメンバとして認証する。DenPC 605が正しく応答すれば、DenPC 605は、共有秘密を知っていたことになる。
2)KitchenPC 601が公開鍵/非公開鍵のペアを生成し、自己署名証明書KitchenPC_Certを生成する。
3)KitchenPC 601が、自身のためにKitchenPCアカウントを作成し、KitchenPC_Certをそのアカウントに関連付ける。
4)KitchenPC 601が、参加を駆動するユーザによって与えられた、管理者の、よく知られているアカウントと、管理者のパスワードとを用いて、DenPC 605にログインする。KitchenPC 601は、自身の証明書をDenPC 605に渡す。
5)DenPC 605は、KitchenPCの証明書をインストールする。
6)DenPC 605が、KitchenPC 601のマシン・アカウントを作成し、そのアカウントをKitchenPC_Certに関連付け、その証明書を非管理セキュア・ワークグループ603に入力する。
7)DenPC(603)が、自身の証明書と共有秘密とをKitchenPC(601)に返し、KitchenPC(601)は、
a.DenPC_Certをインストールし、
b.共有秘密を格納し、
c.非公開鍵からHouseCastle_Certのコピーを生成し、そのコピーをインストールする。
8)KitchenPC(601)が、DenPC 605のマシン・アカウントを作成し、そのアカウントをDenPC_Certに関連付ける。
9)KitchenPC 601が、機能探索(Function Discovery)607により、自身を非管理セキュア・ワークグループのメンバとしてパブリッシュ(ブロードキャスト)する。
10)KitchenPC 601が、DenPC 605との同期動作を開始する(ここまでのステップでは、KitchenPC 601とDenPC 605は、相互の信頼を確立しているに過ぎない。それらが互いを信頼した後、同期動作により、各コンピュータに、他のコンピュータからの証明書、アカウント、およびグループの完全セットが与えられる)。
【0037】
信頼を確立するフェーズの間の通信、ならびに、その後の、ユーザ・アカウント、ユーザ・プロファイル、およびその他の、グループの動作に関連するデータを複製するための、グループ・メンバ間の通信は、データの完全性および機密性を保護するために、デジタル署名および暗号化によって適切に保護されなければならないことを理解されたい(本発明の実施形態では、公開鍵/非公開鍵ベースの認証メカニズム(PK/SChannel認証)を用いる。公開鍵は、自己署名証明書内に置かれ、この自己署名証明書は、後で非公開鍵の保有者の識別情報を検証するために使用される)。そのために、適切な認証プロトコル(NTLMやケルベロスなど)の後に通信を行うことが可能である。一例示的実装では、非管理セキュア・ワークグループのノードは、NTLM認証メカニズムを採用する(DCE)RPCを用いて複製を行う。チャネルは、呼レベルの認証およびプライバシで保護され、アクセス制御は、非管理セキュア・ワークグループのメンバである発呼者に対するサーバベースのチェックに基づく。認証処置を行うことは、ローカル・ネットワーク上の他のコンピュータが、非管理セキュア・ワークグループのノード間の通信を盗聴したり、改ざんしたりすることの防止になる。
【0038】
コンピュータ102は、非管理セキュア・ワークグループ100に参加した後、自発的にグループを離脱することが可能である。そうするためには、ユーザ158は、非管理セキュア・ワークグループから除去されるべきマシン102にログオンし、適切なユーザ・インターフェース・ウィンドウから、グループを離脱することを選択する。一例示的実装では、あるコンピュータが非管理セキュア・ワークグループから離脱すると、そのコンピュータは、「セキュア・グループ・ノード」グループから除去され、それに対応するコンピュータ・アカウントが削除される。この操作により、アカウントを複製する際に用いられた信頼が失われる。そのコンピュータがグループを離脱することに伴い、その「セキュア・グループ管理者」グループおよび「セキュア・グループ・ノード」グループが、すべてのコンピュータ・アカウントとともに削除される。ただし、コンピュータGUIDは、グループに参加していた間と同じまま残る。コンピュータ102は、グループから除去された後、ローカル・ネットワーク上でスタンドアロン・コンピュータになり、それによって、ワークグループ100は、1つのコンピュータからなる非管理セキュア・ワークグループになる(しかしながら、1つのコンピュータからなる非管理セキュア・ワークグループになった後のワークグループ100に、後からコンピュータが参加することは可能である)。コンピュータ102は、もはや信頼されず、ユーザ・アカウントおよびユーザ・プロファイルについてのその後のいかなる更新も受け取らない。
【0039】
ある特殊な状況では、コンピュータが非管理セキュア・ワークグループから「追放される」場合がある。たとえば、グループ内のあるコンピュータが盗まれた場合は、後で何者かがそのコンピュータを使用してグループのデータやリソースにアクセスするのを防ぐために、そのコンピュータをグループから追放することが必要になることがある。追放されたコンピュータは、「セキュア・グループ・ノード」グループから除去され、グループ内のそのアカウントは削除される。これにより、今後、追放されたコンピュータに対しては、アカウント情報の複製が行われなくなる。それだけにとどまらず、追放されたコンピュータをグループから完全に切り離すために、他の処置が行われる場合がある。追放されたコンピュータは、(パスワードを含む)アカウント・データベースの完全コピーを有しているので、追放されたコンピュータは、他の何らかのユーザ(またはコンピュータ)として自身を認証して、引き続きセキュア・ワークグループのアクセス権を取得しようと試みることが可能である。そこで、追放されたコンピュータが通信を盗聴してパスワードを見ることができないようにして残りの秘密を変更できるような処置を講じなければならない。追放プロセスの一環として、どのユーザ秘密を変更する場合も、その前にそのコンピュータの秘密をオフラインに切り替えなければならないようにすることが可能である。コンピュータの秘密をそのように切り替えることは、非公開チャネル上で「通信外」で(たとえば、フロッピー(登録商標)ディスクで秘密を運ぶことにより)なされることが可能である。一実装では、非管理セキュア・ワークグループの管理者196は、コンピュータを追放した後に、追放されたコンピュータがないグループを再作成しなければならない。この回復プロセスの一環として、グループに残っている1つのコンピュータ(「回復コンピュータ」)が隔離され(すなわち、ネットワークから除去され)、グループ回復を行うために使用される。新しいランダムLSA秘密が、グループに残っている各コンピュータについて生成され、そのコンピュータのための新しいコンピュータ・パスワードとして、回復コンピュータのローカル・アカウント・データベースに格納される。しかしながら、ネットワーク経由では、この新しい秘密をその他のコンピュータに送信することができない。追放されるべきマシンがその更新を受け取るおそれがあるためである。この問題に対処するために、管理者196は、セキュア・ワークグループに残っている各コンピュータについて、そのコンピュータのための新しいLSA秘密を収容する「追放」フロッピー(登録商標)ディスク(または他の任意の可搬媒体(CD−ROMなど))を作成する。管理者は、非管理セキュア・ワークグループの中にとどめておきたい各コンピュータに自分の管理者アカウントでログオンし、そのコンピュータ上で追放ディスクを実行して、そのコンピュータのパスワードを変更する。グループに残っているマシンで追放ディスクが実行された後は、すべてのユーザが、そのグループのコンピュータにログオンする際にパスワードを変更することが必要である。これは、追放されたコンピュータがユーザの既存のパスワードのすべて(または少なくとも派生鍵(derived keys))を有しているためである。
【0040】
本発明の少なくともいくつかの態様による非管理セキュア・ワークグループの一利点は、マシン対マシン通信をセキュアにすることである。本発明の一態様によれば、メンバ・マシンと、非管理セキュア・ワークグループへの参加を要求するマシンとの間に、自己署名証明書を使用することが可能である。また、前述の追放フロッピー(登録商標)ディスクの作成を、すべてのマシン・アカウントが基本的に同時に新しいランダム・パスワードにリセットされるように、分散することが可能である。メンバ・マシンは、パスワードがリセットされると通信機能を失うが、追放フロッピー(登録商標)ディスクが一巡すれば、通信機能を獲得する。追放フロッピー(登録商標)ディスクを取得しないマシン(たとえば、追放されたマシン)は、古いパスワードだけを保有するため、非管理セキュア・ワークグループと通信することができない。本発明の少なくともいくつかの態様による非管理セキュア・ワークグループの別の利点は、ユーザ・アカウントによる不正アクセスを防ぐことである。本発明の一態様によれば、すべてのユーザ・アカウントが変更される。本発明の別の態様によれば、次のログインで有効期限が切れるようにパスワードを設定することが可能である。
【0041】
本発明の少なくともいくつかの態様による非管理セキュア・ワークグループの一利点は、各ユーザが、グループ内のすべてのコンピュータに知られている識別情報を有することである。結果として、ユーザは、同じユーザ名およびパスワードで、セキュア・ワークグループ内のどのコンピュータにでもログオンすることが可能である。たとえば、小規模事業所設定では、従業員が、セキュア・ワークグループを形成するローカル・オフィス・ネットワーク上の任意のコンピュータに、同じユーザ名およびパスワードでログオンすることが可能であり、各コンピュータに対して別々にユーザ・アカウントをセットアップすることは不要である。さらに、ユーザがグループ内のコンピュータの1つにおいてパスワードを変更すると、その変更がその他のコンピュータにも複製される。したがって、非管理セキュア・ワークグループは、ユーザ・アカウントの作成および変更を大幅に簡略化し、グループ内のコンピュータを、正規ユーザにとって一段と「アクセスしやすい」ものにすることが可能である。
【0042】
非管理セキュア・ワークグループにおけるコンピュータの改良されたネットワーク・インテグレーションはまた、ユーザがコンピュータ・ネットワーキングの恩恵を享受することを可能にする。ユーザは、グループ内のコンピュータのいずれかにログインした後、そのユーザの文書およびユーザ自身の設定が実際に格納されている場所がどこであろうと、ユーザ自身の設定を用いて、そのユーザの文書のすべてにアクセスすることが可能である。これが可能になるのは、やはり、ユーザのすべての文書が、すべてのコンピュータで認識されている単一のユーザ識別情報に関連付けられているためである。したがって、所与のユーザのすべての文書および設定を識別するクエリを作成することが可能である。これは、ユーザが、セキュア・ワークグループ全体において、そのユーザのすべての文書および設定の「統一された」ビューを有することを可能にする。
【0043】
前述のように、セキュア・ワークグループ内のコンピュータ間で複製されたユーザ・プロファイルは、それらのユーザの文書を含むことが可能である。一例示的実施形態では、所与のユーザの、あらかじめ選択された文書セット(たとえば、そのユーザの「MyDocuments」フォルダにある文書)が、セキュア・ワークグループ内の各コンピュータに自動的に複製される。ユーザがそれらの文書のいずれかを修正すると、文書改訂が検出され、修正された文書が、ファイル複製サービス(FRS)によって、グループ内のその他のコンピュータに複製される。本発明の例示的実施形態では、複製された文書を格納するためにコンピュータが使用するメモリ量を減らすために、しきい値サイズを超えるファイルは複製されない。その代わり、しきい値サイズを超えたファイルについては、そのファイルを格納しているコンピュータにおける、そのファイルへのリンクだけが、その他のコンピュータに複製される。
【0044】
非管理セキュア・ワークグループはさらに、グループのユーザ間でのファイルのセキュア共有を可能にする。ユーザが自分の文書を第2のユーザと共有しようとする場合、ユーザは、その文書のプロパティを、第2のユーザがその文書へのアクセスを許可されていることを示すように修正できる。第2のユーザがアプリケーションを使用してその文書にアクセスしたときに、その文書のプロパティが調べられ、その文書のアクセス権が第2のユーザに与えられていることが確認される。一例示的実装では、小規模事業所ネットワークのセキュア・ワークグループのユーザが、他の1人のユーザとだけ文書を共有することが可能である。代替の例示的実施形態では、非管理セキュア・ワークグループのユーザが、そのユーザのファイルを、グループのすべてのユーザと共有することが可能である。この実装は、家庭内ネットワークの設定にも適用可能である。
【0045】
非管理セキュア・ワークグループは、グループに参加していないコンピュータがグループに限定的にアクセスすることを許可することが可能である。たとえば、ユーザが職場からラップトップを持ち出し、ユーザの家庭内ネットワークに接続するものの、家庭内ネットワーク上のセキュア・ワークグループに参加することを選択しない場合がある。そのような場合は、非メンバ・コンピュータにゲスト・ステータスを与え、あらかじめ選択されたリソースセットへのアクセスを許可することが可能である。同様に、レガシーコンピュータ(すなわち、非管理セキュア・ワークグループに関連する動作のためのソフトウェアを有しないコンピュータ)が、従来のワークグループで用いていたのと同じ方法で、非管理セキュア・ワークグループのコンピュータとも通信することが可能である。
【0046】
コンピュータ(マシン)が非管理セキュア・ワークグループの一部になった後、非管理セキュア・ワークグループの任意のメンバに関して変更が発生すると、メンバ・コンピュータ間でユーザ・アカウントおよびユーザ・グループが複製され、同期が行われる(変更としては、ユーザ・アカウント情報の修正や、ユーザ・アカウント情報の追加などが考えられる)。非管理セキュア・ワークグループに参加しているコンピュータは、マスタ・コンピュータが指定されていないピアである。非管理セキュア・ワークグループ内のコンピュータは、ネットワークを介して変更を宣伝することが可能である。この動作により、メンバ・コンピュータは、複製を開始し、これによって、互いに同期した状態を保つことが可能である。
【0047】
複製に参加しているコンピュータは、それらのコンピュータが複製しようとするデータの状態を維持する。それらのコンピュータは、以下の項目を追跡する。
・コンピュータ・バージョン番号:この番号は、コンピュータ上のどのアカウントが変更されても更新される。このバージョン番号は、同期動作がいつ必要かを、ハイレベルで決定する。
・アカウント・バージョン番号:この番号は、コンピュータ上の特定のアカウントが変更されたときに更新される。このバージョン番号は、同期動作が必要になったときに、どのアカウントを同期させるべきかを決定するために使用され、アカウントごとに追跡される。
【0048】
複製は、各コンピュータに変更があったときにそのコンピュータがコンピュータ・バージョン番号を宣伝するプル指向複製であってよい。非管理セキュア・ワークグループのメンバは、別のメンバが新しいバージョン番号を宣伝していることを検出した場合には、そのバージョン番号を、自身が保有している、当該コンピュータに関する記録の中のバージョン番号と照合する。メンバは、より新しいデータが別のコンピュータからパブリッシュされていると判断した場合には、複製を開始する。
【0049】
例示的実施形態では、すべてのユーザ・アカウントが複製される。すべてのアカウント・グループが複製されるため、あるコンピュータで管理者であるユーザが、その他のコンピュータの管理者として複製される。複製されるのは、以下のデータである。
>ユーザ名
>ユーザ・パスワード
>ユーザ・タイル
>アカウント・バージョン番号:このデータは、メンバがそれぞれのローカル・データをいつ更新すべきかをメンバに通知するために、非管理セキュア・ワークグループによって使用される。
>ユーザ・グループ名
>ユーザ・グループ・メンバ・リスト
>コンピュータ・バージョン番号:このデータは、別のコンピュータとの同期動作を開始するかどうかを決定するために、非管理セキュア・ワークグループによって使用される。
>非管理セキュア・ワークグループ秘密:このデータは、非管理セキュア・ワークグループのマシン間の信頼を確立するマシン対マシン秘密である。
【0050】
図7は、本発明の例示的実施形態による、非管理セキュア・ワークグループ内のメンバ・コンピュータから別のコンピュータに、更新されたアカウント情報を提供することのフロー図700を示す。ステップ701で、メンバ・コンピュータが、メンバ・コンピュータに格納されているアカウント情報に変更がないかどうかを調べる。変更がない場合、プロセスは終了する。変更がある場合、コンピュータは、ステップ703で、機能探索メッセージを使用して、関連付けられたコンピュータ・バージョン番号をパブリッシュすることによって、変更を宣伝する。本発明の実施形態は、他のパブリケーション・プロトコル(たとえば、前述のSSDP)を使用して、関連付けられたコンピュータ・バージョン番号をパブリッシュすることも可能である。ステップ705で、メンバ・コンピュータは、ユーザ・アカウントのリストに関して、別のコンピュータから要求を受け取ったかどうかを調べる。受け取っていなければ、プロセスは終了する。受け取った場合、メンバ・コンピュータは、ステップ707で、そのリストを他方のコンピュータに送る。他方のコンピュータは、メンバ・コンピュータにおいて、対応するアカウント情報が更新または追加されている場合には、具体的なアカウント情報をさらに要求することが可能である。ステップ709で、そのような要求を受け取ったかどうかを調べる。さらなる要求を受け取っていない場合、プロセスは終了する。さらなる要求を受け取った場合、メンバ・コンピュータは、ステップ711で、指定されたアカウント情報を他方のコンピュータに送る。
【0051】
図8は、本発明の例示的実施形態による、非管理セキュア・ワークグループ内のメンバ・コンピュータから、更新されたアカウント情報を取得することのフロー図800を示す(フロー図800は、図7に示された、他方のコンピュータで実行されるプロセスに対応する)。ステップ801で、他方のコンピュータは、メンバ・コンピュータがアカウント情報を変更したことの宣伝を受け取ったかどうかを調べる。受け取っていなければ、プロセスは終了する。宣伝を受け取った場合は、ステップ803で、他方のコンピュータが、宣伝されたバージョン番号と、保有している、メンバ・コンピュータに関する記録の中のバージョンと比較する。受け取っていなければ、プロセスは終了する。宣伝されたバージョンがより新しい場合、他方のコンピュータは、ステップ805で、ユーザ・アカウントのリストをメンバ・コンピュータに要求する。ステップ807で、他方のコンピュータは、更新されているアカウント情報または新しいアカウント情報を要求する。ステップ809で、他方のコンピュータは、(後述されるように)コンフリクトを解決した後、格納しているアカウント情報を更新する。
【0052】
フロー図700に従えば、更新されたアカウント情報を取得することが可能であるが、本発明の実施形態は、他のアカウント更新プロセスもサポートする。本発明の実施形態によれば、第1のメンバ・コンピュータが、アカウント情報に変更が生じたことを伝えるために、更新されたバージョン番号を含む宣伝をブロードキャストする。この非管理セキュア・ワークグループの第2のメンバが、第1のメンバ・コンピュータからの宣伝に対して、アカウント・バージョン情報を第1のメンバ・コンピュータに送る。その結果として、第1のメンバ・コンピュータは、より新しいユーザ・アカウントのリストを第2のメンバ・コンピュータに返す。
【0053】
新しいコンピュータが非管理セキュア・ワークグループに参加する際には、そのコンピュータは、非管理セキュア・ワークグループに関連するアカウント・データを有していない。その時点で、そのコンピュータは、自身を、非管理セキュア・ワークグループ・データで更新する。非管理セキュア・ワークグループの参加メンバのいずれかにおいてユーザ・アカウントまたはグループの変更があった場合、その変更は、機能探索(または別のパブリッシュ・メカニズム(たとえば、SSDP))により、宣伝されることが可能である。宣伝は、非管理セキュア・ワークグループのメンバ間の複製シーケンスをトリガする。非管理セキュア・ワークグループ内のコンピュータは、機能探索を介してそれぞれのコンピュータ・バージョン番号をパブリッシュすることにより、それぞれの変更を他のコンピュータに宣伝する。
【0054】
非管理セキュア・ワークグループから離脱するメンバがある場合、ユーザは、そのコンピュータから特定のアカウントを削除することを決定することが可能である。この変更は、非管理セキュア・ワークグループのメンバシップの更新と同様に、残りのメンバに複製されることが可能である。メンバが追放されると、非管理セキュア・ワークグループの秘密が変更される。秘密の変更は、非管理セキュア・ワークグループの他のメンバに伝達される。
【0055】
マシンが最初に非管理セキュア・ワークグループに参加する際には、パスワードによる管理者のログオンによって、マシン間の初期信頼が確立される。信頼が確立されると、それらのマシンは、自己署名証明書を交換することが可能になり、証明書ベースの相互認証によって認証が実施される(前述のように、他の認証メカニズムを用いることも可能である)。コンピュータが別のコンピュータを認証すると、今度はそのコンピュータがアカウント情報を複製することが可能になる。
【0056】
本発明の例示的実施形態によれば、セキュリティ・アカウント・マネージャ(SAM)データベースは、新しいプロパティを補助プロパティ(auxiliary property)ファイルに格納することによって拡張される(セキュリティ・アカウント・マネージャ・データベースは、定義されたユーザおよびグループを、対応するパスワードおよび他の属性とともに収容する)。(ローカルに格納されているデータに対応する)補助プロパティ・ファイルは、アカウントが複製されたときに複製される。さらに、補助プロパティ・ファイルは、追加プロパティ(たとえば、ユーザ・タイル、パスワード・ヒント、アカウントGUID、およびアカウント証明書)を含むように拡張されることが可能である。
【0057】
非管理セキュア・ワークグループは、互いにピアである複数のマシンを含む。これは、適切な権限を有する人物が、参加しているマシンのいずれに対しても、同じオブジェクトの変更を行うことが可能であることを意味する。変更は、メンバ・マシンが「オンライン」のときでも、「オフライン」のときでも、行うことが可能である。マシンがオフラインであるときにマシンに対して行われた変更は、後で詳述されるように、ユーザ・アカウントまたはアカウント・グループとのコンフリクトを起こす変更になる可能性がある。非管理セキュア・ワークグループの機能は、コンフリクトを検出するメカニズムを利用できる。その後、コンフリクトは、自動的に解決されるか、正規ユーザの助けによって解決されることが可能である。
【0058】
アカウントの「変更」は、そのアカウントのいずれかのプロパティの変更として定義される。コンフリクトの解決および検出は、「アカウント全体のレベル」で実施されることが可能である(さらに、コンフリクトの解決および検出は、プロパティごとのレベルで実施されることが可能である)。たとえば、あるアカウントの、1つのマシンにあるタイルを変更し、別のマシンにある同じアカウントのパスワードを変更したとすると、両方のアカウントが変更されたと見なされ、したがって、コンフリクトの解決が必要になる。これは、プロパティ・レベルで変更が重なっていない場合でもそうである。
【0059】
2つのメンバ・マシン間の同期は、それらのマシンの同期が外れていた継続時間の長さの影響を受ける。それらのマシンが離れていた継続時間が長い場合、それらのマシン間の差は、コンフリクトと見なされる。例示的実施形態では、その差は、管理ユーザインターフェース(UI)を用いた手動介入によって解決される。長い継続時間の例は、マシン間の最終更新タイム・スタンプ差が少なくとも30日である場合であり、短い継続時間の例は、マシン間の「最終更新」タイム・スタンプが30日未満であるときの、2つのメンバ・マシンの間の切断である。この例示的な30日のしきい値は、最も標準的なオフラインシナリオ(たとえば、毎日シャットダウンされるマシン)がコンフリクト解決のために自動的に運用されることが可能であるように設定されている。ユーザ・アカウントおよびグループはあまり頻繁には変更されない可能性があるため、上記の基準は、コンピュータがバックアップから回復したときに同期をどのように行うかを決定することにも使用される。
【0060】
長い継続時間の同期が行われるのは、マシン同士が、前述の長い継続時間のような非常に長い時間の間、離れていて、それらのマシン間に変更が発生した場合である。同期ブロッキング・エラー(synchronization blocking error)が、古い方のマシンのシンク・ハンドラ(Sync Handler)にポストされる。アカウントが非管理セキュア・ワークグループの残りのマシンとコンフリクトしていない、古い方のマシンにいるユーザらは、そのマシンを普通に使用することが可能である。本発明の例示的実施形態では、同期ブロッキング・エラーにより、そのマシンの管理者は、以下の選択肢を提供することによって、同期を解決することが可能である。
・古い方のマシンからすべての変更を廃棄し、最新の変更を選択する。この選択肢は、古い方のマシンがその非管理セキュア・ワークグループに初めて参加することと等価である。
・変更を、古い方のマシンから同期させる。本発明の実施形態では、ユーザがこの選択肢を選択した場合、マシン間の同期は、それらのマシンが短い継続時間だけ離れていたかのように行われる。本発明の他の実施形態では、すべてのコンフリクトが継続時間の短いコンフリクトとして扱われるため、コンフリクトの継続時間が長いか短いかによる違いがない。
【0061】
短い継続時間の同期は、マシン間で最後に変更が行われてから、それらのマシンが短い継続時間だけ離れていた場合に行われる。短い継続時間の同期の扱い方は、同期対象の変更の性質によって異なる。本発明の例示的実施形態は、以下の変更を、対応する解決策とともにサポートする。
・コンフリクトがない変更:
>1つのマシンにおいてアカウントを追加する:他方のマシンにおいて同じアカウントを作成することによって解決される。
>1つのマシンにおいてユーザ・アカウントを削除する:他方のマシンにおいて同じアカウントを削除することによって解決される。マシンがメンバである場合は、古い方のマシンにあるアカウントを削除する時点で、そのマシンの管理者が、そのような削除の、残りのメンバに対する影響について注意される。
>1つのマシンにおいてアカウントのプロパティを変更する:他方のマシンにある同じアカウントの同じプロパティを変更することによって解決される。
>1つのマシンにおいてユーザ・グループを追加する:他方のマシンにおいて同じユーザ・グループを作成することによって解決される。
>1つのマシンにおいてユーザ・グループを削除する:他方のマシンにおいて同じユーザ・グループを削除することによって解決される。マシンがメンバである場合は、古い方のマシンにあるユーザ・グループを削除する時点で、そのマシンの管理者が、そのような削除の、残りのメンバに対する影響について注意される。
>1つのマシンにおいてユーザ・グループのメンバシップを変更する:他方のマシンにある同じグループのメンバシップを変更することによって解決される。
>2人のユーザの表示名をスワップする:他方のマシンにおいてそれらの名前をスワップすることにより、解決される。なお、これによって、マシン上で表示名が重複する可能性がある。しかしながら、ユーザ・アカウントはGUID(グローバル一意識別子)で識別されるので、この変更は、コンフリクトがない変更である。
・コンフリクトがある変更:
>異なる2つのマシン上で同じユーザ・アカウントを変更する:同期ブロッキング・エラーをポストし、そのユーザまたは管理者がコンフリクトを解決するまで、そのユーザを、古い方のマシンで非管理セキュア・ワークグループに参加させないようにすることにより、解決される。
【0062】
本発明の実施形態によれば、すべてのコンフリクトが一様に扱われる。コンフリクトの継続時間が長いか短いかによる違いはない。すべてのコンフリクトが、継続時間の短いコンフリクトとして扱われる。
【0063】
本発明の実施形態によれば、新しいアカウントが、どのローカル・アカウントともGUIDが一致せず、同じ名前をローカル・アカウントとして有する場合には、コンフリクトが発生する。
【0064】
非管理セキュア・ワークグループのアカウントのコンフリクトは、コンフリクト管理ユーザ・インターフェースを組み込むことにより、表示される。個々のユーザは、カレントマシンにいる場合には、ユーザのアカウントがコンフリクトしているときに、コンフリクトについての通知を受ける。どのメンバ・マシンの管理者も、その管理者がログインしているマシンから見えるとおりに、非管理セキュア・ワークグループ内のすべてのアカウント・コンフリクトが通知される。言い換えると、非管理セキュア・ワークグループ内の様々なマシンが、様々なマシンとコンフリクトしている様々なアカウントを有する場合、その見え方は、各マシンごとに異なる。
【0065】
アカウント変更の結果としての選択がすべてのメンバ・マシンに複製されると、コンフリクトの解決は収束したと見なされる。個々のマシンにおいてアカウント・コンフリクトが解決されると、対応する変更が他のマシンにおいて複製される。解決されたコンフリクトの性質によっては、他のマシンにおけるいくつかの既存のコンフリクトが、カレントマシンにおけるコンフリクトが解決されたときに解決される可能性がある。
【0066】
非管理セキュア・ワークグループは、複数のマシンの能力に依存して、ネットワーク経由の通信を行い、メンバ・マシンの変更に応じてそれらの状態を変更することが可能である。ネットワークおよび参加しているマシンは、いろいろなかたちで故障する可能性がある。したがって、メンバ・マシンおよび非管理セキュア・ワークグループが、全体として、エラーや故障を予測的に処理し、そのようなエラーおよび故障からのクリーンアップおよび回復を行うことが可能であるように、非管理セキュア・ワークグループを機能させる必要がある。非管理セキュア・ワークグループは、アトミック・トランザクションを開始する前にマーカ・フラグを用いることによって、エラーおよび故障を大まかに処理することが可能である。何らかの原因でトランザクションが失敗した場合は、フラグが注目され、次にサービスが開始されたときにクリーンアップが行われる。複製操作は、マシンが利用可能になった時点で自動的に再開されるように設計されるため、複製中の故障は自動的に処理される。マシンの機能インストールが何らかのかたちで破損した場合は、そのマシンにおいてサービスが停止し、そのマシンは、非管理セキュア・ワークグループに参加しなくなる。
【0067】
本発明の態様によれば、非管理セキュア・ワークグループは、様々なユーザ・シナリオをサポートする。たとえば、一ユーザ・シナリオは、家庭内ネットワークに「ローミング・ペアレンタル・コントロール」を導入する。親は、子供のコンピュータの使い方を制限するペアレンタル・コントロール制限を作成することが可能である。ペアレンタル・コントロール制限は、グループ内のすべてのコンピュータに複製される。したがって、子供がグループ内のいずれかのコンピュータにログオンすると、子供がどのコンピュータを使用しているかに関係なく、ペアレンタル・コントロール制限が子供に「追従」する。さらに、グループ内の各コンピュータにおける子供のすべての行動によって、子供の監査報告が更新される。本発明の例示的実施形態によれば、ユーザ・シナリオは、種々の機能の中でも特に、非管理セキュア・ワークグループ内のユーザに対する、ローミング、データ・オブジェクトの共有、ならびにデータ・オブジェクトのバックアップの機能をサポートする。これらのユーザ・シナリオは、非管理セキュア・ワークグループにおける信頼およびユーザ・データ複製を前提として成り立つ。
【0068】
本発明の例示的実施形態は、非管理セキュア・ワークグループのプロパティおよびメンバをクエリしたり、非管理セキュア・ワークグループ内で操作を開始したりするために、アプリケーションまたは他のサービスによって使用されることが可能なインターフェースのセット(アプリケーション・プログラミング・インターフェース(API))を提供する。
【0069】
本発明の例示的実施形態は、以下のインターフェースをサポートする。
・IWorkgroupNetInformation:ローカル・エリア・ネットワーク内の非管理セキュア・ワークグループおよびメンバになっていないコンピュータのリストを提供する。
・IWorkgroupInformation:全体としての機能の属性を含む、所与の非管理セキュア・ワークグループに関する情報と、メンバ・コンピュータのリストとを提供する。
・IWorkgroupComputerInformation:非管理セキュア・ワークグループ内のコンピュータに関する情報を提供する。
・IWorkgroupNetControl:新しい非管理セキュア・ワークグループを作成することを許可する。
・IWorkgroupControl:非管理セキュア・ワークグループにコンピュータを参加させたり、非管理セキュア・ワークグループからコンピュータを離脱させたりすることを許可する。
【0070】
IWorkgroupNetInformationインターフェースは、非管理セキュア・ワークグループに関する情報を提供する。
interface IWorkgroupNetlnformation : IUnknown
{
//
// 既知のワークグループに対してenumeratorを作成する。
//
HRESULT GetWorkgroups([out] IEnum Workgroups** ppEnum);

//
// ネームで既知のワークグループに対してそのインターフェースを提供する.
// コンピュータがワークグループに現在属して合、pszWorkgroupは、
// 現在のワークグループを示す空のストリングとすることができる。
//
// pszWorkgroupGUID が空のストリングであり、現在のコンピュータが、
// ワークグループのメンバでない場合、GetWorkgroupが
// S_FALSEを戻し、*pp Workgroup をヌルにセットする。
//
HRESULT GetWorkgroup([in,string] LPCWSTR pszWorkgroupGUID,
[out] IWorkgroupInformation** pp Workgroup);
//
// 既知のメンバになっていないコンピュータに対してenumeratorを生成する。
//
HRESULT GetComputers([out] IEnumString** ppEnum);

//
// 変更通知の登録。
//
HRESULT Advise([in] IUnknown* pUnk, [out] DWORD* pdwCookie);
HRESULT Unadvise(DWORD dwCookie);
}
【0071】
IEnumWorkgroupsおよびIEnumComputersは、いずれもIEnumerableから派生したものである。IEnumWorkgroupsは、IWorkgroupInformationインターフェースを返し、これらのそれぞれは、既知の非管理セキュア・ワークグループを表す。IEnumComputersは、LPWSTRを返し、これらのそれぞれは、どの非管理セキュア・ワークグループのメンバにもなっていない既知のコンピュータの名前である。
interface IEnumWorkgroups : IUnknown
{
HRESULT Next([in] ULONG celt,
[out, size_is(celt),
length_is(*pceltFetched)] IWorkgroupInformation** rgelt,
[out] ULONG* pceltFetched);
HRESULT Skip([in] ULONG celt);
HRESULT Reset();
HRESULT Clone([out] IEnumWorkgroups** ppEnum Workgroups);
}

interface IEnumComputers : IUnknown
{
HRESULT Next([in] ULONG celt,
[out, size_is(celt),
length_is(*pceltFetched)] IWorkgroupComputerlnformation** rgelt,
[out] ULONG* pceltFetched);
HRESULT Skip([in] ULONG celt);
HRESULT Reset();
HRESULT Clone([out] IEnumComputers** ppEnumComputers);
}
【0072】
変更通知に関しては、IWorkgroupNetInformation::Adviseは、IWorkgroupNetInformationAdviseを受け入れる。
interface IWorkgroupNetlnformationAdvise : IUnknown
{
//
// ワークグループの発見に対する通知。
//
HRESULT OnWorkgroupFound([in] IWorkgroupInformation* pWI);
HRESULT OnWorkgroupLost([in] IWorkgroupInformation* pWI);

//
// コンピュータの発見に対する通知。
//
HRESULT OnComputerFound([in, string] LPCWSTR pszComputer);
HRESULT OnComputerLost([in, string] LPCWSTR pszComputer);
}
}
【0073】
IWorkgroupInformationインターフェースは、全体としての非管理セキュア・ワークグループの属性を含む、所与の非管理セキュア・ワークグループに関する情報と、メンバ・コンピュータのリストとを提供する。
interface IWorkgroupInformation : IUnknown
{
//
// そのワークグループのプライマリーネームを獲得する。
//
// 戻されたネームストリングは、CoTaskMemFree()で解放されなければならない。
//
HRESULT GetName([out,string] LPWSTR* ppszName);

//
// そのワークグループに対して一意の識別子(GUID)を獲得する。
//
// その一意の識別子は、参照用に使用する、そのワークグループの
// ライフタイム期間、変更されてなならない。
//
HRESULT GetGUID([out,string] LPWSTR* ppszGUID);

//

// そのワークグループが生成された時刻が獲得される。
//
HRESULT GetCreationTime([out] FILETIME* pft);

//
// そのワークグループ内のそのコンピュータに対するenumeratorを獲得する。
//
HRESULT GetComputers([out] IEnumComputers** ppEnum);
//
// 変更通知に対して登録する。
//
HRESULT Advise([in] IUnknown* pUnk, [out] DWORD* pdwCookie);
HRESULT Unadvise(DWORD dwCookie);
}
【0074】
変更通知に関しては、IWorkgroupInformation::Adviseは、IWorkgroupInformationAdviseを受け入れる。
interface IWorkgroupInformationAdvise : IUnknown
{
//
// ワークグループのメンバーシップの変更の通知
//
// 注意: そのローカルコンピュータが属するそのワークグループ以外の
// 任意のワークグループに対応するIWorkgroupInformationに対しては、
// サポートされない。
//
HRESULT OnMemberAdded([in] IWorkgroupComputerlnformation* pComputer);
HRESULT OnMemberRemoved([in] IWorkgroupComputerlnformation* pComputer);
//
// ワークグループのメンバの状態変更に対する通知。
//
HRESULT OnMemberStateChanged([in] IWorkgroupComputerlnformation* pComputer);
}
【0075】
IWorkgroupComputerInformationは、非管理セキュア・ワークグループ内のコンピュータに関する情報を提供する。
interface IWorkgroupComputerlnformation : IUnknown
{
//
// そのコンピュータのネームを獲得する
//
// 戻されたネームストリングは、CoTaskMemFree()で解放されなければならない。

//
HRESULT GetName([out,string] LPWSTR* ppszName);

//
//そのコンピュータについての記述を獲得する。
//
// 戻されたネームは、CoTaskMemFree()でフリーにされなければならない。

//
HRESULT GetDescription([out,string] LPWSTR* ppszDescription);
//
// そのコンピュータがそのワークグループと同期化された最新時刻が獲得される。
//
//戻された値は、未知を意味する、ゼロとすることができる。
//
HRESULT GetLastSyncTime([out] FILETIME* pft);
//
// そのコンピュータ用の一意の識別子(GUID)を獲得する。
//
// その一意の識別子は、これを参照に使用する、そのワークグループ内の
// コンピュータ・ライフタイム期間、変更されてはならない。
//
HRESULT GetUniqueID([out] GUID* pGUID);
}
}
【0076】
IWorkgroupNetControlインターフェースは、QueryInterface(QI)を介して、IWorkgroupNetInformationから取得される。
interface IWorkgroupNetControl : IUnknown
{
//
// 第1のメンバになる、現在メンバでないマシンを有する
// 新しいワークグループを生成する。
// たとえば、一つのworkgroup-of-oneを生成する。
//
HRESULT Create([in, string] LPCWSTR pszWorkgroupAdminPassword,
[out] IWorkgroupInformation** pp Workgroup);
//
// その現在のワークグループからそのコンピュータを分離する。
// 次ぎに、そのコンピュータは、分離された状態(unjoined state)に復帰する。
//
HRESULT Leave();
}
【0077】
IWorkgroupControlインターフェースは、QIを介して、IWorkgroupInformationから取得される。
interface IWorkgroupControl : IUnknown
{
//
// そのコンピュータを指定されたワークグループに参加(join)する。
//
HRESULT Join([in,string] LPCWSTR pszAdminPassword);
//
// 指定されたコンピュータをそのワークグループから退去させる。
//
HRESULT Evict([in,string] LPCWSTR pszComputer);
}
【0078】
図9は、本発明の例示的実施形態による、非管理セキュア・ワークグループにおけるアプリケーション・プログラミング・インターフェース(API)をサポートするフロー図900を示す。アプリケーション(たとえば、図2に示されたようなアプリケーション121)がステップ901でAPI要求を生成すると、このAPI要求は、ステップ903で解析され、APIタイプおよび対応するパラメータ(たとえば、非管理セキュア・ワークグループid)が決定される。その結果、API要求メッセージは、ステップ905〜913に示されるような、サポートされているAPIタイプに関して処理される。
【0079】
アプリケーション・プログラミン・グインターフェース(あるいは、より簡単に、インターフェース)は、1つまたは複数のコード・セグメントが、他の1つまたは複数のコード・セグメントによって提供される機能と通信したり、その機能にアクセスしたりすることを可能にする、任意のメカニズム、プロセス、プロトコルと見なすことが可能である。代替として、プログラミング・インターフェースは、システムの他のコンポーネントの1つまたは複数のメカニズム、メソッド、関数呼び出し、モジュールなどと結合して情報を伝達することが可能な、システムのコンポーネントの1つまたは複数のメカニズム、メソッド、関数呼び出し、モジュール、オブジェクトなどと見なすことが可能である。上述の「コード・セグメント」という用語は、1つまたは複数の命令またはコード行を含むことを意図しており、たとえば、コード・モジュール、オブジェクト、サブルーチン、関数、その他を含み、適用される用語体系、あるいは、それらのコード・セグメントが別々にコンパイルされるかどうか、あるいは、それらのコード・セグメントが、ソースとして提供されるか、中間形態として提供されるか、オブジェクト・コードとして提供されるか、あるいは、それらのコード・セグメントが、ランタイム・システムまたはランタイム・プロセスで利用されるかどうか、あるいは、それらが、同じマシンに配置されるか、異なるマシンに配置されるか、複数のマシンに分散されるか、あるいは、コード・セグメントによって表される機能が、すべてソフトウェアで実装されるか、すべてハードウェアで実装されるか、ハードウェアとソフトウェアの組合せで実装されるか、などには無関係である。
【0080】
概念的には、プログラミング・インターフェースは、包括的に、図10Aまたは10Bで示されるように表されることが可能である。図10Aは、インターフェース1のインターフェースを、第1および第2のコード・セグメントが通信を行うための管として示したものである。図10Bは、インターフェースを、インターフェース・オブジェクトI1およびI2(これらは第1および第2のコード・セグメントの一部であってもなくてもよい)を備えるものとして示しており、これらは、システムの第1および第2のコード・セグメントが媒体Mを介して通信することを可能にする。図10Bについては、インターフェース・オブジェクトI1およびI2を同じシステムの別々のインターフェースと見なす見方があり、オブジェクトI1およびI2に媒体Mを加えたものがインターフェースを構成する、と見なす見方もある。図10Aおよび10Bは、二方向の流れと、流れの各側のインターフェースとを示しているが、実装によっては、情報の流れが一方向でしかない場合(または、後述のように、情報の流れがない場合)、あるいは、インターフェース・オブジェクトが一方の側にしかない場合がある。限定ではなく、例として、アプリケーション・プログラミング・インターフェース(API)、エントリ・ポイント、メソッド、関数、サブルーチン、リモート・プロシージャ・コール、コンポーネント・オブジェクト・モデル(COM)インターフェースなどの用語は、プログラミング・インターフェースの定義の中に包含される。
【0081】
そのようなプログラミング・インターフェースの態様は、第1のコード・セグメントが第2のコード・セグメントに情報を送るためのメソッド(ここで、「情報」は、最も広い意味で用いられ、データ、コマンド、要求などを含む)、第2のコード・セグメントがその情報を受け取るためのメソッド、ならびに、その情報の構造、シーケンス、シンタックス、編成、スキーマ、タイミング、および内容を含むことが可能である。この点において、情報が、インターフェースで定義される様式で移送されている限り、土台となるトランスポート媒体自体(媒体が有線か、無線か、両者の組合せか、など)は、インターフェースの動作にとって重要ではない。状況によっては、情報が、従来の意味で一方向または両方向に渡されない場合がある。これは、第1のコード・セグメントが、第2のコード・セグメントによって実施される機能に単純にアクセスする場合のように、情報転送が別のメカニズム(たとえば、コード・セグメント間の情報の流れから切り離されたバッファやファイルなどに情報が置かれるメカニズム)によってなされたり、存在しなかったりする場合があるためである。これらの態様のいずれかまたはすべてが、(たとえば、コード・セグメントが疎結合構成のシステムの一部であるか、密結合構成のシステムの一部であるか、に応じて)所与の状況において重要である可能性があるため、このリストは、例示的かつ非限定的であると見なされなければならない。
【0082】
このプログラミング・インターフェースの概念は、当業者には周知であり、先述の、本発明の詳細説明から明らかである。しかしながら、プログラミング・インターフェースの実装方法は他にもあり、明示的に除外されない限り、これらも、請求の範囲によって包含されるものとする。そのような他の方法は、図10Aおよび10Bの簡略図で示されるより高度かつ複雑であるように見えるかもしれないが、それらで実施される同様な機能によって達成される全体的な結果は同じである。次に、プログラミング・インターフェースのいくつかの例示的な代替実施形態を簡単に説明する。
【0083】
1つのコード・セグメントから別のコード・セグメントへの通信は、通信を複数の別々の通信に分割することによって、間接的に達成されることが可能である。これを、図11Aおよび11Bに概略的に示す。図に示されるように、いくつかのインターフェースを、分割可能な機能セットとして示すことが可能である。したがって、図10Aおよび10Bのインターフェース機能は、同じ結果を達成するために(ちょうど24が2×2×3×2に因数分解されるように)要素に分解されることが可能である。したがって、図11Aに示されるように、インターフェース1のインターフェースで提供される機能を細分して、このインターフェースの通信を、同じ結果を達成する複数のインターフェースであるインターフェース1A、インターフェース1B、インターフェース1Cなどに変換することが可能である。図11Bに示されるように、インターフェースI1で提供される機能を、同じ結果を達成する複数のインターフェースI1a、I1b、I1cなどに細分することが可能である。同様に、第1のコード・セグメントから情報を受け取る第2のコード・セグメントのインターフェースI2を、複数のインターフェースI2a、I2b、I2cなどに要素分解することが可能である。要素分解においては、第1のコード・セグメントに含まれるインターフェースの数は、第2のコード・セグメントに含まれるインターフェースの数と一致しなくてもよい。図11Aおよび11Bのいずれの場合も、インターフェース1およびインターフェースI1のインターフェースの機能的趣旨は、それぞれ、図10Aおよび10Bの場合と同じままである。インターフェースの要素分解は、要素分解が認識困難になるように、結合的、可換的、および他の数学的プロパティの後に続いてもよい。たとえば、操作の順序は重要でなくてもよく、したがって、インターフェースによって実行される機能は、インターフェースに到達するよりずっと早く、コードまたはインターフェースの別の部分によって実行されてもよく、あるいは、システムの別のコンポーネントによって実行されてもよい。さらに、プログラミング分野の当業者であれば、同じ結果を達成する異なる関数呼び出しを作成する方法が様々にあることを理解されよう。
【0084】
場合によっては、プログラミング・インターフェースの特定の態様(たとえば、パラメータ)を無視、追加、または再定義しながらも、意図した結果を達成することが可能である。これを、図12Aおよび12Bに示す。たとえば、図A1のインターフェース1のインターフェースは、関数呼び出しSquare(input,precision,output)を含むものとする。この呼び出しは、3つのパラメータinput、precision、およびoutputを含み、第1のコード・セグメントから第2のコード・セグメントに発行される。真ん中のパラメータprecisionが所与のシナリオに無関係である場合は、図12Aに示されるように、無視するか、(この状況では)無意味の(meaningless)パラメータに置き換えてもよい。また、無関係の補助(additional)パラメータを追加してもよい。いずれのイベントにおいても、入力(input)が第2のコード・セグメントによって二乗された後に出力(output)が返される限り、二乗(square)の機能は達成されることが可能である。precision(精度)は、コンピュータ・システムの下流のどこか、あるいは他の部分にとっては意味のあるパラメータである可能性もあるが、二乗計算という狭い目的には不要であると認識されれば、precisionは、置換または無視されてよい。たとえば、有効なprecision値を渡す代わりに、誕生日のようなmeaningless値を渡しても、結果に悪影響を及ぼすことはない。同様に、図12Bに示されるように、インターフェースI1は、インターフェースI1’に置き換えられるか、無視されるように再定義されるか、インターフェースにパラメータを追加するように再定義される。インターフェースI2も同様に、インターフェースI2’として再定義されるか、不要なパラメータを無視するように再定義されるか、別の場所で処理されることが可能なパラメータになることが可能である。ここでのポイントは、場合によっては、プログラミング・インターフェースが、ある目的には不要な態様(パラメータなど)を含むことがあるため、それらを無視または再定義したり、別の場所で別の目的のために処理したりすることが可能である、ということである。
【0085】
2つの別々のコード・モジュールの機能の一部またはすべてをマージして、それらの間の「インターフェース」が形態を変えるようにすることも可能である。たとえば、図10Aおよび10Bの機能を、それぞれ、図13Aおよび13Bの機能に変換することが可能である。図13Aでは、図10Aの第1および第2のコード・セグメントがマージされて、その両方を含むモジュールになっている。この場合、それらのコード・セグメントは引き続き互いに通信していることが可能であるが、インターフェースは、より単一モジュールに適した形態に適応されることが可能である。したがって、たとえば、正式なCall文およびReturn文は不要になるが、インターフェース1のインターフェースに応じた同様の処理または応答が引き続き有効であってよい。同様に、図13Bに示されるように、図10BのインターフェースI2の一部(またはすべて)が、インターフェースI1と直列になってインターフェースI1”を形成するように書かれてもよい。図に示されるように、インターフェースI2は、I2aおよびI2bに分割され、インターフェース部分I2aは、インターフェースI1と直列になってインターフェースI1”を形成するようにコーディングされている。具体例として、図10BのインターフェースI1が関数呼び出しsquare(input,output)を実行し、これをインターフェースI2が受け取り、インターフェースI2は、inputとともに渡された(二乗すべき)値が第2のコード・セグメントによって処理された後に、二乗された結果をoutputとともに返すとする。そのような場合、第2のコード・セグメントによって実行される処理(inputの二乗)は、インターフェースを呼び出すことなく、第1のコード・セグメントによって実行されることが可能である。
【0086】
1つのコード・セグメントから別のコード・セグメントへの通信は、通信を複数の別々の通信に分割することによって、間接的に達成されることが可能である。これを、図14Aおよび14Bに概略的に示す。図14Aに示されるように、第1のインターフェース(インターフェース1)上の通信を、別のインターフェース(この場合は、インターフェース2A、インターフェース2B、およびインターフェース2Cのインターフェース)に適合するように変換するために、1つまたは複数のピースのミドルウェア(オリジナルのインターフェースの機能性および/またはインターフェース機能を分離させるので、分離(Divorce)インターフェース)が設けられる。これが行われる可能性があるのは、たとえば、インターフェース1プロトコルに従うオペレーティング・システムと通信するように設計された、インストール・ベースのアプリケーションがあったが、オペレーティング・システムが別のインターフェース(ここでは、インターフェース2A、インターフェース2B、およびインターフェース2Cのインターフェース)を使用するように変更された場合である。ポイントは、第2のコード・セグメントで使用されていたオリジナルのインターフェースが、もはや第1のコード・セグメントで使用されていたインターフェースと互換ではないように変更されたので、古いインターフェースと新しいインターフェースとを互換にするために、中間段階が用いられることである。同様に、図14Bに示されるように、インターフェースI1からの通信を受け取る分離インターフェースDI1と、インターフェース機能を、たとえば、インターフェースI2aおよびI2Bに伝える分離インターフェースDI2とを有する、第3のコード・セグメントを導入することが可能である(インターフェースI2aおよびI2bは、DI2と動作するように再設計されているが、同じ機能的結果を与える)。同様に、DI1およびDI2は、図10BのインターフェースI1およびI2の機能を新しいオペレーティング・システムに伝え、かつ、同じまたは同様の機能的結果を与えるように、連係して動作することが可能である。
【0087】
さらに別の可能な変形形態では、インターフェース機能を、同じ全体的結果を達成する何か別のものに置き換えるために、コードを動的に書き換える。たとえば、実行環境(たとえば、.Netフレームワーク、Java(登録商標)ランタイム環境、または他の同様のランタイム型環境で与えられるような実行環境)において、中間言語(たとえば、Microsoft IL、Java(登録商標)ByteCode、その他)で表されたコード・セグメントがジャスト・イン・タイム(JIT)コンパイラまたはインタプリタに与えられるシステムがあってよい。JITコンパイラは、第1のコード・セグメントから第2のコード・セグメントへの通信を動的に変換するように(すなわち、それらの通信を、第2のコード・セグメント(オリジナルまたは別の第2のコード・セグメント)で要求される可能性のある別のインターフェースに適合させるように)書かれることが可能である。これを、図15Aおよび15Bに示す。図15Aからわかるように、この方法は、上述の分離シナリオと同等である。これが行われる可能性があるのは、たとえば、インストール・ベースのアプリケーションが、インターフェース1プロトコルに従うオペレーティング・システムと通信するように設計されているのに、オペレーティング・システムが別のインターフェースを使用するように変更された場合である。JITコンパイラは、インストール・ベース・アプリケーションからのオンザフライの通信をオペレーティング・システムの新しいインターフェースに適合させるために用いられることが可能である。図15Bに示されるように、この、インターフェースを動的に書き換える方法は、インターフェースを動的に要素分解するか、他の方法で変更することにも適用されることが可能である。
【0088】
なお、前述の、代替実施形態によるインターフェースと同じまたは同様の結果を達成するシナリオは、直列および/または並列に、または他の介在コードを用いて、様々なかたちで組み合わせられることも可能である。したがって、前に提示された複数の代替実施形態は、相互に排他的ではなく、これらを混合し、適合させ、組み合わせて、図10Aおよび10Bで提示された包括的なシナリオと同じまたは等価なシナリオを作成することが可能である。さらに、ほとんどのプログラミング構造がそうであるように、本明細書では説明されていなくても、本発明の趣旨および範囲によって表される、同じまたは同様のインターフェース機能性を達成する、他の同様な方法が存在する。すなわち、この機能性は、少なくとも部分的には、インターフェースの価値の根底をなすインターフェースによって表される機能性であり、それによって可能になる有利な結果である。
【0089】
当業者であれば理解されるように、コンピュータ・システムを、そのコンピュータ・システムに対応し、そのコンピュータ・システムを制御する命令を収容するコンピュータ可読媒体とともに利用して、本明細書で開示された例示的実施形態を実装することが可能である。このコンピュータ・システムは、少なくとも1つのコンピュータ(マイクロ・プロセッサ、デジタル信号処理装置など)と、対応する周辺電子回路とを含むことが可能である。
【0090】
本発明の対象を、構造的機能および/または方法論的操作に特化した表現で説明してきたが、添付の請求項で定義される本発明の対象は、先述の特定の機能または操作に必ずしも限定されないことを理解されたい。先述の特定の機能および操作は、あくまで、本請求項を実装する形態の例として開示されたものである。
【図面の簡単な説明】
【0091】
【図1】本発明の例示的実施形態による、小規模非管理セキュア・ワークグループで使用されることが可能な例示的コンピュータ・システムを大まかに示すブロック図である。
【図2】本発明の例示的実施形態による、少数のコンピュータが非管理セキュア・ワークグループを形成するローカル・コンピュータ・ネットワークを示す概略図である。
【図3】本発明の例示的実施形態による、非管理セキュア・ワークグループ内の2つのコンピュータの間での信頼の確立とユーザ・アカウントおよびユーザ・プロファイルの複製とを示す概略図である。
【図4】本発明の例示的実施形態による、コンピュータが非管理セキュア・ワークグループに参加するプロセスを示すフローチャートである。
【図5】本発明の例示的実施形態による、非管理セキュア・ワークグループに参加したり、非管理セキュア・ワークグループを作成したりする選択肢を与える例示的ユーザ・インターフェース・ウィンドウを示す図である。
【図6】本発明の例示的実施形態による、コンピュータを非管理セキュア・ワークグループに参加させるシナリオを示す図である。
【図7】本発明の例示的実施形態による、非管理セキュア・ワークグループ内のコンピュータから別のコンピュータに、更新されたアカウント情報を提供することのフロー図である。
【図8】本発明の例示的実施形態による、非管理セキュア・ワークグループ内のコンピュータから、更新されたアカウント情報を取得することのフロー図である。
【図9】本発明の例示的実施形態による、非管理セキュア・ワークグループにおけるアプリケーション・プログラミング・インターフェース(API)をサポートするアーキテクチャを示す図である。
【図10A】本発明の例示的実施形態による、包括的なプログラミング・インターフェースを示す図である。
【図10B】本発明の例示的実施形態による、包括的なプログラミング・インターフェースを示す図である。
【図11A】本発明の例示的実施形態による、要素分解されたプログラミング・インターフェースを示す図である。
【図11B】本発明の例示的実施形態による、要素分解されたプログラミング・インターフェースを示す図である。
【図12A】本発明の例示的実施形態による、再定義されたプログラミング・インターフェースを示す図である。
【図12B】本発明の例示的実施形態による、再定義されたプログラミング・インターフェースを示す図である。
【図13A】本発明の例示的実施形態による、マージされた機能性を有するプログラミング・インターフェースを示す図である。
【図13B】本発明の例示的実施形態による、マージされた機能性を有するプログラミング・インターフェースを示す図である。
【図14A】本発明の例示的実施形態による、分離された機能性を有するプログラミング・インターフェースを示す図である。
【図14B】本発明の例示的実施形態による、分離された機能性を有するプログラミング・インターフェースを示す図である。
【図15A】本発明の例示的実施形態による、コードを動的に書き換えてインターフェース機能性を置換することによるプログラミング・インターフェースを示す図である。
【図15B】本発明の例示的実施形態による、コードを動的に書き換えてインターフェース機能性を置換することによるプログラミング・インターフェースを示す図である。

【特許請求の範囲】
【請求項1】
コンピュータ実行可能命令が格納された、第1のコンピュータにおけるコンピュータ可読媒体であって、前記命令は、
(a)前記第1のコンピュータを非管理セキュア・ワークグループに参加(join)させるステップ、
(b)前記第1のコンピュータに関連付けられた第1のアカウント情報を、前記非管理セキュア・ワークグループのメンバである第2のコンピュータに、複製用に、提供するステップ、
(c)前記第2のコンピュータに関連付けられた第2のアカウント情報を取得するステップ、および
(d)前記第2のアカウント情報を複製するステップ
を備える方法を実行するように構成されることを特徴とするコンピュータ可読媒体。
【請求項2】
(e)前記第1のアカウント情報の変更が生じたことを決定すること、および
(f)前記非管理セキュア・ワークグループのメンバである他の各コンピュータに前記変更を伝えることを実行する、さらなる、コンピュータ実行可能命令を有することを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項3】
前記(f)は、
(f)(1)前記他の各コンピュータに前記変更を宣伝することを実行する、コンピュータ実行可能命令を含むことを特徴とする請求項2に記載のコンピュータ可読媒体。
【請求項4】
前記(f)は、
(f)(2)前記第2のコンピュータからアカウント・バージョン情報を受け取ること、および
(f)(3)(f)(2)への応答として、より新しいユーザ・アカウントのリストを送ること
を実行する、コンピュータ実行可能命令を含むことを特徴とする請求項3に記載のコンピュータ可読媒体。
【請求項5】
前記(f)は、
(f)(2)ユーザ・アカウントのリストを求める第1の要求を前記第2のコンピュータから受け取ること、
(f)(3)(f)(2)への応答として、ユーザ・アカウントの前記リストを、対応する情報とともに、前記第2のコンピュータに送ること、
(f)(4)前記第2のコンピュータから、指定されたユーザ・アカウントに対して関連付けられたアカウント情報を求める第2の要求を受け取ること、および
(f)(5)(f)(4)への応答として、前記関連付けられたアカウント情報を、前記第2のコンピュータに送ること
を実行する、コンピュータ実行可能命令を含むことを特徴とする請求項3に記載のコンピュータ可読媒体。
【請求項6】
前記指定されたユーザ・アカウントの少なくとも1つのプロパティは、修正されていることを特徴とする請求項5に記載のコンピュータ可読媒体。
【請求項7】
前記指定されたユーザ・アカウントが、前記第1のアカウント情報に追加されていることを特徴とする請求項5に記載のコンピュータ可読媒体。
【請求項8】
(e)関連付けられたアカウント情報の変更が、前記非管理セキュア・ワークグループのメンバである、前記第1のコンピュータ以外の、コンピュータにおいて生じていることを決定すること、
(f)前記第1のコンピュータ以外の前記コンピュータから、指定されたアカウント情報を取得すること、および
(g)前記第1のコンピュータと、前記第1のコンピュータ以外の前記コンピュータとの間で、前記指定されたアカウント情報を自動的に同期させること
を実行する、さらなる、コンピュータ実行可能命令を有することを特徴とする請求項1に記載のコンピュータ可読媒体。
【請求項9】
前記(g)は、
(g)(1)前記指定されたアカウント情報とのコンフリクトが存在するかどうかを検出すること、
(g)(2)検出されたコンフリクトを解決すること、
(g)(3)前記指定されたアカウント情報でユーザ・アカウント・データ構造を更新すること、および
(g)(4)解決されたコンフリクトを、前記非管理セキュア・ワークグループの他のメンバにパブリッシュすること
を実行する、コンピュータ実行可能命令を含むことを特徴とする請求項8に記載のコンピュータ可読媒体。
【請求項10】
前記(e)は、
(e)(1)前記第1のコンピュータ以外の前記コンピュータから宣伝を受け取ることを実行する、
コンピュータ実行可能命令を含むことを特徴とする請求項8に記載のコンピュータ可読媒体。
【請求項11】
前記(f)は、
(f)(1)(d)への応答として、前記第1のコンピュータ以外の前記コンピュータに対し、バージョン情報に従うユーザ・アカウントのリストを提供するよう要求すること
を実行する、コンピュータ実行可能命令を含むことを特徴とする請求項8に記載のコンピュータ可読媒体。
【請求項12】
前記(f)は、
(f)(2)より新しいユーザ・アカウントを含む前記リストを、前記第1のコンピュータ以外の前記コンピュータから受け取ること
を実行する、コンピュータ実行可能命令を含むことを特徴とする請求項11に記載のコンピュータ可読媒体。
【請求項13】
前記第1のアカウント情報は削除されることを特徴とする請求項2に記載のコンピュータ可読媒体。
【請求項14】
非管理セキュア・ワークグループをサポートするコンピュータ・システムであって、
前記非管理セキュア・ワークグループの作成、前記非管理セキュア・ワークグループへの参加(joining)、および前記非管理セキュア・ワークグループの処理、を行うセキュア・グループ・サービス・モジュール、および
アプリケーションが、前記コンピュータ・ネットワーク内の非管理セキュア・ワークグループに関する情報を取得すること、前記非管理セキュア・ワークグループを作成すること、前記非管理セキュア・ワークグループに参加(join)すること、および前記非管理セキュア・ワークグループから離脱すること、を行うことを可能にするアプリケーション・プログラム・インターフェース(API)モジュール
を備えることを特徴とするコンピュータ・システム。
【請求項15】
前記アプリケーション・プログラム・インターフェース・モジュールは、前記セキュア・グループ・サービス・モジュールにクエリすることにより、前記コンピュータ・ネットワーク内の非管理セキュア・ワークグループおよびメンバになっていないコンピュータからなるリストを、前記アプリケーションに提供することを特徴とする請求項14に記載のコンピュータ・システム。
【請求項16】
前記アプリケーション・プログラム・モジュールは、前記セキュア・グループ・サービス・モジュールにクエリすることにより、選択された非管理セキュア・ワークグループの属性を含む、前記選択された非管理セキュア・ワークグループに関する情報、および前記選択された非管理セキュア・ワークグループのメンバ・コンピュータのリストを、前記アプリケーションに提供することを特徴とする請求項14に記載のコンピュータ・システム。
【請求項17】
前記アプリケーション・プログラム・モジュールは、前記セキュア・グループ・サービス・モジュールにクエリすることにより、非管理セキュア・ワークグループ内のコンピュータに関する情報を、前記アプリケーションに提供することを特徴とする請求項14に記載のコンピュータ・システム。
【請求項18】
前記アプリケーション・プログラム・モジュールは、前記セキュア・グループ・サービス・モジュールに命令することにより、前記アプリケーションから、新しい非管理セキュア・ワークグループを前記コンピュータ・ネットワーク内に作成することを許可することを特徴とする請求項14に記載のコンピュータ・システム。
【請求項19】
前記アプリケーション・プログラム・モジュールは、前記セキュア・グループ・サービス・モジュールに命令することにより、前記アプリケーションから、前記コンピュータ・システムが前記コンピュータ・ネットワーク内の前記非管理セキュア・ワークグループに参加(join)したり、前記非管理セキュア・ワークグループから離脱したりすることを許可することを特徴とする請求項14に記載のコンピュータ・システム。
【請求項20】
コンピュータ実行可能命令が格納された、第1のコンピュータにおけるコンピュータ可読媒体であって、前記命令は、
(a)非管理セキュア・ワークグループの非メンバである前記第1のコンピュータに関連するアカウントを確立するために、前記非管理セキュア・ワークグループのメンバである第2のコンピュータに自己署名証明書を送るステップ、
(b)前記第2のコンピュータの関連する証明書、共有秘密、および前記非管理セキュア・ワークグループのコピーされた証明書を格納するステップ、
(c)前記第2のコンピュータの対応するアカウントを前記第1のコンピュータ上に作成するステップ、
(d)前記第1のコンピュータが、前記非管理セキュア・ワークグループのワークグループ・メンバであることをブロードキャストするステップ、および
(e)アカウント情報を前記第2のコンピュータと同期させるステップ
を含む方法を実行するように構成されることを特徴とするコンピュータ可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10A】
image rotate

【図10B】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図12A】
image rotate

【図12B】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図14A】
image rotate

【図14B】
image rotate

【図15A】
image rotate

【図15B】
image rotate


【公表番号】特表2009−503632(P2009−503632A)
【公表日】平成21年1月29日(2009.1.29)
【国際特許分類】
【出願番号】特願2008−521508(P2008−521508)
【出願日】平成18年7月10日(2006.7.10)
【国際出願番号】PCT/US2006/026814
【国際公開番号】WO2007/008852
【国際公開日】平成19年1月18日(2007.1.18)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】