(57)【特許請求の範囲】
【請求項１】
非同期クライアント・サーバ・トランザクションを保護するためのコンピュータ実装方法であって、
データ処理システム内で実行している第１のアプリケーションにおいて、第２のアプリケーションに関連付けられるアプリケーション識別子およびバージョンを含むリクエストを受信するステップと、
前記第２のアプリケーションとのセッションが有効であることに応答してサービス識別子を生成するステップと、
前記第１のアプリケーションにおいて、前記第２のアプリケーションが使用を許可されているサービスおよびデータのセットに関する情報を含むレジストリを生成するステップと、
前記レジストリの変形されたサブセットを含むカタログを、前記レジストリに基づいて生成するステップであって、前記変形は圧縮、暗号化、再編成のいずれかによる変形である、前記生成するステップと、
前記サービス識別子および前記カタログを前記第２のアプリケーションに送信するステップと、
を含む、コンピュータ実装方法であって、
非同期クライアント・サーバ・トランザクションの一部であって、前記サービス識別子を含むサブリクエストを受信するステップと、
前記サブリクエストの有効性を、（i）前記サービス識別子が期限切れになっているか否か、（ii）前記サブリクエストが前記カタログに従って許可可能なサービスをリクエストしているか否か、および（iii）前記サービス識別子が前記第２のアプリケーションと併せて使用されているか否かの組み合わせを判断することによって判断するステップと、
前記サブリクエストが有効であることに応答して、前記サブリクエストに応答して前記サービスを提供するステップと
をさらに含む、コンピュータ実装方法。
【請求項２】
前記有効性を前記判断するステップは、前記組み合わせにおいて、（iv）前記カタログが期限を経過しているか否かを判断するステップをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記サービス識別子が前記第２のアプリケーションと併せて使用されているか否かの前記判断は、前記サービス識別子が前記第２のアプリケーションの前記アプリケーション識別子および前記アプリケーション・バージョンと共に使用されているか否かを判断するステップを含む、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記サブリクエストが無効であることに応答して、（i）更新されたサービス識別子、および（ii）更新されたカタログのうちの１つを提供するステップ
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記更新されたサービス識別子は、（i）新規のサービス識別子、（ii）変更されたセキュリティ機能を含む前記サービス識別子、および（iii）前記第１のアプリケーションにおけるセキュリティ機能有効性検証基準の変更に対応する前記サービス識別子のうちの１つであり、前記提供するステップは、前記非同期クライアント・サーバ・トランザクションが終了する前に行われる、請求項４に記載のコンピュータ実装方法。
【請求項６】
前記更新されたカタログは、（i）新規のカタログ、（ii）前記カタログに対する更新、および（iii）前記カタログの期限切れパラメータに対する変更のうちの１つであり、前記提供するステップは、前記非同期クライアント・サーバ・トランザクションが終了する前に行われる、請求項４に記載のコンピュータ実装方法。
【請求項７】
前記サービスが追加の認証を必要とするか否かを判断し、追加の認証の決定を形成するステップと、
前記追加の認証の決定が真であることに応答して、追加の認証情報を受信するステップと、
前記追加の認証情報が有効であるか否かを判断するステップであって、前記追加の認証情報が有効であることに応答して前記サービスが提供される、判断するステップと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項８】
前記カタログに従って前記サービスが許可可能か否かを前記判断することは、前記レジストリを使用して前記サービスが許可可能か否かを判断することによる、請求項１に記載のコンピュータ実装方法。
【請求項９】
オリジナルのサービス識別子を生成するステップをさらに含み、前記サービス識別子は、前記オリジナルのサービス識別子の変更されたバージョンである、
請求項１に記載のコンピュータ実装方法。
【請求項１０】
非同期クライアント・サーバ・トランザクションを保護するためのコンピュータ実装方法であって、
データ処理システム内で実行している第２のアプリケーションにおいて、前記第２のアプリケーションに関連付けられるアプリケーション識別子およびアプリケーション・バージョンの送信に応答して、サービス識別子、および、前記第１のアプリケーションに関連付けられるレジストリの変形されたサブセットを含むカタログを第１のアプリケーションから受信するステップであって、前記変形は圧縮、暗号化、再編成のいずれかによる変形である、前記受信するステップと、
非同期クライアント・サーバ・トランザクションの一部であって、前記サービス識別子を含み、前記カタログからのサービスを求めるリクエストをさらに含むサブリクエストを動的に構築するステップと、
前記第１のアプリケーションに従って前記サブリクエストが有効であることに応答して、前記サービスに関連付けられるデータを受信するステップと
を含む、コンピュータ実装方法であって、
前記サブリクエストが無効であることに応答して、（i）更新されたサービス識別子、および（ii）更新されたカタログのうちの１つを受信するステップであって、前記サブリクエストは、（i）前記サービス識別子が無効であること、（ii）前記サービスが前記カタログ内にないこと、および（iii）前記カタログが期限を経過していることのうちの１つの判断に従って無効となる、受信するステップと、
（i）前記更新されたサービス識別子、および（ii）前記更新されたカタログのうちの１つを使用して、第２のサブリクエストを動的に構築するステップと
をさらに含む、コンピュータ実装方法。。
【請求項１１】
前記サブリクエストは、前記第２のアプリケーションに関連付けられている前記アプリケーション識別子および前記アプリケーション・バージョンをさらに含む、請求項１０に記載のコンピュータ実装方法。
【請求項１２】
非同期クライアント・サーバ・トランザクションを保護するためのデータ処理システムであって、前記データ処理システムは、
前記ストレージ・デバイスはコンピュータ使用可能プログラム・コードを記憶する、記憶媒体を含むストレージ・デバイスと、
前記コンピュータ使用可能プログラム・コードを実行するプロセッサを備え、前記コンピュータ使用可能プログラム・コードは、
データ処理システム内で実行している第２のアプリケーションにおいて、前記第２のアプリケーションに関連付けられるアプリケーション識別子およびアプリケーション・バージョンの送信に応答して、サービス識別子、および、前記第１のアプリケーションに関連付けられるレジストリの変形されたサブセットを含むカタログを第１のアプリケーションから受信するためのコンピュータ使用可能コードであって、前記変形は圧縮、暗号化、再編成のいずれかによる変形である、前記受信するためのコンピュータ使用可能コードと、
非同期クライアント・サーバ・トランザクションの一部であって、前記サービス識別子を含み、前記カタログからのサービスを求めるリクエストをさらに含むサブリクエストを動的に構築するためのコンピュータ使用可能コードと、
前記第１のアプリケーションに従って前記サブリクエストが有効であることに応答して、前記サービスに関連付けられるデータを受信するためのコンピュータ使用可能コードと
を含む、データ処理システムであって、
前記サブリクエストが無効であることに応答して、（i）更新されたサービス識別子、および（ii）更新されたカタログのうちの１つを受信するためのコンピュータ使用可能コードであって、前記サブリクエストは、（i）前記サービス識別子が無効であること、（ii）前記サービスが前記カタログ内にないこと、および（iii）前記カタログが期限を経過していることのうちの１つの判断に従って無効となる、受信するためのコンピュータ使用可能コードと、
（i）前記更新されたサービス識別子、および（ii）前記更新されたカタログのうちの１つを使用して、第２のサブリクエストを動的に構築するためのコンピュータ使用可能コードと
をさらに含む、データ処理システム。
【請求項１３】
非同期クライアント・サーバ・トランザクションを保護するためのデータ処理システムであって、
データ処理システム内で実行している第１のアプリケーションにおいて、第２のアプリケーションに関連付けられるアプリケーション識別子およびバージョンを含むリクエストを受信するための手段と、
前記第２のアプリケーションとのセッションが有効であることに応答してサービス識別子を生成するための手段と、
前記第１のアプリケーションにおいて、前記第２のアプリケーションが使用を許可されているサービスおよびデータのセットに関する情報を含むレジストリを生成するための手段と、
前記レジストリの変形されたサブセットを含むカタログを、前記レジストリに基づいて生成するための手段であって、前記変形は圧縮、暗号化、再編成のいずれかによる変形である、前記生成するための手段と、
前記サービス識別子および前記カタログを前記第２のアプリケーションに送信するための手段と
を備える、データ処理システムであって、
非同期クライアント・サーバ・トランザクションの一部であって、前記サービス識別子を含むサブリクエストを受信するための手段と、
前記サブリクエストの有効性を、（i）前記サービス識別子が期限切れになっているか否か、（ii）前記サブリクエストが前記カタログに従って許可可能なサービスをリクエストしているか否か、および（iii）前記サービス識別子が前記第２のアプリケーションと併せて使用されているか否かの組み合わせを判断することによって判断するための手段と、
前記サブリクエストが有効であることに応答して、前記サブリクエストに応答して前記サービスを提供するための手段と
をさらに含む、データ処理システム。
【請求項１４】
請求項１〜１１のいずれかに記載の方法に含まれる各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には改善されたデータ処理システムに関し、特に、データ・セキュリティを提供するためのコンピュータ実装方法に関する。より詳細には、本発明は、非同期クライアント・サーバ・トランザクションを保護するためのコンピュータ実装方法、システム、およびコンピュータ使用可能プログラム・コードに関する。
【背景技術】
【０００２】
１つまたは複数のデータ・ネットワークを使用して、さまざまなデータ処理システムの間で頻繁にデータが交換される。いくつかのデータ処理システムは、データまたはサービスの消費者であるという点でクライアント・データ処理システムであるとみなされる場合がある。他のデータ処理システムは、リクエストされるデータまたはサービスを提供するという点でサーバ・データ処理システムであるとみなされる場合がある。クライアントとして、すなわち、データまたはサービスの消費者として実行しているアプリケーションは、クライアント・アプリケーションと呼ばれる。サーバとして実行している、すなわち、データまたはサービスを提供するアプリケーションは、サーバ・アプリケーションと呼ばれる。
【０００３】
データ、データが存在するシステム、およびシステムが動作するネットワークのセキュリティは、データ通信における懸案事項である。通常、データ処理システム、その内容、およびデータ処理システムが動作するネットワークのセキュリティは、いくつかのセキュリティ機構によって遂行される。ユーザ識別子（ＵＩＤ）およびパスワード認証は、データ処理環境におけるセキュリティの目的を遂行する一般的な方法である。
【０００４】
クライアント・データ処理システムおよびサーバ・データ処理システムは、さまざまなプロトコルを使用して互いに通信することができる。クライアント・データ処理システムとサーバ・データ処理システムとの間で発生するデータ通信は、一連のリクエストおよび応答を含む。互いに関連するリクエストおよび応答がトランザクションを形成する。
【０００５】
クライアント・サーバ・トランザクションのセキュリティは現在、さまざまな方法で達成されている。ハイパー・テキスト転送プロトコル・セキュア（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  Ｓｅｃｕｒｅ、ＨＴＴＰＳ）のような特定のプロトコルは、暗号化、およびサーバ・データ処理システムの安全な識別を使用することによって、クライアント・サーバ・トランザクションのセキュリティを遂行する。特定の他のトランザクション・セキュリティ機構は、セッション識別子（セッションＩＤ）の使用を含む。セッションＩＤは、クライアント・データ処理システムとサーバ・データ処理システムとの間のセッションを識別するのに使用される識別子である。一般的なセッションは、一連のトランザクションを含み得る。
【０００６】
場合によっては、クライアントはサーバから非同期的にデータをリクエストし得る。非同期データ転送は、進行中のタスクの挙動によって干渉されることなくデータを転送することである。たとえば、ウェブ・ブラウザ・アプリケーションはクライアント・アプリケーションであり得る。ウェブ・ブラウザはウェブ・サーバから非同期的にデータをリクエストすることができ、それによって、ウェブ・ブラウザ内で表示されているページの表示または挙動は非同期データ・リクエストまたは応答によって影響されない。非同期リクエストも、対応する応答を待たない。換言すれば、非同期リクエストに対する応答は、いつでもクライアントに到着し、クライアントにおいて処理されることができる。クライアントは非同期リクエストに対する応答を待たず、他のタスクの処理を継続する。
【０００７】
非同期リクエストは、非同期データまたはサービスを求める要求である。非同期クライアント・サーバ・トランザクションは、別の進行中のタスクに対して非同期的に行われるクライアント・サーバ・トランザクションである。
【０００８】
非同期ＪａｖａＳｃｒｉｐｔ（Ｒ）およびＸＭＬ（Ａｓｙｎｃｈｒｏｎｏｕｓ  ＪａｖａＳｃｒｉｐｔ  ａｎｄ  ＸＭＬ、ＡＪＡＸ）は、非同期クライアント・サーバ・トランザクションを作成および実行するために現在使用されている技術である。非同期クライアント・サーバ・トランザクションは、ウェブ・アプリケーションのパフォーマンスの向上およびユーザ・エクスペリエンスの向上において特に有用である。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
説明例は、非同期クライアント・サーバ・トランザクションを保護するための方法、システム、およびコンピュータ使用可能プログラム製品を提供する。
【課題を解決するための手段】
【００１０】
１つの実施形態によれば、データ処理システム内で実行している第１のアプリケーションにおいてリクエストが受信される。リクエストは、第２のアプリケーションに関連付けられているアプリケーション識別子およびバージョンを含む。第２のアプリケーションとのセッションが有効である場合、サービス識別子が生成される。第１のアプリケーションにおいてレジストリが生成される。レジストリは、第２のアプリケーションが使用を許可されているサービスおよびデータのセットに関する情報を含む。レジストリに基づいてカタログが生成される。カタログは、レジストリの内容のサブセット、またはその何らかの変形を含む。サービス識別子およびカタログが第２のアプリケーションに送信される。
【００１１】
別の実施形態によれば、サブリクエストが受信される。サブリクエストは非同期クライアント・サーバ・トランザクションの一部であり、サービス識別子を含む。サブリクエストの有効性は、サービス識別子が期限切れになっているか否か、サブリクエストがカタログに従って許可可能なサービスをリクエストしているか否か、サービス識別子が第２のアプリケーションと併せて使用されているか否か、またはこれらの組み合わせを判断することによって判断される。サブリクエストが有効である場合、当該サブリクエストに応答してサービスが提供される。
【００１２】
別の実施形態によれば、有効性の判断は、この組み合わせに、カタログが期限を経過しているか否かを判断することをさらに組み合わせることができる。
【００１３】
別の実施形態によれば、サービス識別子が第２のアプリケーションと併せて使用されているか否かを判断することは、サービス識別子が第２のアプリケーションのアプリケーション識別子およびアプリケーション・バージョンと共に使用されているか否かを判断することを含む。
【００１４】
１つの実施形態によれば、サブリクエストが無効である場合、更新されたサービス識別子、更新されたカタログ、またはこれらの組み合わせが提供される。その後、更新されたサービス識別子、更新されたカタログ、またはこれらの組み合わせを用いてサブリクエストが再試行されることができる。
【００１５】
別の実施形態によれば、更新されたサービス識別子は新規のサービス識別子、変更されたセキュリティ機能を含むサービス識別子、第１のアプリケーションにおけるセキュリティ機能有効性検証基準の変更に対応するサービス識別子、またはそれらの組み合わせとすることができる。更新されたサービス識別子を用いてサブリクエストが再試行されることができる。このような実施形態における提供は、非同期クライアント・サーバ・トランザクションが終了する前に行われる。
【００１６】
別の実施形態によれば、更新されたカタログは、新規のカタログ、そのカタログに対する更新、そのカタログの期限切れパラメータに対する変更、またはそれらの組み合わせとすることができる。更新されたカタログを用いてサブリクエストが再試行されることができる。このような実施形態では、提供は非同期クライアント・サーバ・トランザクションが終了する前に行われる。
【００１７】
別の実施形態によれば、サービスが追加の認証を要求するか否かが判断される。追加の認証が必要とされる場合、追加の認証情報を求めるリクエストに応答して追加の認証情報が受信される。この実施形態は、追加の認証情報が有効であるか否かを判断する。追加の認証情報が有効である場合、サービスが提供される。
【００１８】
別の実施形態によれば、カタログに従ってサービスが許可可能か否かの判断は、レジストリを使用してサービスが許可可能か否かを判断することによって実行される。
【００１９】
別の実施形態によれば、オリジナルのサービス識別子が生成される。このサービス識別子は、オリジナルのサービス識別子が変形したバージョンである。
【００２０】
ここで例示のみを目的として、添付の図面を参照して本発明の実施形態を説明する。
【図面の簡単な説明】
【００２１】
【図１】例示的な実施形態を実施することができるデータ処理システムのネットワークの絵図を示す。
【図２】例示的な実施形態を実施することができるデータ処理システムのブロック図を示す。
【図３】例示的な実施形態を実施することができるデータ処理環境のブロック図を示す。
【図４】例示的な実施形態による、非同期クライアント・サーバ・トランザクションを保護するためのサーバ・データ処理システム構成のブロック図を示す。
【図５】例示的な実施形態による、非同期クライアント・サーバ・トランザクションを保護するためのクライアント・データ処理システムの構成のブロック図を示す。
【図６】例示的な実施形態による、非同期クライアント・サーバ・トランザクション内で発生するトランザクションのタイミング図を示す。
【図７】例示的な実施形態による、サービス識別子およびカタログの更新プロセスのブロックを示す。
【図８】例示的な実施形態による、レジストリ、サービス識別子、およびカタログを生成するプロセスの流れ図を示す。
【図９】例示的な実施形態による、非同期クライアント・サーバ・トランザクションを保護するプロセスの流れ図を示す。
【図１０】例示的な実施形態による、非同期クライアント・サーバ・トランザクションを保護する別のプロセスの流れ図を示す。
【発明を実施するための形態】
【００２２】
本発明は、クライアントが非同期クライアント・サーバ・トランザクションの下でいくつかのサブリクエストを実行することができることを認めるものである。非同期クライアント・サーバ・トランザクションのために現在利用可能な技術を使用して、クライアントはサーバに対して１度認証を行い、次いで複数のサブリクエストを行ってサーバが提供することができるさまざまなサービスを行き来する。
【００２３】
クライアントはトランザクションまたはクライアントの動作に関係のないものであり得るサービスに対するアクセスを得ることができる。悪意あるアプリケーションが、正当なクライアントの非同期クライアント・サーバ・トランザクションを利用して、初期認証が成功した後にサーバにおけるサービスおよびデータに対するアクセスを得るおそれがある。
【００２４】
セッションＩＤ技法は、これらのタイプの違反を防止するには不十分である。一般的にセッションＩＤはセッション中に変更されないままであり、他のセッション・パラメータに基づいて容易に推測されるため、セッションＩＤ技法は不十分である。他の現在利用可能な技術も、関係のないサービスおよびデータに対するアクセスの防止、ならびに悪意ある使用のための非同期クライアント・サーバ・トランザクションのハイジャックの防止には不十分である。
【００２５】
本発明を説明するために使用される例示的な実施形態は一般的に、上述の問題および非同期クライアント・サーバ・トランザクションにおけるセキュリティに関連する他の問題に対処し、これらを解決する。例示的な実施形態は、非同期クライアント・サーバ・トランザクションを保護するための方法、コンピュータ使用可能プログラム製品、およびデータ処理システムを提供する。
【００２６】
例示的な実施形態は例としてのみ、特定のトランザクション、データ、データ構造、リクエスト、および応答に関連して説明される。このような記載は本発明に対する限定を意図するものではない。たとえば、ＡＪＡＸトランザクションに関連して説明される例示的な実施形態は、本発明の範囲内で同様の様式で別の同等の技術、フォーマット、または標準規格を使用して、非同期クライアント・サーバ・トランザクションに適用することができる。
【００２７】
さらに、例示的な実施形態は説明を明瞭にするためにのみ、具体的なクライアント・データ処理システムおよびサーバ・データ処理システムおよびアプリケーションに関連して説明される。本発明の範囲を逸脱することなく、例示的な実施形態は、クライアントおよびサーバの機能を果たし得る任意のタイプのデータ処理システム、データ、データ・ソース、またはデータ・ソースに対するアクセスに関連して実施することができる。本発明の実施形態は、たとえば、任意のタイプのクライアント・アプリケーション、サーバ・アプリケーション、プラットフォーム・アプリケーション、スタンドアロン・アプリケーション、またはそれらの組み合わせのような、任意のタイプのアプリケーションに関連して実施することができる。
【００２８】
アプリケーションは、データ・オブジェクト、コード・オブジェクト、カプセル化命令、アプリケーションの断片、サービス、およびデータ処理環境内で利用可能な他のタイプの資源をさらに含むことができる。たとえば、Ｊａｖａ（Ｒ）オブジェクト、Ｅｎｔｅｒｐｒｉｓｅ  Ｊａｖａ  Ｂｅａｎ（ＥＪＢ（Ｒ））、サーブレット、またはアプレットが、それらに関連して、それらの中で、またはそれらを使用して本発明を実施することができるアプリケーションを具現化したものであり得る。（Ｊａｖａ、ＥＪＢ、および他のＪａｖａ関連用語はＯｒａｃｌｅ社もしくはその関連会社またはその両方の登録商標である。）
【００２９】
例示的な実施形態は、ハードウェア、ソフトウェア、またはそれらの組み合わせにおいて実施することができる。本明細書に記載される例は、説明を明瞭にするためにのみ使用され、例示的な実施形態を限定しているものではない。追加のまたは異なる情報、データ、動作、行動、タスク、活動、および操作が同様の目的のために本明細書から想定可能となり、同じことが例示的な実施形態の範囲内で予期される。
【００３０】
例示的な実施形態は例としてのみ、具体的な識別子、パラメータ、属性、構成、コード、データ構造、ファイル・システム、設計、アーキテクチャ、レイアウト、回路図、およびツールを使用して説明され、例示的な実施形態を限定しているものではない。さらに、例示的な実施形態は場合によっては、説明を明瞭にするための例としてのみ、特定のソフトウェア・ツールおよびデータ処理環境を使用して説明される。例示的な実施形態は、他の同等のまたは類似の目的をもつ構造、システム、アプリケーション、またはアーキテクチャと併せて使用することができる。
【００３１】
本明細書に列挙されている一切の利点は例に過ぎず、例示的な実施形態を限定することは意図されていない。追加のまたは異なる利点が具体的な例示的実施形態によって実現されることができる。さらに、特定の例示的な実施形態は、上記で列挙されている利点のいくつかを有するか、すべてを有するか、または有しない。
【００３２】
図面を参照すると、特に図１および図２を参照すると、これらの図面は例示的な実施形態を実施することができるデータ処理環境の例示の図である。図１および図２は例に過ぎず、種々の実施形態を実施することができる環境に関して何らの限定も主張または暗示することを意図するものではない。特定の実施態様は、以下の説明に基づいて、図示される環境に対して多くの変更を為すことができる。
【００３３】
図１は、例示的な実施形態を実施することができるデータ処理システムのネットワークの絵図を示す。データ処理環境１００は、例示的な実施形態を実施することができる複数のコンピュータから成るネットワークである。データ処理環境１００はネットワーク１０２を含む。ネットワーク１０２は、データ処理環境１００内で共に接続される様々なデバイスおよびコンピュータの間の通信リンクを提供するのに使用される媒体である。ネットワーク１０２は、有線、無線通信リンク、または光ファイバ・ケーブルのような接続を含むことができる。サーバ１０４およびサーバ１０６が記憶装置１０８と共にネットワーク１０２に結合している。ソフトウェア・アプリケーションは、データ処理環境１００内の任意のコンピュータ上で実行することができる。
【００３４】
加えて、クライアント１１０、１１２、および１１４がネットワーク１０２に結合している。サーバ１０４もしくは１０６、またはクライアント１１０、１１２、もしくは１１４のようなデータ処理システムはデータを含むことができ、その上で実行されるソフトウェア・アプリケーションまたはソフトウェア・ツールを有することができる。
【００３５】
サーバ１０４はアプリケーション・サーバ１０５を含むことができる。アプリケーション・サーバ１０５は、他のアプリケーションまたはサービスを供給するように動作する任意のアプリケーションとすることができる。サーバ１０６はサービス１０７を含むことができる。サービス１０７は、データを操作するか、データを供給するか、またはそれらの組み合わせを実行することができる機能、動作、またはアプリケーションとすることができる。クライアント１１２はクライアント・アプリケーション１１３を含むことができる。クライアント・アプリケーション１１３は、本発明の実施形態による、非同期クライアント・サーバ・トランザクションを実施することができるアプリケーションまたはその構成要素とすることができる。
【００３６】
サーバ１０４および１０６，記憶装置１０８、ならびにクライアント１１０、１１２および１１４は、有線接続、無線通信プロトコル、または他の適切なデータ接続を使用してネットワーク１０２に結合することができる。クライアント１１０、１１２、および１１４はたとえば、パーソナル・コンピュータまたはネットワーク・コンピュータとすることができる。
【００３７】
図示される例では、サーバ１０４は、ブート・ファイル、オペレーティング・システム画像、およびアプリケーションのようなデータをクライアント１１０、１１２、および１１４に提供することができる。クライアント１１０、１１２、および１１４は、この例ではサーバ１０４に対するクライアントとすることができる。クライアント１１０、１１２、１１４、またはそれらの何らかの組み合わせは、それ自体のデータ、ブート・ファイル、オペレーティング・システム画像、およびアプリケーションを含むことができる。データ処理環境１００は、図示されていない追加のサーバ、クライアント、および他のデバイスを含んでもよい。
【００３８】
図示されている例では、データ処理環境１００はインターネットとすることができる。ネットワーク１０２は、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）および互いに通信するための他のプロトコルを使用するネットワークおよびゲートウェイの集合を表すことができる。インターネットの中心には、データおよびメッセージをルーティングする数千の商用の、行政機関の、教育機関の、および他のコンピュータ・システムを含む多重ノードまたはホスト・コンピュータ間のデータ通信リンクの基幹回線がある。当然ながら、データ処理環境１００はさらに、たとえばイントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、または広域ネットワーク（ＷＡＮ）のような多数の異なるタイプのネットワークとして実施することもできる。図１は一例として意図されており、種々の例示的な実施形態の構造的な限定としては意図されていない。
【００３９】
他の用途の中でも、データ処理環境１００は、例示的な実施形態を実施することができるクライアント・サーバ環境を実施するために使用することができる。クライアント・サーバ環境は、ソフトウェア・アプリケーションおよびデータがネットワークにわたって分散されることを可能にし、それによって、クライアント・データ処理システムとサーバ・データ処理システムとの間の双方向性を使用することによってアプリケーションが機能する。データ処理環境１００はさらに、ネットワークにわたって分散される相互運用可能なソフトウェア・コンポーネントがコヒーレントなビジネス・アプリケーションとして共にパッケージされることができるサービス指向型アーキテクチャを採用することもできる。
【００４０】
図２を参照すると、この図は、例示的な実施形態を実施することができるデータ処理システムのブロック図を示している。データ処理システム２００は、図１におけるサーバ１０４またはクライアント１１０のような、本発明の例示的な実施形態のために、プロセスを実施するコンピュータ使用可能プログラム・コードまたは命令を置くことができるコンピュータの一例である。
【００４１】
図示される例では、データ処理システム２００は、ノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２ならびにサウス・ブリッジおよび入力／出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）２０４を含むハブ・アーキテクチャを採用している。処理装置２０６、主記憶装置２０８、およびグラフィックス・プロセッサ２１０がノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２に結合されている。処理装置２０６は、１つまたは複数のプロセッサを含むことができ、当該１つまたは複数の異種のプロセッサ・システムを使用して実施することができる。グラフィックス・プロセッサ２１０は、特定の実施形態では、アクセラレイテッド・グラフィックス・ポート（ＡＧＰ）を通じてＮＢ／ＭＣＨに結合することができる。
【００４２】
図示される例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２がサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ（ＳＢ／ＩＣＨ）２０４に結合されている。オーディオ・アダプタ２１６、キーボード・マウス・アダプタ２２０、モデム２２２、読み出し専用メモリ（ＲＯＭ）２２４、ユニバーサル・シリアル・バス（ＵＳＢ）および他のポート２３２、ならびにＰＣＩ／ＰＣＩｅデバイス２３４がバス２３８を通じてサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合されている。ハード・ディスク・ドライブ（ＨＤＤ）２２６およびＣＤ−ＲＯＭ２３０がバス２４０を通じてサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合されている。ＰＣＩ／ＰＣＩｅデバイスはたとえば、ノートブック・コンピュータ用のＥｔｈｅｒｎｅｔ（Ｒ）アダプタ、アドイン・カード、およびＰＣカードを含むことができる。ＰＣＩは、カード・バス・コントローラを使用するが、ＰＣＩｅは使用しない。ＲＯＭ２２４はたとえば、フラッシュ・バイナリ入出力システム（ＢＩＯＳ）とすることができる。ハード・ディスク・ドライブ２２６およびＣＤ−ＲＯＭ２３０はたとえば、統合ドライブ・エレクトロニクス（ＩＤＥ）または、シリアル・アドバンスド・テクノロジ・アタッチメント（ＳＡＴＡ）インタフェースを使用することができる。スーパーＩ／Ｏ（ＳＩＯ）デバイス２３６がサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ（ＳＢ／ＩＣＨ）２０４に結合することができる。
【００４３】
オペレーティング・システムは、処理装置２０６上で作動する。オペレーティング・システムは、図２におけるデータ処理システム２００内の様々なコンポーネントの制御を調整および提供する。オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（Ｒ）Ｗｉｎｄｏｗｓ（Ｒ）（ＭｉｃｒｏｓｏｆｔおよびＷｉｎｄｏｗｓは米国および他の国々におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）、またはＬｉｎｕｘ（Ｒ）（Ｌｉｎｕｘは、米国および他の国々におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標である）のような、市販のオペレーティング・システムとすることができる。Ｊａｖａ（Ｒ）プログラミング・システムのようなオブジェクト指向プログラミング・システムがオペレーティング・システムと連動して作動してもよく、当該オブジェクト指向プログラミング・システムは、Ｊａｖａ（Ｒ）プログラムまたはデータ処理システム２００上で実行しているアプリケーションからオペレーティング・システムへの呼び出しを提供する。
【００４４】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムに対する命令は、ハード・ディスク・ドライブ２２６のようなストレージ・デバイス上に置かれ、処理装置２０６による実行のために主記憶装置２０８内に読み込まれることができる。例示的な実施形態のプロセスは、コンピュータ実施の命令を使用して処理装置２０６によって実行されることができ、当該命令はたとえば、主記憶装置２０８、読み出し専用メモリ２２４、または１つもしくは複数の周辺デバイスのようなメモリ内に置かれることができる。
【００４５】
図１〜図２におけるハードウェアは実施態様に応じて変更することができる。フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブ等のような、他の内部ハードウェアまたは周辺デバイスを、図１〜図２に示されるハードウェアに加えて、またはその代わりに使用することができる。加えて、例示的な実施形態のプロセスを、マルチプロセッサ・データ処理システムに適用することができる。
【００４６】
説明例によっては、データ処理システム２００は、一般的に、オペレーティング・システム・ファイルもしくはユーザ生成データまたはその両方を記憶するための不揮発性メモリを提供するためにフラッシュ・メモリを有して構成される携帯情報端末（ＰＤＡ）であってもよい。バス・システムは、システム・バス、Ｉ／Ｏバス、およびＰＣＩバスのような１つまたは複数のバスを含むことができる。当然ながら、バス・システムは、任意のタイプの通信構造またはアーキテクチャであって、当該構造またはアーキテクチャに結合される種々のコンポーネントまたはデバイス間のデータの転送を提供する、通信構造またはアーキテクチャを使用して実施することができる。
【００４７】
通信装置は、モデムまたはネットワーク・アダプタのような、データを送受信するのに使用される１つまたは複数のデバイスを含むことができる。メモリはたとえば、主記憶装置２０８または、ノース・ブリッジおよびメモリ・コントローラ・ハブ２０２に見られるようなキャッシュのようなキャッシュとすることができる。処理装置は１つまたは複数のプロセッサまたはＣＰＵを含むことができる。
【００４８】
図１〜図２において図示される例および上述の例は、構造的な限定を暗示するように意図されるものではない。たとえば、データ処理システム２００はさらに、ＰＤＡの形態をとるのに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話機とすることもできる。
【００４９】
図３を参照すると、この図は、例示的な実施形態を実施することができるデータ処理環境のブロック図を示している。クライアント・データ処理システム３０２は、図１におけるクライアント１１２と同様のものとすることができる。クライアント・アプリケーション３０４は、図１におけるクライアント・アプリケーション１１３と同様のものとすることができる。サーバ・データ処理システム３０６は、図１におけるサーバ１０４と同様のものとすることができる。アプリケーション・サーバ３０８は、図１におけるアプリケーション・サーバ１０５と同様のものとすることができる。
【００５０】
現在使用されている非同期クライアント・サーバ・トランザクション技術として、クライアント・アプリケーション３０４はアプリケーション・サーバ３０８に対して初期非同期リクエストを行い、続いて１つまたは複数のサブリクエストを行うことができる。サブリクエストは認可されたサービス３１０を利用するためのものであるか、認可されたデータ３１２にアクセスするためのものであるか、またはその両方であることができる。
【００５１】
一例として、悪意あるアプリケーション３１４は、クライアント・アプリケーション３０４とアプリケーション・サーバ３０８との間のトランザクション情報になりすまし、悪意あるアプリケーション３１４が保護されたサービス３１６、保護されたデータ３１８、またはその両方にアクセスすることを可能にすることができるサブリクエストを行う、クライアント・データ処理システム上のアプリケーションであり得る。
【００５２】
悪意あるアプリケーション３１４は、任意の目的を持つが、このように振る舞うあらゆるアプリケーションであり得ることに留意されたい。事実、特定の状況下では、クライアント・アプリケーション３０２は、それ自体が悪意あるアプリケーション３１４であるかのように振る舞い、このように保護された資源にアクセスする場合がある。
【００５３】
認可されたサービス３１０および認可されたデータ３１２は、所与の非同期クライアント・サーバ・トランザクションのもとでクライアント・アプリケーション３０２によって正当にアクセスされることができる任意のサービスまたはデータであり得る。保護されたサービス３１６および保護されたデータ３１８は、所与の非同期クライアント・サーバ・トランザクションの範囲を超える場合がある、サーバ・データ処理システム３０６上で利用可能なサービスまたはデータの例である。
【００５４】
図４を参照すると、この図は、例示的な実施形態による、非同期クライアント・サーバ・トランザクションを保護するためのサーバ・データ処理システム構成のブロック図を示す。サーバ・データ処理システム４０２は、図３におけるサーバ・データ処理システム３０６を使用して実施することができる。アプリケーション・サーバ４０４は、図３におけるアプリケーション・サーバ３０８を使用して実施することができる。
【００５５】
アプリケーション・サーバ４０４は、認証エンジン４０６を利用して、非同期クライアント・サーバ・トランザクションに関連してクライアント・アプリケーションから受信され得る初期リクエストを認証する。通常、初期リクエストは、クライアント・アプリケーションに関連付けられているアプリケーション識別子、およびそのクライアント・アプリケーションのアプリケーション・バージョンを含む。初期リクエストはさらに、ユーザ識別子およびパスワードのような任意のユーザ証明認証情報を含むことができる。
【００５６】
例示的な実施形態によれば、認証エンジン４０６は、クライアント・アプリケーション、場合によってはユーザを認証する。認証が成功すると、認証エンジン４０６は、アプリケーション・サーバ４０４がレジストリ４０８を作成することを可能にする情報をアプリケーション・サーバ４０４に提供する。
【００５７】
レジストリ４０８は、クライアント・アプリケーションがサーバ・データ処理システム４０２に対して実行することを認可されている活動のリストである。たとえば、レジストリ４０８は、認可されたクライアント・アプリケーションがアクセスすることができる、サーバ・データ処理システム４０２上で利用可能なサービスのセットの識別子またはパラメータを含むことができる。サービスのセットは、より多くのサービスのうちの１つである。
【００５８】
別の例として、レジストリ４０８は、認可されたクライアント・アプリケーションが問い合わせを行うことができる、データベースの部分を指定するパラメータを含むことができる。別の例として、レジストリ４０８は、否定的なパラメータまたは識別子、すなわち、認可されたクライアント・アプリケーションが使用を禁止されているサービスおよびデータのセットのパラメータまたは識別子を含むことができる。サービスおよびデータのセットは、１つまたは複数のサービスまたはデータである。
【００５９】
レジストリ４０８内のこれらの例のエントリは、例示的な実施形態を明瞭にするためにのみ記載され、本発明を限定しているものではない。本発明の範囲内で、他の多くのタイプの、同様の目的の情報をレジストリ４０８内に記録することができる。
【００６０】
クライアント・アプリケーションが認証されると、認証エンジン４０６はアプリケーション・サーバ４０４と協働して、サービス識別子（サービスＩＤ）４１０を生成する。サービス識別子４１０は、非同期クライアント・サーバ・トランザクションまたはその一部に関連付けられる一意の識別子である。
【００６１】
アプリケーション・サーバ４０４は、クライアント・アプリケーションの初期リクエストに応答して、サービス識別子４１０およびカタログ４１２を認可されたクライアント・アプリケーションに返す。カタログ４１２は、レジストリ４０８の内容のサブセットを含む。１つの実施形態では、カタログ４１２は、レジストリ４０８内のものとは異なるフォーマットまたはデータ構造における、レジストリ４０８の情報のいくつかまたはすべてを含むことができる。換言すれば、カタログ４１２の内容はブロック４１４によって示されるような、レジストリ４０８の内容のいくつかまたはすべてと同様であるか、またはその変形であることができる。
【００６２】
ブロック４１４は、カタログ４１２を構築するのに使用することができるレジストリ４０８の内容のいくつかまたはすべてを表す。１つの実施形態では、ブロック４１４の内容はカタログ４１２におけるものと変化していない形態に見える場合がある。別の実施形態では、ブロック４１４の内容は、カタログ４１２内で見えているとき、圧縮、暗号化、または再編成などによって、変形している場合がある。
【００６３】
１つの実施形態では、サービス識別子４１０は、特定のセキュリティ機能と関連付けられることができる。たとえば、サービス識別子４１０は、非同期クライアント・サーバ・トランザクションの間の所定の期間のみにわたって有効であることができ、その後更新しなければならない場合がある。別の例として、サービス識別子４１０は、非同期クライアント・サーバ・トランザクションにおける所定数のサブリクエストのみにわたって有効であることができ、その後更新しなければならない場合がある。
【００６４】
特定の実施態様にとって適切であるならば、暗号化のような任意の他のセキュリティ機能を、本発明の範囲内においてサービス識別子４１０に適用することができる。サービス識別子４１０の動作および性質を図６および図７に関連して詳細に説明する。
【００６５】
一実施形態では、カタログ４１２は、事実上動的であり得る。換言すれば、カタログ４１２の内容はカタログ４１２が作成される非同期クライアント・サーバ・トランザクションの間に変化することができる。たとえば、１つの実施形態では、カタログ４１２は、所定の期間のみにわたって有効のままであることができ、その後リフレッシュしなければならない場合がある。別の例として、別の実施形態では、カタログ４１２は、特定のタイプまたは数の予期されるサブリクエストにとって十分な情報のみを含むことができ、その後、追加のタイプまたは数のサブリクエストのための情報を用いてリフレッシュまたは更新しなければならない場合がある。
【００６６】
カタログ４１２のこれらの例の構成は本発明に対する限定を意図するものではない。特定の実施態様にとって適切であるならば、暗号化のような任意の他のセキュリティ機能を、本発明の範囲内においてカタログ４１２に適用することができる。カタログ４１２の動作および性質を図６および図７に関連して詳細に説明する。
【００６７】
アプリケーション・サーバ４０４、認証エンジン４０６、およびレジストリ４０８は、一例の構成としてのみ、サーバ・データ処理システム４０２内にあるように示されている。本発明の実施形態の一実施態様は、これらのコンポーネントを、本発明の範囲内においてデータ処理環境内で任意の組み合わせで異なる複数のデータ処理システムにわたって分散させることができる。
【００６８】
図５を参照すると、この図は、例示的な実施形態による、非同期クライアント・サーバ・トランザクションを保護するためのクライアント・データ処理システムの構成のブロック図を示す。クライアント・データ処理システム５０２は、図３におけるクライアント・データ処理システム３０２を使用して実施することができる。クライアント・アプリケーション５０４は、図３におけるクライアント・アプリケーション３０４を使用して実施することができる。悪意あるアプリケーション５０６は、図３における悪意あるアプリケーション３１４と類似のものであり得る。サービス識別子５０８は、図４におけるサービス識別子４１０を使用して実施することができる。カタログ５１０は、図４におけるカタログ４１２を使用して実施することができる。
【００６９】
クライアント・アプリケーション５０４は、図４に関して説明したように、非同期クライアント・サーバ・トランザクションを求める初期リクエストをアプリケーション・サーバに送信することができる。クライアント・アプリケーション５０４は、クライアント・アプリケーション５０４に関連付けられるアプリケーション識別子５１２およびアプリケーション・バージョン５１４をリクエストの中に含めることができる。任意選択的に、クライアント・アプリケーション５０４はさらに、もしあれば、ユーザに関連付けられる認証情報をも含むことができる。リクエストに応答して、アプリケーション・サーバ５０８においてリクエストの認証情報を使用した認証が成功するとクライアント・アプリケーション５０４はサービス識別子５０８およびカタログ５１０を受信する。
【００７０】
１つの実施形態では、クライアント・アプリケーション５０４はさらに、セッション識別子のような、現在使用されている識別子および情報をも受信することができる。上述のように、悪意あるアプリケーション５０６は、このような現在使用されている識別子および情報を推測し、またはそれになりすますことが可能であり得る。しかしながら、有利には、非同期クライアント・サーバ・トランザクションを継続する中でのサービス識別子５０８およびカタログ５１０の使用の構造および様式は、同様の様式における悪意あるアプリケーション５０６による使用の影響を受けない。
【００７１】
１つの実施形態では、アプリケーション識別子５１２と、アプリケーション・バージョン５１４と、サービス識別子５０８と、カタログ５１０の内容との組み合わせは、サブリクエストにおいて使用される。この組み合わせは、従来技術におけるような固定のまたは予めコードされたサブリクエストとは反対に、一実施形態によるサブリクエストの動的な作成において使用される。サブリクエストの動的な構築、ならびに、アプリケーション識別子５１２と、アプリケーション・バージョン５１４と、サービス識別子５０８と、カタログ５１０の内容との組み合わせは、本発明の実施形態が、現在利用可能な非同期クライアント・サーバ・トランザクションのための技術を用いては可能でない、非同期クライアント・サーバ・トランザクションおよびその中のサブリクエストのセキュリティを達成することを可能にする。
【００７２】
図６を参照すると、この図は、例示的な実施形態による、非同期クライアント・サーバ・トランザクション内で発生するトランザクションのタイミング図を示す。クライアント・アプリケーション６０２は、図５におけるクライアント・アプリケーション５０４を使用して実施することができる。アプリケーション・サーバ６０４は、図４におけるアプリケーション・サーバ４０４を使用して実施することができる。
【００７３】
アプリケーション・サーバ・コンポーネント６０６は、アプリケーション・サーバ６０４によって利用されるアプリケーション、エンジン、またはコンポーネントとすることができる。たとえば、１つの実施形態では、アプリケーション・サーバ・コンポーネント６０６は、図４における認証エンジン４０６と、現在利用可能なアプリケーション・サーバ・アプリケーションの特定の他の既存のコンポーネントとの組み合わせとすることができる。アプリケーション・サーバ・コンポーネント６０６は、異なる複数の機能を供給する２つ以上のアプリケーション・サーバ・コンポーネントとすることができる。
【００７４】
１つの例示の実施形態では、アプリケーション・サーバ６０４は、ログイン・ダイアログ６０７をクライアント・アプリケーション６０２に提示することができる。ログイン・ダイアログ６０７は任意選択とすることができ、クライアント・アプリケーション６０２は自身が率先して、またはログイン・ダイアログ６０７に応答して、リクエスト６０８において証明認証情報を提供することができる。証明認証情報は、クライアント・アプリケーション６０２に関連付けられるアプリケーション識別子と、クライアント・アプリケーション６０２に関連付けられるアプリケーション・バージョンと、リクエスト６０８に関連付けられる識別子と、もしあれば、ユーザまたはアカウントに関連付けられる１つまたは複数の証明認証情報との組み合わせを含むことができる。
【００７５】
アプリケーション・サーバ６０４は、リクエスト６０８内の証明認証情報を使用して、クライアント・アプリケーション６０２とのセッションの有効性を検証する。１つの実施形態では、アプリケーション・サーバ６０４は、セッション有効性検証メッセージ６１０をアプリケーション・サーバ・コンポーネント６０６に送信して、返ってくる有効性確認メッセージを受信してこの有効性検証を完遂することができる。
【００７６】
アプリケーション・サーバ６０４は、アプリケーション・サーバ・コンポーネント６０６を使用してサービス・レジストリ６１２を生成することができる。ステップ６１２において生成されるサービス・レジストリは図４におけるレジストリ４０８として使用されることができ、サービスの説明、ならびにアプリケーション・サーバ６０４を通じて利用可能なデータまたは他の資源を含むことができる。
【００７７】
アプリケーション・サーバ・コンポーネント６０６は、サービス識別子６１４を生成する。ステップ６１４において生成されるサービス識別子は、図４におけるサービス識別子４１０および図５におけるサービス識別子５０８として使用することができる。
【００７８】
アプリケーション・サーバ６０４は、応答６１６をクライアント・アプリケーション６０２に送信する。１つまたは複数のメッセージが応答６１６を形成することができる。応答６１６は、サービス識別子およびカタログをクライアント・アプリケーション６０２に通信する。応答６１６内のカタログは、ステップ６１２において生成されたサービス・レジストリのサブセットとすることができる。応答６１６内のカタログは、図４におけるカタログ４１２および図５におけるカタログ５１０として使用することができる。
【００７９】
クライアント・アプリケーション６０２は、１つまたは複数のサブリクエストをアプリケーション・サーバ６０４に送信することができる。サービスまたはデータを求めるサブリクエスト６１８が、１つのこのようなサブリクエストである。
【００８０】
クライアント・アプリケーション６０２は、応答６１６において受信されたサービス識別子およびカタログを動的に使用してサブリクエスト６１８を構築する。たとえば、１つの実施形態では、サブリクエスト６１８は、応答６１６において受信されたカタログにおいて生じるサービスのみを求めるリクエストを含むことができる。一実施形態におけるサブリクエスト６１８は、クライアント・アプリケーション６０２のアプリケーション識別子、クライアント・アプリケーション６０２のアプリケーション・バージョン、応答６１６において受信されたサービス識別子、またはこのようなサービス識別子の変形をさらに含むことができる。
【００８１】
したがって、非同期クライアント・サーバ・トランザクションのために現在使用されている技法とは異なり、本発明の実施形態は、両方とも経時的に変化し得るカタログおよびサービス識別子からの情報を使用して必要なときにサブリクエストを作成することによって非同期クライアント・サーバ・トランザクションを保護する。このようにサブリクエストを作成することによって、サブリクエストは動的になり、悪意あるアプリケーションによるなりすましまたはトライアル・アンド・エラー攻撃に対して耐性をもつようになる。
【００８２】
アプリケーション・サーバ６０４は、アプリケーション・サーバ・コンポーネント６０６を使用することなどによって、サービス識別子期限切れチェック６２０を実行する。一実施形態は、各サブリクエスト６１８の後にチェック６２０を実施することができる。別の実施形態は、最適なポリシまたはアルゴリズムに従ういくつかのサブリクエストの後にチェック６２０を実施することができる。
【００８３】
サービス識別子の時間に基づく期限は、この実施形態における一例としてのみ使用され、本発明を限定しているものではない。本発明の範囲内において、サービス識別子に関連する任意のセキュリティ機能を、ステップ６２０において適切な様式でチェックすることができる。
【００８４】
サービス識別子が期限切れになっていない場合、アプリケーション・サーバは、サブリクエスト６１８においてリクエストされたサービスまたはデータを求めるリクエスト６２２をアプリケーション・サーバ・コンポーネント６０６に送信することができる。アプリケーション・サーバ６０４は、サービス識別子と、アプリケーション識別子と、アプリケーション・バージョンとの組み合わせを使用して実行する必要があり得る任意の追加のデータ処理をもとめる、さらなるリクエスト６２４をアプリケーション・サーバ・コンポーネント６０６に送信することができる。たとえば、リクエスト６２４は、サブリクエスト６１８のログ記録を求めるものとすることができる。別の例として、リクエスト６２４は、サービス識別子の期限切れカウントをインクリメントするためのものとすることができる。
【００８５】
アプリケーション・サーバ６０４は、クライアント・アプリケーション６０２によってリクエストされたデータまたはサービスを収集する（６２６）。アプリケーション・サーバ６０４は、このデータまたはサービスをクライアント・アプリケーション６０２に送信する（６２８）。
【００８６】
図６のタイミング図のいくつかのステップは、このように一実施形態によって保護される非同期クライアント・サーバ・トランザクション内で２回以上行われることができる。たとえば、アプリケーション・サーバ６０４は、チェック６２０が、サブリクエスト６１８内のサービス識別子が期限切れになっていることを検出した場合に、更新されたサービス識別子、リフレッシュされたカタログ、またはその両方を含む別の応答６１６を送信することができる。
【００８７】
アプリケーション・サーバ・コンポーネント６０６において実行されているように図示されている活動は、説明を明瞭にするための例としてのみ、そのように図示されている。このような活動は、本発明の範囲内において、アプリケーション・サーバ６０４または１つもしくは複数のアプリケーション・サーバ・コンポーネント６０６において実行することができる。
【００８８】
図７を参照すると、この図は、例示的な実施形態による、サービス識別子およびカタログの更新プロセスのブロック図を示す。クライアント・アプリケーション７０２は、図６におけるクライアント・アプリケーション６０２と同様のものとすることができる。アプリケーション・サーバ７０４は、図６におけるアプリケーション・サーバ６０４と同様のものとすることができる。アプリケーション・サーバ・コンポーネント７０６は、図６におけるアプリケーション・サーバ・コンポーネント６０６と同様のものとすることができる。
【００８９】
図７による１つの例示の実施形態では、クライアント・アプリケーション７０２は、初期リクエスト７０８をアプリケーション・サーバ７０４に送信する。アプリケーション・サーバ・コンポーネント７０６は、レジストリおよびサービス識別子を生成する。アプリケーション・サーバ７０４は、レジストリに基づくカタログ、およびサービス識別子をクライアント・アプリケーション７０２に返す。
【００９０】
クライアント・アプリケーション７０２は、カタログおよびサービス識別子、ならびにクライアント・アプリケーション７０２およびその非同期クライアント・サーバ・トランザクションに関連付けられる他の情報を動的に使用してサブリクエストを構築する。クライアント・アプリケーション７０２は、非同期クライアント・サーバ・トランザクションの促進のために、１つまたは複数の、このように動的に構築されたサブリクエストを送信する。
【００９１】
サービス識別子は或る時点において、クライアント・アプリケーション７０２において期限切れになるか、または他の様態で無効になる。たとえば、非同期クライアント・サーバ・トランザクションが完了する前にサービス識別子が期限切れになる場合があり、その結果、複数のサービス識別子を使用することで非同期クライアント・サーバ・トランザクションが強制的に完了させられることになる。別の例として、サービス識別子は、非同期クライアント・サーバ・トランザクションが完了しているか否かにかかわらず、特定の時点において期限切れになる場合がある。
【００９２】
アプリケーション・サーバ７０４は、実施態様にとって適切な任意の様式における任意の組み合わせにおいて、サービス識別子および他の認証情報の有効性を検証することができる。たとえば、１つの実施形態では、アプリケーション・サーバ・コンポーネント７０６が各サブリクエスト内のサービス識別子の有効性を検証することができる。別の実施形態では、サービス識別子は、事前設定の間隔をおいて有効性を検証されることができる。別の実施形態では、サービス識別子は、別の証明認証情報と共に有効性を検証されることができる。
【００９３】
サービス識別子の有効性検証は、実施態様にとって適切な任意のタイプの有効性検証を含むことができる。たとえば、或る有効性検証は、サービス識別子のインテグリティについてチェックして、そのサービス識別子が変更されているか否かを判断することができる。別の例の有効性検証は、サービス識別子の期限切れについて単純にチェックすることができる。別の例の有効性検証は、他の様態で有効なサービス識別子が、当該サービス識別子が発行時に相互に関連していたものと同じアプリケーション識別子と共に使用されているか、または異なるアプリケーション識別子と共に使用されているかを判断するようにチェックすることができる。
【００９４】
１つの実施形態では、クライアント・アプリケーション７０２は、期限切れのサービス・リクエストを有する、動的に構築されたサブリクエストを送信する。期限切れのサービス識別子は、アプリケーション・サーバ・コンポーネント７０６において有効性検証に失敗する。アプリケーション・サーバ７０４は、新規のまたは更新されたサービス識別子を、このような更新が許可される場合に、クライアント・アプリケーション７０２に送信する。たとえば、クライアント・アプリケーション７０２が非同期クライアント・サーバ・トランザクションを完了するのに事前設定の時間よりも長い時間がかかってしまった場合、アプリケーション・サーバ７０４は更新されたサービス識別子を送信しない場合がある。クライアント・アプリケーション７０２におけるカタログは、同様に期限切れになるか、期限経過となるか、または他の様態で無効になる場合がある。アプリケーション・サーバ７４０は、許可される場合は、カタログを同様に更新またはリフレッシュすることができる。
【００９５】
クライアント・アプリケーション７０２は、更新されたサービス識別子、更新されたカタログ、またはその両方を使用して後続のサブリクエストを動的に構築する。クライアント・アプリケーション７０２とアプリケーション・サーバ７０４との間のメッセージングおよび通信は、保護された非同期クライアント・サーバ・トランザクションが終了するまでこの様式で継続する場合がある。
【００９６】
図８を参照すると、この図は、例示的な実施形態による、レジストリ、サービス識別子、およびカタログを生成するプロセスの流れ図を示す。プロセス８００は、図７におけるアプリケーション・サーバ７０４とアプリケーション・サーバ・コンポーネント７０６との組み合わせのようなサーバ・アプリケーションにおいて実施することができる。
【００９７】
プロセス８００は、リクエストを受信することによって開始する（ステップ８０２）。ステップ８０２におけるリクエストは、アプリケーションを単純に識別する初期リクエストとすることができるか、またはサービスもしくはデータを求めるリクエストとすることができる。
【００９８】
プロセス８００は、ステップ８０２のリクエストからアプリケーション識別子およびアプリケーション・バージョンを検出する（ステップ８０４）。プロセス８００がリクエストの送信者との接続が許可可能であると判断すると（図示せず）、プロセス８００はサービス識別子を生成する（ステップ８０６）。
【００９９】
プロセス８００はさらに、リクエストの送信者が使用を許可され得る、サービス、データ、またはそれらの組み合わせのレジストリをも生成する（ステップ８０８）。プロセス８００は、サービス識別子およびリクエストからの任意の他の証明認証情報を用いてレジストリを更新する（ステップ８１０）。
【０１００】
プロセス８００は、レジストリに基づいてサービスおよびデータのカタログを生成する（ステップ８１２）。プロセス８００は、ステップ８０２のリクエストに応答してサービス識別子およびカタログを送信する（ステップ８１４）。その後、プロセス８００は終了する。
【０１０１】
図９を参照すると、この図は、例示的な実施形態による、非同期クライアント・サーバ・トランザクションを保護するプロセスの流れ図を示す。プロセス９００は、図７におけるアプリケーション・サーバ７０４、プリケーション・サーバ・コンポーネント７０６、またはそれらの組み合わせのようなサーバ・アプリケーションにおいて実施することができる。
【０１０２】
プロセス９００は、アプリケーション識別子と、アプリケーション・バージョンと、サービス識別子との組み合わせを含むリクエストを受信することによって開始する（ステップ９０２）。ステップ９０２のリクエストは、図７のサブリクエストと同様のものとすることができる。サービス識別子は、図８におけるステップ８１４において送信されるサービス識別子と同様のものとすることができる。
【０１０３】
プロセス９００は、サービス識別子が期限切れであるか、もしくはそうではなく有効であるか、リクエストの送信者におけるカタログが更新されるべきか否か、またはその両方を判断する（ステップ９０４）。プロセス９００が、サービス識別子が期限切れになっているか、または送信者におけるカタログが期限を経過していると判断する場合（ステップ９０４の「はい」経路）、プロセス９００はサービス識別子、カタログ、またはその両方を更新するか否かを判断する（ステップ９０６）。
【０１０４】
プロセス９００がサービス識別子、カタログ、またはその両方を更新しないと判断すると（ステップ９０６の「いいえ」経路）、プロセス９００はリクエストをログ記録することができる（ステップ９０８）。プロセス９００はさらに、リクエストの送信者にエラー・メッセージを送信することもできる（ステップ９１０）。その後、プロセス９００は終了する。
【０１０５】
プロセス９００がサービス識別子、カタログ、またはその両方を更新すると判断すると（ステップ９０６の「はい」経路）、プロセス９００は新規のサービス識別子を生成するか、または既存のサービス識別子の有効期限を延長することができる（ステップ９１２）。プロセス９００はさらに、必要とされる場合、新規のカタログを生成するか、既存のカタログに対する更新を生成するか、または既存のカタログの有効性を拡張することができる（ステップ９１４）。プロセス９００は、ステップ９０２のリクエストに応答して、必要に応じて、新規のもしくは更新されたサービス識別子、新規のもしくは更新されたカタログ、またはその両方を送信する（ステップ９１６）。その後、プロセス９００は終了する。
【０１０６】
ステップ９０４において、プロセス９００が、サービス識別子が有効であり、かつカタログが最新であると判断すると（ステップ９０４の「いいえ」経路）、プロセス９００はリクエストの送信者とのセッションが有効であるか否かを判断する（ステップ９１８）。プロセス９００が、サービス識別子またはその使用が無効であるとき、またはリクエストがカタログにないサービスを求めるものであるときなど、リクエストの送信者とのセッションが無効であると判断する場合（ステップ９１８の「いいえ」経路）、プロセス９００はステップ９０８に進む。リクエストされたサービスがカタログにあるか否かは、たとえば、カタログに含まれていたレジストリのその部分を調べることによって判断することができる。
【０１０７】
プロセス９００が、リクエストの送信者とのセッションが有効であると判断する場合（ステップ９１８の「はい」経路）、プロセス９００はリクエストされたサービスまたはデータが追加の認証を必要とするか否かを判断する（ステップ９２０）。たとえば、特定のサービスは、それ自体のログインＩＤおよびパスワードを必要とする場合がある。
【０１０８】
プロセス９００が追加の認証が必要であると判断すると（ステップ９２０の「はい」経路）、プロセス９００は、ディスプレイにログイン・ダイアログ・ボックスを提示することなどによって、追加認証メッセージを送信する（ステップ９２２）。プロセス９００は、追加の認証情報を受信する（ステップ９２４）。
【０１０９】
プロセス９００は、追加の認証情報が有効であるか否かを判断する（ステップ９２６）。追加の認証情報が有効でない場合（ステップ９２６の「いいえ」経路）、プロセス９００はステップ９０８に進む。
【０１１０】
追加の認証情報が有効である場合（ステップ９２６の「はい」経路）、または要求されているサービスによって追加の認証情報が要求されない場合（ステップ９２０の「いいえ」経路）、プロセス９００は要求されているサービスまたはデータを提供する（ステップ９２８）。プロセス９００は、リクエストにしたがって実行されるサービスまたは操作されるデータの結果を送信する（ステップ９３０）。その後、プロセス９００は終了する。この結果は、リクエストの送信者に送信されるか、または、本発明の範囲から逸脱することなく、別のアプリケーションもしくはデバイスに送信されることができる。
【０１１１】
図１０を参照すると、この図は、例示的な実施形態による、非同期クライアント・サーバ・トランザクションを保護する別のプロセスの流れ図を示す。プロセス１０００は、図７におけるクライアント・アプリケーション７０２のようなクライアント・アプリケーションにおいて実施することができる。
【０１１２】
プロセス１０００は、リクエストを送信することによって開始する（ステップ１００２）。リクエストは、図８におけるプロセス８００のステップ８０２において受信されるリクエストと同様のものとすることができる。
【０１１３】
リクエストの受信者に従ってリクエストが有効である場合（図示せず）、プロセス１０００はサービス識別子およびカタログを受信する（ステップ１００４）。プロセス１０００は、サービス識別子およびカタログを使用してサービスまたはデータを求める１つまたは複数のサブリクエストを動的に構築する（ステップ１００６）。プロセス１０００はさらに、追加の証明認証情報をサブリクエスト内に含めることもできる。
【０１１４】
プロセス１０００は、動的に作成されたサブリクエストを送信する（ステップ１００８）。ステップ１００８のサブリクエストに応答して、プロセス１０００は、要求されるサービスまたはデータ（ステップ１０１０）と、更新されたサービス識別子またはカタログ（ステップ１０１２）と、エラー・メッセージ（ステップ１０１４）との組み合わせを受信することができる。その後、プロセス１０００は終了する。
【０１１５】
上述のブロック図の構成要素および流れ図の中のステップは例としてのみ記載されている。これらの構成要素およびステップは、説明を明瞭にするために選択されており、本発明の例示的な実施形態を限定しているものではない。たとえば、特定の実施態様は、例示的な実施形態の範囲から逸脱することなく、これらの構成要素またはステップのいずれかを組み合わせるか、省略するか、さらに分割するか、変更するか、増補するか、縮小するか、または代替的に実施してもよい。さらに、本発明の範囲内で、上述のプロセスのステップを異なる順序で実行してもよい。
【０１１６】
このようにして、例示的な実施形態において、非同期クライアント・サーバ・トランザクションを保護するためのコンピュータ実装方法、装置、およびコンピュータ・プログラム製品が提供される。本発明の実施形態を使用して、非同期クライアント・サーバ・トランザクション中に関係のないサービスがアクセスできないように、非同期クライアント・サーバ・トランザクションを保護することができる。非同期クライアント・サーバ・トランザクションの要求元は提供元が許可を決定する特定のサービスおよびデータに限定される。
【０１１７】
本発明はさらに、非同期クライアント・サーバ・トランザクションの要求元に、提供元が供給する情報を使用して、非同期クライアント・サーバ・トランザクション内でリクエストを動的に構築する能力を提供する。本発明の実施形態によれば、要求元自体の情報と、提供元が供給する情報と、要求され得るサービスおよびデータに対する限定との組み合わせが、非同期クライアント・サーバ・トランザクションを保護する。本発明によるサービス識別子の性質、サービス識別子と他の識別子との組み合わせ、ならびにサービス識別子の期限切れおよび更新によって、非同期クライアント・サーバ・トランザクションは、なりすましまたはトライアル・アンド・エラー攻撃に対して耐性をもつようになる。
【０１１８】
本発明の実施形態は、必要に応じて変更または更新することができる柔軟なセキュリティ構成を提供する。本発明の実施形態は、追加のハードウェアを必要とせず、ほとんどの既存のデータ処理システムの既存のハードウェア−ソフトウェア構成において稼働することができるセキュリティ機構をさらに提供する。
【０１１９】
本発明の実施形態は、既存の認証アプリケーションおよびコンポーネントと協働することができる。本実施形態はさらに、特定のデータ処理環境において使用中であり得る既存のポリシ・インフラストラクチャとも協働することができる。
【０１２０】
本発明は、全体がソフトウェアの実施形態、または、ハードウェアの要素とソフトウェアの要素との両方を含む実施形態の形態をとることができる。好ましい実施形態では、本発明は、ファームウェア、常駐ソフトウェア、およびマイクロコードを含むがこれらには限定されないソフトウェアまたはプログラム・コードにおいて実施される。
【０１２１】
さらに、本発明は、コンピュータまたは任意の命令実行システムによって使用するための、またはそれらに関連するプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータ・プログラム製品の形態をとることができる。本記載では、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって使用するための、またはそれらに関連するプログラムを含有、記憶、通信、伝播、または輸送することができる任意の有形装置とすることができる。
【０１２２】
媒体は、電子、磁気、光学、電磁、赤外線、もしくは半導体のシステム（または装置もしくはデバイス）、あるいは伝播媒体とすることができる。コンピュータ可読媒体の例は、半導体またはソリッド・ステート・メモリ、磁気テープ、着脱可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、剛体磁気ディスク、および光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク−読み出し専用メモリ（ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ、ＣＤ−ＲＯＭ）、コンパクト・ディスク−リード／ライト（ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ／ｗｒｉｔｅ、ＣＤ−Ｒ／Ｗ）およびＤＶＤを含む。
【０１２３】
さらに、コンピュータ記憶媒体は、コンピュータ可読プログラム・コードを含むかまたは記憶することができ、それによって、このコンピュータ可読プログラム・コードがコンピュータ上で実行されると、このコンピュータ可読プログラム・コードの実行が、コンピュータに、別のコンピュータ可読プログラム・コードを通信リンクを介して送信させる。この通信リンクは、たとえば、限定することなく、物理的であるか無線である媒体を使用することができる。
【０１２４】
プログラム・コードの記憶もしくは実行またはその両方に適したデータ処理システムは、システム・バスを通じてメモリ要素に直接的にまたは間接的に結合される少なくとも１つのプロセッサを含む。メモリ要素は、プログラム・コードの実際の実行の間に利用されるローカル・メモリ、大容量記憶媒体、および、実行中に大容量記憶媒体からコードを取り出さなければならない回数を低減するために少なくともいくらかのプログラム・コードの一時記憶を提供するキャッシュ・メモリを含むことができる。
【０１２５】
データ処理システムは、サーバ・データ処理システムまたはクライアント・データ処理システムとして動作する場合がある。サーバ・データ処理システムおよびクライアント・データ処理システムは、コンピュータ可読であるような、コンピュータ使用可能であるデータ記憶媒体を含むことができる。サーバ・データ処理システムに関連付けられるデータ記憶媒体は、コンピュータ使用可能コードを含むことができる。クライアント・データ処理システムは、クライアント・データ処理システムに関連付けられるデータ記憶媒体上に記憶すること、またはクライアント・データ処理システム内で使用することなどのために、そのコンピュータ使用可能コードをダウンロードすることができる。サーバ・データ処理システムは、クライアント・データ処理システムからコンピュータ使用可能コードを同様にアップロードすることができる。例示的な実施形態のコンピュータ使用可能プログラム製品の実施形態に由来するコンピュータ使用可能コードは、このようにしてサーバ・データ処理システムおよびクライアント・データ処理システムを使用してアップロードまたはダウンロードすることができる。
【０１２６】
入出力すなわちＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、これらには限定されない）を、直接に、または、介在するＩ／Ｏコントローラを通じてのいずれかでシステムに結合することができる。
【０１２７】
さらにネットワーク・アダプタも、データ処理システムが、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて他のデータ処理システムまたは遠隔のプリンタもしくは記憶デバイスに結合されることを可能にするように、システムに結合することができる。モデム、ケーブル・モデム、およびＥｔｈｅｒｎｅｔ（Ｒ）カードは、現在利用可能なタイプのネットワーク・アダプタのほんの一部に過ぎない。
【０１２８】
本発明の記載は、例示および説明の目的で提示してきたものであり、網羅的であることも開示されている形態の本発明に限定されることも意図するものではない。多くの改変および変更が当業者には明らかとなろう。実施形態は本発明の原理、実際の適用を説明するために、さらに当業者が、予期される特定の使用に適するように様々な改変を加えた様々な実施形態について本発明を理解することを可能にするように、選ばれ記載されている。
【図１】
0005613259.tif 000002
【図２】
0005613259.tif 000003
【図３】
0005613259.tif 000004
【図４】
0005613259.tif 000005
【図５】
0005613259.tif 000006
【図６】
0005613259.tif 000007
【図７】
0005613259.tif 000008
【図８】
0005613259.tif 000009
【図９】
0005613259.tif 000010
【図１０】
0005613259.tif 000011