(57)【要約】      （修正有）【課題】ソフトウェア発行者が、それらのキーのセキュリティを危殆化することなく、それらのアプリケーションの中からウェブ・サービスをコールできるようにする。【解決手段】プロキシは、アプリケーションプログラムとウェブ・サービスとの間のインターフェイスとして動作する。各アプリケーションは、プロキシと接続するために、割り当てられたID・キーのペアを用いる。プロキシ自体は、実際のウェブ・サービスと称される真性のID/キーのペアを用いる。プロキシしか真のウェブ・サービス・キーを有さないので、キーは、安全かつ秘密な状態を維持する。プロキシは、必要に応じて、ウェブ・サービスのインプットおよび／又はアウトプットをフィルター処理することができる。【選択図】図１
2008276756.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションにウェブ・サービスを提供するコンピュータ実装方法であって、
各々がアプリケーションID/キーのペアと関連付けされているリクエストであって、少なくとも一つのアプリケーションから少なくとも一つのウェブ・サービスに対する少なくとも一つのリクエストを受信するステップと、
少なくとも一つの受信したリクエストを、アプリケーションID/キーのペアに関連付けせずに、かつ、それを適切で真正なウェブ・サービスID/キーのペアと関連付けするステップと、
少なくとも一つのウェブ・サービスに少なくとも一つのリクエストを伝達するステップと、
少なくとも一つのウェブ・サービスから少なくとも一つのレスポンスを受信するステップと、
少なくとも一つの受信したレスポンスを適切なアプリケーションに対して伝達するステップとを有する方法。
【請求項２】
少なくとも一つの受信したリクエストに関し、少なくとも一つの前記リクエストが、前記リクエストの作成許可が与えられた正当なアプリケーションから生じたリクエストであるか否かを決定するステップを含み、かつ
前記アプリケーションが前記リクエストの作成許可が与えられたという決定に応じて、対応するリクエストの設定及びウェブ・サービスに当該リクエストの伝達を行い、かつ、レスポンスの受信及びアプリケーションへの当該レスポンスの伝達を行うステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストをウェブ・サービス伝達しないステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストの設定及び修正を行うとともにウェブ・サービスに当該リクエストの伝達を行い、かつ、レスポンスの受信及びアプリケーションに当該レスポンスを伝達するステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストを設定及び修正するとともにウェブ・サービスに当該リクエストを伝達し、かつ、レスポンスの受信及び前記レスポンスの修正及びアプリケーションに対する当該レスポンスの伝達を行うステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストの設定およびウェブ・サービスに当該リクエストの伝達を行い、かつ、レスポンスを受信し、かつ、前記レスポンスの修正およびアプリケーションに伝達を行うステップと、
を含む一群のステップから少なくとも一つのステップとを
更に有する請求項1に記載の方法。
【請求項３】
少なくとも一つのアプリケーションID/キーのペアを生成するステップと、
少なくとも一つのアプリケーションに少なくとも一つの生成したアプリケーションID/キーのペアを割り当てるステップと、
を更に有する請求項1に記載の方法。
【請求項４】
アプリケーションにつき一つのアプリケーションID/キーのペアを生成しかつ割り当てるステップと、
ウェブ・サービスにつきアプリケーションにつき一つのアプリケーションID/キーのペアを生成しかつ割り当てるステップと、
を含む一群のステップから少なくとも一つのステップを行うことを更に有する請求項3に記載の方法。
【請求項５】
少なくとも一つの受信したリクエストをフィルターリングするステップを
更に有する請求項1に記載の方法。
【請求項６】
少なくとも一つの受信したリクエストのフィルターリングは、
前記リクエストを再パッケージするステップと、
前記リクエストを破棄するステップと、
前記リクエストを再フォーマットするステップと、
前記リクエストを暗号化するステップと、
前記リクエストを圧縮するステップと、
前記リクエストを編集するステップと、
前記リクエストにデータを追加するステップと、
悪意のあるコードのために前記リクエストをスキャンするステップと、
コンテンツのために前記リクエストをスクリーニングするステップと、
を含む一群のステップの内、少なくとも一つのステップを行うことを更に有する請求項5に記載の方法。
【請求項７】
少なくとも一つの受信したレスポンスをフィルターリングすること
を更に有する請求項1に記載の方法。
【請求項８】
少なくとも一つの受信したレスポンスのフィルターリングは、
前記レスポンスを再パッケージするステップと、
前記レスポンスを破棄するステップと、
前記レスポンスを再フォーマットするステップと、
前記レスポンスを暗号化するステップと、
前記レスポンスを圧縮するステップと、
前記レスポンスを編集するステップと、
前記レスポンスにデータを追加するステップと、
悪意のあるコードのために前記レスポンスをスキャンするステップと、
コンテンツのために前記レスポンスをスクリーニングするステップと、
を含む一群のステップの内、少なくとも一つのステップを、行うことを更に有する請求項7に記載の方法。
【請求項９】
アプリケーションにウェブ・サービスを提供するための、コンピュータ・プログラム製品を含む少なくともコンピュータ読取可能媒体であって、
各々がアプリケーションID/キーのペアと関連付けされているリクエストであって、少なくとも一つのアプリケーションから少なくとも一つのウェブ・サービスに対する少なくとも一つのリクエストを受信するためのプログラムコードと、
少なくとも一つの受信したリクエストを、アプリケーションID/キーのペアに関連付けせずに、かつ、適切で真正なウェブ・サービスID/キーのペアと関連付けするプログラムコードと、
少なくとも一つのウェブ・サービスに少なくとも一つのリクエストを伝達するためのプログラムコードと、
少なくとも一つのウェブ・サービスから少なくとも一つのレスポンスを受信するためのプログラムコードと、
少なくとも一つの受信したレスポンスを適切なアプリケーションに対して伝達するためのプログラムコードとを有するコンピュータ・プログラム製品。
【請求項１０】
少なくとも一つの受信したリクエストに関し、少なくとも一つの前記リクエストが、前記リクエストの作成許可が与えられた正当なアプリケーションから生じるリクエストであるか否かを決定するプログラムコードを有し、かつ
前記アプリケーションが前記リクエストの作成許可が与えられたという決定に応じて、対応するリクエストの設定及びウェブ・サービスに当該リクエストの伝達を行い、かつ、レスポンスの受信及びアプリケーションへの当該レスポンスの伝達を行うステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストをウェブ・サービス伝達しないステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストの設定及び修正を行うとともにウェブ・サービスに当該リクエストの伝達を行い、かつ、レスポンスの受信及びアプリケーションに当該レスポンスを伝達するステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストを設定及び修正するとともにウェブ・サービスに当該リクエストを伝達し、かつ、レスポンスの受信及び前記レスポンスの修正及びアプリケーションに対する当該レスポンスの伝達を行うステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストの設定およびウェブ・サービスに当該リクエストの伝達を行い、かつ、レスポンスを受信し、かつ、前記レスポンスの修正およびアプリケーションに伝達を行うステップと、
を含む一群のステップの内、少なくとも一つのステップを行うプログラムコードを
更に有する請求項9に記載のコンピュータ・プログラム製品。
【請求項１１】
少なくとも一つのアプリケーションID/キーのペアを生成するためのプログラムコードと、
少なくとも一つのアプリケーションに少なくとも一つの生成されたアプリケーションID/キーのペアを割り当てるためのプログラムコードと、
を更に備える請求項９のコンピュータ・プログラム製品。
【請求項１２】
アプリケーションにつき一つのアプリケーションID/キーのペアを生成しかつ割り当てるステップと、
ウェブ・サービスにつきアプリケーションにつき一つのアプリケーションID/キーのペアを生成しかつ割り当てるステップと、
を含む一群のステップの内、少なくとも一つのステップを行うためのプログラムコードを更に有する請求項11のコンピュータ・プログラム製品。
【請求項１３】
少なくとも一つの受信したリクエストをフィルターリングするためのプログラムコードを
更に有する請求項9に記載のコンピュータ・プログラム製品。
【請求項１４】
少なくとも一つの受信したリクエストのフィルターリングするためのプログラムコードは、
前記リクエストを再パッケージするステップと、
前記リクエストを破棄するステップと、
前記リクエストを再フォーマットするステップと、
前記リクエストを暗号化するステップと、
前記リクエストを圧縮するステップと、
前記リクエストを編集するステップと、
前記リクエストにデータを追加するステップと、
悪意のあるコードのために前記リクエストをスキャンするステップと、
コンテンツのために前記リクエストをスクリーニングするステップと、
を含む一群のステップの内、少なくとも一つのステップを行うためのプログラムコードを更に有する請求項13に記載のコンピュータ・プログラム製品。
【請求項１５】
少なくとも一つの受信したレスポンスをフィルターリングするためのプログラムコードを更に有する、請求項9に記載の方法。
【請求項１６】
少なくとも一つの受信したレスポンスのフィルターリングためのプログラムコードは、
前記レスポンスを再パッケージするステップと、
前記レスポンスを破棄するステップと、
前記レスポンスを再フォーマットするステップと、
前記レスポンスを暗号化するステップと、
前記レスポンスを圧縮するステップと、
前記レスポンスを編集するステップと、
前記レスポンスにデータを追加するステップと、
悪意のあるコードのために前記レスポンスをスキャンするステップと、
コンテンツのために前記レスポンスをスクリーニングするステップと、
を含む一群のステップの内、少なくとも一つのステップを行うためのプログラムコードを更に有する請求項9に記載の方法。
【請求項１７】
アプリケーションにウェブ・サービスを提供するためのコンピュータシステムであって、
各々がアプリケーションID/キーのペアと関連付けされているリクエストであって、少なくとも一つのアプリケーションから少なくとも一つのウェブ・サービスに対する少なくとも一つのリクエストを受信するための手段と、
少なくとも一つの受信したリクエストを、アプリケーションID/キーのペアに関連付けせずに、かつ、適切で真正なウェブ・サービスID/キーのペアと関連付けする手段と、
少なくとも一つのウェブ・サービスに少なくとも一つのリクエストを伝達するための手段と、
少なくとも一つのウェブ・サービスから少なくとも一つのレスポンスを受信するための手段;
少なくとも一つの受信したレスポンスを適切なアプリケーションに対して伝達するための手段とを有するコンピュータシステム。
【請求項１８】
少なくとも一つの受信したリクエストに関し、  少なくとも一つの前記リクエストが、前記リクエストの作成許可が与えられた正当なアプリケーションから生じるリクエストであるか否かを決定するプログラムコードを有し、かつ
前記アプリケーションが前記リクエストの作成許可が与えられたという決定に応じて、対応するリクエストの設定及びウェブ・サービスに当該リクエストの伝達を行い、かつ、レスポンスの受信及びアプリケーションへの当該レスポンスの伝達を行うステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストをウェブ・サービス伝達しないステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストの設定及び修正を行うとともにウェブ・サービスに当該リクエストの伝達を行い、かつ、レスポンスの受信及びアプリケーションに当該レスポンスを伝達するステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストを設定及び修正するとともにウェブ・サービスに当該リクエストを伝達し、かつ、レスポンスの受信及び前記レスポンスの修正及びアプリケーションに対する当該レスポンスの伝達を行うステップと、
前記アプリケーションが前記リクエストの作成許可が与えられないという決定に応じて、対応するリクエストの設定およびウェブ・サービスに当該リクエストの伝達を行い、かつ、レスポンスを受信し、かつ、前記レスポンスの修正およびアプリケーションに伝達を行うステップと、
を含む一群のステップの内、少なくとも一つのステップを行う手段を
更に有する請求項17に記載のコンピュータシステム。
【請求項１９】
少なくとも一つのアプリケーションID/キーのペアを生成するための手段と、
少なくとも一つのアプリケーションに少なくとも一つの生成されたアプリケーションID/キーのペアを割り当てるための手段と
を更に備える請求項17のコンピュータシステム。
【請求項２０】
少なくとも一つの受信したリクエストをフィルターリングするための手段と、
少なくとも一つの受信したレスポンスをフィルターリングするための手段と、
を更に有する請求項17のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、ウェブ・サービスに関し、より詳しくは、ウェブ・サービスとエンドユーザ・アプリケーションとの間の仲介装置としてのプロキシの使用に関する。
【背景技術】
【０００２】
最近、SOAP、WSDL、XML-RPCなどの新たなウェブ・サービス・ツールの利用によって、複雑なウェブ・サービス機能の速やかな開発および公表が可能となって来ている。このようなツールが利用可能となる前には、オンラインバックアップ、中央キューイング、オンライン製品の価格設定、イメージ・ストレージ、および、検索およびオンライン探索のような大きなウェブ・サービス・プロジェクトは、開発に、長い時間要し、大きなプログラミング・チームも要し、さらに、かなりの財政投資を要していた。新たなツールによって簡易に開発が可能となった結果、今日では、より多くのウェブ・サービスを、エンドユーザが利用できるようになった。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ソフトウェアアプリケーションの発行者にとって、これらのウェブ・サービスを、彼らのアプリケーションの中から提供可能とすることは好ましいことであろう。これらのウェブ・サービス（たとえば、アマゾン（登録商標）およびGoogle（登録商標）のような会社から提供されるもの）は、一般的には、クライアントが一意の識別子（”ID”）、および、サービスコールに含まれる又はサービスコールに署名するために用いる秘密キーを有していることが必要である。それらの製品を使用する何百万もの顧客の各々が、自分自身のウェブ・サービス・アカウントの取得を、プロバイダを通じて要求することは、ソフトウェア発行者にとって有用でない。ソフトウェアアプリケーション・プロバイダが、マーケティングの目的から、彼らの顧客が、このウェブ・サービスがアプリケーションの一部であると信じてしまうことを望む可能性があるので、このことは、ビジネスの観点からも好ましくない。
【０００４】
一つの解決策としては、ソフトウェア発行者が、所定のウェブ・サービス用の単一のキーを取得し、かつ、各顧客のコンピュータ上のアプリケーションの各インスタンスの作成からサービスをコールするために、キーを用いることであろう。残念ながら、アプリケーションの各コピーにキーを含ませることは、キーを秘密に保つという点で、このキーの安全性を保障することを不可能にするであろう。ウェブ・サービスがコールされると、通常、請求が発生するので、発行者はそれらのキーが、一般公衆からアクセス可能となることを望まないことは明らかである。仮に、このような事態が生じた場合には、不正な団体が、発行者のキーを用いて、発行者の費用で、発行者のソフトウェアの離れたコンテキストからウェブ・サービスをコールすることが可能となるであろう。
【０００５】
加えて、アプリケーションからウェブ・サービスを利用することによって、アプリケーションとウェブ・サービスとの間で、データ交換が生じるかもしれない。アプリケーションについては発行者が責任を負うので、発行者が、必要に応じて、このようなデータについて、フィルター処理できること、安全性を確実にすること、又は、サービスを追加できることは、好ましいことであろう。
【０００６】
ソフトウェア発行者が、彼らのキーのセキュリティを危殆化することなく、彼らのアプリケーションの中からウェブ・サービスをコールすることが出来る、方法、コンピュータ読取可能媒体、および、コンピュータシステムが、必要とされている。発行者が彼らのアプリケーションとウェブ・サービスとの間を通るコンテンツをフィルターできることは、さらに、望ましいであろう。
【課題を解決するための手段】
【０００７】
プロキシは、アプリケーションプログラムとウェブ・サービスとの間のインターフェイスとして動作する。各アプリケーションは、プロキシと接続するために、発行者によって割り当てられた固有のIDおよびキーを用いる。プロキシ自体は、実際のウェブ・サービスをコールするために、単一の真性ID/キーのペアを用いる。プロキシは、真のウェブ・サービス・キーしか有していないので、キーの安全性および秘密性は保持される。
【０００８】
プロキシは、ウェブ・サービスに対するリクエストを受信する。このリクエストは、エンドユーザのコンピュータ上で実行されているアプリケーションによって作成される。プロキシは、真のウェブ・サービスが使用する、同じく明確に定義されているアプリケーション・プログラミング・インタフェース（”API”）を用いることによって、これらのウェブ・サービス・リクエストを処理するように構成されている。ウェブ・サービスに対するコールは、顧客に固有のソフトウェア発行者によって生成されたID/キーのペアを用いて、アプリケーションプログラムによって行われる。プロキシは、次いで、ソフトウェア発行者自身の真性なID/キーのペアを用いて、真のウェブ・サービスに対して対応するコールを行い、かつ、アプリケーションへ結果を戻す。
【０００９】
プロキシの使用は、さらに、APIのインプット及びアウトプット（パラメータおよび／又はデータ）のフィルターリングを可能とする（たとえば、エンドユーザが、閲覧が許可されている情報にしか、アクセスできないことを確実にする）。加えて、プロキシは、必要に応じて、悪性コードのためにデータをスキャンニングし、データの付加的な認証或いは拒否防止を行い、および／又は、他のフィルターリング動作を行うといった、付加価値サービスを提供することができる。これらの手法は、いかなるウェブ・サービスのインプット及びアウトプットをフィルター処理する場合にも用いることができる。
【００１０】
この要約および以下の詳細な説明に記載されている特徴および効果は、全てを網羅するものではない。特に、多くの付加的な特徴および効果が、本願の図面、明細書、および、特許請求の範囲に関連する技術分野の当業者にとっては明白であろう。さらに、この明細書において使用されている言い回しは、主として、読みやすさおよび判りやすさを目的として選択されているものであって、本発明の内容を正確に説明するため又は限定的とするために選択されているものでなく、かつ特許請求の範囲は、このような発明の内容を決定するために必要なものである点に留意されたい。
【００１１】
これらの図は、本発明の実施例を、例示の目的で、表しているものに過ぎない。当業者であれば、以下の説明から、本願明細書に例示されている構成および方法の代替例が、本願明細書に記載されている発明の原則から逸脱することなく実施できることを、直ちに認識できるであろう。
【発明の実施の形態】
【００１２】
図1は、本発明のいくつかの実施例による、ウェブ・サービス103とアプリケーションプログラム105との間のインターフェイスとしての機能を果たすウェブ・サービス・プロキシ101を例示する図である。図1には、ウェブ・サービス・プロキシ101が単体として例示されているが、本願明細書で用いられるように、用語「ウェブ・サービス・プロキシ」101は、ソフトウェア、ハードウェア、ファームウェア又はこれらのいかなる組合せによって実装できる機能の集合を示すものであることを理解されたい。コンポーネントが、ソフトウェアとして実装される場合には、スタンドアローン型のプログラムとして実装できるが、これを、たとえば、より大きなプログラムの一部のような方法、複数の別々のプログラムのような方法、カーネル・ローダブル・モジュールのような方法、一つ以上のデバイスドライバのような方法、又は、一つ以上の静的に或いは動的に連結されたライブラリのような方法、さらに他の方法でも実装することができる。
【００１３】
図1に例示するように、プロキシは、エンドユーザ・アプリケーション105から、ウェブ・サービス103に対するリクエスト107を受信する。各々のアプリケーション105は、いずれもリクエスト107に含まれる又は適切にリクエストに署名するために用いられる、固有のID/キーのペア109を有する。これらのアプリケーションID/キーのペア109の割り当てについては、図2とともに詳細に後述する。
【００１４】
ウェブ・サービス・プロキシ101は、受信したリクエスト107を調べる。プロキシは、各々の受信したリクエスト107が特定のウェブ・サービス・リクエスト107の作成が許可された、正当なエンドユーザ・アプリケーション105から生じたものであるか否かを判定する。通常、プロキシは、その管轄下のエンドユーザ・アプリケーション105と、それらに割り当てられたID/キーのペア109と、これらがアクセスを許可したウェブ・サービス103とのリスト又はそれに類するものを保持している。リクエスト107が確証された場合には、ウェブ・サービス・プロキシ101は、再パッケージ（又は破棄）されたリクエスト111を、適切な真正のウェブ・サービスID/キーのペア113とともに、目標のウェブ・サービス103に対して転送する。
【００１５】
ウェブ・サービス・プロキシ101は、再パッケージしたリクエスト111を送信したウェブ・サービス103から、対応するレスポンス115を受信する。ウェブ・サービス・プロキシ101は、それから、当初にリクエスト107を作成した適切なエンドユーザ・アプリケーション105に対して、受信したレスポンス115を伝達する。図3とともにより詳細に後述するが、ウェブ・サービス・プロキシ101は、さらに、必要に応じて、レスポンス115を、フィルターし、再パッケージし、および／又は破棄することもできる。図1に例示するように、ウェブ・サービス・プロキシ101は、真のウェブ・サービスID/キーのペア113の保持部と、エンドユーザ・アプリケーション105によって作成されるリクエスト107の確認部との両方として機能する。
【００１６】
ウェブ・サービス・プロキシ101は、集中化されたものでもよいし、また、分散化されたものでもよく、さらに、一つ以上のサーバ、クライアント又は他のいかなるタイプのコンピューティング・デバイス上もラン可能であってもよいことは、理解されたい。問題のウェブ・サービス103は、明確に定義されたアプリケーション・プログラミング・インタフェース（API）を有する。その結果、アプリケーションプログラム105は、リクエスト107を容易に生成することができ、それに加えて、プロキシは、対応する再パッケージした又は破棄したリクエスト111を生成することができることは、理解されたい。たとえば、WSDL、SOAP又はXML-RPCを用いるウェブ・サービス103（たとえば、アマゾン（登録商標）、および、Google（登録商標）ウェブ・サービス）は、明確に定義されたAPIを有している。
【００１７】
ここで図2に戻ると、本発明のいくつかの実施例に従って、ID/キーのペア生成ツール201が、例示されている。ID/キーのペア生成ツール201は、プロキシ101内に示されているように、単一の構成要素として例示されているが、ウェブ・サービス・プロキシ101のようなID/キーのペア生成ツール201が、機能の集合として示されていてもよいと理解されたい。この生成ツール201は、エンドユーザ・アプリケーション103用の固有のID/キーのペア109を生成する。エンドユーザ・アプリケーションのID/キーのペア109は、エンドユーザがアプリケーション発行者と共有している既存のアカウントに付随させてもよいし、又は、たとえば、インストール時或いは最初の使用時に、ランダムに、生成或いは割り当てられてもよい。
【００１８】
いくつかの実施例では、各々のエンドユーザ・アプリケーション105に、全てのウェブ・サービス103に対する、単一のID/キーのペア109が割り当てられる。他の実施例では、アプリケーション105に、各々のウェブ・サービス103に対する、異なるID/キーのペア109が割り当てられる。いずれの方法によっても、これらのID/キーのペア109は、ウェブ・サービス・プロキシ101とエンドユーザ105との間でしか用いられない。エンドユーザID/キーのペア109は、ウェブ・サービスによって予定されているリクエスト107の形式に従って、リクエスト107自体に含める又は適切にリクエスト107に署名するために用いられる。
【００１９】
本願明細書において用いられる用語「ID/キーのペア」は、個々のウェブ・サービス103によって必要とされさえすれば、どのようなタイプの識別データおよび／又は検証データも指すと理解されたい。このように、ウェブ・サービス103が識別子とキーとの厳密なペアリング以外の形式で、このようなデータを要求する場合でも（たとえば、キーのみ、ユーザー名およびパスワード、複数のキーのペアなど）、本願明細書において用いられる用語「ID/キーのペア」は、さらに、このようなものについても包含される。
【００２０】
図3に例示するように、ウェブ・サービス・プロキシ101は、必要に応じて、アプリケーションプログラム105からのリクエスト107、および、ウェブ・サービス103からのレスポンス115を、フィルターし、再パッケージし、および／又は、破棄することができる。これらを実行するために必要な特別な処理は、たとえあったとしても、問題のウェブ・サービス103に依存するか、また、提供する追加サービスの価値如何に依存する。たとえば、プロキシ101によって受信されるリクエスト107は、たとえば、目標のウェブ・サービス103に予定されている形式で、再パッケージされ、および／又は、割り当てられる。ウェブ・サービス103から戻ってきて受信したレスポンス・データ115は、必要に応じて、コンテンツに対して、悪質なコードをスキャンし、圧縮し、暗号化し、スクリーニングし、又は、別の方法でフィルター処理することができる。フィルターされたレスポンス301は、それから、適切なアプリケーション105に伝達される。再パッケージ、破棄、および、フィルターリング・データの実装方法は、関連技術分野の当業者にとって公知であり、かつ、本発明のコンテキストの範疇の応用例は、この明細書をみた当業者であれば直ちに理解されるであろう。たとえば、エクステンシブル・スタイルシート・マークアップ・ランゲージ（XSL）又は構成ファイルを、必要に応じて、ウェブ・サービス103ごとにインプットおよびアウトプットを、変換し、かつ、フィルター処理するために用いることができる。
【００２１】
本発明の実施例の動作を明らかにするために、オンライン・バックアップ・エンドユーザ・アプリケーション105とアマゾン（登録商標）のシンプル・ストレージ・サービス（S3）（ウェブ・サービス103の例）との間の仲介装置のようなウェブ・サービス・プロキシ101の使用について記載する。
【００２２】
オンライン・バックアップ・アプリケーション105の発行者は、S3アカウントを生成して、かつ、API IDおよびシークレットキー113を取得する。キーのペア生成ツール201は、エンドユーザID/キーのペア109を生成し、S3-ID/キーのペア113を用いるように設定される。プロキシ101は、エンドユーザのサイトで、オンライン・バックアップ・プログラム105をインストールしているときに、コンタクトされ、かつ、生成ツール201は、インストールされたアプリケーションプログラム105に対するID/キーのペア109（例えばID=123、Key=ABC）を発行する。
【００２３】
その動作の進行中に、インストールされたエンドユーザ・アプリケーション105は、その割り当てられたID/キーのペア109を用いて、プロキシ101にリクエスト107を発行する。リクエスト107は、プロキシ101によって、フィルターされ、かつ、再パッケージされる。プロキシは、それから、アマゾン・ウェブ・サービス103に、フィルターリクエスト111を送信する。ウェブ・サービス103からのレスポンス115は、プロキシ101によって受信され、エンドユーザ・アプリケーション105に返信される前に、フィルターされ、かつ、再パッケージされる。
【００２４】
フィルターリング作業を可能な限りより良く例示するために、S3のコンテキストの範囲内でいくつかの具体例を提供する。一つの実施例としては、プロキシ101は、ユーザアプリケーション105に送信し、又は、ユーザアプリケーション105から受信するファイルを格納するとき、ファイル名を、たとえば「123-<当初のファイル名>」に修正してもよい。プロキシ101は、それから、様々なエンドユーザ105に配分されているストレージの割当に基づいて、123-*と名付けられた全てのファイルに対して、サイズの制限を実施してもよい。
【００２５】
上記例の延長として、エンドユーザ105がファイルをブラウジングしているときに、プロキシ101は、「123」から始まるファイルだけが含まれるように、提供される一覧をフィルター処理することもできる。プロキシは、読みやすさのために、エンドユーザ105によって一覧可能とされたデータから、123-の指定を取り除いてもよい。更に、ファイルを検索又は削除するときに、エンドユーザ105は、123-*と名付けられたファイルにのみ、アクセスを許可することもできる。もちろん、これらは、実現可能なフィルターリング動作の単なる例である。他の例は、この明細書をみた関連技術分野の当業者であれば、直ちに理解するであろう。
【００２６】
発行者は、トランザクションごとに、サービス103の使用を希望する第三者に対する料金、発行者がウェブ・サービス103の通信に信頼された仲介装置を作成する料金等の少額の費用を請求してもよい。
【００２７】
この技術分野の当業者によって理解されるであろうように、本発明は、その精神又は主要な特徴から逸脱することなく、他の特別な形で実施することができる。同様に、ポーション、モジュール、エージェント、マネージャ、コンポーネント、機能、手続、アクション、レイヤ、特性、属性、手順及び他の態様の特定の名付けおよび区分けは、義務的又は本質的でなく、かつ、本発明又はその特性を実装する手法は、異なる名前、区分けおよび／又は形式とすることができる。さらに、関連技術分野の当業者にとって明らかであろうように、本発明における、ポーション、モジュール、エージェント、マネージャ、コンポーネント、機能、手続、アクション、レイヤ、特性、属性、手順、および、他の態様は、ソフトウェア、ハードウェア、ファームウェア又はこれらのいかなる組合せによって実装してもよい。もちろん、本発明のコンポーネントは、ソフトウェアによって実装であろうともすることができ、このコンポーネントは、スクリプトによっても、スタンドアローン型のプログラムによっても、より大型のプログラムの一部によっても、複数の別々のスクリプトおよび／又はプログラムによっても、静的に又は動的に連結されたライブラリによっても、カーネル・ローダブル・モジュールによっても、デバイスドライバおよび／又はコンピュータプログラミングの当業者にとって現在又は将来知られる、ありとあらゆる他の既知又は新たな方法によっても実装することができる。加えて、本発明は、いかなる特別なプログラミング言語、又は、いかなる特別なオペレーティング・システム或いは環境による実装に、決して制限されるものではない。さらに、本発明は、ソフトウェアの全体又は一部で実装でき、そのソフトウェア・コンポーネントは、コンピュータ・プログラム製品としてコンピュータ読取可能媒体に格納することができることは関連技術分野の当業者に、すぐに理解されるであろう。磁気又は光学格納媒体のような、如何なる形式のコンピュータ読取可能媒体も、このコンテキストにおいて用いられる。加えて、本発明のソフトウェア・ポーションは、いかなるプログラマブル・コンピューティング・デバイスのメモリ内で、インスタンス（たとえばオブジェクトコード又は実行イメージ）を作成することができる。したがって、本発明の開示は、特許請求の範囲に説明される、本発明の範囲に限定されるものではなく、例示的であることを意図している。
【図面の簡単な説明】
【００２８】
【図１】本発明のいくつかの実施例による、ウェブ・サービス・プロキシの動作を例示するブロック図である。
【図２】本発明のいくつかの実施例による、キーのペアの生成ツールの動作を例示するブロック図である。
【図３】本発明のいくつかの実施例による、ウェブ・サービスのインプットおよびアウトプットのフィルターリングを例示するブロック図である。
【符号の説明】
【００２９】
101  プロキシ
103  ウェブ・サービス
105  アプリケーション
107  リクエスト
109  アプリケーションのペア
111  再パッケージされたリクエスト
113  真のペア
115  レスポンス
201  ID/キーのペア生成ツール
301  レスポンス
【図１】
2008276756.tif 000003
【図２】
2008276756.tif 000004
【図３】
2008276756.tif 000005
【外国語明細書】
Technical Field
This invention pertains generally to web services, and more specifically to using a proxy as an intermediary between web services and end-user applications.
Background Art
The recent availability of new web service tools such as SOAP, WSDL, XML-RPC etc. has enabled rapid development and roll-out of complicated web service functionality.  Prior to the availability of such tools, large web service projects  such as online backup, central queuing, online product pricing, image storage and retrieval and online searching took long amounts of time, large programming teams and substantial financial investments to develop.  As a result of the simplified development enabled by the new tools, more web services are available to end-users today. 
It would be desirable to publishers of software applications to be able to provide these web services from within their applications.  These web services, provided by companies such as Amazon and Google, generally require that the client have a unique identifier (“ID”) and a secret key that is to be included in or used to sign the service calls.  It is not practical for software publishers to require that each of the millions of customers using their products obtain their own web service account with the provider.  It is also undesirable from a business point of view, as the software application provider may want their customers to believe, for marketing purposes, that the web service is part of the application.
One solution would be for the software publisher to obtain a single key for a given web service, and use that key to call the service from each instantiation of the application on each customer’s computer.  Unfortunately, including the key in each copy of the application would make it impossible to secure this key in a way that would keep it confidential.  Since each call to a web service typically results in a charge, publishers certainly do not want their key to become accessible to the general public.  If that were to happen, dishonest parties could use the publisher’s key to call the web service from contexts outside of the publisher’s software, at the publisher’s expense.
Additionally, using a web service from within an application involves exchanging data between the application and the web service.  Since the publisher is responsible for the application, it would be desirable for the publisher to be able to filter such data, to ensure that it is secure or to add services as desired.
What is needed are methods, computer readable media and computer systems that allow a software publisher to call web services from within their applications, without compromising the security of their key.  It would also be desirable if the publishers could filter content passed between their applications and the web services.
Summary
A proxy operates as an interface between application programs and web services.  Each application uses a unique ID and key assigned by the publisher to interface with the proxy. The proxy itself uses a single, genuine ID/key pair for calling actual web services.  Because only the proxy has the real web service key, that key remains secure and confidential. 
The proxy receives requests for web services made by applications running on end-user’s computers.  The proxy is configured to handle these web services requests, using the same well defined Application Programming Interfaces (“APIs”) that the real web services use.  The calls to the web services are made by the application programs using customer-unique software publisher generated ID/key pairs.  The proxy then makes corresponding calls to the real web services, using the software publisher’s own, genuine ID/key pair, and passes the results back to the applications.
The use of the proxy also allows filtering of the APIs input and output (parameters and/or data), for example to ensure end-users can only access the information they are authorized to see.  Additionally, the proxy can provide value added services, such as scanning the data for malicious code, additional authentication or non-repudiation of the data, and/or other filtering operations as desired.  These mechanisms can be used to filter the input and output of any web service.
The features and advantages described in this summary and in the following detailed description are not all-inclusive, and particularly, many additional features and advantages will be apparent to one of ordinary skill in the relevant art in view of the drawings, specification, and claims hereof.  Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter, resort to the claims being necessary to determine such inventive subject matter.
Brief Description of the Drawings
Figure 1 is a block diagram illustrating the operations of a web service proxy, according to some embodiments of the present invention.
Figure 2 is a block diagram illustrating the operations of a key pair generation tool, according to some embodiments of the present invention.
Figure 3 is a block diagram illustrating the filtering of web service input and output, according to some embodiments of the present invention.
The Figures depict embodiments of the present invention for purposes of illustration only.  One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
Detailed Description
Figure 1 illustrates a web service proxy 101 acting as an interface between web services 103 and application programs 105, according to some embodiments of the present invention.  It is to be understood that although the web service proxy 101 is illustrated in Figure 1 as a separate entity, as used herein the term “web service proxy” 101 refers a collection of functionalities which can be implemented as software, hardware, firmware or any combination of these.  Where a component is implemented as software, it can be implemented as a standalone program, but can also be implemented in other ways, for example as part of a larger program, as a plurality of separate programs, as a kernel loadable module, as one or more device drivers or as one or more statically or dynamically linked libraries.
As illustrated in Figure 1, the proxy receives requests 107 from end-user applications 105 for web services 103.  Each application 105 has a unique ID/key pair 109, which is either included in the request 107, or used to sign the request as appropriate. The assignment of these application ID/key pairs 109 is discussed in greater detail below, in conjunction with Figure 2.
The web service proxy 101 examines received requests 107.  The proxy determines whether each received request 107 originates from a legitimate end-user application 105 that is authorized to make that particular web service request 107.  Typically, the proxy keeps a list or the like of end-user applications 105 under its jurisdiction, their assigned ID/key pairs 109, and the web services 103 that they are allowed to access.  If the request 107 is validated, the web service proxy 101 forwards a repackaged (or resigned) request 111 to the target web service 103 with the appropriate genuine web service ID/key pair 113.  
The web service proxy 101 receives a corresponding response 115 from the web service  103 to which the repackaged request 111 was sent.  The web service proxy 101 then transmits the received response 115 to the appropriate end-user application 105 that made the original request 107.  As explained in greater detail below in conjunction with Figure 3, the web service proxy 101 can also filter, repackage and/or resign responses 115 as desired.  As illustrated in Figure 1, the web service proxy 101 functions both as the keeper of the real web service ID/key pairs 113, and the validator of requests 107 made by end-user applications 105.  
It is to be understood that the web service proxy 101 can be centralized or distributed, and can run on one or more servers, clients or any other type of computing devices. It is to be further understood that the web services 103 in question have well defined Application Programming Interfaces (APIs), so that the application programs 105 can easily generate requests 107 thereto, and the proxy can create corresponding repackaged or resigned requests 111.  For example, web services 103 that use WSDL, SOAP, or XML-RPC (e.g., Amazon and Google web services) have well defined APIs.
Turning now to Figure 2, an ID/key pair generation tool 201 is illustrated, according to some embodiments of the present invention.  It is to be understood that although the ID/key pair generation tool 201 is illustrated as a single entity instantiated within the proxy 101, the ID/key pair generation tool 201, like the web service proxy 101, represents a collection of functionalities. The generation tool 201 generates unique ID/key pairs 109 for use by end-user applications 103.  An end-user application ID/key pair 109 could pertain to an existing account the end-user has with the application publisher, or could be, for example, randomly generated or assigned at the time of installation or first-use.
In some embodiments, each end-user application 105 is assigned a single ID/key pair 109 for all web services 103.  In other embodiments, an application 105 is assigned a different ID/key pair 109 for each web service 103.  Either way, these ID/key pairs 109 are only for use between the web services proxy 101 and the end-user 105.  Depending upon the form of the request 107 expected by the web service, an end-user ID/key pair 109 can be either included in the request 107 itself, or used to sign the request 107 as appropriate.
It is to be understood that the term “ID/key pair” as used herein refers to whatever type of identifying and/or verification data is required by individual web services 103.  As such, even where a web service 103 requires such data in a form other than a literal pairing of an identifier and a key (e.g., a key only, a user name and a password, a pair of keys, etc.), the term “ID/key pair” as used herein still encompasses such scenarios. 
As illustrated in Figure 3, the web services proxy 101 can filter, repackage and/or resign requests 107 from application programs 105 and responses 115 from web services 103 as desired.  The specific processing to execute is dependent upon the web service 103 in question, and upon what value added services to provide, if any.  For example, requests 107 received by the proxy 101 are repackaged and/or resigned such that they in the format expected by the target web service 103.  Response data 115 received back from a web service 103 can be scanned for malicious code, compressed, encrypted, screened for content, or otherwise filtered as desired.  The filtered response 301 is then transmitted to the appropriate application 105.  The implementation mechanics of repackaging, resigning and filtering data are known to those of ordinary skill in the relevant art, and their application within the context of the present invention will be readily apparent to those of such a skill level in light of this specification.  For example, Extensible Stylesheet Markup Language (XSL) or configuration files can be used to transform and filter input and output per web service 103 as desired.
To clarify the operation of an embodiment of the present invention, the use of a web service proxy 101 as an intermediary between an on-line backup end-user application 105 and Amazon’s Simple Storage Service (S3) (an example of a web service 103) is described.  
The publisher of the on-line backup application 105 creates an S3 account, and obtains a genuine API ID and secret key 113.  The key pair generation tool 201 is configured to use the S3-ID/key pair 113 to generate end-user ID/key pairs 109.  During installation of the on-line backup program 105 at an end-user site, the proxy 101 is contacted, and the generation tool 201 issues an ID/key pair 109 for the installed application program 105 (for example, ID=123, Key=ABC).
During its course of operation, the installed end-user application 105 issues requests 107 to the proxy 101, using its assigned ID/key pair 109.  The requests 107 are filtered and repackaged by the proxy 101.  The proxy then sends the filtered request 111 to the Amazon web service 103.  Responses 115 from the web service 103 are received by the proxy 101, filtered and repackaged prior to being returned to the end-user application 105.
To better illustrate possible filtering activities, some specific examples within the context of S3 are provided.  In one embodiment, when storing files being sent to or received from user applications 105, the proxy 101 could modify the filename to, e.g., “123-<original-file-name>”.  The proxy 101 could then enforce size restrictions for all files named 123-*, based on the storage quotas allocated to various end-users 105.
As an extension to the above example, when an end-user 105 is browsing files, the proxy 101 could filter the provided view to include only files that begin with “123-“.  For readability the proxy could strip the 123- designation from the data viewable by the end-user 105.  Further, when retrieving or deleting files, the end-user 105 could only be given access to those named 123-*.  Of course, these are only examples of filtering operations that are possible.  Other examples will be readily apparent to those of ordinary skill in the relevant art in light of this specification.
The publisher could also charge small, per transaction, fees to third parties wanting to use the services 103, making the publisher the trusted intermediary in web service 103 communications.
As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the portions, modules, agents, managers, components, functions, procedures, actions, layers, features, attributes, methodologies and other aspects are not mandatory or significant, and the mechanisms that implement the invention or its features may have different names, divisions and/or formats.  Furthermore, as will be apparent to one of ordinary skill in the relevant art, the portions, modules, agents, managers, components, functions, procedures, actions, layers, features, attributes, methodologies and other aspects of the invention can be implemented as software, hardware, firmware or any combination of the three.  Of course, wherever a component of the present invention is implemented as software, the component can be implemented as a script, as a standalone program, as part of a larger program, as a plurality of separate scripts and/or programs, as a statically or dynamically linked library, as a kernel loadable module, as a device driver, and/or in every and any other way known now or in the future to those of skill in the art of computer programming. Additionally, the present invention is in no way limited to implementation in any specific programming language, or for any specific operating system or environment.  Furthermore, it will be readily apparent to those of ordinary skill in the relevant art that where the present invention is implemented in whole or in part in software, the software components thereof can be stored on computer readable media as computer program products.  Any form of computer readable medium can be used in this context, such as magnetic or optical storage media.  Additionally, software portions of the present invention can be instantiated (for example as object code or executable images) within the memory of any programmable computing device.  Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.
1.  A computer implemented method for providing web services to applications, the method comprising the steps of:
receiving at least one request for at least one web service from at least one application, each received request being associated with an application ID/key pair; 
un-associating at least one received request from its application ID/key pair, and associating it with an appropriate, genuine, web service ID/key pair;
transmitting at least one request to at least one web service;
receiving at least one response from at least one web service; and
transmitting at least one received response to an appropriate application. 
2.  The method of claim 1 further comprising:
for at least one received request, determining whether that received request originates from a legitimate application that is authorized to make the request; and
performing at least one step from a group of steps consisting of:
responsive to determining that the originating application is authorized to make the request, configuring a corresponding request and transmitting it to a web service, and receiving a response and transmitting it to an application;
responsive to determining that the originating application is not authorized to make the request, not transmitting a corresponding request to a web service;
responsive to determining that the originating application is not authorized to make the request, configuring and modifying a corresponding request and transmitting it to a web service, and receiving a response and transmitting it to an application; 
responsive to determining that the originating application is not authorized to make the request, configuring and modifying a corresponding request and transmitting it to a web service, receiving a response, and modifying the response and transmitting it to an application; and
responsive to determining that the originating application is not authorized to make the request, configuring a corresponding request and transmitting it to a web service, receiving a response, and modifying the response and transmitting it to an application.  
3.  The method of claim 1 further comprising:
generating at least one application ID/key pair; and 
assigning  at least one generated application ID/key pair to at least one application.
4.  The method of claim 3 further comprising performing at least one step from a group of steps consisting of:
generating and assigning one application ID/key pair per application; and
generating and assigning one application ID/key pair per application per web service.
5.  The method of claim 1 further comprising:
filtering at least one received request.  
6.  The method of claim 5 wherein filtering at least one received request further comprises performing at least one step from a group of steps consisting of:
repackaging a received request;
resigning a received request;
reformatting a received request;
encrypting a received request;
compressing a received request;
redacting a received request;
adding data to a received request;
scanning a received request for malicious code; and
screening a received request for content. 
7.  The method of claim 1 further comprising:
filtering at least one received response. 
8.  The method of claim 8 wherein filtering at least one received response further comprises performing at least one step from a group of steps consisting of:
repackaging a received response;
resigning a received response;
reformatting a received response;
encrypting a received response;
compressing a received response;
redacting a received response;
adding data to a received response;
scanning a received response for malicious code; and
screening a received response for content.
9.  At least one computer readable medium containing a computer program product for providing web services to applications, the computer program product comprising:
program code for receiving at least one request for at least one web service from at least one application, each received request being associated with an application ID/key pair; 
program code for un-associating at least one received request from its application ID/key pair, and associating it with an appropriate, genuine, web service ID/key pair;
program code for transmitting at least one request to at least one web service;
program code for receiving at least one response from at least one web service;and
program code for transmitting at least one received response to an appropriate application. 
10.  The computer program product of claim 9 further comprising:
program code for, for at least one received request, determining whether that received request originates from a legitimate application that is authorized to make the request; and
program code for performing at least one step from a group of steps consisting of:
responsive to determining that the originating application is authorized to make the request, configuring a corresponding request and transmitting it to a web service, and receiving a response and transmitting it to an application;
responsive to determining that the originating application is not authorized to make the request, not transmitting a corresponding request to a web service;
responsive to determining that the originating application is not authorized to make the request, configuring and modifying a corresponding request and transmitting it to a web service, and receiving a response and transmitting it to an application; 
responsive to determining that the originating application is not authorized to make the request, configuring and modifying a corresponding request and transmitting it to a web service, receiving a response, and modifying the response and transmitting it to an application; and
responsive to determining that the originating application is not authorized to make the request, configuring a corresponding request and transmitting it to a web service, receiving a response, and modifying the response and transmitting it to an application.  
11.  The computer program product of claim 9 further comprising:
program code for generating at least one application ID/key pair; and 
program code for assigning  at least one generated application ID/key pair to at least one application.
12.  The computer program product of claim 11 further comprising program code for performing at least one step from a group of steps consisting of:
generating and assigning one application ID/key pair per application; and
generating and assigning one application ID/key pair per application per web service.
13.  The computer program product of claim 9 further comprising:
program code for filtering at least one received request.  
14.  The computer program product of claim 13 wherein the program code for filtering at least one received request further comprises program code for performing at least one step from a group of steps consisting of:
repackaging a received request;
resigning a received request;
reformatting a received request;
encrypting a received request;
compressing a received request;
redacting a received request;
adding data to a received request;
scanning a received request for malicious code; and
screening a received request for content. 
15.  The computer program product of claim 9 further comprising:
program code for filtering at least one received response. 
16.  The computer program product of claim 15 wherein the program code for filtering at least one received response further comprises program code for performing at least one step from a group of steps consisting of:
repackaging a received response;
resigning a received response;
reformatting a received response;
encrypting a received response;
compressing a received response;
redacting a received response;
adding data to a received response;
scanning a received response for malicious code; and
screening a received response for content.
17.  A computer system for providing web services to applications, the computer system comprising:
means for receiving at least one request for at least one web service from at least one application, each received request being associated with an application ID/key pair; 
means for un-associating at least one received request from its application ID/key pair, and associating it with an appropriate, genuine, web service ID/key pair;
means for transmitting at least one request to at least one web service;
means for receiving at least one response from at least one web service; and
means for transmitting at least one received response to an appropriate application. 
18.  The computer system of claim 17 further comprising:
means for, for at least one received request, determining whether that received request originates from a legitimate application that is authorized to make the request; and
means for performing at least one step from a group of steps consisting of:
responsive to determining that the originating application is authorized to make the request, configuring a corresponding request and transmitting it to a web service, and receiving a response and transmitting it to an application;
responsive to determining that the originating application is not authorized to make the request, not transmitting a corresponding request to a web service;
responsive to determining that the originating application is not authorized to make the request, configuring and modifying a corresponding request and transmitting it to a web service, and receiving a response and transmitting it to an application; 
responsive to determining that the originating application is not authorized to make the request, configuring and modifying a corresponding request and transmitting it to a web service, receiving a response, and modifying the response and transmitting it to an application; and
responsive to determining that the originating application is not authorized to make the request, configuring a corresponding request and transmitting it to a web service, receiving a response, and modifying the response and transmitting it to an application.  
19.  The computer system of claim 17 further comprising:
means for generating at least one application ID/key pair; and 
means for assigning  at least one generated application ID/key pair to at least one application.
20.  The computer system of claim 17 further comprising:
means for filtering at least one received request; and
means for filtering at least one received response.
A proxy operates as an interface between application programs and web services.  Each application uses an assigned ID key pair to interface with the proxy.  The proxy itself uses a genuine ID/key pair for calling actual web services.  Because only the proxy has the real web service key, that key remains secure and confidential. The proxy can filter the web service input and/or output as desired.
【図１】
2008276756.tif 000006
【図２】
2008276756.tif 000007
【図３】
2008276756.tif 000008