(57)【要約】【課題】アカウント管理サーバを通じてプロバイダが共通ログオン手順を使用することを可能にする。【解決手段】異なるプロバイダのリソースへのアクセスをコントロールするアカウント管理システムは、ユーザがリソースにアクセスすることを要求する場合、動的にアカウントを作成する。リソースにアクセスするため、ユーザは自分のユーザ識別子およびパスワード（クレデンシャル）を、クライアントコンピュータを通じて提供し、アプリケーションなどのリソースを識別する。アカウント管理システムは、アカウントがクレデンシャルについて作成されているか否かを判定する。そうでない場合、アカウント管理システムはユーザを認証し、これらのクレデンシャルについての新しいアカウントを作成（登録）し、識別されたリソースをアカウントに関連付ける。【選択図】図４
2010033601.tif 000002
【特許請求の範囲】
【請求項１】
１人のユーザに割り当てられた複数のアカウントを１つのアカウントに結合するための方法であって、ユーザ識別子を含むアカウント情報がクライアントコンピュータからサーバコンピュータへログインするために使用され、第１のアカウントについてのアカウント情報が第１のユーザ識別子および第１のクライアントコンピュータに割り当てられて前記サーバコンピュータのデータベースに登録され、第２のアカウントについてのアカウント情報が第２のユーザ識別子および第２のクライアントコンピュータに割り当てられて前記サーバコンピュータのデータベースに登録され、
前記サーバコンピュータが、通信チャネルを介して、前記第２のクライアントコンピュータから第１のユーザ識別子を含むアカウント情報を取得してログイン要求を受信するステップと、
前記サーバコンピュータが、前記取得した第１のユーザ識別子に割り当てられている第１のアカウントが、前記第２のクライアントコンピュータに割り当てられて前記データベースに登録されている第２のアカウントと一致するかを判定する第１の判定ステップと、
前記サーバコンピュータが、前記第１および第２のアカウントが一致しない場合に、前記第１のアカウントおよび前記第２のアカウントが同一のユーザのアカウントであるかを指示するように前記第２のクライアントコンピュータに要求するステップと、
前記サーバコンピュータが、前記要求に対して第２のクライアントコンピュータから受信した指示に基づいて前記第１のアカウントおよび前記第２のアカウントが同一のユーザのアカウントであるかを判定する第２の判定ステップと、
前記サーバコンピュータが、前記第１のアカウントおよび前記第２のアカウントが同一のユーザのアカウントであると判定された場合に、前記データベースに登録されている第１のアカウントおよび第２のアカウントのいずれか一方のアカウント情報を他方のアカウント情報に結合し、当該結合されたいずれか一方のアカウント情報を前記データベースから削除するステップと
を含むことを特徴とする方法。
【請求項２】
１人のユーザに割り当てられた複数のアカウントを１つのアカウントに結合するための方法であって、ユーザ識別子を含むアカウント情報がクライアントコンピュータからサーバコンピュータへログインするために使用され、第１のアカウントについてのアカウント情報が第１のユーザ識別子および第１のクライアントコンピュータに割り当てられて前記サーバコンピュータのデータベースに登録され、第２のアカウントについてのアカウント情報が第２のユーザ識別子および第２のクライアントコンピュータに割り当てられて前記サーバコンピュータのデータベースに登録され、
前記サーバコンピュータが、通信チャネルを介して、前記第２のクライアントコンピュータから第１のユーザ識別子を含むアカウント情報を取得してログイン要求を受信するステップと、
前記サーバコンピュータが、前記取得した第１のユーザ識別子に割り当てられている第１のアカウントが、前記第２のクライアントコンピュータに割り当てられて前記データベースに登録されている第２のアカウントと一致するかを判定する第１の判定ステップと、
前記サーバコンピュータが、前記第１および第２のアカウントが一致しない場合に、前記第２のクライアントコンピュータに割り当てられて前記データベースに登録されている第２のユーザ識別子が、前記取得した第１のユーザ識別子と一致するかに基づいて前記第１のアカウントおよび前記第２のアカウントが同一のユーザのアカウントであるか否かを判定する第３の判定ステップと、
前記サーバコンピュータが、前記第１のアカウントおよび前記第２のアカウントが同一のユーザのアカウントであると判定された場合に、前記データベースに登録されている第１のアカウントおよび第２のアカウントのいずれか一方のアカウント情報を他方のアカウント情報に結合し、当該結合されたいずれか一方のアカウント情報を前記データベースから削除するステップと
を含むことを特徴とする方法。
【請求項３】
前記第２または第３の判定ステップは、前記第１のアカウントおよび前記第２のアカウントが同一のユーザのアカウントであると判定した場合、前記第２のクライアントコンピュータに対して第２のアカウントに関連付けられた第２のユーザ識別子を提供するように要求することを特徴とする請求項１または２に記載の方法。
【請求項４】
前記結合するステップは、前記一方の削除されたアカウント情報の中のユーザ識別子を、前記他方の結合されるアカウント情報のアカウントに割り当てることを特徴とする請求項１又は２に記載の方法。
【請求項５】
前記削除されるアカウント情報は、ユーザがアクセスを許可されるリソースを示す情報を含むことを特徴とする請求項１又は２に記載の方法。
【請求項６】
前記第２または第３の判定ステップにおいて、前記第１のアカウントおよび第２のアカウントが同一のユーザのアカウントではないと判定された場合、前記サーバコンピュータが、前記第１のアカウントを第２のクライアントコンピュータに関連付けて前記データベースに登録するステップをさらに備えたことを特徴とする請求項１又は２に記載の方法。
【請求項７】
１人のユーザに割り当てられた複数のアカウントを１つのアカウントに結合するためのサーバコンピュータにおける方法であって、前記複数のアカウントおよび前記サーバコンピュータへのログインに使用される複数のログイン情報が複数のクライアントコンピュータに割り当てられてサーバコンピュータのデータベースに登録されており、
前記サーバコンピュータが、通信チャネルを介して、前記クライアントコンピュータからログイン情報を受信するステップと、
前記サーバコンピュータが、前記ログイン情報を送信したクライアントコンピュータが前記ログイン情報に割り当てられて前記データベースに登録されているか否かを判定する第４の判定ステップと、
前記第４の判定ステップにおける判定結果が否の場合、前記サーバコンピュータが、前記クライアントコンピュータに、該クライアントコンピュータに割り当てられているアカウントが同一のユーザが保有する複数のアカウントの１つであるか否かを尋ねる問い合わせを送信し、前記クライアントコンピュータからサーバコンピュータに送信された答えに基づいて、前記クライアントコンピュータに対応するアカウントが、同一のユーザが保有する複数のアカウントの１つであるか否かを判定する第５の判定ステップと、
前記第５の判定ステップにおける判定結果が肯定の場合、前記データベースに登録されている、前記受信したログイン情報に対応するアカウントおよび前記クライアントコンピュータに対応するアカウントのいずれか一方を他方のアカウントに結合するステップと
を含むことを特徴とする方法。
【請求項８】
前記ログイン情報はユーザ識別子を含むことを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
説明されている技術は一般にアカウントの管理に関し、詳細には、様々なノードからコンピュータリソースにアクセスするためのアカウントの管理に関する。
【背景技術】
【０００２】
コンピュータリソース（たとえば、アプリケーションプログラムおよびコンピュータデータ）にアクセスするための技術では、アクセスするユーザがコンピュータリソースにアクセスすることを許可されることが必要である。許可は通常ログオン手順を使用して検証され、ここでユーザは自分のクレデンシャル（たとえば、ユーザ識別子およびパスワード）を、コンピュータリソースへのアクセスをコントロールするシステムに供給する。システムは、クレデンシャルを受信した場合、ユーザのリソースへのアクセスを許可するか否かを判定する（たとえば、ユーザ識別子に関連付けられた機能をチェックすることによる）。許可された場合、システムはユーザによるコンピュータリソースへのアクセスを可能にする。たとえば、データベースプログラムはユーザに、データベース内のデータにアクセス（たとえば、読み取りおよび書き込み）する前に自分のユーザ識別子およびパスワードを供給するように求めることができる。
【０００３】
コンピュータリソースにアクセスするためのこのような技術は、コンピュータリソース（たとえば、データベース内のデータ）が単一のソースによって提供される環境に、よく適合されている。たとえば、通信社は、ユーザがログオンセッション中にいずれかのニュース記事にアクセスする前に、ユーザにログオンすることを求めることができる。次いで、通信社はユーザに、月毎にアクセスされたすべてのニュース記事について、毎月請求することができる。コンピュータリソースの各プロバイダは通常、それら自体のログオン手順を開発する。このような開発の問題は、各プロバイダがそれら自体のログオン手順を開発する場合に他のプロバイダの努力を繰り返すことである。このような開発のもう１つの問題は、各プロバイダが異なるタイプのログオン手順を使用する可能性があり、これによってユーザを混乱させる傾向があることである。たとえば、あるプロバイダはパスワードを少なくとも８文字にすることを求める可能性があるが、別のプロバイダはパスワードを５文字から７文字にすることを求める可能性がある。したがって、両方のプロバイダのコンピュータリソースにアクセスするユーザは異なるパスワードを記憶している必要がある。異なるプロバイダが同じログオン手順を使用しようとする場合であっても、ユーザは各プロバイダから別々の請求書を受け取るはずであるという問題がなお存在する。この問題は、ユーザが少数のプロバイダのみのコンピュータリソースを使用する場合には重大とならないかもしれないが、ユーザ（たとえば、インターネットユーザ）が多数の異なるプロバイダ（たとえば、異なる報道機関および協会）のコンピュータリソースにアクセスする場合には重大である。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
これらの問題は、プロバイダに関係しないログオン組織によって手順が提供された場合、解決することができる。たとえば、ユーザはログオンを組織を通じて単一のセットのクレデンシャルによりログオンし、次いで、異なるプロバイダについてのコンピュータリソースにアクセスする。しかし、プロバイダは通常、それらのログオン手順が無関係のソースによって提供されることが、いくつかの理由のために望ましくないと感ずる。第１に、プロバイダはそれらのユーザのログオンに関連付けられた表示を、開発者によって提供されたユーザインターフェイスのルックアンドフィールと統合させることを好む。第２に、プロバイダは、プロバイダのサービスおよびリソースにアクセスする場合にプロバイダアカウントが使用されることを好む可能性がある。ログオン組織の利点を結合させてこれらの難点を回避し、しかもプロバイダが、確立されたアカウントおよびプロバイダが供給したログオン要素を使用することができる技術を有することが望ましいであろう。
【課題を解決するための手段】
【０００５】
異なるプロバイダのリソースへのアクセスをコントロールする、アカウントを管理するための方法およびシステムが提供される。一実施形態では、アカウント管理システムは、アカウント管理サーバを通じてプロバイダが共通ログオン手順を使用することを可能にする。アカウント管理システムは、ユーザがリソースにアクセスすることを要求する場合、動的にアカウントを作成する。リソースにアクセスするため、ユーザは自分のクレデンシャル（たとえば、ユーザ識別子およびパスワード）を、ある所（たとえば、クライアントコンピュータ）を通じて提供し、リソース（たとえば、アプリケーション）を識別する。アカウント管理システムは、アカウントがすでにこれらのクレデンシャルについて作成されているか否かを判定する。そうでない場合、アカウント管理システムはユーザを認証し、これらのクレデンシャルについての新しいアカウントを作成（すなわち、登録）し、識別されたリソースをアカウントに関連付ける。アカウントがすでにこれらのクレデンシャルについて作成されている場合、アカウント管理システムは、識別されたリソースをそのアカウントに関連付ける。次いで、アカウント管理システムはプロバイダに、ユーザがリソースにアクセスすることを許可されていることを通知する。このようにして、リソースにアクセスする場合、アカウントが自動的に作成され、同じクレデンシャルを使用した異なるリソースへのアクセスが自動的にリソースを同じアカウントに結び付ける。異なるプロバイダによって提供された異なるリソースにアクセスするため、ユーザは再度自分のクレデンシャルを提供し、異なるリソースを識別する。アカウントがすでにこれらのクレデンシャルについて作成されているので、アカウント管理システムは単純に、異なるリソースをそのアカウントに、すでに関連付けられていない場合は関連付ける。各プロバイダは、受け入れ可能なクレデンシャルについてアカウント管理システムによって定義された手順をプロバイダが厳守する限り、それらのログオン手順をカスタマイズすることができる。それらのログオン手順をカスタマイズすることによって、プロバイダはアカウント管理システムを、それらのユーザがアカウント管理システムに気付くことさえないような方法で使用することができる。２つの異なるプロバイダのリソースが単一のアカウントに関連付けられるので、アカウント管理システムはユーザについて、ユーザによる両方のリソースへのアクセスを反映する単一のレポート（たとえば、請求書）を生成することができる。
【０００６】
アカウント管理システムの一態様は、ユーザが異なるリソースにアクセスするために異なるクレデンシャルを提供する場合、たとえば、同じユーザがあるユーザ識別子を使用してあるリソースにアクセスし、次いで別のユーザ識別子を使用して別のリソースにアクセスする場合などに、共通アカウントを識別するための技術を提供する。一般に、アカウント管理システムは各ユーザについて別々のアカウントを作成し、ユーザは多数の一意のセットのクレデンシャルを有することができる。アカウント管理システムはアカウントをノードまたは位置に関連付ける。ユーザがあるノードからリソースに、別のノードに関連付けられたアカウントのクレデンシャルを使用してアクセスし、ユーザがリソースにアクセス中である元のノードがすでにそれに関連付けられたアカウントを有する場合、アカウント管理システムは共通アカウントを識別しようと試みる。アカウント管理システムがアカウントを作成する場合、そのアカウントを、それを通じてユーザがリソースにアクセスすることを要求しているノード（たとえば、コンピュータ）に関連付ける。アカウント管理システムが、そのノードのユーザから、別のノードに関連付けられた別のアカウントのリソースにアクセスするための要求を受信する場合、そのノードに関連付けられたアカウントおよび他のノードに関連付けられたアカウントが同じアカウントであると見なされるべきであるか否かを判定する。たとえば、ある世帯は２台のコンピュータを有する可能性がある。ある家族はあるコンピュータからリソースに、それら自体の識別子を使用してアクセスしている可能性があり、別の家族は別のリソース（または同じリソース）に他のコンピュータから、それら自体の識別子を使用してアクセスしている可能性がある。アカウント管理システムは２つのアカウントを作成し、これらのアカウントを異なるコンピュータに関連付ける。ある家族が他のコンピュータを通じてリソースに、それら自体の識別子を使用してアクセスしようと試みる場合、アカウント管理システムは、そのコンピュータに関連付けられたアカウントおよび他のコンピュータに関連付けられたアカウントが、場合によっては共通のアカウントであることを検出する。アカウント管理システムはユーザに、異なるユーザ識別子が実際には同じアカウントを表すべきであるかどうかを示すように促すことができる。そうであった場合、アカウント管理システムはそのレコードを更新して、２つのユーザ識別子が同じアカウントを表すことを反映する。このような場合、ユーザは各リソースに自分自身のユーザ識別子を使用してアクセスする。両方のリソースへのアクセスが単一のアカウントに結び付けられるので、このようなアクセスに関係する情報（たとえば、請求書発送、通知およびプリファレンス）を結合することができる。アカウント管理システムは、１人のユーザが２つの異なるユーザ識別子を使用する場合、類似の方法で共通のアカウントを識別する。代替実施形態では、アカウント管理システムはリソースへのアクセスを、そのクレデンシャルのペアがすでにそのリソースに関連付けられているかどうかに基づいて許可する。そうであった場合、アカウント管理システムはリソースへのアクセスを許可する。この実施形態では、アカウント管理システムはクレデンシャルおよびリソースの組合せを追跡することができる。したがって、１つのアカウント内で異なるセットのクレデンシャル（たとえば、異なるユーザ名およびパスワード）を使用して、異なるリソースまたは同じリソースにもアクセスすることができる。しかし、ユーザの混乱を回避するため、アカウント管理システムは、アカウントの別のリソースを異なるセットのクレデンシャルに関連付けることができるとしても、アカウントに関連付けられた各リソースがただ１つの許可されたセットのクレデンシャルを有することを必要とする。したがって、ある家族のクレデンシャルを使用して共通アカウントのリソースにアクセスすることは、そのリソースが他の家族のクレデンシャルに関連付けられている場合、できない。
【０００７】
もう１つの態様のアカウント管理システムでは、ユーザが自分のアカウントに異なるノードからアクセスすることができる。ユーザがノードを使用してリソースにアクセスすることを要求し、ユーザのアカウントが現在はそのノードに関連付けられていない場合、アカウント管理システムはアカウントをそのノードに関連付ける。たとえば、ユーザがそのノードを訪問中であるので、ユーザが、そのノードを通じたそのアクセスが一時的なベースでしかないと指定する場合、リソースへのアクセスに関係するすべての情報が、リソースへのアクセスが完了した後にノードから除去される。一時的なベースでのノードの使用は一般に「ローミング」と呼ばれる。
【図面の簡単な説明】
【０００８】
【図１Ａ】ユーザ識別子の入力のための表示ページを例示する図である。
【図１Ｂ】それを通じてユーザが自分の一時的パスワードおよび新しいパスワードを入力する表示ページを例示する図である。
【図１Ｃ】共通アカウントを識別するための表示ページを例示する図である。
【図２】一実施形態におけるアカウント管理システムを例示するブロック図である。
【図３】一実施形態におけるアカウントデータベースのテーブルを例示するブロック図である。
【図４】一実施形態におけるクライアントコンピュータのコンポーネントを例示するブロック図である。
【図５】クライアントコンピュータのアプリケーション開始コンポーネントの処理を例示する流れ図である。
【図６】クライアントコンピュータのノード接続コンポーネントの流れ図である。
【図７】クライアントコンピュータのユーザ登録コンポーネントの処理を例示する流れ図である。
【図８】一実施形態におけるユーザログオンコンポーネントの処理を例示する流れ図である。
【図９】クライアントコンピュータのログオン応答処理コンポーネントの処理を例示する流れ図である。
【図１０】サーバコンピュータのノード登録コンポーネントの処理の流れ図である。
【図１１】サーバコンピュータのノード接続コンポーネントの処理の流れ図である。
【図１２】サーバコンピュータのノード切断コンポーネントの処理の流れ図である。
【図１３】サーバコンピュータのユーザ登録コンポーネントの処理の流れ図である。
【図１４】サーバコンピュータのログオン要求処理コンポーネントの処理の流れ図である。
【発明を実施するための形態】
【０００９】
図１Ａ〜１Ｃは、一実施形態におけるアカウント管理システムによって提供された表示ページを例示する。図１Ａは、ユーザ識別子の入力のための表示ページを例示する。この表示ページは通常、アプリケーションが開始されるとすぐにそれによって表示される。表示ページ１００は、ユーザ識別子フィールド１０１、パスワードフィールド１０２、既存のユーザボタン１０３および新しいユーザボタン１０４を含む。既存のユーザボタンが選択された場合、アカウント管理システムはユーザをアプリケーションへ、ユーザ識別子およびパスワードを使用してログオンさせようと試みる。新しいユーザボタンが選択された場合、アカウント管理システムはユーザを登録し（すでに登録されていない場合）、一時的パスワードをユーザに送信して、ユーザが既存のユーザとして一時的パスワードを使用してログオンできるようにする。一時的パスワードを、電子メールメッセージまたは電話によるなど、異なる通信チャネルを通じて送信することができる。そのユーザに関連付けられることが知られている異なる通信チャネルの使用は、詐称者がユーザ識別子を使用中でないことを保証する助けとなる。一実施形態では、ユーザ識別子はユーザの電子メールアドレスである。このようにして、アカウント管理システムは電子メールメッセージを、ユーザ識別子によって表されたアドレスに送信することができる。図１Ｂは、それを通じてユーザが自分の一時的パスワードを変更することができる表示画面を例示する。表示ページ１１０は、一時的パスワードフィールド１１１、新しいパスワードフィールド１１２、パスワード確認フィールド１１３および継続ボタン１１４を含む。ユーザが一時的パスワードを受信した後、ユーザはこれを一時的パスワードフィールドに入力し、新しいパスワードを入力し、継続ボタンを選択する。ユーザによって入力された一時的パスワードが、アカウント管理システムによって生成された一時的パスワードに合致すると仮定すると、新しいアカウントがユーザ識別子について確認され、識別されたアプリケーションへのアクセスが許可される。この確認処理は、ユーザの最初の認証の助けとなる。図１Ｃは、共通アカウントを識別するための表示ページを例示する。アカウント管理システムは、すでに要求側ノードに割り当てられていないアカウントのアプリケーション（すなわち、特定のタイプのリソース）にアクセスすることをユーザが要求し、少なくとも１つのアカウントがすでに要求側ノードに割り当てられている場合に、この表示ページを表示する。表示ページ１２０は、ラジオボタン付きのアカウント選択エリア１２１および継続ボタン１２２を含む。アカウント選択エリアは、２つのアカウントが現在は要求側ノードに割り当てられていることを示す。アカウントをユーザの名前によって識別することができる。ユーザは、アクセスされるべきアプリケーションに関連付けられたアカウントが、表示されたアカウントのうちの１つと同じアカウントであるべきであるかどうかを示す。一実施形態では、アカウント管理システムはユーザに、選択されたアカウントに関連付けられたパスワードを入力するように求めて、詐称者がそのアカウントが共通であるべきであることを指示中でないことを保証することができる。
【００１０】
図２は、一実施形態におけるアカウント管理システムを例示するブロック図である。クライアントコンピュータ２１０がサーバコンピュータ２２０に、インターネット２３０を介して接続される。コンピュータは中央処理装置、メモリ、入力デバイス（たとえば、キーボードおよびポインティングデバイス）、出力デバイス（たとえば、表示デバイス）および記憶デバイス（たとえば、ディスクドライブ）を含むことができる。メモリおよび記憶デバイスはコンピュータ可読媒体であり、アカウント管理システムを実施する命令を含むことができる。加えて、データ構造およびメッセージ構造を格納することができ、あるいは通信リンク上の信号など、データ伝送媒体を介して伝送することができる。インターネット以外の様々な通信チャネルを使用することができ、これはローカルエリアネットワーク、広域ネットワーク、またはポイントツーポイント、ダイアルアップ接続などである。サーバコンピュータは、サーバエンジン２２１、ノード登録コンポーネント２２２、ノード接続コンポーネント２２３、ノード切断コンポーネント２２４、登録要求処理コンポーネント（新しいユーザ）２２５、ログオン要求処理コンポーネント（既存のユーザ）２２６およびアカウントデータベース２２７を含む。サーバエンジンはクライアントコンピュータから要求を受信し、要求を処理するために適切なコンポーネントを呼び出す。ノード登録コンポーネントは、クライアントコンピュータをアカウント管理システムに登録するための要求を受信する。各ノードは、そのノードからのリソースへのアクセスが許可される前に、アカウント管理システムに登録する。ノード接続およびノード切断コンポーネントは、クライアントコンピュータをサーバコンピュータに接続することをコントロールする。登録要求処理コンポーネントが呼び出されて、クライアントコンピュータから受信される新しいユーザからの登録要求が処理される。登録は、新しいユーザ識別子を新しいアカウントに割り当てる処理を指す。ログオン要求処理コンポーネントは、既存のユーザのログオンをコントロールする。ログオンは、ユーザがアプリケーション、アカウントまたはリソースにアクセスすることを認証する処理を指す。アカウントデータベースは、アカウントを管理するための様々なテーブルを含む。
【００１１】
図３は、一実施形態におけるアカウントデータベースのテーブルを例示するブロック図である。アカウントデータベースは、登録済ノードテーブル３０１、アカウントテーブル３０２、アプリケーションテーブル３０３、ユーザテーブル３０４および登録済の接続済ノードテーブル３０５を含む。登録済ノードテーブルは、各登録済ノードについてのエントリを含み、そのノードに関連付けられたアカウントを示す。たとえば、登録済ノードテーブルの第１のエントリは、ノード識別子「Ｈｏｍｅ」を有するノードがアカウント「Ａ１」およびアカウント「Ａ２」に関連付けられることを示す。この関連付けは、両方のアカウントに関連付けられたすべてのアプリケーションにそのノードからアクセスできることを意味する。アカウントテーブルは、各アカウントについてのエントリを含み、そのアカウントに関連付けられたアプリケーションを示す。たとえば、アカウントテーブルの第１のエントリは、アプリケーション「Ｏ１」、「Ｏ２」および「Ｏ３」がアカウント「Ａ１」に関連付けられることを示す。この関連付けは、これらの３つのアプリケーションへのアクセスが共通アカウントに結び付けられることを意味する。アカウントテーブルはまた、各アカウントの各アプリケーションに関連付けられたクレデンシャルも示すことができる。各アプリケーションについてのクレデンシャルを提供することによって、共通アカウントの複数のユーザはアプリケーションへのアクセスを、そのアプリケーションに関連付けられたクレデンシャルを知っている者に制限させることができる。アプリケーションテーブルは、ユーザによってアクセスするために使用可能である各アプリケーションについてのエントリを含み、アプリケーションが格納される所を示す参照を含むことができる。ユーザテーブルは、各ユーザ（またはより正確には各ユーザ識別子）についてのエントリを含み、パスワードおよび関連付けられたアカウントを含む。たとえば、ユーザテーブルの第１のエントリは、ユーザ「Ｕ１」がアカウント「Ａ１」に関連付けられることを示す。これらのテーブルにおける関連付けは、ユーザ「Ｕ１」がアカウント「Ａ１」のアプリケーションに、ノード「Ｈｏｍｅ」および「Ｗｏｒｋ１」を通じてアクセスできることを意味する。接続済ノードテーブルは、現在サーバコンピュータに接続されている各ノードについてのエントリを含む。たとえば、第１のエントリは、ノード「Ｈｏｍｅ」が現在サーバコンピュータに接続されていることを示す。
【００１２】
最初に、ノードテーブル、アカウントテーブルおよびユーザテーブルは空であり、アプリケーションテーブルは各使用可能アプリケーション（たとえば、アプリケーション「Ｏ１」、「Ｏ２」、「Ｏ３」および「Ｏ４」）についてのエントリを含む。ユーザ「Ｕ１」がアプリケーション「Ｏ１」にアクセスすることを要求する場合、アカウント管理システムは最初に登録済ノードテーブルに、関連付けられたアカウントを有していないノード「Ｈｏｍｅ」についてのエントリを追加して、ノードの登録を実施する。次いで、アカウント管理システムはアカウントテーブルに、アプリケーション「Ｏ１」との関連付けを示すアカウント「Ａ１」についてのエントリを追加し、ユーザテーブルに、アカウント「Ａ１」との関連付けを示すユーザ「Ｕ１」についてのエントリを追加し、登録済ノードテーブルのノード「Ｈｏｍｅ」についての登録済ノードテーブルについてのエントリを更新して、これをアカウント「Ａ１」と関連付けてユーザの登録を実施する。次いで、ユーザ「Ｕ１」は、アプリケーション「Ｏ２」へノード「Ｈｏｍｅ」からアクセスすることを要求することができる。応答において、アカウント管理システムは、ユーザ「Ｕ１」についてのエントリがすでにユーザテーブルにあること、そのユーザがアカウント「Ａ１」に関連付けられていること、および登録済ノードテーブルにおけるノード「Ｈｏｍｅ」についてのエントリがすでにアカウント「Ａ１」に関連付けられていることを示す。次いで、アカウント管理システムはアカウントテーブルにおけるアカウント「Ａ１」についてのエントリを更新して、これをアプリケーション「Ｏ２」に関連付ける。次いで、ユーザ「Ｕ１」はアプリケーション「Ｏ３」にノード「Ｗｏｒｋ１」からアクセスしようと試みる。ノード「Ｗｏｒｋ１」はまだ登録されていないので、アカウント管理システムは登録済ノードテーブルにノード「Ｗｏｒｋ１」についてのエントリを、アカウントへのいかなる関連付けもなしに追加する。アカウント管理システムは、ユーザテーブルがユーザ「Ｕ１」についてのエントリを含むこと、およびそのユーザがアカウント「Ａ１」に関連付けられていることを決定する。次いで、アカウント管理システムは登録済ノードテーブルにおけるノード「Ｗｏｒｋ１」についてのエントリを更新して、これをアカウント「Ａ１」に関連付け、アカウントテーブルにおけるアカウント「Ａ１」についてのエントリを更新して、これをアプリケーション「Ｏ３」に関連付ける。次いで、ユーザ「Ｕ１」はアプリケーション「Ｏ１」、「Ｏ２」および「Ｏ３」に、ノード「Ｈｏｍｅ」および「Ｗｏｒｋ１」からアクセスすることができる。次いで、ユーザ「Ｕ２」はアプリケーション「Ｏ１」にノード「Ｈｏｍｅ」からアクセスすることを要求する。ユーザ「Ｕ２」は新しいので、アカウント管理システムはアカウントテーブルに、アプリケーション「Ｏ１」に関連付けられた新しいアカウント「Ａ２」についてのエントリを追加し、ユーザテーブルに、アカウント「Ａ２」に関連付けられたユーザ「Ｕ２」についてのエントリを追加し、登録済ノードテーブルにおけるノード「Ｈｏｍｅ」についてのエントリを更新して、これをアカウント「Ａ２」に関連付けてユーザの登録を実施する。次いで、ユーザ識別子「Ｕ２」を使用した人物は、アプリケーション「Ｏ４」にノード「Ｗｏｒｋ２」から、ユーザ識別子「Ｕ２’」を使用してアクセスすることを要求する。「Ｕ２」および「Ｕ２’」は同じユーザ識別子ではないので、アカウント管理システムはこれらのユーザが異なると仮定する。アカウント管理システムは最初に登録済ノードテーブルに、ノード「Ｗｏｒｋ２」についてのエントリを、いかなるアカウントにも関連付けられることなく追加する。次いで、アカウント管理システムはアカウントテーブルに、アカウント「Ａ３」についてのエントリを追加し、これをアプリケーション「Ｏ４」に関連付け、ユーザテーブルにユーザ「Ｕ２’」についてのエントリを追加して、これをアカウント「Ａ３」に関連付け、登録済ノードテーブルにおけるノード「Ｗｏｒｋ２」についてのエントリを更新して、これをアカウント「Ａ３」に関連付ける。次いで、ユーザがアプリケーション「Ｏ１」にノード「Ｗｏｒｋ２」から、ユーザ識別子「Ｕ２」を使用してアクセスしようと試みた場合、アカウント管理システムはユーザに、アカウント「Ａ２」およびアカウント「Ａ３」が共通アカウントであるかどうかを示すように促す。ユーザが肯定的に応答した場合、アカウント管理システム（テーブルには図示せず）はユーザテーブルにおけるユーザ「Ｕ２’」についてのエントリを更新して、これをアカウント「Ａ２」に関連付け、これをアカウント「Ａ３」から関連付け解除し、アカウントテーブルにおけるアカウント「Ａ２」についてのエントリを更新して、これをアプリケーション「Ｏ４」に関連付け、登録ノードテーブルにおけるノード「Ｗｏｒｋ２」についてのエントリを更新して、これをアカウント「Ａ３」ではなくアカウント「Ａ２」に関連付ける。次いで、アカウント管理システムはアカウントテーブルにおけるアカウント「Ａ３」についてのエントリを削除する。
【００１３】
図４は、一実施形態におけるクライアントコンピュータのコンポーネントを例示するブロック図である。クライアントコンピュータは、オペレーティングシステム４１０、アプリケーションプラットフォーム４２０およびアプリケーション記憶領域４３０を含む。アプリケーションプラットフォームは、アカウント管理システムのクライアント側の部分を含み、これはアプリケーション開始コンポーネント４２１、ノード接続コンポーネント４２２、ユーザ登録コンポーネント４２３、ユーザログオンコンポーネント４２４、ログオン応答処理コンポーネント４２５およびキャッシュ４２６を含む。アプリケーション開始コンポーネントは、ユーザがアプリケーションを開始することを示す場合、呼び出される。ノード接続コンポーネントが呼び出されて、クライアントコンピュータがサーバコンピュータに接続され、クライアントコンピュータがアカウント管理システムに、すでに登録されていない場合は登録される。ユーザ登録コンポーネントが呼び出されて、ユーザがアカウント管理システムに登録され、ユーザログオンコンポーネントが呼び出されて、登録済ユーザがアプリケーションにログオンされる。ログオン応答処理コンポーネントは、クライアントコンピュータがサーバコンピュータからログオン要求への応答を受信する場合、呼び出される。キャッシュは、そのクライアントコンピュータに関係するアカウントデータベースの部分のコピーを含むことができる。このデータのキャッシングにより、クライアントコンピュータは、サーバコンピュータが使用可能でない場合、クライアントコンピュータに関連付けられるアカウントのアプリケーションへのアクセスを許可することができる。
【００１４】
図５〜１４は、一実施形態のアカウント管理システムの処理を例示する流れ図である。図５〜９は、クライアントコンピュータのコンポーネントの流れ図である。図５は、クライアントコンピュータのアプリケーション開始コンポーネントの処理を例示する流れ図である。このコンポーネントはクライアントコンピュータをサーバコンピュータに接続し、ユーザを、ユーザによって識別されたアプリケーションにログオンさせる。このコンポーネントは、ユーザがラウンチしたアプリケーションによって呼び出される。ブロック５０１で、コンポーネントがノード接続コンポーネントを呼び出すことによって、クライアントコンピュータをサーバコンピュータに接続する。接続処理の一部として、クライアントコンピュータが登録されていない場合、これがサーバコンピュータに登録される。判断ブロック５０１ａで、接続が失敗した場合、ブロック５０８で、コンポーネントがエラーをレポートして終了するか、そうでなければコンポーネントがブロック５０２に進む。ブロック５０２で、コンポーネントが、ユーザが新しいユーザであるか既存のユーザであるかの指示を入力する。ユーザがすでに存在する場合、コンポーネントがユーザ識別子およびパスワードを入力する。判断ブロック５０２ａで、今回が初めて、アカウント管理システムを使用するいずれかのアプリケーションがクライアントコンピュータでラウンチ中である（次いで、クライアントコンピュータがいかなるユーザについての情報も有していない）か、あるいはユーザが、これらが新しいと示した場合、コンポーネントがブロック５０３に進み、そうでなければ、コンポーネントがブロック５０４に進む。ブロック５０３で、コンポーネントがユーザ登録コンポーネントを呼び出すことによって、新しいユーザを登録し、これによりまたユーザをアプリケーションにログオンさせる。ブロック５０４で、コンポーネントがユーザログオンコンポーネントを呼び出すことによって、ユーザをアプリケーションにログオンさせる。判断ブロック５０５で、ユーザがうまくログオンされた場合、コンポーネントがブロック５０７に進み、そうでなければブロック５０６で、コンポーネントがエラーをユーザにレポートし、ブロック５０２にループして、ユーザをアプリケーションにログオンさせようと試みることを開始する。ブロック５０７で、コンポーネントがアプリケーションプログラムをラウンチし、次いで終了する。
【００１５】
図６は、クライアントコンピュータのノード接続コンポーネントの流れ図である。このコンポーネントは、コンピュータがアカウント管理システムに登録されているか否かを判定する。そうでない場合、コンポーネントは、アカウント管理システムへのクライアントコンピュータの登録を実施する。次いで、コンポーネントはクライアントコンピュータをサーバコンピュータに接続する。登録処理は自動的にクライアントコンピュータをサーバコンピュータに接続する。ブロック６０１で、コンポーネントが、クライアントコンピュータがアカウント管理システムに登録されていた場合、およびその時点に格納されたノード識別子を検索する。ノードの登録を、アカウント管理システムから分離しているノード管理システムによって処理することができる。ノード識別子を、オペレーティングシステムによって提供されたレジストリに格納することができる。ブロック６０２で、コンポーネントがノード識別子を妥当性検査する。判断ブロック６０３で、ノード識別子が有効であった場合、コンポーネントがブロック６１２に進み、そうでなければコンポーネントがブロック６０４に進む。ブロック６０４で、コンポーネントが現在のノード識別子をクリアする。ブロック６０５〜６１１で、コンポーネントがクライアントコンピュータをアカウント管理システムまたはノード管理システムに登録する。ブロック６０５で、コンポーネントがノード登録要求をサーバコンピュータに送信する。ブロック６０６で、コンポーネントがサーバコンピュータから、ノード識別子を含む応答を受信する。ブロック判断６０７で、応答が成功を示した場合、コンポーネントがブロック６０８に進み、そうでなければコンポーネントがブロック６０９に進む。ブロック６０８で、コンポーネントが、受信されたノード識別子を格納して、ブロック６０１でコンポーネントが次に呼び出される場合にこれが使用可能であるようにし、次いで成功の指示を返す。ブロック６０９で、コンポーネントが、ノードをユーザに登録することができなかったことをレポートする。判断ブロック６１０で、コンポーネントが、登録がある期間の後に検索されるべきであるか否かを判定する。そうであった場合、コンポーネントがブロック６１１に進み、そうでなければコンポーネントが失敗の指示を返す。ブロック６１１で、コンポーネントがタイマをセットし（あるいは、ある他の遅延メカニズムを使用し）、タイマが満了した場合、コンポーネントがブロック６０５に進んで登録をリトライする。ブロック６１２で、コンポーネントが接続要求をサーバコンピュータに送信する。接続要求はノード識別子およびノードアドレスを含む。ブロック６１３で、コンポーネントがサーバからの応答を待機する。判断ブロック６１４で、応答が接続の成功を示した場合、コンポーネントが成功の指示を返し、そうでなければコンポーネントが失敗の指示を返す。
【００１６】
図７は、クライアントコンピュータのユーザ登録コンポーネントの処理を例示する流れ図である。ユーザ登録コンポーネントは、クライアントコンピュータに対して新しいユーザの登録を調整する。クライアントコンピュータがすでにユーザ識別子に遭遇している場合、コンポーネントがユーザに、ユーザが本当に同じユーザであるかどうかを確かめるように促す。同じであった場合、コンポーネントがユーザをアプリケーションにログオンさせ始め、そうでなければコンポーネントがエラーを返す。ユーザ識別子がクライアントコンピュータに対して新しかった場合、コンポーネントがユーザをサーバコンピュータに登録し、返しにアカウント識別子を受信し、ユーザをアプリケーションにログオンさせ始める。ブロック７０１で、コンポーネントが、図１Ａの表示を通じて受信されたユーザ識別子を入力する。コンポーネントはまたいくつかの追加の登録情報も入力することができ、これはユーザの名前および請求書発送情報などである。判断ブロック７０２で、ユーザ識別子がクライアントコンピュータのキャッシュ内にある場合、ユーザ識別子は新しくなく、コンポーネントがブロック７０３に進み、そうでなければ、コンポーネントがブロック７０７に進む。ブロック７０３で、コンポーネントがユーザに、ユーザが本当にこのユーザ識別子を別のアプリケーションについて使用した者と同じユーザであるかどうかを尋ねる。判断ブロック７０４で、ユーザが、これらが同じでないと示した場合、ブロック７０６で、重複したユーザ識別子のためにコンポーネントがエラーをユーザにレポートし、次いでエラーを返し、そうでなければコンポーネントがブロック７０５に進む。ブロック７０５で、コンポーネントがユーザログオンコンポーネントを呼び出してユーザをアプリケーションにログオンさせ、次いでログオンの結果を返す。ブロック７０７〜７１２は、ユーザ識別子が実際にクライアントコンピュータに対して新しい場合に実行される。ブロック７０７で、コンポーネントが登録要求をサーバコンピュータに送信してユーザを登録する。この要求は、アプリケーション識別子、ユーザ識別子およびノード識別子を含むが、アカウント識別子を含まず、これはこのユーザについてのいずれもが知られていないからである。ブロック７０８で、コンポーネントがサーバコンピュータからの登録要求への応答を待機する。判断ブロック７０９で、この応答が、新しいユーザの登録が成功したことを示した場合、応答はアカウント識別子を含み、コンポーネントがブロック７１０に進み、そうでなければコンポーネントがブロック７１１に進む。ブロック７１０で、コンポーネントが新しい識別子、ユーザ識別子およびアプリケーション識別子をキャッシュし、ブロック７０５に進んでユーザをアプリケーションにログオンさせる。判断ブロック７１１で、ユーザ識別子がすでに使用中であった場合、コンポーネントがブロック７０３に進んで、ユーザが本当に同じであるかどうかを確かめ、そうでなければコンポーネントがブロック７１２に進んである他のエラーをレポートし、次いで失敗の指示を返す。
【００１７】
図８は、ユーザログオンコンポーネントの処理を例示する流れ図である。コンポーネントはアプリケーションへのユーザのログオンを調整する。このコンポーネントは、新しいユーザがうまく登録されたか、あるいはユーザが、それらが既存のユーザであることを示した後に呼び出される。ユーザが登録されていなかった場合、コンポーネントがエラーを返す。ユーザがクライアントコンピュータに知られていた場合、コンポーネントがアカウント識別子をログオン要求と共にサーバコンピュータに送信する。ユーザがクライアントコンピュータに知られていなかった場合、コンポーネントがログオン要求をアカウント識別子なしで送信する。サーバコンピュータがうまくユーザをアプリケーションにログオンさせた場合、サーバコンピュータがアカウント識別子を返す。アカウント識別子が、クライアントコンピュータに知られているアカウントに合致した場合、コンポーネントがユーザのクレデンシャルをキャッシュし、そうでなければ、コンポーネントがユーザの要求でこれらのアカウントを結合する。ユーザはアカウントを結合するか、あるいはノードに対して新しいアカウントを使用して開始することを選択することができる。ログオンが成功しなかった場合、コンポーネントがそのアカウントについてのユーザ識別子パスワードのそのキャッシュをクリアする。このコンポーネントは、すでにクライアントコンピュータからアクセスされているアプリケーションにユーザがアクセスすることを要求する場合、または、新しいアプリケーションが、すでにクライアントコンピュータで使用されているユーザ識別子を使用してアクセス中である場合、呼び出される。ブロック８０１で、コンポーネントがユーザ識別子およびパスワードを入力する。判断ブロック８０２で、サーバコンピュータが使用可能であった場合、コンポーネントがブロック８０３に進み、そうでなければコンポーネントがブロック８１７に進む。ブロック８０３〜８１６で、コンポーネントがサーバコンピュータに、ユーザをアプリケーションにログオンさせるように要求する。ブロック８０３で、コンポーネントがログオン要求をサーバコンピュータに送信する。ログオン要求は、ノード識別子、アプリケーション識別子、ユーザ識別子およびパスワードを含む。このログオン要求は、クライアントコンピュータによってキャッシュされている可能性のあるアカウント識別子を含んでいない。ブロック８０４で、コンポーネントがサーバコンピュータからそのユーザ識別子についての応答を待機する。たとえば、前にクライアントコンピュータで使用されていないユーザ識別子が使用中である場合、ログオン要求はアカウント識別子を含まない。この応答は、ユーザ識別子に関連付けられたアカウント識別子を含む。ブロック８０５で、コンポーネントがログオン応答処理コンポーネントを呼び出すことによって、ログオン応答を処理する。判断ブロック８０６で、ログオンが成功した場合、コンポーネントがブロック８０７に進み、そうでなければコンポーネントがブロック８１３に進む。判断ブロック８０７で、応答において返されたアカウント識別子が、クライアントコンピュータに知られているアカウント識別子に合致した場合、コンポーネントがブロック８０８に進み、そうでなければコンポーネントがブロック８０９に進む。ブロック８０８で、コンポーネントがアカウント識別子に関連したユーザクレデンシャル（ユーザ識別子およびパスワード）をキャッシュし、次いで成功の指示を返す。ブロック８０９でコンポーネントが、返されたアカウントが実際に、アカウントのうちクライアントコンピュータに知られている物であるかどうかを、図１Ｃの表示ページを表示することによってユーザに尋ねた。判断ブロック８１０で、ユーザが知られているアカウントを選択した場合、コンポーネントがブロック８１２に進み、そうでなければコンポーネントがブロック８１１に進む。ブロック８１１で、コンポーネントが新しいアカウント識別子をキャッシュし、ブロック８０８に進む。ブロック８１２で、コンポーネントが返されたアカウントおよびユーザ選択アカウントを単一のアカウントに圧縮し、ブロック８０２に進んで再ログイン要求をユーザ選択アカウントと共にサーバコンピュータに送信して、２つのアカウントを圧縮する。サーバコンピュータは、ユーザ識別子がここでユーザ選択アカウントに関連付けられており、それが返されたアカウントとは異なることを検出し、２つのアカウントを、ユーザ選択アカウントによって識別された共通アカウントに圧縮する。判断ブロック８１３で、アカウント識別子が応答において返されなかった場合、ユーザはまだ登録されていないか、あるいはユーザの登録がキャンセルされており、コンポーネントがブロック８１５に進み、そうでなければコンポーネントがブロック８１４に進む。判断ブロック８１４で、ログオン要求において送信されたパスワードが無効であった場合、コンポーネントがブロック８１５に進み、そうでなければコンポーネントがブロック８１６に進む。ブロック８１５で、コンポーネントがそのアカウントについての無効なユーザ識別子およびパスワードのキャッシュをクリアし、ブロック８２０に進んでエラーをレポートする。ブロック８１６で、コンポーネントが、サーバコンピュータによってレポートされたエラーを処理し、次いで失敗の指示を返す。ブロック８１７〜８２０で、コンポーネントが識別されたアプリケーションへのアクセス（ユーザをログオンさせること）をローカルで許可しようと試みる。ブロック８１７で、コンポーネントがユーザ識別子およびアプリケーション識別子についてキャッシュされたクレデンシャルを検索する。判断ブロック８１８で、キャッシュされたクレデンシャルが発見された場合、コンポーネントがブロック８１９に進み、そうでなければコンポーネントがブロック８２０に進んでエラーをレポートする。判断ブロック８１９で、入力パスワードが、キャッシュされたクレデンシャルのパスワードに合致した場合、コンポーネントが成功の指示を返し、そうでなければコンポーネントがブロック８２０に進む。ブロック８２０で、コンポーネントがエラーをユーザにレポートし、失敗の指示を返す。
【００１８】
図９は、クライアントコンピュータのログオン応答処理コンポーネントの処理を例示する流れ図である。このコンポーネントは、ログオン要求への応答がサーバコンピュータから受信される場合に呼び出される。ブロック９０１で、コンポーネントが応答を検索する。判断ブロック９０２で、コンポーネントが、ログオンが成功したことを応答が示すか否かを判定する。ログオン要求は、要求において送信されたアカウント識別子が無効であるか、要求において送信されたパスワードが無効であったか、他のサーバコンピュータエラーが起こった場合、不成功になる可能性がある。ログオンが成功した場合、コンポーネントが成功の指示を返し、そうでなければコンポーネントが失敗の指示を返す。
【００１９】
図１０〜１４は、サーバコンピュータのコンポーネントの流れ図である。図１０は、サーバコンピュータのノード登録コンポーネントの処理の流れ図である。このコンポーネントは、サーバコンピュータがクライアントコンピュータから、ノードを登録するための要求を受信する場合、呼び出される。このコンポーネントはまた、クライアントコンピュータをサーバコンピュータに接続する。ブロック１００１で、コンポーネントが一意のノード識別子を生成する。ブロック１００２で、コンポーネントがノード識別子を登録済ノードテーブルに追加して、クライアントコンピュータを登録する。ブロック１００３で、コンポーネントがノード識別子およびノードアドレス（たとえば、ＩＰアドレスおよびポートアドレス）を接続済ノードテーブルに追加して、クライアントコンピュータをサーバコンピュータに接続する。ブロック１００４で、コンポーネントが、ノード識別子を含む応答をクライアントコンピュータに送信する。次いで、コンポーネントが終了する。
【００２０】
（サーバの接続要求の処理）
図１１は、サーバコンピュータのノード接続コンポーネントの処理の流れ図である。このコンポーネントは、サーバコンピュータがクライアントコンピュータに接続するための要求を受信する場合、呼び出される。接続要求は、クライアントコンピュータのノード識別子およびノードアドレスを含む。ブロック１１０１で、コンポーネントがノード識別子を登録済ノードテーブルにおけるエントリと比較することによって、ノード識別子を妥当性検査する。判断ブロック１１０２で、ノード識別子が登録済ノードテーブルにあった場合、コンポーネントがブロック１１０３に進み、そうでなければコンポーネントがブロック１１０４に進む。ブロック１１０３で、コンポーネントがノード識別子およびノードアドレスのペアについてのエントリを接続済ノードテーブルに追加し、次いで成功の指示を返す。ブロック１１０４で、コンポーネントがエラーメッセージをクライアントコンピュータに送信し、接続を閉じ、終了する。
【００２１】
図１２は、サーバコンピュータのノード切断コンポーネントの処理の流れ図である。このコンポーネントは、サーバコンピュータが、接続を閉じる要求をクライアントコンピュータから受信する場合、呼び出される。ブロック１２０１で、コンポーネントがノード識別子およびノードアドレスのペアについてのエントリを接続済ノードテーブルから除去する。ブロック１２０２で、コンポーネントがクライアントコンピュータとの接続を閉じ、閉じたことをログし、次いで終了する。
【００２２】
（サーバのユーザ登録の処理）
図１３は、サーバコンピュータのユーザ登録コンポーネントの処理の流れ図である。このコンポーネントは、サーバコンピュータが、新しいユーザを登録するための要求をクライアントコンピュータから受信する場合、呼び出される。この要求は、ユーザ識別子およびノード識別子を含む。ユーザ識別子がすでに登録されている場合、コンポーネントは、アカウント番号を示し、ユーザ識別子がすでに使用中であることを示す応答を送信する。ユーザ識別子が登録されていない場合、コンポーネントが登録を実施し、一時的パスワードをユーザへ、電子メールを介して送信する。判断ブロック１３０１で、受信されたノード識別子が接続済ノード識別子テーブルにあった場合、クライアントコンピュータが接続され、コンポーネントがブロック１３０３に進み、そうでなければブロック１３０２で、コンポーネントがエラー応答を送信し、次いで終了する。ブロック１３０３で、コンポーネントが、ユーザ識別子がユーザ識別子テーブルにあるか否かを判定する。ブロック１３０４で、受信されたユーザ識別子についてのエントリがユーザ識別子テーブルにあった場合、ユーザ識別子がサーバコンピュータに知られており、コンポーネントがブロック１３０５に進み、そうでなければコンポーネントがブロック１３０９に進む。ブロック１３０５で、コンポーネントが、ユーザ識別子についてのアカウント識別子をアカウントテーブルから検索する。次いで、コンポーネントが応答を送信して、ユーザ識別子がすでに登録されていることを示し、次いで終了する。判断ブロック１３０９で、アカウント識別子が、受信された要求に存在した場合、コンポーネントがブロック１３１０に進み、そうでなければコンポーネントがブロック１３１１に進む。ブロック１３１０で、ユーザ識別子は新しいが、アカウント識別子は登録要求に含まれていた。結果として、コンポーネントが応答をクライアントコンピュータに送信して登録失敗を示し、これによりクライアントに、ユーザにログオンするように求めさせ、次いで終了する。ブロック１３１１で、コンポーネントが新しいアカウント識別子をアカウントテーブルにおいて作成する。ブロック１３１２で、コンポーネントがアプリケーション識別子、ユーザ識別子およびノード識別子をアカウントテーブルに追加する。ブロック１３１３で、コンポーネントが一時的パスワードを生成する。ブロック１３１４で、コンポーネントが電子メールメッセージをユーザに送信し、一時的パスワードを示す。次いで、コンポーネントが終了する。
【００２３】
（サーバのログオン要求の処理）
図１４は、サーバコンピュータのログオン要求処理コンポーネントの処理の流れ図である。このコンポーネントは、サーバコンピュータがログオン要求をクライアントコンピュータから受信する場合、呼び出される。ログオン要求は、アプリケーション識別子、ユーザ識別子、パスワード、ノード識別子、およびオプショナルでアカウント識別子を含む。アカウント識別子が要求に含まれ、有効であるが、サーバコンピュータがユーザ識別子と関連付けているアカウント識別子に合致しない場合、サーバコンピュータは２つのアカウントを、受信されたアカウント識別子によって識別される単一のアカウントに圧縮する。そのユーザ識別子が先にクライアントコンピュータで使用されていない場合、アカウント識別子が含まれない。判断ブロック１４０１で、アカウント識別子が存在した場合、コンポーネントがブロック１４０２に進み、そうでなければコンポーネントがブロック１４０８に進む。判断ブロック１４０２で、アカウントテーブルが、受信されたアカウント識別子についてのエントリを含む場合、アカウント識別子は有効であり、コンポーネントがブロック１４０３に進み、そうでなければコンポーネントがブロック１４０９に進んでエラーをレポートする。ブロック１４０３で、ユーザテーブルが、受信されたユーザ識別子についてのエントリを含む場合、ユーザ識別子は有効であり、コンポーネントがブロック１４０４に進み、そうでなければコンポーネントがブロック１４０７に進む。判断ブロック１４０４で、ユーザ識別子についてのパスワードが有効である場合、コンポーネントがブロック１４０５に進み、そうでなければコンポーネントがブロック１４０９に進んでエラーをレポートする。判断ブロック１４０５で、ユーザ識別子に関連付けられたアカウント識別子が、受信されたアカウント識別子に合致した場合、コンポーネントがブロック１４１２に進み、そうでなければコンポーネントがブロック１４０６に進む。ブロック１４０６で、コンポーネントが２つのアカウントを、受信されたアカウント識別子によって識別された共通アカウントに圧縮し、ブロック１４１２に進む。ブロック１４０７で、コンポーネントが、アプリケーション識別子およびユーザ識別子をアカウント識別子にマップするエントリを、アカウントテーブルに追加し、ユーザ識別子を一時的パスワードにマップするエントリをユーザテーブルに追加する。ブロック１４０７ａで、コンポーネントが一時的パスワードをユーザに、電子メールを介して送信し、失敗を示す応答をクライアントコンピュータに送信し、次いで終了する。ブロック１４０８〜１４１４は、アカウント識別子が応答に含まれない場合に実行される。判断ブロック１４０８で、パスワードがユーザ識別子について有効であった場合、コンポーネントがブロック１４１０に進み、そうでなければコンポーネントがブロック１４０９に進む。ブロック１４０９で、コンポーネントがエラー応答をサーバコンピュータに送信し、次いで終了する。ブロック１４１０で、コンポーネントがユーザテーブルから、ユーザ識別子に関連付けられたアカウント識別子を検索する。判断ブロック１４１１で、要求におけるノード識別子が、検索されたアカウント識別子に関連付けられた場合、コンポーネントがブロック１４１４に進み、そうでなければコンポーネントがブロック１４１２に進む。ブロック１４１２で、コンポーネントがアカウントテーブルに、アカウント識別子をノード識別子にマップするエントリを追加する。ブロック１４１３で、コンポーネントがノードテーブルに、ノード識別子をアカウント識別子にマップするエントリを追加し、次いでブロック１４１４に進む。ブロック１４１４で、コンポーネントがアプリケーション識別子を、アカウントテーブルにおけるアカウントについてのエントリに追加し、次いでクライアントコンピュータに、アカウント識別子を含む応答を送信し、次いで終了する。
【００２４】
上の説明から、技術の特定の実施形態を例示のために説明したが、様々な変更を、本発明の精神および範囲から逸脱することなく行うことができることは理解されよう。一実施形態では、ユーザ識別子およびパスワードのペア以外のクレデンシャルを使用することができる。たとえば、各ユーザはある情報を、公開および秘密鍵のペアのうち自分の秘密鍵により暗号化することができる。サーバコンピュータは公開鍵を使用して情報を解読して、それが正しい秘密鍵により暗号化されたことを保証することができる。また、認証を、分離した認証サーバによって実行することができ、結果がサーバコンピュータまたは直接クライアントコンピュータに送信され戻される。もう１つの実施形態では、各アカウントを、そのアカウントに割り当てられるユーザ識別子によって識別することができる。したがって、アカウントを、１つまたは複数のユーザ識別子のグループと見なすことができる。また、リソースがコンピュータリソースに限定される必要はない。たとえば、リソースには、人々、グループまたはコミュニティ、物質的な物品、通信サービス（たとえば、電話、ビデオ）などが含まれる可能性がある。したがって、特許請求の範囲は、付属の特許請求の範囲以外によって限定されない。
【図１Ａ】
2010033601.tif 000003
【図１Ｂ】
2010033601.tif 000004
【図１Ｃ】
2010033601.tif 000005
【図２】
2010033601.tif 000006
【図３】
2010033601.tif 000007
【図４】
2010033601.tif 000008
【図５】
2010033601.tif 000009
【図６】
2010033601.tif 000010
【図７】
2010033601.tif 000011
【図８】
2010033601.tif 000012
【図９】
2010033601.tif 000013
【図１０】
2010033601.tif 000014
【図１１】
2010033601.tif 000015
【図１２】
2010033601.tif 000016
【図１３】
2010033601.tif 000017
【図１４】
2010033601.tif 000018