(57)【要約】【課題】  クレデンシャルローミングを提供すること。【解決手段】  複数の異なる計算処理ユニット間でのクレデンシャルローミングを可能にする実施形態を説明する。例示的なシステムは、クライアントログオンなどのイベント通知を受け取るイベントハンドラを含む。このイベントハンドラは、イベント通知を受け取ったことに応答して、管理サービス３００を呼び出す。管理サービス３００は、ユーザのクレデンシャルが、いくつかの異なる計算処理デバイスのいずれからも利用可能になるように、ユーザのクレデンシャルをアクティブディレクトリなどのリモートディレクトリサービスと同期させる同期モジュール３２０を含む。【選択図】  図３
2005303993.tif 000002
【特許請求の範囲】
【請求項１】
イベント通知を受け取ったことに応答してローカルクレデンシャルおよびリモートクレデンシャルを列挙するステップと、
前記ローカルクレデンシャルと前記リモートクレデンシャルを同期させるステップと、
を含むことを特徴とする方法。
【請求項２】
前記ローカルクレデンシャルと前記リモートクレデンシャルを同期させるステップは、前記ローカルクレデンシャルに関連付けられた少なくとも１つのタイムスタンプおよび前記リモートクレデンシャルに関連付けられた少なくとも１つのタイムスタンプに基づく、ことを特徴とする請求項１に記載の方法。
【請求項３】
前記ローカルクレデンシャルと前記リモートクレデンシャルを同期させるステップは、ハッシュ値の比較に基づく、ことを特徴とする請求項１に記載の方法。
【請求項４】
前記同期させるステップは、エラーハンドリングを含む、ことを特徴とする請求項１に記載の方法。
【請求項５】
前記同期させるステップは、前記ローカルクレデンシャルの少なくとも１つをリモートクレデンシャルキャッシュに書き込むステップを含む、ことを特徴とする請求項１に記載の方法。
【請求項６】
前記同期させるステップは、前記リモートクレデンシャルの少なくとも１つをローカルクレデンシャルキャッシュに書き込むステップを含む、ことを特徴とする請求項１に記載の方法。
【請求項７】
前記同期させるステップは、前記ローカルクレデンシャルの少なくとも１つをローカルクレデンシャルキャッシュから削除するステップを含む、ことを特徴とする請求項１に記載の方法。
【請求項８】
前記同期させるステップは、前記リモートクレデンシャルの少なくとも１つをリモートクレデンシャルキャッシュから削除するステップを含む、ことを特徴とする請求項１に記載の方法。
【請求項９】
前記同期させるステップは、前記リモートクレデンシャルの少なくとも１つに基づいて、ローカルクレデンシャルキャッシュにある前記ローカルクレデンシャルの少なくとも１つを修正するステップを含む、ことを特徴とする請求項１に記載の方法。
【請求項１０】
前記同期させるステップは、前記ローカルクレデンシャルの少なくとも１つに基づいて、リモートクレデンシャルキャッシュにある前記リモートクレデンシャルの少なくとも１つを修正するステップを含む、ことを特徴とする請求項１に記載の方法。
【請求項１１】
前記ローカルクレデンシャルのリストを更新するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項１２】
前記リモートクレデンシャルのリストを更新するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項１３】
前記リモートクレデンシャルの状態を動的に決定するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項１４】
前記リモートクレデンシャルのステートファイルを維持するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項１５】
前記ローカルクレデンシャルのステートファイルを維持するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項１６】
前記ローカルクレデンシャルと前記リモートクレデンシャルとの間における状態の競合を解決するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項１７】
コンピュータシステム上でコンピュータプロセスを実行させるコンピュータプログラムを符号化するコンピュータプログラムプロダクトであって、前記コンピュータプロセスは、
イベント通知を受け取ったことに応答してローカルクレデンシャルおよびリモートクレデンシャルを列挙するステップと、
前記ローカルクレデンシャルと前記リモートクレデンシャルを同期させるステップと、
を含むことを特徴とするコンピュータプログラムプロダクト。
【請求項１８】
前記コンピュータプロセスにおいて、前記ローカルクレデンシャルと前記リモートクレデンシャルを同期させるステップは、前記ローカルクレデンシャルに関連付けられた少なくとも１つのタイムスタンプおよび前記リモートクレデンシャルに関連付けられた少なくとも１つのタイムスタンプに基づく、ことをさらに含むことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項１９】
前記コンピュータプロセスにおいて、前記ローカルクレデンシャルと前記リモートクレデンシャルを同期させるステップはハッシュ値の比較に基づく、ことをさらに含むことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２０】
前記コンピュータプロセスは、前記ローカルクレデンシャルの少なくとも１つをリモートクレデンシャルキャッシュに書き込むステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２１】
前記コンピュータプロセスは、前記リモートクレデンシャルの少なくとも１つをローカルクレデンシャルキャッシュに書き込むステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２２】
前記コンピュータプロセスは、前記ローカルクレデンシャルの少なくとも１つをローカルクレデンシャルキャッシュから除去するステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２３】
前記コンピュータプロセスは、前記リモートクレデンシャルの少なくとも１つをリモートクレデンシャルキャッシュから除去するステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２４】
前記コンピュータプロセスは、ローカルクレデンシャルキャッシュにある前記ローカルクレデンシャルの少なくとも１つを修正するステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２５】
前記コンピュータプロセスは、リモートクレデンシャルキャッシュにある前記リモートクレデンシャルの少なくとも１つを修正するステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２６】
前記コンピュータプロセスは、ローカルクレデンシャルのリストを更新するステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２７】
前記コンピュータプロセスは、リモートクレデンシャルのリストを更新するステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２８】
前記コンピュータプロセスは、前記リモートクレデンシャルの状態を維持するステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２９】
前記コンピュータプロセスは、前記リモートクレデンシャルの状態を動的に決定するステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項３０】
前記コンピュータプロセスは、前記ローカルクレデンシャルの状態を維持するステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項３１】
前記コンピュータプロセスはエラーハンドリングをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項３２】
前記コンピュータプロセスは、前記ローカルクレデンシャルと前記リモートクレデンシャルとの間における状態の競合を解決するステップをさらに含む、ことを特徴とする請求項１７に記載のコンピュータプログラムプロダクト。
【請求項３３】
イベント通知を受け取るイベントハンドラと、
前記イベントハンドラがイベント通知を受け取ったとき、ローカルクレデンシャルとリモートクレデンシャルが相互に異なる場合には、前記ローカルクレデンシャルと前記リモートクレデンシャルを同期させるために、前記イベントハンドラと関連して動作する同期モジュールと、
を具備したことを特徴とするシステム。
【請求項３４】
前記イベント通知は、セッションイベント、ログオンイベント、ログアウトイベント、ロックイベント、アンロックイベント、タイマイベント、ポリシー適用イベント、およびクレデンシャル更新イベントのうちの少なくとも１つである、ことを特徴とする請求項３３に記載のシステム。
【請求項３５】
前記クレデンシャルは、暗号化クレデンシャル、トークン、非対称鍵ペア、対称鍵、デジタル証明書、ＸｒＭＬライセンス、認証クレデンシャル、許可クレデンシャルのうちの少なくとも１つを含む、ことを特徴とする請求項３３に記載のシステム。
【請求項３６】
前記同期モジュールのために前記ローカルクレデンシャルを列挙するローカルストアマネージャをさらに含む、ことを特徴とする請求項３３に記載のシステム。
【請求項３７】
前記同期モジュールのために前記リモートクレデンシャルを列挙するリモートストアマネージャをさらに含む、ことを特徴とする請求項３３に記載のシステム。
【請求項３８】
前記ローカルクレデンシャルはローカルキャッシュに格納される、ことを特徴とする請求項３３に記載のシステム。
【請求項３９】
前記ローカルクレデンシャルは、任意の数（ｎ個）のクライアントで提供されるローカルキャッシュに格納される、ことを特徴とする請求項３３に記載のシステム。
【請求項４０】
前記ローカルクレデンシャルはマスタ鍵を用いて暗号化される、ことを特徴とする請求項３３に記載のシステム。
【請求項４１】
前記リモートクレデンシャルはリモートキャッシュに格納される、ことを特徴とする請求項３３に記載のシステム。
【請求項４２】
前記ローカルクレデンシャルは、任意の数（ｎ個）のホストで提供されるリモートキャッシュに格納される、ことを特徴とする請求項３３に記載のシステム。
【請求項４３】
前記リモートクレデンシャルは、リモートディレクトリサービスによって維持される、ことを特徴とする請求項３３に記載のシステム。
【請求項４４】
前記リモートクレデンシャルは暗号化される、ことを特徴とする請求項３３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はクレデンシャルローミング(credential roaming)に関するものである。より詳述すると、本発明は、電子計算処理システムにおけるクレデンシャルローミングのためのシステムおよび方法に関する。
【背景技術】
【０００２】
ネットワークを介した通信でのデータ（電子メールメッセージやファイルなど）を保護するために、様々な種類の暗号化方式が広く使用されている。例えば、対称暗号(symmetric encryption)では、データを暗号化(encrypting)するユーザとそのデータを暗号化解除(decrypting)するユーザの両方が同じ暗号鍵(encryption key)のコピーを必要とする。非対称暗号(asymmetric encryption)は、公開鍵暗号とも呼ばれ、鍵ペア（例えば、公開鍵と秘密鍵）を使用する。非対称暗号では、公開鍵は共用され得るが、秘密鍵は共用されない。
【０００３】
暗号鍵(encryption key)は、コンピュータシステム上の、例えば、ユーザプロファイルやユーザ設定(user setting)、クレデンシャル(credential)のための他のリポジトリ(repository)の一部などとして格納され得る。暗号鍵は、無許可のユーザがその暗号化方式を解読し得る可能性を低減するために、やがて変更され、置換され得る。いずれにしても、ユーザには、そのユーザが認証(authenticate)され（ログオン時などに）、ユーザプロファイルがコンピュータシステム上にロードされた後で、暗号鍵へのアクセスが提供される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、ユーザは、複数のコンピュータシステム（例えば、１台のパーソナルコンピュータと１台または複数のモバイル機器など）で暗号鍵にアクセスすることを必要とし得る。ユーザは、１台のコンピュータシステムから別のシステムに（例えば、ディスケットや他の取り外し可能記憶媒体を使用して）暗号鍵を移すこともできるが、これは面倒で時間がかかる。スマートカードも使用され得るが、高価である。代替として、ユーザプロファイルをネットワークサーバ上に格納しておき、ユーザがネットワークに接続する度に、様々な異なるコンピュータシステムからアクセスすることもできる。しかしながら、ユーザプロファイルが大きく（数メガバイト）、ネットワークサーバからユーザプロファイルをダウンロードするとログオンプロセスが遅くなることもある。また、ユーザは、（ネットワークが利用できないときに）ローカルで格納されたユーザプロファイルなしでは、コンピュータにログオンし、それを使用することができないこともある。
【課題を解決するための手段】
【０００５】
本明細書では、複数の異なる計算処理ユニット間などで、クレデンシャルローミングを可能にする実施形態について説明し、特許請求の範囲を記載してある。例示的システムは、オペレーティングシステムから対話式またはネットワークログオンなどのイベント通知(event notification)を受け取るイベントハンドラ(event handler)を含み得る。イベントハンドラは、イベント通知を受け取ったことに応答して管理サービス(management service)を呼び出し得る。この管理サービスは、ユーザのクレデンシャル(user's credential)（暗号化クレデンシャル(encryption credential)など）をリモートキャッシュ(remote cache)またはディレクトリサービス(directory service)と同期させる同期モジュール(synchronizing module)を含み得る。したがって、そのユーザのクレデンシャルは、いくつかの異なる計算処理デバイスのいずれからも利用可能である。
【０００６】
一部の実施形態では、コンピュータプログラムプロダクトとして提供される。コンピュータプログラムプロダクトの一実施形態は、コンピュータシステムにより読み取り可能であり、クレデンシャルローミングのためのコンピュータプログラムを符号化しているコンピュータプログラム記憶媒体を提供する。コンピュータプログラムプロダクトの別の実施形態は、計算処理システムによって搬送波中に実現され、クレデンシャルローミングのためのコンピュータプログラムを符号化するコンピュータデータ信号として提供される。
【０００７】
このコンピュータプログラムプロダクトは、イベント通知(event notification)を受け取ったことに応答して、ローカルクレデンシャル(local credential)およびリモートクレデンシャル(remote credential)を列挙(enumerate)するためにコンピュータシステム上でコンピュータプロセスを実行し、それらのローカルクレデンシャルとリモートクレデンシャルを同期させるコンピュータプログラムを符号化する。
【０００８】
別の実施形態では、方法が提供される。例示的方法は、イベント通知を受け取ったことに応答してローカルクレデンシャルおよびリモートクレデンシャルを列挙するステップと、それらのローカルクレデンシャルとリモートクレデンシャルを同期させるステップとを含む。
【０００９】
別の実施形態では、システムが提供される。例示的システムは、イベント通知を受け取るイベントハンドラ(event handler)を含む。同期モジュール(synchronizing module)は、イベントハンドラと関連して動作する。この同期モジュールは、イベントハンドラがイベント通知を受け取ったときに、ローカルクレデンシャルとリモートクレデンシャルが相互に異なる場合、それらのローカルクレデンシャルとリモートクレデンシャルを同期させる。
【発明を実施するための最良の形態】
【００１０】
クレデンシャルローミングは、任意の数（ｎ個）の計算処理デバイスにおいてローカルクレデンシャル（暗号鍵、証明書、トークンなど）を同期させるために実施され得る。説明のために、ユーザは、自分のラップトップまたはデスクトップコンピュータにおいてクレデンシャルを変更し、修正し、付加し、かつ／または除去し得るものとする。ユーザがラップトップまたはデスクトップコンピュータをログアウトすると、管理サービスは、ローカルクレデンシャルをリモートキャッシュと同期させる。リモートキャッシュは、マイクロソフトＷＩＮＤＯＷＳ（登録商標）動作環境に利用可能なアクティブディレクトリなどのリモートディレクトリサービスとして実施され得る。代替として、管理サービスは、他のイベントに応答しても同期され得る。例えば、リアルタイム同期は、１つまたは複数のクレデンシャルが付加され、除去され、かつ／または修正されたことに応答して行われ得る。
【００１１】
後で、ユーザが、自分の携帯情報端末（ＰＤＡ）またはモバイル電話を用いて電子メールメッセージを取り出すとする。ユーザがそのモバイル機器にログオンすると、そのユーザが、電子メールメッセージを送受信するための最新の完全な、暗号化クレデンシャルなどのクレデンシャルセットを利用できるように、そのユーザのクレデンシャルがリモートディレクトリサービスと同期される。
【００１２】
例示的実施形態では、管理サービスが（例えば、システムイベントに応答して）自動的に呼び出され、ユーザの積極的措置は必要とすらされない。さらに、ユーザプロファイルは、ローカルで、例えばユーザのデスクトップまたはラップトップコンピュータなどに格納され得るが、ユーザは、なお、いくつかの異なる計算処理デバイスのいずれでも最新の完全なクレデンシャルセットにアクセスすることができる。また、例示的実施形態は、（削除を検出、伝搬し、またはクレデンシャルのタイムスタンプを調べることにより）古いまたは使用しないクレデンシャルが必要とされなくなったときに、それらがユーザのシステムから除去されるようにすることもできる。
【００１３】
§例示的システムについて
図１は、クレデンシャルローミングが実施され得る、例示的ネットワーク化計算処理システム１００の概略図である。このネットワーク化コンピュータシステム１００は、ローカルエリアネットワーク（ＬＡＮ）および／または広域ネットワーク（ＷＡＮ）など、１つまたは複数の通信ネットワーク１１０を含み得る。１つまたは複数のホスト１２０および１つまたは複数のクライアント１３０ａ〜ｃは、（１つまたは複数の）通信ネットワーク１１０を介して通信可能に結合され得る。
【００１４】
ホスト１２０およびクライアント１３０ａ〜ｃ（以下一般にクライアント１３０と呼ぶ）は、イーサネット（登録商標）接続などの通信接続を介してネットワークに接続し得る。ネットワーク化計算処理システム１００などのネットワークに含まれ得る装置数についての理論的限界はないが、装置数は、主に、その通信ネットワークで実施される接続性により制限される。
【００１５】
「ホスト」および「クライアント」という用語は、両方とも、様々な計算処理サービスを実行するのに使用されるハードウェアおよびソフトウェア（コンピュータシステム全体）を指すものである。例えば、ホストは、サーバアプリケーション専用の、あるいは他のアプリケーションも走らせるサーバコンピュータとして実施され得る。クライアントは、ほんの少数の例をあげれば、独立型デスクトップまたはラップトップパーソナルコンピュータ（ＰＣ）、ワークステーション、携帯情報端末（ＰＤＡ）、あるいは多種多様な電子器具のいずれかなどとして実施され得る。
【００１６】
クレデンシャル１４０ａ〜ｃ（以下一般にクレデンシャル１４０と呼ぶ）は、１つまたは複数のクライアント１３０で提供され得る。クレデンシャルは、ほんの少数の例をあげれば、例えば、ネットワーク１１０を介したセキュアな通信のためのデータの対称および／または非対称暗号化／暗号化解除で、コンテンツにデジタル署名を適用する、あるいはシステムに認証を行うなどのために提供され得る。任意の数のクレデンシャル１４０がローカルキャッシュ１３５ａ〜ｃ（以下一般にローカルキャッシュ１３５と呼ぶ）に格納され得る。ローカルキャッシュ１３５には、ユーザプロファイルまたは（例えば、ユーザ設定およびクレデンシャルのための）その他のリポジトリが含まれ得るが、他の実施形態も企図されている。
【００１７】
クレデンシャル１４０には、ほんの少数の例示的クレデンシャルをあげれば、対称暗号鍵、非対称暗号鍵ペア、Ｘ．５０９証明書、ＸｒＭＬライセンス、トークン、認証／許可証明書など、多種多様なクレデンシャルのいずれかが含まれ得ることに留意するものである。当然ながら、クレデンシャル１４０はこれらの例だけに限るものではなく、これには現在知られており、または後日開発される他の種類のクレデンシャルも含まれ得る。
【００１８】
クレデンシャル１４０は、例えば、異なる種類のデータを暗号化／暗号化解除するためにローカルキャッシュ１３５に付加され得る。また、クレデンシャル１４０は、例えば、無許可のユーザが暗号方式を解読し得る可能性を低減するなどのために、修正、置換され得る。使用されなくなったクレデンシャルは除去され得る。クライアントのいずれか１つ（１３０ａなど）で１つまたは複数のクレデンシャル１４０が付加、修正、置換、または除去された場合、以下でより詳細に説明するように、ユーザが任意の数（ｎ個）の異なるクライアントにおいて最新の完全な暗号化クレデンシャルセットを利用できるように、この変更は、１つまたは複数の他のクライアント（１３０ｂ、１３０ｃなど）に伝搬され得る。
【００１９】
例示的実施形態では、ローカルクレデンシャル１４０は、例えば、１つまたは複数のホスト１２０や、ワークグループ環境中の別のクライアント１３０にある共用キャッシュなどのリモートキャッシュ１２５で提供されるリモートクレデンシャル１５０と同期され得る。したがって、ユーザは、他のクライアント１３０にログオンしたときに最新の完全なクレデンシャルセットを利用することができる。
【００２０】
リモートキャッシュ１２５は、分散軽量ディレクトリアクセスプロトコル（ＬＤＡＰ）やＸ．５００ディレクトリサービスといったディレクトリサービスとして実施され得る。ディレクトリサービスは、モノリシックとすることができ、あるいはマルチマスタ実施形態またはマスタ／スレーブ実施形体として分散させることもできる。リモートキャッシュ１２５は、リモートクレデンシャル１５０が無許可のユーザによる暗号漏洩、窃盗、または悪用に曝されないように保護され、または暗号化された状態で格納され得る。
【００２１】
ディレクトリサービスの一例が、マイクロソフトＷＩＮＤＯＷＳ（登録商標）動作環境と共に利用可能なアクティブディレクトリである。アクティブディレクトリは、包括的ディレクトリサービスを提供するために分散計算処理環境に配置され得るディレクトリサービスである。アクティブディレクトリは、一企業が必要とするディレクトリ数を隔離、移行、集中管理、削減するための統合点として働く。アクティブディレクトリは、ネットワークセキュリティのための中央権限（ＣＡ）としても働く。
【００２２】
ただし、リモートキャッシュ１２５は、本明細書に示す例に限定されず、任意の適当な方式で実施され得ることに留意されたい。
【００２３】
図２は、例えば通知サービスなどを用いてクレデンシャルローミングを実施する例示的モジュールの機能構成図である。通知サービス(notification service)２００は、コンピュータ可読記憶装置またはメモリに格納され、１つまたは複数のクライアント（図１のクライアント１３０ａ〜ｃなど）にあるプロセッサ（または処理ユニット）によって実行可能なコンピュータ可読プログラムコード（ソフトウェアおよび／またはファームウェアなど）として実施され得る。通知サービス２００は、様々なシステムイベントの通知を受け取り、ユーザのローカルクレデンシャルとリモートクレデンシャルを同期させるために管理サービス２５０を呼び出す。したがって、同期は、ユーザにとっては自動的、透過的である。
【００２４】
図２を参照すると、通知サービス２００は、イベントハンドラ２１０を含み得る。イベントハンドラ２１０は、イベント２２０ａ〜ｃ（以下一般にイベント２２０と呼ぶ）の通知を受け取る。イベント２２０には、例えば、ほんの少数の例示的イベントをあげれば、起動、シャットダウン、ログオン、ログオフ、ロック、アンロックなどが含まれ得る。他のイベントには、それだけに限らないが、セッションイベント（ポリシー更新、プロセスの実行、ネットワーク接続など）、タイマイベント（８時間ごと、月１回など）も含まれ得る。任意選択で、イベントは、手動で、例えば、ユーザがクレデンシャル同期を要求することによってもトリガされ得る。
【００２５】
イベントハンドラ２１０は、少なくとも一部はイベント２２０に基づいて１つまたは複数のジョブ２３０を生成し得る。ジョブ２３０には、他のサービスへの呼び出しが含まれ得る。例えば、ジョブ２３０は、自動登録サービス２４０を呼び出し得る。自動登録は、ユーザプロファイルにクレデンシャルなどを取り込むのに使用され、ユーザがシステムにとって新規（ゲストなど）であるときに、ネットワークセキュリティを危険に曝さずに限られた機能および基本リソースへのアクセスを提供するために呼び出され得るサービスである。自動登録(auto enrollment)は、その計算処理環境でのシステムポリシーなどに基づき、ユーザのためにクレデンシャルを要求／更新することにより、ユーザを自動的に「登録(enroll)する」。ジョブ２３０は、以下でより詳細に論じるように、暗号化クレデンシャルをリモートキャッシュ（図１のリモートキャッシュ１２５など）と同期させるために管理サービス２５０を呼び出すこともできる。
【００２６】
ジョブ２３０は、ディスパッチャ(dispatcher)２６０に渡され得る。ジョブディスパッチャ２６０は、待ち行列(queue)からジョブ２３０を取り出し、順次にジョブ２３０を処理することができる。ジョブディスパッチャ２６０は、ジョブを処理するためにどのプログラムコード（またはモジュール）をロードすべきか、そのプログラムコードをいつロードすべきか決定する。ジョブディスパッチャ２６０は、使用されていないプログラムコードをアンロードすることもできる。
【００２７】
通知サービス２００は、不要なリソース消費を減らすためにジョブ２３０をインテリジェントに管理する論理も含み得る。例示的実施形態では、ジョブディスパッチャ２６０は、ジョブ２３０を処理するプログラムコード（またはモジュール）がすでにロードされたかどうか判定する。また、ジョブ待ち行列２７０が空である（例えば保留のジョブ２３０がない）場合、ジョブディスパッチャ２６０は、ロードされたプログラムコード（またはモジュール）を解放する。
【００２８】
別の例示的実施形態では、イベントハンドラ２１０は、待ち行列２７０で、自動登録サービス２４０を呼び出すジョブ２３０の前に、管理サービス２５０を呼び出すジョブ２３０を配列し得る。イベント２２０がジョブ２３０をトリガして自動登録サービス２４０と管理サービス２５０の両方を呼び出させたとき、管理サービスが同期時にユーザのクレデンシャルを提供し得る場合には、自動登録サービス２４０を呼び出すジョブ２３０が待ち行列２７０から除去され得る。
【００２９】
別の例示的実施形態では、（例えば、イベント２２０が他のイベントをトリガするときの）管理サービス２５０への反復呼び出しを減らすために、抑制論理が実施され得る。例えば、ディスパッチャ２６０は、ジョブ待ち行列２７０を調べ、重複した、あるいは不要なジョブ２３０があればそれを廃棄し得る。
【００３０】
先に進む前に、通知サービス２００は、図２に示す例示的モジュールだけに限らないことに留意するものである。例えば、これらの機能は、別々のモジュールとして実施される必要はない。他の実施形態では、他の機能構成要素も含まれ得る。実施形態に関わらず、通知サービスは、ローカルクレデンシャルとリモートクレデンシャルを同期させるために管理サービス２５０を呼び出すことができる。
【００３１】
図３は、例えば管理サービスを用いて、クレデンシャルローミングを実施する例示的モジュールの機能構成図である。管理サービス(management service)３００は、通知サービス３１０（例えば、図２を参照して詳述した通知サービスなど）と動作可能に関連付けられ得る。通知サービス３１０は、イベントの通知を受け取ったことに応答して、管理サービス３００を呼び出し得る。管理サービス３００は、ローカルクレデンシャルとリモートクレデンシャルを評価、比較し、それらが異なる場合は、ユーザが、任意の数（ｎ個）の異なるクライアントを使用するときに、最新の完全なクレデンシャルセットを利用できるように、それらのローカルクレデンシャルとリモートクレデンシャルを同期させる。
【００３２】
管理サービス３００は、コンピュータ可読記憶装置またはメモリに格納され、１つまたは複数のクライアント（図１のクライアント１３０ａ〜ｃなど）により実行可能なコンピュータ可読プログラムコード（ソフトウェアおよび／またはファームウェアなど）として実施され得る。管理サービス３００は、クレデンシャルを評価し、競合を解決し、ローカルキャッシュとリモートキャッシュのクレデンシャルを更新する同期モジュール３２０を含み得る。
【００３３】
同期モジュール３２０は、ローカルストアマネージャ３３０およびリモートストアマネージャ３４０と動作可能に関連付けられ得る。ローカルストアマネージャ３３０は、ローカルクレデンシャル３５５のために１つまたは複数のローカルキャッシュ３５０と関連付けられ得る。また、ローカルストアマネージャ３３０は、ローカル暗号化クレデンシャル３５５をローカルでロード／保存する手順を抄録し得る。リモートストアマネージャ３４０は、１台または複数のサーバコンピュータまたはホスト３７０を介して提供されるリモートキャッシュ３６０（ディレクトリサービスなど）と動作可能に関連付けられ得る。また、リモートストアマネージャ３４０は、同期中などに、リモートディレクトリサービス３６０を介して１つまたは複数のリモートクレデンシャル３６５にアクセスするために、ホスト３７０にセキュアにバインドし得る。
【００３４】
先に進む前に、クレデンシャルは、例えばリモートディレクトリサービスなどを介して、ホストで提供されるものだけに限らないことに留意するものである。別の例示的実施形態では、リモートキャッシュは、ワークグループ環境などでの別のクライアントにある共用キャッシュとし得る。したがって、１つまたは複数のワークグループ中のクライアントは、そのワークグループ中のクライアント間で共用されるクレデンシャルを同期させることができる。
【００３５】
ストアマネージャ(store manager)３３０、３４０は、同期モジュール３２０が評価するために、クレデンシャル３５５、３６５を（ローミングクレデンシャルのリストなどとして）列挙し得る。ストアマネージャ３３０、３４０は、同期モジュール３２０が、任意の競合(conflict)を解決(resolve)し得るように、同期モジュール３２０に、クレデンシャル３５５、３６５の総体(collection)が変更された最終日時などの情報を提供することもできる。
【００３６】
同期モジュール３２０は、ローカルストアマネージャ３３０およびリモートストアマネージャ３４０と連動して、ローカル暗号化クレデンシャル３５５とリモート暗号化クレデンシャル３６５を同期させることができる。多くの呼び出しの際には、ローカル暗号化クレデンシャルにもリモート暗号化クレデンシャルにも変更がないことがある。呼び出し時に、ローカルクレデンシャル３５５だけ、またはリモートクレデンシャル３６５だけにしか変更を加える必要がないこともある。しかしながら、ローカルクレデンシャル３５５とリモートクレデンシャル３６５の両方に変更を加える必要がある状況もあり得る。したがって、同期モジュールは、これらのシナリオのそれぞれを処理するように実施され得る。
【００３７】
ローカルおよびリモートの暗号化クレデンシャルを評価するのは、特に、数百あるいは数千の暗号化クレデンシャルがある場合、時間のかかるプロセスとなり得る。したがって、同期モジュール３２０は、まず、暗号化クレデンシャルを配列にソートし、それから、ソートされた配列の線形比較を行い得る。当然ながら、それだけに限らないが、ハッシュおよびタイムスタンプを用いて変更の有無を判定するなど、他の実施形態も企図されている。
【００３８】
比較中、同期モジュール３２０は、ローカルクレデンシャル３５５とリモートクレデンシャル３６５を同期させるために解決する必要のある競合に遭遇し得る。例えば、ローカルクレデンシャル（説明のために「古いクレデンシャル(old credential)」と呼ぶ）は、修正(modify)され、あるいは不要になったためにローカルキャッシュ３５０から除去／削除され得る。しかしながら、同期モジュール３２０がローカルクレデンシャル３５５とリモートクレデンシャル３６５を比較するときに、リモートクレデンシャルが依然としてその古いクレデンシャルを含むことがある。同期モジュール３２０はそのような競合を解決し、それによって、古いクレデンシャルが修正され、あるいはリモートキャッシュ３６０から除去され、ローカルキャッシュ３５０再書き込みされないようにする。
【００３９】
例示的実施形態では、修正または除去／削除されているクレデンシャルは、「タグ付け(tagged)」され、あるいはリモートキャッシュ中で識別される。したがって、その修正または削除操作は、複数のクライアントにわたって貫徹される。一例としては、古いクレデンシャルが第１のクライアントから削除された場合、同期モジュール３２０は、リモートキャッシュにおいてその古いクレデンシャルを、除去または削除されていると識別する。やはりその古いクレデンシャルのコピーを持つ第２のクライアントがリモートキャッシュと同期すると、古いクレデンシャルが第２のクライアントから削除され、リモートキャッシュには再書き込みされない。別の例としては、古いクレデンシャルが第１のクライアントにおいて修正された場合、同期モジュール３２０は、リモートキャッシュにおいてその古いクレデンシャルを修正されていると識別する。やはりその古いクレデンシャルのコピーを持つ第２のクライアントがリモートキャッシュと同期すると、古いクレデンシャルが第２のクライアントにおいて修正され、リモートキャッシュではその元の状態に戻されない。
【００４０】
例示的実施形態では、同期モジュール３２０は、競合解決(conflict resolution)のために１つまたは複数のステートファイル(state file)３９５を維持(maintain)する。このステートファイルは、ユーザ毎に存続するデータ構造(per-user persisted data structure)（コンピュータファイル、データベース、メモリテーブル、ログなど）であり、ローカルクレデンシャル３５０の状態を格納するのに使用され得る。このステートファイルは、ローカルで、例えば、管理サービス３００に動作可能に関連付けられたキャッシュ３９０などに格納され得る。例示的実施形態では、すべてのフィールドは、２進の、ネイティブバイト順で格納され得るが、他の実施形態も企図されている。
【００４１】
図４ａは、例示的ステートファイル４００（データ構造など）を示す。ステートファイル４００は、ファイルバージョン(file version)４１０およびフラグ(flag)４２０を含み得る。フラグ４２０は、例えば、クレデンシャルがユーザ保護されているか、それともネットワーク上で交換され得るかを指示するのに使用され得る。代替として、フラグ４２０（または別のフラグ）を用いて、競合を解決するために厳密行列を使用すべきか、それとも寛容行列を使用すべきかを指示することもできる。
【００４２】
ステートファイル４００は、１つまたは複数のクレデンシャル状態４３０〜４３２も含み得る。例えば、ステートファイル４００は、同期モジュールが呼び出された最終日時（ＴＳ）、ローカルストアが変更された最終日時（ＴＬ）、リモートキャッシュが変更された最終日時（ＴＲ）などの状態を含み得る。ステートファイルは、クレデンシャル・ステートエントリ(credential state entries)４４０も含み得る。
【００４３】
図４ｂは、例示的なステートエントリ４５０（データ構造(data structure)など）を示す。ステートエントリ(state entry)４５０は、各クレデンシャルごとのローカルステートのリスト(list of local state)を含み得る。ローカルステート(local state)は、クレデンシャルＩＤ４６０、フラグ４７０、タイムスタンプ４８０、およびハッシュ４９０を含み得る。
【００４４】
先に進む前に、タイムスタンプはクロックベースの（例えば、物理またはシステム）時間に限らないことに留意するものである。例えば、タイムスタンプは、更新が行われるたびに変更される更新連番などのカウンタを含み得る。実際には、クロックベースのタイムスタンプは、ローカルキャッシュに使用され、更新連番ベースのタイムスタンプは、リモートキャッシュに使用され得る。
【００４５】
図４に示す実施形態では、クレデンシャルＩＤ４６０は、暗号化クレデンシャルファイルの「圧縮(compressed)」パス(path)である。クレデンシャルＩＤ４６０は、１バイトのＡＳＣＩＩ文字列として表され得るが、他の実施形態も企図されている。また、任意の適当なフラグ４７０が定義され、オン（１など）またはオフ（０など）に設定され得る。例えば、フラグは、暗号化クレデンシャルがローミングである（同期され得る）か、それとも固定である（同期すべきでない）かを指示し得る。
【００４６】
図４に示すステートファイル４００などのステートファイルを用いて競合解決(conflict resolution)のために実施し得る動作を、以下でより詳細に説明する。競合解決(conflict resolution)は、アービトレーション行列(arbitration matrix)により示すことができる。
【００４７】
図５ａおよび図５ｂは、例示的なアービトレーション行列を示す。行列５００は寛容(lenient)であり、行列５５０は厳密(strict)である。行列５００、５５０では、エクスポート可能なクレデンシャルを文字「Ｅ」で表し、保護された（またはエクスポート不能な）クレデンシャルを文字「Ｐ」で表し、「／Ｅ」および「／Ｐ」は反対を表す。両方のクレデンシャルのタイムスタンプを用いて、どの証明書が最新ものであるか判定される。最新の証明書を用いて、ローカルおよびリモートキャッシュが上書きされる。その他の証明書は削除される。
【００４８】
前述の例示的実施形態は説明のために提供されていることに留意するものである。別の実施形態も企図されている。
【００４９】
§例示的な動作について
本明細書で説明するのは、暗号化クレデンシャルローミングを実施する例示的方法である。本明細書で説明する方法は、１つまたは複数のコンピュータ可読媒体上に論理命令として実施され得る。プロセッサ上で実行されると、この論理命令は、汎用計算処理デバイスを、本明細書で説明する方法を実施する専用マシンとしてプログラムさせる。以下の例示的動作では、図に示す構成要素および接続を用いて、暗号化クレデンシャルローミング(encryption credential roaming)を実施することができる。
【００５０】
図６は、暗号化クレデンシャルローミングのために実施され得る例示的動作を示す流れ図である。動作(operation)６１０において、クライアントは、イベント通知を受け取り得る。イベント通知には、例えば、セッションイベント、ログオンイベント、ログアウトイベント、ロックイベント、アンロックイベント、タイマイベント、ポリシー適用イベントおよび／またはクレデンシャル更新イベントなどが含まれ得る。動作６２０において、ローカルクレデンシャルが列挙され、動作６３０でリモートクレデンシャルが列挙され得る。
【００５１】
動作６４０で、競合の有無を判定するためにローカルクレデンシャルとリモートクレデンシャルが比較され得る。競合がない場合、動作は、矢印６５０で示すように動作６１０に戻る。あるいは、列挙されたローカルクレデンシャルのいずれか１つまたは複数が列挙されたリモートクレデンシャルと異なる場合には、競合が存在し得る。説明のために、クレデンシャルが付加され、修正され、またはローカルクレデンシャルキャッシュおよび／またはリモートクレデンシャルキャッシュから削除されている場合には、列挙されたローカルクレデンシャルが列挙されたリモートクレデンシャルと異なり得るものとする。
【００５２】
競合(conflict)が存在する場合、その競合は、動作６６０において、例えば、ローカルクレデンシャルキャッシュおよびリモートクレデンシャルキャッシュにどのクレデンシャルを付加／除去する必要があるか判定することにより解決される。例示的実施形態では、競合は、ローカルクレデンシャルおよびリモートクレデンシャルに関連付けられたタイムスタンプに基づいて解決され得る。動作６７０では、例えば、ローカルクレデンシャルキャッシュとリモートクレデンシャルキャッシュの両方が完全な、更新済みの暗号化クレデンシャルセットを含むように、ローカルクレデンシャルおよび／またはリモートクレデンシャルが同期される。
【００５３】
説明のために、動作６６０（競合解決(conflict resolution)）および動作６７０（同期(synchronization)）は以下のように実施され得る。
【００５４】
クレデンシャルローミングが最初にクライアントに使用可能にされたとき、そのクライアントは、すでに、リモートキャッシュにあるのと同じクレデンシャルを（手動鍵(manual key)またはＰＫＣＳ＃１２ブロブインポート(blob import)を介して）持っている可能性がある。しかしながら、クレデンシャルストレージ(credential storage)およびリンカディテール(linker detail)は、そのクレデンシャルがどのようにインポートされたかに応じて異なり得る。この最初の競合は、以下のように解決され得る。
【００５５】
リモートクレデンシャルがすでにダウンロードされている場合、これらの動作が実行される前に（例えば、秘密鍵にアクセスするための）マスタ鍵が同期され、それによって、マスタ鍵を必要とする秘密鍵を使用可能にすることができる。
【００５６】
次いで、管理サービスは、例えば、属性のメタデータを介して、リモートキャッシュの作成日時を取り出すことができ、それをＴＣに割り当てる。競合する証明書のタイムスタンプのどちらかまたは両方がＴＣより新しい場合、それらの証明書の少なくとも１つは、クレデンシャルローミングの配置後に修正されており、その最新のキャッシュが使用される。
【００５７】
そうでない場合には、ローカルキャッシュとリモートキャッシュの両方が、クレデンシャルローミングの配置前に作成されている。クレデンシャルがユーザ保護されているか、それともエクスポート可能であるかを判定するために、両方の証明書の情報フラグが取り出される。また、ポリシーフラグも取り出され、競合を解決するのに寛容行列（図５の行列５００など）を使用すべきか、それとも厳密行列（図５の行列５５０など）を使用すべきかが判定され得る。
【００５８】
クレデンシャルローミングのアルゴリズムの例示的実施形態を以下に示す。この実施形態によれば、ＴＬは、全ローカルキャッシュが変更された最新日時を表す。ＴＬは、ローカルマシンのシステム時間に基づくものであり、それがローカルキャッシュの更新日時と比較され得るため、タイマのずれは生じない。ＴＲは、最終の同期で全リモートキャッシュの更新シーケンス番号（ＵＳＮ：Update Sequence Nunber）に変更が加えられた最新日時を表す。ＴＲは、リモートキャッシュからのＵＳＮを用いることができ、それがリモートキャッシュのＵＳＮと比較され得るため、タイマのずれは生じない。
【００５９】
まず、現在の最終変更日時がローカルキャッシュから読み取られ、ＵＳＮがリモートキャッシュから読み取られる。次いで、ＴＬおよびＴＲがステートファイルヘッダから読み取られる。ＴＬはローカルキャッシュから読み取られたばかりの最終変更日時と比較され、ＴＲはリモートキャッシュから読み取られたＵＳＮと比較される。それらが両方とも等しい場合、何も行う必要はない。そうでない場合、アルゴリズムは、ローカル変更リストＣＬおよびリモート変更リストＣＲを作成し得る。最初は両方とも空である。
【００６０】
ローカルキャッシュが変更された最終日時がＴＬより新しい場合、すべてのローカルキャッシュクレデンシャルが読み取られ、ステートファイル中の対応するエントリと比較される。クレデンシャルのいずれかが異なる場合、ＣＬに、そのクレデンシャルまたはステートファイルエントリ、クレデンシャルが更新された最新日時、および示唆された措置（例えば、リモート／ローカルキャッシュに付加する、対応するリモート／ローカルキャッシュクレデンシャルを修正する、対応するリモート／ローカルキャッシュクレデンシャルを削除する、ステートファイルエントリを更新するなど）を記録するエントリが作成され得る。クレデンシャルは、そのハッシュ値(hash value)が変化している場合、そのフラグ値が（例えば、ＤＥＬＥＴＥＤ（削除済み）、ＵＮＷＲＩＴＥＡＢＬＥ（書込み不可）、ＵＮＲＥＡＤＡＢＬＥ（読取り不可）などに）変化している場合、あるいはローカルキャッシュが、ステートファイルがそのレコードを持たないクレデンシャルを持ち、またはステートファイルが、ローカルキャッシュがそのレコードを持たないエントリを持つ場合には、異なるとみなされ得る。
【００６１】
リモートキャッシュの最終ＵＳＮがＴＲと異なる場合、リモートキャッシュクレデンシャルのすべてが読み取られ、前述と同じ動作が実行される。変更リストＣＲも更新され得る。
【００６２】
次いで、両リスト中の同じクレデンシャルに対して措置が実行されているかどうか判定するために、ＣＬとＣＲ両方が評価され得る。両リスト中の同じクレデンシャルに対して措置が実行されている場合、競合の有無を判定するためにそれらの措置が評価され得る。例えば、ＣＬがクレデンシャルＡでの「リモートを修正する(modify remote)」エントリを含み、ＣＲが同じクレデンシャルでの「ローカルを修正する(modify local)」エントリを含む場合、競合が存在し得る。この競合は、ローカルクレデンシャルとリモートクレデンシャル両方の最終変更日時に基づいて解決され得る。すなわち、より古い変更日時を有するエントリがリストから削除され得る。
【００６３】
競合があればそれを解決した後で、ローカルキャッシュおよびリモートキャッシュは、ＣＬとＣＲを併せたものに基づいて更新される。数回の再試行後でさえも更新されなかったエントリごとにフラグが設定される。
【００６４】
次いで、ステートファイルが更新される。例えば、過度に長時間設定されているＤＥＬＥＴＥＤフラグが識別され、除去される。ステートファイルヘッダおよびエントリも、結果として生じたＣＬおよびＣＲエントリに基づいて更新される。数回の再試行後でさえもステートファイルが更新されなかった場合には、破損したステートファイルにより予測不能な結果が生じ得るため、クレデンシャルローミングが使用不能にされる。
【００６５】
前述のエントリは、ハッシュ値(hash value)として評価(evaluate)され得ることに留意されたい。ハッシュ値は、例えば、クレデンシャルが不必要なキャッシュで複製されないように、セキュリティを提供し、高性能を実現する（ハッシュ比較は、通常、高速である）。しかしながら、ハッシュの使用は一例にすぎないことに留意するべきである。例えば、ステートファイルが全クレデンシャル(entire credential)を格納している場合、ハッシュの代わりにそれが２進または厳密比較に使用され得る。
【００６６】
ステートファイルに維持された最終同期日時ＴＳを用いて、ステートファイルには存在するが、リモートキャッシュには存在しないローカルキャッシュエントリをどのように処理するかが決定され得る。ＴＳから現在の日時までの経過時間が閾値時間より短い場合、リモートキャッシュはこのエントリを付加する。そうでない場合、このエントリはローカルキャッシュから削除される。
【００６７】
また、クレデンシャルを同期させる際のエラー条件(error condition)によっても、部分的に更新され、または破損したクレデンシャルが生じ得る。したがって、障害(failure)が、リモートキャッシュ(remote cache)などに伝搬(propagate)されないように、エラーハンドリングが提供される。
【００６８】
任意の例示的実施形態では、書込み動作の完了状況を指示するために「Ｗｒｉｔｅ  Ｓｔａｔｅ（書込み状態）」が返される。その値は、クレデンシャルが、それぞれ、（１）変更されていない、（２）部分的に変更された、または（３）正常に変更されたことを指示する、ＮＯＮＥ、ＰＡＲＴＩＡＬまたはＤＯＮＥとすることができる。保存動作(save operation)の結果としてＰＡＲＴＩＡＬ書込み状態が生じた場合、そのステートファイルエントリはＵＮＷＲＩＴＥＡＢＬＥとマークされる。削除動作(delete operation)の結果としてＮＯＮＥまたはＰＡＲＴＩＡＬ書込み状態が生じた場合、そのステートファイルエントリはＵＮＷＲＩＴＥＡＢＬＥとマークされる。任意の散発的な書込みまたは削除失敗について、書込みまたは削除動作が再試行され、１つのクレデンシャルでのすべての試行が失敗したときにそのステートファイルエントリがマークされ得る。
【００６９】
同期(synchronization)は、それがＵＮＷＲＩＴＥＡＢＬＥとマークされている場合には、そのローカル変更を無視し、それがＵＮＷＲＩＴＥＡＢＬＥとマークされている場合には、そのローカルクレデンシャルの削除を再試行し得る。クレデンシャルが、ＵＮＷＲＩＴＥＡＢＬＥとマークされているときに正常に上書きされた場合、またはステートファイルがそれをＵＮＷＲＩＴＥＡＢＬＥとマークしているときにそれが消滅した場合、ＵＮＷＲＩＴＥＡＢＬＥフラグはステートファイルエントリからクリアされ得る。
【００７０】
ステートファイルが更新できなかった（例えば、潜在的に破損したステートファイルを示すなどの）場合、その失敗したクライアントまたは特定のユーザについて、クレデンシャルローミングが使用不可とされ得る。後でその問題が解決された場合、それは手動で再度使用可能にされ得る。また、システムは、次の呼び出し間隔でリモートストアから知られている良好なデータをダウンロードすることにより、不良データがある場合はそれをオーバーライドする自動回復ステップを実行することもできる。
【００７１】
ローカルキャッシュ読取り失敗も処理され得る。読取り失敗は、ローミングクレデンシャルの読取り失敗が他のクレデンシャルでのローミングに影響を及ぼさないように、更新失敗より寛容に処理され得る。
【００７２】
例示的実施形態では、読取り失敗を有するクレデンシャルは、同期がそれを削除として処理しないように、ＧＥＴ  ＡＬＬ（すべてを取得する）動作により返されるローミングクレデンシャルセットに表示される。ローカルキャッシュ読取りは、失敗が生じたときに、後から再試行され得る。数回の再試行後にも依然として失敗が存在する場合、ローミングクレデンシャルは、それでもなお、ＵＮＲＥＡＤＡＢＬＥフラグビットを設定して生成される。トラブルシューティング／保守を容易にするために、情報、警告、および／またはエラーイベントが追跡され、または記録され得る。
【００７３】
本明細書で図示し、説明した動作は、単に、クレデンシャルローミングの例示的実施形態を示すものにすぎない。これらの動作は、どんな特定の順序にも限定されないことに留意すべきである。例えば、図６において、動作６２０は、動作６３０の前、後、またはそれと同時に行われ得る。別の例では、動作６２０〜６７０は、個々の暗号化クレデンシャル、異なる種類の暗号化クレデンシャル、または他の暗号化クレデンシャルのグループ（またはセット）ごとに反復され得る。クレデンシャルローミングを可能にする別の動作も実施され得る。
【００７４】
§例示的な計算処理デバイスについて
図７は、クレデンシャルローミングを実施するのに利用できる例示的な計算処理デバイス７００を示す構成図である。計算処理デバイス７００は、１つまたは複数のプロセッサまたは処理ユニット７３２、システムメモリ７３４、システムメモリ７３４を含む様々なシステム構成要素をプロセッサ７３２に結合するバス７３６を含む。バス７３６は、様々なバスアーキテクチャのいずれかを使用したメモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、およびプロセッサまたはローカルバスを含むいくつかの種類のバス構造のいずれかの１つまたは複数を表す。システムメモリ７３４は、読取り専用メモリ（ＲＯＭ）７３８およびランダムアクセスメモリ（ＲＡＭ）７４０を含む。基本入出力システム（ＢＩＯＳ）７４２は、始動時などに、計算処理デバイス７００内の要素間での情報転送を支援する基本ルーチンを含み、ＲＯＭ７３８に格納される。
【００７５】
計算処理デバイス７００は、ハードディスク（図示せず）との間で読取りおよび書込みを行うハードディスクドライブ７４４をさらに含み、取り外し可能磁気ディスク７４８との間で読取りおよび書込みを行う磁気ディスクドライブ７４６、およびＣＤ−ＲＯＭ他の光媒体などの取り外し可能光ディスク７５２との間で読取りおよび書込みを行う光ディスクドライブ７５０も含み得る。ハードディスクドライブ７４４、磁気ディスクドライブ７４６、光ディスクドライブ７５０は、適当なインターフェース７５４ａ、７５４ｂ、７５４ｃによってバス７３６に接続される。各ドライブおよびそれに関連するコンピュータ可読媒体は、計算処理デバイス７００にコンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータの不揮発性記憶を提供する。本明細書で記述する例示的環境はハードディスクを用いるが、例示的動作環境では、取り外し可能磁気ディスク７４８および取り外し可能光ディスク７５２、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）など他の種類のコンピュータ可読媒体も使用され得る。
【００７６】
ハードディスク７４４、磁気ディスク７４８、光ディスク７５２、ＲＯＭ７３８、またはＲＡＭ７４０には、オペレーティングシステム７５８、１つまたは複数のアプリケーションプログラム７６０、その他のプログラムモジュール７６２、プログラムデータ７６４を含めて、いくつかのプログラムモジュールが格納され得る。ユーザは、キーボード７６６やポインティング装置７６８などの入力装置を介して計算処理デバイス７００にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、バス７３６に結合されたインターフェース７５６を介して処理ユニット７３２に接続される。モニタ７７２またはその他の種類の表示装置も、ビデオアダプタ７７４などのインターフェースを介してバス７３６に接続される。
【００７７】
一般に、計算処理デバイス７００のデータプロセッサは、コンピュータの様々なコンピュータ可読記憶媒体に様々なときに格納された命令によってプログラムされる。プログラムおよびオペレーティングシステムは、例えば、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭなどに、または電子的に分散することができ、コンピュータの２次メモリにインストールまたはロードされる。実行時に、プログラムの少なくとも一部が、コンピュータの１次電子メモリにロードされる。
【００７８】
計算処理デバイス７００は、リモートコンピュータ７７６など、１台または複数のリモートコンピュータへの論理接続を用いてネットワーク化環境で動作し得る。リモートコンピュータ７７６は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス他の一般のネットワークノードとすることができ、通常は、計算処理デバイス７００に関して前述した諸要素の多くまたはすべてを含む。図７に示す論理接続は、ＬＡＮ７８０およびＷＡＮ７８２を含む。
【００７９】
ＬＡＮネットワーク環境で使用されるとき、計算処理デバイス７００は、ネットワークインターフェースまたはアダプタ７８４を介してローカルネットワーク７８０に接続される。ＷＡＮネットワーク環境で使用されるとき、計算処理デバイス７００は、通常、モデム７８６、またはインターネットなどの広域ネットワーク７８２を介して通信を確立する他の手段を含む。モデム７８６は、内蔵でも外付けでもよく、シリアルポートインターフェース７５６を介してバス７３６に接続される。ネットワーク化環境では、計算処理デバイス７００に関連して示すプログラムモジュール、またはその一部は、リモート記憶装置に格納され得る。図示のネットワーク接続が例示的なものであり、コンピュータ間で通信リンクを確立する他の手段も使用され得ることが理解されるであろう。
【００８０】
ホストは、通信ネットワークへの接続を可能にするホストアダプタハードウェアおよびソフトウェアを含み得る。通信ネットワークへの接続は、帯域幅要件に応じて、光結合を介したものとすることも、より一般的な導電性ケーブルを介したものとすることもできる。ホストアダプタは、計算処理デバイス７００上のプラグインカードとし実施され得る。ホストは、ハードウェアおよびソフトウェアがサポートするだけの数の通信ネットワークへの接続を提供する任意の数のホストアダプタを実装することができる。
【００８１】
本明細書で明示的に記述した具体的実施形態以外の、他の態様および実施形態は、本明細書の開示を参照することにより、当分野の技術者には明らかであろう。本明細書に記載した実施形態は一例として説明したにすぎない。
【図面の簡単な説明】
【００８２】
【図１】クレデンシャルローミングを実施するための例示的コンピュータネットワークを示す説明図である。
【図２】クレデンシャルローミングを実施するための例示的モジュールを示す機能構成図である。
【図３】クレデンシャルローミングを実施するための例示的モジュールを示す別の機能構成図である。
【図４ａ】例示的なステートファイルを示す図である。
【図４ｂ】ステートファイル中の例示的なステートエントリを示す図である。
【図５ａ】寛容行列である例示的勝者アービトレーション行列を示す図である。
【図５ｂ】厳密行列である例示的勝者アービトレーション行列を示す図である。
【図６】クレデンシャルローミングを実施するための例示的動作を示す流れ図である。
【図７】クレデンシャルローミングを実施するため利用できる例示的計算処理デバイスを示す構成図である。
【符号の説明】
【００８３】
１１０  ネットワーク
２００  通知サービス
２１０  イベントハンドラ
２２０ａ  イベント
２２０ｂ  イベント
２２０ｃ  イベント
２３０  ジョブ
２４０  自動登録サービス
２５０  管理サービス
２６０  ディスパッチャ
２７０  待ち行列
３００  管理サービス
３１０  通知サービス
３２０  同期モジュール
３３０  ローカルストアマネージャ
３４０  リモートストアマネージャ
３９５  ステートファイル
７３２  処理ユニット
７３４  システムメモリ
７３６  システムバス
７５４ａ  ハードディスクドライブインターフェース
７５４ｂ  磁気ディスクドライブインターフェース
７５４ｃ  光ドライブインターフェース
７５６  シリアルポートインターフェース
７５８  オペレーティングシステム
７６０  アプリケーションプログラム
７６２  その他のプログラムモジュール
７６４  プログラムデータ
７７２  モニタ
７７４  ビデオアダプタ
７７６  リモートコンピュータ
７８０  ローカルエリアネットワーク
７８２  広域ネットワーク
７８４  ネットワークインターフェース
７８６  モデム
【図１】
2005303993.tif 000003
【図２】
2005303993.tif 000004
【図３】
2005303993.tif 000005
【図４ａ】
2005303993.tif 000006
【図４ｂ】
2005303993.tif 000007
【図５ａ】
2005303993.tif 000008
【図５ｂ】
2005303993.tif 000009
【図６】
2005303993.tif 000010
【図７】
2005303993.tif 000011