(57)【特許請求の範囲】
【請求項１】
クライアントとサーバ間のデータ通信を中継する中継装置であって、
前記クライアントから前記サーバへのアクセス要求を受信する受信部と、
送信先へ転送するために承認者から承認を得る必要のある通信情報を識別するための基準を定めるポリシーを格納するポリシー格納部と、
前記アクセス要求に対する前記サーバの応答を前記クライアントに転送するまでに一定以上の時間を要するか否かを、前記ポリシーに基づいて前記アクセス要求または前記サーバの応答の転送のために前記承認者から承認を得る必要があるか否かを判定することにより判定する判定部と、
前記一定以上の時間を要するとの判定結果に応答して、前記サーバの前記応答を前記中継装置から前記クライアントへ別途送信することを知らせる仮応答メッセージを前記クライアントに送信する仮応答部と、
前記サーバの前記応答を前記クライアントに転送できる状態になったことに応答して、前記応答を前記クライアントへ転送する転送部と  
を含む中継装置。
【請求項２】
前記アクセス要求は、要求元情報、要求先情報、及び要求内容を含み、前記ポリシーは、前記要求元情報、前記要求先情報、及び前記要求内容の少なくとも１つに関して、転送するために前記承認者から承認を得る必要のある前記通信情報を識別するための基準を定める、請求項１に記載の中継装置。  
【請求項３】
前記転送部は更に、前記アクセス要求を前記サーバへ転送することに関して前記承認者の承認を得られることを条件として、前記アクセス要求を前記サーバへ転送する、請求項２に記載の中継装置。
【請求項４】
前記サーバからの前記応答は、応答元情報、応答先情報、及び応答内容を含み、前記ポリシーは、応答元情報、応答先情報、及び応答内容の少なくとも１つに関して、転送するために前記承認者から承認を得る必要のある前記通信情報を識別するための基準を定める、請求項１に記載の中継装置。
【請求項５】
前記転送部は、前記サーバからの前記応答を前記クライアントへ転送することに関して前記承認者の承認を得られることを条件として、前記サーバの前記応答を前記クライアントへ転送する、請求項４に記載の中継装置。
【請求項６】
前記ポリシー格納部は、前記クライアントの前記アクセス要求に設定され得る要求先ごとに、適用される前記ポリシーを、当該ポリシーにより承認が必要であると判定される前記通信情報の承認依頼先と関連付けて格納し、承認を得る必要があるとの判定結果に応答して、前記承認依頼先へ承認依頼を送信する承認処理部を更に含む、請求項１項に記載の中継装置。
【請求項７】
前記承認処理部による承認処理の処理状況及び処理結果を格納する管理テーブル格納部を更に含み、前記承認処理部は、前記承認処理の終了に応答して、前記処理結果を前記クライアントへ通知する、請求項６に記載の中継装置。
【請求項８】
前記転送部は、前記処理結果が承認成功である場合に、通知を受けた前記クライアントから転送要求を受信することを条件として、前記サーバの前記応答を前記クライアントへ転送する、請求項７に記載の中継装置。
【請求項９】
前記仮応答部は、前記仮応答メッセージに含めるべき、前記応答の正当な受信者であることを示す受領証を発行する受領証発行部を含み、前記転送部は、前記クライアントから前記転送要求を受信した場合に、前記クライアントから更に前記受領証を受信することを条件として前記応答を前記クライアントへ転送する、請求項８に記載の中継装置。
【請求項１０】
前記クライアントから前記サーバへ送信される認証用の認証情報を一時的に格納する認証情報格納部と、前記サーバにおいて前記クライアントとのセッションを維持させるために、前記クライアントの前記アクセス要求を前記サーバへ転送することに関して前記承認者から承認を得るまでの間、前記認証情報格納部から読み出した前記認証情報を前記サーバに定期的に送信する接続維持部とを更に含む、請求項１記載の中継装置。
【請求項１１】
クライアントとサーバ間のデータ通信を中継する中継装置において実行される、データ通信の中継方法であって  
前記クライアントから前記サーバ宛のアクセス要求を受信するステップと、
前記アクセス要求に対する前記サーバの応答を前記クライアントに転送するまでに一定以上の時間を要するか否かを、送信先へ転送するために承認者から承認を得る必要のある通信情報を識別するための基準を定めるポリシーを参照して、前記ポリシーに基づいて前記アクセス要求または前記サーバの応答の転送のために前記承認者から承認を得る必要があるか否かを判定することにより判定するステップと、
前記一定以上の時間を要するとの判定結果に応答して、前記サーバの前記応答を前記中継装置から前記クライアントへ別途送信することを知らせる仮応答メッセージを前記クライアントに送信するステップと、
前記サーバの前記応答を前記クライアントに転送できる状態になったことに応答して、前記応答を前記クライアントへ転送するステップと
を含む中継方法。
【請求項１２】
請求項１１に記載の方法をコンピュータに実行させるための中継用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントとサーバ間のデータ通信を中継する技術に関し、特に、クライアントのアクセス要求に対するサーバの応答の転送の遅延を気にすることなく、データ通信を中継する中継装置において追加の処理を行うことができるようにする技術に関する。
【背景技術】
【０００２】
パーソナル・コンピュータ（PC）のような情報処理技術およびインターネット、イントラネットなどのネットワーク技術が普及し、ビジネス用途にこれらの技術が使用される機会が増している。その結果、不正アクセスによる個人情報や機密情報の漏洩の危険も増大し、重要情報へのアクセス制御が求められている。
【０００３】
アクセス制御技術の１として、従来よりプロキシ型のファイアウォールが知られている。TCP／IPネットワークにおいて、データはパケットと呼ばれる単位でやりとりされる。プロキシ型のファイアウォールは、パケットのヘッダとデータ部分とを参照して、アクセスの許可／不許可を決定する。従って、プロキシ型のファイアウォールによれば、ユーザ単位でのアクセス制限や、コンテンツによるフィルタリングなど、細かいアクセス制御が可能となる。
【０００４】
ここでアクセス制御は、ファイアウォールの管理者や情報のオーナが情報ごとに予め設定したアクセス制御のポリシーに従って行われる。従って、細かいアクセス制御が可能であるといっても、すべての情報について予めアクセス制御のポリシーを設定するのは困難である。また、例えばアクセス要求される文書に個人情報が含まれるか否かの判断など、コンピュータ処理による判断が難しいものもある。そのため、現時点ではユーザの利便性よりも情報の安全性が重視され、より厳しいアクセス制御のポリシーが採用されている。その結果、人間が判断すれば例外的に許可できるようなアクセス要求でも拒否されている。
【０００５】
そこで、ポリシーに従って不許可と判定されるようなアクセス要求に対しても一定の条件の下、更に、承認者に承認処理を指示することができる中継装置が望まれる。中継装置に付加的処理の指示を行わせる従来技術として特許文献１が存在する。特許文献１は、サーバ装置から受信したコンテンツを所定のフォーマットに従うメッセージに再構築してアプリケーションサーバ装置に転送し、アプリケーションサーバ装置に付加処理を行わせ、その結果に基づくデータをクライアント装置へ送信する技術を開示する。
【特許文献１】特開２００４−１０２９５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ここで、特許文献１における付加的処理は、コンテンツに付加された署名の検証処理であり、コンピュータによる高速処理に適したものである。そのため、特許文献１では、中継の途中にアプリケーションサーバ装置に付加的処理を行わせることによるクライアント装置への応答の転送の遅延は考慮されていない。しかしながら、承認者による承認処理のように人間の判断を要するものは処理に時間を要する。そのため、単純に中継装置に承認者に承認処理を指示する処理を追加したのでは、要求に対し応答が直ちに返されることを前提とする同期処理を行うクライアントにおいて、応答待ちやタイムアウトによるエラーを発生させてしまう。
【０００７】
そこで本発明は、クライアントのアクセス要求に対するサーバの応答の転送の遅延を気にすることなく、データ通信を中継する際に追加の処理を行うことができる、データ通信を中継する中継装置、中継方法及び中継用プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成する本発明は、次のようなクライアントとサーバ間のデータ通信を中継する中継装置によって実現される。この中継装置は、受信部において、クライアントからサーバへのアクセス要求を受信すると、アクセス要求に対するサーバの応答をクライアントに転送するまでに一定以上の時間を要するか否かを判定する。一定以上の時間を要すると判定した場合、中継装置は、サーバの応答を中継装置からクライアントへ別途送信することを知らせる仮応答メッセージを作成し、クライアントへ送信する。そして、サーバの応答をクライアントへ転送できる状態になったことに応答して、中継装置は、応答をクライアントへ転送する。
【０００９】
本発明の１実施形態では、中継装置は、送信先へ転送するために承認者から承認を得る必要のある通信情報を識別するための基準を定めるポリシーを格納するポリシー格納部を有する。そして、中継装置は、上記ポリシーに基づいて通信情報の転送のために承認者から承認を得る必要があるか否かを判定することにより、サーバの応答をクライアントに転送するまでに一定以上の時間を要するか否かを判定する。
【００１０】
ここでアクセス要求は、要求元情報、要求先情報、及び要求内容を含み、好適には上記ポリシーは、要求元情報、要求先情報、及び要求内容の少なくとも１つに関して、転送するために承認者から承認を得る必要のある通信情報を識別するための基準を定める。また中継装置は更に、アクセス要求をサーバへ転送することに関して承認者の承認を得られることを条件として、アクセス要求をサーバへ転送する。
【００１１】
また、サーバからの応答は、応答元情報、応答先情報、及び応答内容を含み、好適には上記ポリシーは、応答元情報、応答先情報、及び応答内容の少なくとも１つに関して、転送するために承認者から承認を得る必要のある通信情報を識別するための基準を定める。また中継装置は、サーバからの応答をクライアントへ転送できる状態になった場合に、上記応答をクライアントへ転送することに関して承認者の承認を得られることを条件として、サーバの応答をクライアントへ転送する。
【００１２】
また好適には、上記ポリシー格納部は、クライアントのアクセス要求に設定され得る要求先ごとに、適用されるポリシーを、当該ポリシーにより承認が必要であると判定される通信情報の承認依頼先と関連付けて格納する。そして中継装置は更に、承認を得る必要があるとの判定した場合に、承認依頼先へ承認依頼を送信する。
【００１３】
更に好適には、中継装置は、承認処理部による承認処理の処理状況及び処理結果を格納する管理テーブル格納部を有する。そして中継装置は、承認処理を終了すると、当該処理の処理結果をクライアントへ通知する。中継装置はまた、上記処理結果が承認成功である場合に、通知を受けたクライアントから転送要求を受信することを更に条件として、サーバの応答をクライアントへ転送する。
【００１４】
更に好適には、中継装置は、上記仮応答メッセージに含めるべき、応答の正当な受信者であることを示す受領証を発行する。そして中継装置は、クライアントから上記転送要求を受けた場合に、クライアントから受領証を受信することを条件としてサーバの応答をクライアントへ転送する。
【００１５】
また好適には、中継装置は、クライアントからサーバへ送信される認証用の認証情報を一時的に格納する認証情報格納部を有する。そして中継装置は、サーバにおいてクライアントとのセッションを維持させるために、クライアントのアクセス要求をサーバへ転送することに関して承認者から承認を得るまでの間、認証情報格納部から認証情報を読み出しサーバへ定期的に送信する。
【００１６】
本発明のもう１つの実施形態では、中継装置は、クライアントのアクセス要求をサーバへ転送してから所定時間内にサーバの応答を受け取ることができるか否かを判断することにより、サーバからの応答をクライアントへ転送するまでに一定以上の時間を要するか否かを判定する。
【００１７】
本発明の更にもう１つの実施形態では、中継装置は、受信したアクセス要求を一時的に格納する要求格納部と、アクセス要求の転送処理を格納する待ち行列とを有し、アクセス要求の受信に応答して、アクセス要求の転送処理を待ち行列に設定する。また中継装置は、待ち行列から順次転送処理を取り出し、当該転送処理に対応するアクセス要求を要求格納部から読み出してサーバへ転送する。そして、中継装置は、待ち行列に格納される情報に基づいて、判定対象のアクセス要求よりも先にサーバへ転送されるアクセス要求が所定の数以上あるか否かを判断することにより、サーバの応答をクライアントへ転送するまでに一定以上の時間を要するか否かを判定する。
【００１８】
好適には、中継装置は、クライアントのユーザの分類に基づいて、クライアントから受信したアクセス要求の転送処理の優先度を決定し、優先度に基づいてアクセス要求の転送処理を待ち行列の適切な位置に格納する。
【００１９】
また好適には、中継装置は、クライアントからサーバへ送信される認証用の認証情報を一時的に格納する認証情報格納部を有する。そして中継装置は、サーバにおいてクライアントとのセッションを維持させるために、アクセス要求の転送処理が待ち行列に格納されている間、認証情報格納部から認証情報を読み出しサーバへ定期的に送信する。
【００２０】
以上、本発明をデータ通信を中継する中継装置として説明したが、本発明は、そのような中継装置において実行される、データ通信の中継方法、中継用プログラムまたは中継用プログラムを格納した記憶媒体として把握することもできる。
【発明の効果】
【００２１】
本発明によれば、クライアントのアクセス要求に対するサーバの応答の転送の遅延を気にすることなく、データ通信を中継する際に追加の処理を行うことができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【００２３】
図１は、本発明のデータ通信の中継方法を適用するシステムの構成の一例を示した概念図である。本実施の形態のシステムは、インターネット１５０およびイントラネット３５０にネットワーク接続された中継サーバ２００を含む。クライアント１００a、bはインターネット１５０にネットワーク接続されている。ウェブ・サーバ３００はイントラネット３５０にネットワーク接続されている。
【００２４】
本発明の実施形態では、中継サーバ２００は、クライアント１００aからウェブ・サーバ３００へのアクセス要求をインターネットを介して受信する。好適にはアクセス要求は、当業者に周知のHTTPリクエストとして実現される。アクセス要求を受信した中継サーバ２００は、アクセス要求に対するウェブ・サーバ３００の応答をクライアント１００aに転送するまでに一定以上の時間を要するか否かを判定する。転送するまでに一定以上の時間を要する理由としては次のものが挙げられる。
【００２５】
１）アクセス要求をウェブ・サーバ３００へ転送することについて、重要情報保護の観点から承認者から承認を得る必要がある。
２）アクセス要求に対するウェブ・サーバ３００の応答をクライアント１００aへ転送することについて、重要情報保護の観点から承認者から承認を得る必要がある。
３）ウェブ・サーバ３００の負荷が高く、ウェブ・サーバ３００においてアクセス要求の処理に時間がかかる。
【００２６】
上記いずれかの理由によりウェブ・サーバ３００の応答をクライアント１００aへ転送するまでに一定以上の時間を要すると判定した場合、中継サーバ２００は、ウェブ・サーバ３００の応答を中継サーバ２００からクライアント１００aへ別途送信することを知らせる仮応答メッセージを作成し、当該仮応答メッセージをインターネット１５０を介してクライアント１００aへ送信する。上記１）または２）の理由によりウェブ・サーバ３００の応答をクライアント１００aへ転送するまでに一定以上の時間を要すると判定した場合、中継サーバ２００は更に、インターネット１５０を介して承認者としてのクライアント１００bへ承認処理を要求する。承認処理の要求は、一例として電子メールを利用してもよい。
【００２７】
承認者により承認が得られ、またはウェブ・サーバ３００においてアクセス要求が処理され、中継サーバ２００においてウェブ・サーバ３００の応答をクライアント１００aへ転送できる状態になると、中継サーバ２００は、ウェブ・サーバ３００の応答をインターネット１５０を介してクライアント１００aへ転送する。好適には、中継サーバ２００はウェブ・サーバ３００の応答を転送できる状態になったことを電子メール等によりクライアント１００aへ通知し、クライアント１００aからの転送要求に応答してウェブ・サーバ３００の応答をクライアント１００aへ転送する。
【００２８】
本発明の実施の形態では、クライアント１００aはウェブ・サーバ３００から所望のデータを入手するために、インターネット１５０を介してアクセス要求を送信する。中継サーバ２００において所望のデータをクライアント１００aへ転送するまでに一定以上の時間を要すると判定された場合、クライアント１００aは中継サーバ２００から仮応答メッセージを受信し、これによりクライアント１００aは通信を一旦終了する。その後クライアント１００aは所望のデータを中継サーバ２００から別途受信する。好適にはクライアント１００aは中継サーバ２００から所望のデータを転送できる状態になった旨の通知を受信し、当該通知の受信に応答して所望のデータの転送を中継サーバ２００に要求する。
【００２９】
本発明の実施の形態では、承認者としてのクライアント１００bは、電子メール等により中継サーバ２００からインターネット１５０を介して承認の依頼を受信する。承認の依頼を受信したクライアント１００bの承認者は、承認依頼に含まれるアクセス要求者やアクセス対象の情報に基づいて承認の可否を決定し、クライアント１００ｂを操作してインターネット１５０を介して承認結果を中継サーバ２００へ送信する。
【００３０】
クライアント１００a、ｂは、周知のインターネットに接続可能な端末で当業者は適宜実現可能である。クライアント１００a、ｂとインターネット１５０の接続は、ダイアルアップ接続等によりISP(Internet Service Provider、図示せず)を介して行ってもよい。クライアント１００a、bからISPへの接続はダイアルアップ接続に限られず、専用線、ADSL(Asymmetric  Digital  Subscriber  Line)、CATV（Cable  Television）等を用いた常時接続により行ってもよい。
【００３１】
本発明の実施の形態では、ウェブ・サーバ３００は、中継サーバ２００から転送されたクライアント１００aのアクセス要求に応じて、適切な応答を中継サーバ２００に返す。ウェブ・サーバ３００の構築方法は一般に周知であり、具体的には、マイクロソフト社が提供するマイクロソフト社のMicrosoft  Internet  Information  Server（R）やフリーウェアであるApacheなどのソフトウェアを使用して当業者は適宜実現可能である。
【００３２】
本発明の実施の形態では、インターネット１５０は、クライアント１００a、bと中継サーバ２００を接続する通信経路として機能する。また、イントラネット３５０はウェブ・サーバ３００と中継サーバ２００を接続する通信経路として機能する。当業者に周知の通り、インターネット１５０とイントラネット３５０は、TCP／IP（Transmission  Control  Protocol／Internet  Protocol）を用いてコンピュータ・システム間を接続する。インターネット１５０とイントラネット３５０では、グローバル・アドレスまたはローカル・アドレスで表されるIPアドレスによって相互に通信するコンピュータが特定される。
【００３３】
本発明の実施の形態において、中継サーバ２００は、図２のようなハードウェア構成を有するコンピュータ・システムで実現することができる。コンピュータ・システムは、ホストコントローラ４０５により相互に接続されるＣＰＵ４００、ＲＡＭ４１０、グラフィックコントローラ４１５及び表示装置４２０を含むＣＰＵ周辺部と、入出力コントローラ４２５によりホストコントローラ４０５に接続される通信インターフェース４４０、ハードディスクドライブ４３０、及びＣＤ−ＲＯＭドライブ４３５を含む入出力部と、入出力コントローラ４２５に接続されるスーパーＩ／Ｏコントローラ４７０及びスーパーＩ／Ｏコントローラ４４５に接続されるフレキシブルディスクドライブ４５０、フラッシュＲＯＭ４５５、ならびにキーボードマウスコントローラ４６０を有するレガシー入出力部を備える。
【００３４】
ホストコントローラ４０５は、ＲＡＭ４１０と、高い転送レートでＲＡＭ４１０をアクセスするＣＰＵ４００及びグラフィックコントローラ４１５とを接続する。ＣＰＵ４００は、フラッシュＲＯＭ４５５やＲＡＭ４１０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ４１５は、ＣＰＵ４００等がＲＡＭ４１０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置４２０上に表示させる。これに代えて、グラフィックコントローラ４１５は、ＣＰＵ４００等が生成する画像データを格納するフレームバッファを内部に含んでもよい。
【００３５】
入出力コントローラ４２５は、比較的高速な入出力装置である通信インターフェース４４０、ハードディスクドライブ４３０、及びＣＤ−ＲＯＭドライブ４３５をホストコントローラ４０５と接続する。通信インターフェース４４０は、通信アダプタ（イーサネット（R）・カードやトークンリング・カード）等を介してネットワークに接続し、他のコンピュータ等と通信する。ハードディスクドライブ４３０は、コンピュータ・システムが使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ４３５は、ＣＤ−ＲＯＭからプログラム又はデータを読み取り、ＲＡＭ４１０を介してＣＰＵ４００に提供する。
【００３６】
また、入出力コントローラ４２５には、フレキシブルディスクドライブ４５０やキーボードマウスコントローラ４６０等の比較的低速な入出力装置と、フラッシュＲＯＭ４５５とが接続される。フラッシュＲＯＭ４５５は、コンピュータの起動時にＣＰＵ４００が実行するブートプログラムや、コンピュータ・システムのハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ４５０は、フレキシブルディスクからプログラムまたはデータを読み取り、ＲＡＭ４１０を介してＣＰＵ４００に提供する。スーパーＩ／Ｏコントローラ４４５は、フレキシブルディスクや、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００３７】
クライアント１００a、b、ウェブ・サーバ３００も同様のハードウェア構成を有するコンピュータ・システムによって実現可能である。本発明の実施に使用される中継サーバ２００、クライアント１００a、b、ウェブ・サーバ３００の各ハードウェア構成要素を、複数のマシンを組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得るものであり、それらの変更は、当然に本発明の思想に包含される概念である。
【００３８】
中継サーバ２００、クライアント１００a、b、ウェブ・サーバ３００には、ハードウェア資源を活用するためのオペレーティング・システム（OS）あるいはミドルウェア等のソフトウェアを備えることが好ましい。中継サーバ２００、ウェブ・サーバ３００には、インターナショナル・ビジネス・マシーンズ社が提供するオペレーティング・システムであるAIX（R）を備えたサーバ・コンピュータであるeServer、ｐServer（R）で実現される。またクライアント１００a、bは、好適には、マイクロソフト社が提供するオペレーティング・システムであるWindowsXP（R）を備えたパーソナル・コンピュータで実現される。これらのオペレーティング・システムは、ＴＣＰ／ＩＰプロトコルによる通信機能を標準でもち、本発明が必要とする通信機能を好適に提供できるものであるが、使用できるオペレーティング・システムはこれらに限定されない。
【００３９】
また、中継サーバ２００には、本発明に係る中継用プログラムがアプリケーションプログラムとしてインストールされる。そして、上述したハードウェア構成とソフトウェア構成とが相まって、中継サーバ２００は各実施形態において後述する機能を発揮する。各コンピュータ・システムに提供されるコンピュータプログラム（オペレーティング・システム及びアプリケーションプログラム）は、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記憶媒体、ＩＣカード等の半導体メモリ等の記録媒体に格納されて、或いはＷｅｂサイトからダウンロードする等ネットワークを介して利用者によって提供される。プログラムは、記録媒体から読み出され入出力コントローラ４２５を介してコンピュータにインストールされ、又はネットワーク上の他のコンピュータから読み出され通信インターフェース４４０を介してコンピュータにインストールされ、コンピュータにおいて実行される。
【００４０】
（第１実施形態）図３は、第１実施形態に係る中継サーバ２００aの機能構成を示す。第１実施形態では、ハードディスクドライブ４３０のハードディスクに格納された中継用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭ４１０にロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他周辺機器への指令を出すことにより、中継サーバ２００aを、受信部２０２、処理振分部２０４、同期処理部２１２、非同期処理部２１６、送信部２３４として機能させる。
【００４１】
受信部２０２は、他のコンピュータ・システムから通信データを受信する。受信部２０２において受信される通信データは、クライアント１００aからのアクセス要求、同じくクライアント１００aからの応答転送要求、アクセス要求に対するウェブ・サーバ３００の応答、承認者としてのクライアント１００ｂの承認結果報告を含み得る。処理振分部２０４は、受信部２０２により受信された通信データをいずれかの処理部に振り分ける機能を有し、第１判定部２０６、第２判定部２０８およびポリシー格納部２１０を含む。処理振分部２０４は、受信部２０２から受け取った通信データを第１判定部２０６に渡す。
【００４２】
第１判定部２０６は、受信部から受け取った通信データについて、ローカル処理、すなわち中継サーバ２００aにおける処理を要求するものであるか否かを判定する。当該判定は、通信データのデータ部分に含まれるHTTPメッセージのリクエストURIが、中継サーバ２００aに対応付けられる特定のＵＲＩであるかどうかを判定することにより行われる。ローカル処理を要求するものであると判定した場合、第１判定部２０６は、後述する非同期処理部２１６の承認処理部２２０または仮応答部２２４に通信データを渡す。一方、ローカル処理を要求するものではない、すなわち転送処理を要求するものであると判定した場合、第１判定部２０６は、通信データを第２判定部２０８に渡す。
【００４３】
第２判定部２０８は、第１判定部２０６から受け取った通信データ（クライアント１００aからのアクセス要求またはウェブ・サーバ３００からのアクセス要求に対する応答のいずれかであり得る）
について、アクセス要求に対するウェブ・サーバ３００の応答をクライアント１００aに転送するまでに一定以上の時間を要するか否かを判定する。第１実施形態において判定は、ポリシー格納部２１０に格納される情報に基づいて行われる。ポリシー格納部２１０は、送信先へ転送するために承認者から承認を得る必要のある通信データを識別するための基準を定めるポリシーを格納する。そして第１実施形態に係る第２判定部２０８は、ポリシーに基づいて通信データの転送のために承認者から承認を得る必要があるか否かを判定することにより、ウェブ・サーバ３００からの応答をクライアント１００aに転送するまでに一定以上の時間を要するか否かを判定する。
【００４４】
ポリシー格納部２１０に格納されるポリシーは、クライアント１００aのアクセス要求に含まれる、要求元情報、要求先情報、及び要求内容の少なくとも１つに関して、転送するために承認者から承認を得る必要のある通信データを識別するための基準を定めるものであってよい。ここで要求元情報には、送信元IPアドレス、ユーザIDが含まれる。要求先情報には、送信先IPアドレス、URIが含まれる。要求内容には、ＨＴＴＰリクエスト・メッセージのメッセージ・ボディが含まれる。これに代えてあるいはこれに加えてポリシーは、ウェブ・サーバ３００の応答に含まれる、応答元情報、応答先情報、及び応答内容の少なくとも１つに関して、転送するために承認者から承認を得る必要のある通信データを識別するための基準を定めるものであってもよい。ここで応答元情報には、送信元IPアドレスが含まれる。応答先情報には、送信先IPアドレスが含まれる。応答内容には、HTML文書などのコンテンツ情報、HTTPステータス・コードのようなサーバの応答状況、HTTPヘッダのようなＨＴＴＰレスポンス・メッセージのヘッダ情報などＨＴＴＰレスポンス・メッセージの全てが含まれる。またポリシー格納部２１０は、クライアント１００aのアクセス要求に設定され得る要求先ごとに、適用されるポリシーを、当該ポリシーにより承認が必要であると判定される通信データの承認依頼先と関連付けて格納してもよい。
【００４５】
図４乃至図６を参照して、ポリシー格納部２１０に格納されるポリシーの一例を説明する。図４に示すURIテーブル５００はポリシーの一部をなし、アクセス要求に指定され得るアクセス要求対象としてのURI５０２を、当該アクセス要求または当該アクセス要求に対する応答に適用するべきポリシーに関連付ける。なおテーブル中空欄となっている箇所は、上位のURIの設定を承継する。サーバ５０４フィールドは、URI５０２フィールドに示されるURIを有するサーバのサーバIDを記憶する。中継サーバ２００aは、アクセス要求に指定されたＵＲＩを有するウェブ・サーバを、サーバ５０４フィールドを参照することにより知ることができる。
【００４６】
要求判定プログラム５０６のフィールドは、アクセス要求対象としてURI５０２フィールドに示されるURIを指定するアクセス要求に対して第２判定部２０８が起動するプログラムのプログラムIDを記憶する。同様に応答判定プログラム５０８は、アクセス要求対象としてURI５０２フィールドに示されるURIを指定するアクセス要求に対する応答に対して第２判定部２０８が起動するプログラムのプログラムIDを記憶する。すなわち第２判定部２０８は、要求判定プログラム５０６フィールドまたは応答判定プログラム５０８フィールドに記憶されるプログラムIDを有するプログラムに実際の判定を行わせる。
【００４７】
アプリケーション５１０フィールドは、URI５０２フィールドに示されるURIに関連してウェブ・サーバ３００上で実行されるウェブ・アプリケーションのウェブ・アプリケーションIDを記憶する。なお、アプリケーション５１０フィールドに記憶されるウェブ・アプリケーションIDは、第２判定部２０８が通信データの処理を後述する非同期処理部２１６に振り分ける際に、非同期処理部２１６に渡される。アクセス制御リスト（Access  Control  List 、以下ACLという。）５１２フィールドは、URI５０２フィールドに示されるURIについてアクセス権限のあるユーザとその権限の内容を定めるACLのIDを記憶する。図６の（a）に、ポリシー格納部２１０に格納されるポリシーの一部であるACLの一例を示す。ACL＿ID５２０フィールドはACLのIDを記憶する。User_ID・Group＿ID５２２フィールドは、アクセス権限のあるユーザのユーザIDまたはグループのグループIDを記憶する。権限５２４フィールドは与えられる権限の内容、すなわち読み出し（Read）、書き込み（Write）、またはその両方のいずれかが記憶される。
【００４８】
なお、ポリシー格納部２１０は、ポリシーの一部として図６の（ｂ）に示すようなユーザテーブルを更に格納する。User_ID５２６フィールド及びパスワード５２８フィールドは、ウェブ・サーバ３００のログイン画面でクライアント１００のユーザが入力するユーザIDとパスワードをそれぞれ記憶する。また、グループ５３０フィールドは、ユーザIDにより識別されるユーザが属するグループのグループIDを記憶する。
【００４９】
図４に戻って保護ポリシー５１４（Protect Object Policy、以下POPという）フィールドは、URI５０２フィールドに示されるURIに対して適用するべき追加のアクセス制御方法を記憶する。図６の（ｃ）にポリシー格納部２１０に格納されるポリシーの一部であるPOPリストの一例を示す。POP_ID５３２フィールドは、POPのIDを記憶する。アクセス場所５３４フィールドはアクセスを許可するクライアント１００の設置場所を記憶する。一例として設置場所は送信元IPアドレスを利用してよい。なお、SSL（Secure  Socket  Layer）やIPSec（Security  Architecture  for  Internet  Protocol）等の通信者（人、使用される機器、経由する通信機器を含む）を特定可能な通信プロトコルを利用する場合、設置場所に代えてアクセスを許可する通信者を記憶してもよい。暗号化通信５３６フィールドは暗号化の要・不要を記憶する。利用可能時間帯５３８フィールドは、アクセスを許可する時間帯を記憶する。以上のように第１実施形態に係るポリシー格納部２１０は、一例として、URIテーブル５００、ACL、ユーザテーブル、POPリストをポリシーとして格納する。
【００５０】
上述したように、第１実施形態に係る第２判定部２０８は、ポリシーに基づいて通信データの転送のために承認者から承認を得る必要があるか否かの判定を判定プログラムに行わせる。起動する判定プログラムの選択は、通信データのデータ部分に含まれるHTTPメッセージのリクエストURIが一致するレコードを、URIテーブル５００から検索することにより行う。なお、中継サーバ２００aはクライアント１００aのアクセス要求と当該アクセス要求に対するウェブ・サーバ３００の応答を関連付けて管理し処理する。すなわち、中継サーバ２００ａは、クライアント１００ａから新規のアクセス要求を受信するたびに新たに１つのインスタンスを生成し、当該インスタンスによりクライアント１００ａのアクセス要求とアクセス要求に対する応答とが一緒に処理される。従って通信データがウェブ・サーバ３００の応答の場合、第２判定部２０８は、対応するアクセス要求に基づいて起動すべき判定プログラムを選択する。
【００５１】
第２判定部２０８により起動される判定プログラムは、入力として、受信部２０２により受信された通信データ、URIテーブル５００の対応するACL５１０フィールドとPOP５１２フィールドにそれぞれ記憶されたACL＿IDとPOP_IDとを受け取る。そして判定を終了すると判定プログラムは判定結果を第２判定部２０８に返す。判定結果は、通信データの転送のために承認者から承認を得る必要があることを示す「非同期処理」またはアクセス要求の許可・拒否を直ちに判断可能であることを示す「同期処理」のいずれかである。判定結果が「同期処理」の場合、判定プログラムは、ACLとPOPとに従ったアクセス要求の「許可」または「拒否」のいずれかの判定結果を更に返す。また、判定結果が「非同期処理」の場合、承認を得る必要があることを示す「承認」を更に返す。
【００５２】
「同期処理」の判定結果を受け取る場合、第２判定部２０８は、「許可」または「拒否」の判定結果とともに通信データを後述する同期処理部２１４に渡す。一方、「非同期処理」の判定結果を受け取る場合、第２判定部２０８は、「承認」の判定結果とともに通信データを後述する非同期処理部２１６に渡す。なお、上述したように中継サーバ２００aは、クライアント１００aのアクセス要求と当該アクセス要求に対するウェブ・サーバ３００の応答を関連付けて管理し処理する。従って、あるクライアント１００aのアクセス要求に対して「非同期処理」との判定結果が出た場合、当該アクセス要求に対するウェブ・サーバ３００の応答に対し「同期処理」との判定結果が出た場合でも当該応答は「非同期処理」扱いとなり、非同期処理部２１６に渡される。
【００５３】
次に図５を参照して、要求判定プログラム５０６のフィールドおよび応答判定プログラム５０８のフィールドに登録され得る判定プログラムの例を説明する。図５に示す判定プログラムリスト５１８の番号１にリストされる判定プログラムDefaultPluginは、受け取った通信データを対応するACLとPOP（対応するPOPがない場合もある）に基づいて調査し、判定結果として「同期処理」とアクセス要求の「許可」または「拒否」のいずれかの判定結果を返す。なお、判定プログラムDefaultPluginは従来のアクセス制御技術に従うものであるため、詳細な説明は省略する。
【００５４】
判定プログラムリスト５１８の番号２にリストされる判定プログラム部門機密情報Pluginは、判定プログラムDefaultPluginと原則同様の判定処理を行う。但し対応するACLとPOP（対応するPOPがない場合もある）に基づく判定結果が「許可」であっても、アクセス要求の要求者が社員グループに属し、かつアクセス要求に対応するウェブ・サーバ３００の応答に「機密（または英語のConfidential）」の文字が含まれる場合は、判定結果として「非同期処理」かつ「承認」を返す。
【００５５】
部門機密情報Pluginによる判定処理を図４に示すレコード５１６を例に具体的に説明する。ここで受信部２０２により受信される通信データはウェブ・サーバ３００の応答とし、当該応答に対応するアクセス要求が、URIとして/jct1/ear1/web1を指定したものとする。第２判定部２０８は、/jct1/ear1/web1とサーバ１を検索キーとして、URIテーブル５００からレコード５１６を検索する。第２判定部２０８はまた、対応するアクセス要求に含まれるリクエスト・メッセージのAuthorizationリクエストヘッダフィールドのフィールド値からユーザIDとパスワードを求める。なおＨＴＴＰリクエスト・メッセージにAuthorizationリクエストヘッダフィールドがない場合、一例として第２判定部２０８は、アクセス要求の送信者のユーザIDを無認証ユーザIDとして通信データを処理する。そして第２判定部２０８はレコード５１６に基づいて部門機密情報Pluginを起動し、当該部門機密情報Pluginに入力として、ウェブ・サーバ３００の応答に含まれるレスポンス・メッセージ、機密Read、POP機密１、更に、求めたユーザIDを渡す。
【００５６】
部門機密情報Pluginは、ポリシー格納部２１０に格納されるACLからACL_IDが機密Readであるレコードを読み出し、ウェブ・サーバ３００の応答に対応するアクセス要求の送信者、すなわちウェブ・サーバ３００の応答を受け取るユーザの権限と権限の内容を確認する。図６の（a）に示されるACLをみると、機密Readは、部門１グループおよび社員グループに対してReadのアクセス権限を与える。そこで、部門機密情報Pluginは、ポリシー格納部２１０に格納されるユーザテーブル（図６の（ｂ）参照）から、第２判定部２０８から受け取ったユーザIDとパスワードに一致するレコードを検索し、ウェブ・サーバ３００の応答に対応するアクセス要求の送信者が部門１グループまたは社員グループのいずれかのグループに属するか否かを判定する。
【００５７】
アクセス要求の送信者が部門１グループおよび社員グループのいずれのグループにも属さない場合、部門機密情報Pluginは判定結果として「同期処理」および「拒否」を返す。アクセス要求の送信者が部門１グループに属する場合、部門機密情報PluginはPOPリストからPOP機密１に一致するレコードを読み出す。図６の（ｃ）に示されるPOPリストをみると、POP機密１は暗号化通信を要求する。そこで部門機密情報Pluginは判定結果として「同期処理」および「許可」を返すとともに、暗号化通信が必要である旨の判定結果を返す。
【００５８】
一方、アクセス要求の送信者が部門１グループには属さず、社員グループに属する場合、部門機密情報Pluginはレスポンス・メッセージのメッセージ・ボディに「機密（または英語のConfidential）」の文字が含まれるか否か判定する。これに代えてまたはこれに加えて部門機密情報Pluginは、レスポンス・メッセージのメッセージ・ボディに、重要情報であることを示す「機密」以外の他の文字、記号、数字が含まれているか否かを判定してもよい。「機密」の文字が含まれている場合、部門機密情報Pluginは判定結果として「非同期処理」および「承認」を返す。「機密」の文字が含まれていない場合、部門機密情報Pluginは判定結果として「同期処理」および「許可」を返す。
【００５９】
判定プログラムリスト５１８の番号３にリストされる判定プログラム高額取引Pluginは、判定プログラムDefaultPluginと原則同様の判定処理を行う。但し対応するACLとPOP（対応するPOPがない場合もある）に基づく判定結果が「同期処理」かつ「許可」であっても、アクセス要求に対応するウェブ・サーバ３００の応答に高い金額が含まれる場合は、判定プログラム高額取引Pluginは判定結果として「非同期処理」および「承認」を返す。高い金額が含まれるか否かの判定は、一例として、レスポンス・メッセージのメッセージ・ボディに、“US$”の記号と当該記号に続いて予め設定した閾値を超える数字が含まれるような場合を検出させることにより行ってよい。
【００６０】
なお、上記説明した部門機密情報Pluginや高額取引Pluginは、本発明の第１実施形態に係る第２判定部２０８の処理を説明するための例示であり、ポリシーに基づいて通信データの転送のために承認者から承認を得る必要があるか否かの判定を行う判定プログラムとして他の判定プログラムを利用可能であることはいうまでもない。例えば、通信データがアクセス要求である場合、アクセス要求に含まれるURI、ユーザID、アクセス時刻、端末IPアドレスの少なくとも１つに対して所定の条件を満たすか否かを判定することにより「非同期処理」および「承認」を返す判定プログラムを利用することもできる。同様に、通信データがウェブ・サーバ３００の応答である場合、ＨＴＴＰレスポンス・メッセージのメッセージ・ボディに含まれるHTMLコンテンツ情報に限らず、時刻などの情報を含むHTTPヘッダやHTTPステータス・コードの少なくとも１つに対して所定の条件を満たすか否かを判定することにより「非同期処理」および「承認」を返す判定プログラムを利用することもできる。
【００６１】
同期処理部２１２は、第２判定部２０８から受け取った通信データを、同じく第２判定部２０８から受け取った判定結果に従って処理する。すなわち「許可」の判定結果を受け取った場合、同期処理部２１２は送信部２３４を介して通信データを通信データの送信先へ転送する。ここで通信データがクライアント１００ａのアクセス要求である場合、送信先はアクセス要求先のウェブ・サーバ３００であり、
同期処理部２１２は、第２判定部２０８から、アクセス要求先のＵＲＩに対応するウェブ・サーバ３００の情報を取得する。また、通信データがクライアント１００ａのアクセス要求に対するウェブ・サーバ３００の応答である場合、送信先は、アクセス要求を送信したクライアント１００ａであり、同期処理部２１２は、第２判定部２０８から、当該応答に対応するアクセス要求の送信元の情報を取得する。
【００６２】
一方「拒否」の判定結果を受け取った場合、同期処理部２１２はエラーメッセージを作成する。そして同期処理部２１２は、作成したエラーメッセージを送信部２３４を介して、アクセス要求を送信したクライアント１００ａに返す。すなわち判定結果が「拒否」の場合、通信データがクライアント１００ａのアクセス要求に対するウェブ・サーバ３００の応答であっても、エラーメッセージはアクセス要求を送信したクライアント１００ａに送信される。
【００６３】
非同期処理部２１６は、転送のために承認者から承認を得る必要があると判定された通信データを処理する機能を有し、仮応答部２１８、アドレステーブル格納部２２２、承認処理部２２４、アプリケーションテーブル格納部２２６、接続維持部２２８、転送部２３０、管理テーブル格納部２３２を含む。
【００６４】
アプリケーションテーブル格納部２２６は、クライアント１００にサービスを提供するためにウェブ・サーバ３００が実行するウェブ・アプリケーションに関する属性情報を記憶する。図７の（a）にアプリケーションテーブルの一例を示す。Application＿ID５５２フィールドは、ウェブ・アプリケーションIDを記憶する。このウェブ・アプリケーションIDは、図４に示すURIテーブル５００のアプリケーション５１０フィールドに記憶されるウェブ・アプリケーションIDと同じものである。承認者ユーザID５５４フィールドは、Application＿ID５５２フィールドに記憶されるウェブ・アプリケーションIDを持つウェブ・アプリケーションがクライアント１００aへ情報を提供することを承認する承認者のユーザIDを記憶する。
【００６５】
セッション維持用URL５５６フィールドは、ウェブ・サーバ３００にHTTPセッションを維持させるために送信する偽の通信データの送信先のURLを記憶する。詳細は後述するが、第２判定部２０８が通信データに対し「非同期処理」の判定結果を出す場合、クライアント１００aはウェブ・サーバ３００の応答の代わりに仮応答メッセージを受信し、当該仮応答メッセージの受信によりウェブ・サーバ３００との通信を終了できる状態となる。ところで、ウェブ・サーバ３００は通常、クライアント１００aがウェブ・アプリケーションからログアウトしたり、またログアウトしなくても通信が行われない状態が長時間続くと、セキュリティの確保およびリソースの開放の目的からHTTPセッションを廃棄する。従って、通信データがクライアント１００ａのアクセス要求である場合、アクセス要求をウェブ・サーバ３００に転送することについて承認を待つ間に、ウェブ・サーバ３００がクライアント１００aとのHTTPセッションを廃棄する恐れがある。
【００６６】
そこで、本実施の形態では、ウェブ・サーバ３００にHTTPセッションを維持させるために、中継サーバ２００aがクライアント１００aの代わりに偽の通信データをウェブ・サーバ３００へ送信する。ところでHTTPセッションはウェブ・アプリケーション本体ではなく、ミドルウェアにより管理されている。従って、セッション維持用URL５５６フィールドに記憶されるURLは、クライアント１００aがアクセス要求を送信する際に指定したURLとは異なるURLが記憶される。
【００６７】
セッション有効期限５５８フィールドは、Application＿ID５５２フィールドに記憶されるウェブ・アプリケーションIDを持つウェブ・アプリケーションに対して事前に設定されているセッションの有効期限（例えば、３０分など）を記憶する。中継サーバ２００aはこのセッションの有効期限が切れないように一定の間隔で偽の通信データをウェブ・サーバ３００へ送信する。
【００６８】
アドレステーブル格納部２２２は、クライアント１００aのユーザの電子メールアドレスを記憶する。
図７の（ｂ）に、アドレステーブルの一例を示す。User_ID５６０フィールドは、クライアント１００aのユーザのユーザIDを記憶する。パスワード５６２フィールドは、User_ID５６０フィールドに記憶されるユーザIDと対をなすパスワードを記憶する。このユーザIDとパスワードは、図６の（ｂ）のユーザテーブルのUser_ID５２６フィールド及びパスワード５２８フィールドに記憶されるユーザIDとパスワードと同じものである。なお、ここでは認証方式としてパスワード認証を示したが、パスワード認証にSSLクライアント認証や生態認証を用いてもよい。
【００６９】
メールアドレス５６４フィールドは、クライアント１００aのユーザの電子メールアドレスを記憶する。アドレステーブル格納部２２２に格納されるアドレステーブルは、本発明によるアクセス制御を行うために事前に用意されるものである。電子メールアドレスは、ユーザに通知文書を送付する際に利用することを目的としている。本実施例では、詳細は後述するが、承認者による承認の結果やウェブ・サーバ３００の応答を転送できる状態になったことをユーザに通知する。なお、このような通知文書を送信することなく、ユーザからのウェブ・サーバ３００の応答の転送要求を待つように構成してもよい。
【００７０】
管理テーブル格納部２３２は、第２判定部２０８より受け取った通信データに対して非同期処理部２１６の各処理部が行う処理を管理するための管理テーブルを格納する。図８に管理テーブル格納部２３２が格納する管理テーブルの一例を示す。図８には２つのテーブルが示されているように見えるが、実際は１つの管理テーブルである。
【００７１】
非同期処理部２１６は、第２判定部２０８から通信データを受け取ると、管理テーブルに当該通信データのための空のレコードを作成する。そして非同期処理部２１６は、要求者ユーザID５７２フィールドにユーザIDを登録する。ユーザIDはアクセス要求に含まれるため、通信データがウェブ・サーバ３００の応答の場合、非同期処理部２１６は、アクセス要求と対応する応答を関連付けて管理する第２判定部２０８よりユーザIDを受け取る。非同期処理部２１６はまた、ウェブ・アプリケーションIDを検索キーとして、アプリケーションテーブル（図７の（a）参照）から一致するレコードの承認者ユーザIDを読み出し、管理テーブルの承認者ユーザID５８６フィールドに登録する。なお、上述したようにウェブ・アプリケーションIDは通信データとともに第２判定部２０８から渡される。
【００７２】
通信データがクライアント１００aのアクセス要求の場合、非同期処理部２１６は更に、要求５８０フィールドに、クライアント１００aのアクセス要求または当該アクセス要求へのポインタ情報を、処理状況５８４フィールドに、「要求承認待ち」を、要求時刻５９０フィールドに受信部２０２において通信データが受信された時刻を登録する。一方、通信データがウェブ・サーバ３００の応答の場合、非同期処理部２１６は、応答５８２フィールドに、ウェブ・サーバ３００の応答または当該ウェブ・サーバ３００の応答へのポインタ情報を、処理状況５８４フィールドに、「応答承認待ち」を、応答時刻５９４フィールドに受信部２０２において通信データが受信された時刻を登録する。但し、第２判定部２０８からウェブ・サーバ３００の応答とともに「同期処理」の判定結果を受け取る場合、非同期処理部２１６は、処理状況５８４フィールドに「応答返信待ち」を登録する。なお、応答時刻５９４フィールドは管理テーブルからレコード廃棄をする基準として利用してよい。例えば、応答受信後一定期間、要求者による応答転送要求が行なわれなかった場合はレコードを廃棄してもよい。
【００７３】
処理状況５８４フィールドに登録されるステータスは、非同期処理部２１６における通信データの処理状況である。図９に、通信データの処理状況の状態遷移の一例を示す。第２判定部２０８からアクセス要求を受け取ると、非同期処理部２１６における通信データの処理状況は最初「要求承認待ち」状態となる。承認が得られると処理状況は「要求転送待ち」状態に遷移する。そして通信データがウェブ・サーバ３００に転送されると処理状況は「応答受信待ち」状態に遷移し、その後応答の受信により処理状況は「応答返信待ち」状態、または「応答承認待ち」状態を経て「応答返信待ち」状態へ遷移する。最後にクライアント１００aに応答が転送されたことを受けて、処理状況は応答の「廃棄待ち」状態へ遷移する。一方、アクセス要求の転送が承認されない場合、処理状況は「要求承認待ち」状態から要求の「廃棄待ち」状態へ遷移する。同様に応答の転送が承認されない場合、処理状況は「応答承認待ち」状態から応答の「廃棄待ち」状態へ遷移する。
【００７４】
通信データがクライアント１００aのアクセス要求の場合、非同期処理部２１６は更に、認証情報５７４フィールドに、ウェブ・サーバ３００がクライアント１００aに対して以前に作成した認証クッキー（Cookie）情報を登録する。なお、認証クッキー情報は、クライアント１００aがウェブ・サーバ３００に送信した要求から予め抽出し保持しておくものとする。非同期処理部２１６は更にまた、管理テーブルの要求時刻５９０フィールドに登録された要求時刻にセッション有効期限を足した時刻を、セッション維持予定時刻５７６フィールドに登録する。ここでセッション有効期限は、ウェブ・アプリケーションIDを検索キーとして、アプリケーションテーブル（図７の（a）参照）から一致するレコードを検索することにより取得する。管理テーブルのその他のフィールドについては、非同期処理部２１６の各処理部の説明においてあわせて行う。
【００７５】
仮応答部２１８は、通信データをクライアント１００aに転送するまでに一定以上の時間を要するとの第２判定部２０８の判定結果に応答して、ウェブ・サーバ３００の応答を中継サーバ２００aからクライアント１００aへ別途送信することを知らせる仮応答メッセージをクライアント１００aに送信する。クライアント１００aは、そのアクセス要求に対する応答として仮応答メッセージを受信するため、当該受信によりウェブ・サーバ３００との通信を終了できる状態となる。
【００７６】
仮応答部２１８は、仮応答メッセージに含めるべき、ウェブ・サーバ３００の応答の正当な受信者であることを示す受領証を発行する受領証発行部２２０を含む。上述したようにクライアント１００aは仮応答メッセージの受信により、ウェブ・サーバ３００との通信を終了することができる。そのため、中継サーバ２００aがウェブ・サーバ３００の応答をクライアント１００aへ別途送信する際には、セキュリティの観点から再度クライアント１００aを認証することが望ましい。
【００７７】
そこで本実施の形態に係る中継サーバ２００aは、認証用の受領証を仮応答メッセージに含めて予めクライアント１００aへ送信し、ウェブ・サーバ３００の応答を転送する際は、クライアント１００aに受領証の提示を要求する。これに代えてまたはこれに加えてユーザIDによる認証を利用してもよい。なお、中継サーバ２００aにおいて受領証をユーザIDと対応付けて保持することにより、同一ユーザによる複数のアクセス要求に対して非同期処理が並行して行われる場合、受領証は、転送すべきウェブ・サーバ３００の応答を識別する識別子としても機能する。
【００７８】
受領証発行部２２０が発行する受領証は、推測困難な文字列でよく、一例として十分に長い乱数をハッシュ関数により変換したものを利用してよい。また、受領証には有効期限を設けてもよい。受領証発行部２２０は、管理テーブルの受領証５７０フィールドに発行した受領証を、同じく管理テーブルの有効期限５９８フィールドに受領証の有効期限を登録する。
【００７９】
図１０は、通信データがクライアント１００aのアクセス要求である場合にHTML文書として作成される仮応答メッセージの一例を示す。図１０に示す仮応答メッセージは、クライアント１００aのユーザの名前、すなわち要求者の名前、ウェブ・サーバ３００の応答を転送できる状態になったことを知らせる通知メールの送信先、アクセス要求があった要求日時、アクセス要求の内容を示す要求URL、アクセス要求に対するウェブ・サーバ３００の応答の受け取り場所を示す応答受取URL、そして承認者の電子メールアドレスを含む。
【００８０】
ここで要求者の名前はユーザIDを使用できる。通知メールの送信先は、ユーザIDを検索キーとして、アドレステーブル（図７の（ｂ）参照）から読み出される。なお、ユーザＩＤが無認証ユーザＩＤである場合、通知メールの送信先を記載する代わりに、通知メールの送信先アドレスを入力するフォームと、アドレス設定ボタンとを作成する。仮応答メッセージを受信したクライアント１００ａのユーザは、フォームに通知メールの受信を希望するアドレスを入力し、アドレス設定ボタンをクリックすることにより、アドレス設定要求を中継サーバ１００ａに送信することができる。要求日時は、管理テーブルの要求時刻５９０フィールドの値を利用できる。また、承認者の記載として承認者の電子メールアドレスを利用してよい。承認者の電子メールアドレスは、まず管理テーブルの承認者ユーザID５８６フィールドから承認者IDを読み出し、次に読み出した承認者IDを検索キーとしてアドレステーブル（図７の（ｂ）参照）から一致するレコードを検索することにより取得できる。
【００８１】
図１０に示す仮応答メッセージの例では、受領証は、応答受取URLの一部に“ticketid”（参照番号６００）として埋め込まれる。従って、クライアント１００aのユーザは、例えば応答受取URLをウェブブラウザのアドレス・フォームに指定するだけで、受領証を中継サーバ２００aに送信することができる。もちろん、受領証を応答受取URLとは別に記載し、クライアント１００aが中継サーバ２００aにアクセスする際に受領証を直接入力させるようにしてもよい。なお、通信データがウェブ・サーバ３００の応答の場合も同様の仮応答メッセージを作成してよい。  
【００８２】
承認処理部２１８は、第２判定部２０８から受け取った通信データの転送について承認者から承認を得るために承認依頼を作成し、送信部２３４を介して承認依頼先へ送信する。依頼方法は、一例として電子メールを利用してよい。承認依頼先に関する情報は、上述したように管理テーブルから読み出した承認者IDを検索キーとして、アドレステーブル（図７の（ｂ）参照）から一致するレコードを検索することにより取得できる。
【００８３】
図１１に、電子メールとして作成される承認依頼の一例を示す。図１１に示す承認依頼は、承認対象が要求処理または応答返信処理であることを知らせる依頼内容、要求者の名前、ウェブ・サーバ３００の応答を転送できる状態になるかアクセス拒否になったことを知らせる通知メールの送信先、アクセス要求があった要求日時、アクセス要求の内容を示す要求URLおよび承認処理を実施するための結果受渡URL（許可および拒否）を含む。なお、図１１に示す承認依頼の承認対象は要求処理である。承認対象が応答返信処理の場合、依頼内容は一例として「次の要求について応答返信処理を実行するために承認処理を実行してください。」としてよい。
【００８４】
要求者の名前はユーザIDを使用できる。通知メールの送信先は、ユーザIDを検索キーとして、アドレステーブル（図７の（ｂ）参照）から読み出される。要求日時は、管理テーブルの要求時刻５９０フィールドの値を利用できる。要求URLは、管理テーブルの要求５８０フィールドの値の中から取得できる。
【００８５】
図１１に示す承認依頼の例では、承認結果と受領証が、２種類の結果受渡URLの一部にそれぞれ“accept”または“reject”（参照番号６０５、６１５）および“ticketid”（参照番号６１０、６２０）として埋め込まれる。従って、承認者は、その承認結果に対応する結果受渡URLを選択し、例えば選択したURLをウェブブラウザのアドレス・フォームに指定するだけで、「許可」または「拒否」の承認結果と受領証とを中継サーバ２００aに送信することができる。もちろん、承認結果や受領証を含まない結果受渡URLを承認依頼に記載し、承認者が中継サーバ２００aにアクセスする際に承認結果や受領証を直接入力させるようにしてもよい。
【００８６】
承認者の承認結果は、受信部２０２で受信された後、第１判定部２０６における判定を経て承認処理部２２４に渡される。承認結果を受け取った承認処理部２２４は、承認結果に含まれる受領証を検索キーとして管理テーブル（図８参照）から一致するレコードを検索する。一致するレコードが存在し、かつ当該レコードの承認者ユーザID５８６フィールドの値が承認結果に含まれる承認者のユーザIDと一致する場合、承認処理部２２４は更に、上記レコードの処理状況５８４フィールドの値が「要求承認待ち」または「応答承認待ち」であることを確認する。そして、承認処理部２２４は、承認結果を管理テーブルの承認結果５８８フィールドに登録し、承認者としてのクライアント１００bに承認結果が正しく受理されたことを示すメッセージを、送信部２３４を介して送信する。それ以外の場合、承認処理部２２４は、送信部２３４を介して承認者としてのクライアント１００bにリクエストが不適切であることを示すエラーメッセージを送信する。  
【００８７】
承認結果の管理テーブルへの登録において、承認処理部２２４は、レコードの処理状況５８４フィールドの値が「要求承認待ち」である場合、承認結果が「許可」ならば「要求許可」を、承認結果が「拒否」ならば「要求拒否」を登録する。同様に、承認処理部２２４は、レコードの処理状況５８４フィールドの値が「応答承認待ち」である場合、承認結果が「許可」ならば「応答許可」を、承認結果が「拒否」ならば「応答拒否」を登録する。このとき承認処理部２２４は、承認が得られた時刻を要求承認時刻５９２フィールドまたは応答承認時刻５９６フィールドに登録する。承認時刻フィールドは、承認状況の監査を行なう際の記録として利用することができる。
【００８８】
判定結果を受け取った承認処理部２２４は更にまた、管理テーブルの処理状況５８４フィールドを更新する。アクセス要求の転送に対し承認が得られた場合、承認処理部２２４は承認状況を「要求転送待ち」に変更する。同様にウェブ・サーバ３００の応答転送に対し承認が得られた場合、承認処理部２２４は承認状況を「応答返信待ち」に変更する。クライアント１００aのアクセス要求の転送またはウェブ・サーバ３００の応答の転送に対し承認が得られなかった場合、承認処理部２２４は処理状況を「廃棄待ち」に変更する。
【００８９】
承認状況を「応答返信待ち」または「廃棄待ち」に変更する場合、承認処理部２２４はまた、承認結果をクライアント１００aに通知する。通知の方法は、一例として電子メールを利用してよい。通知先のメールアドレスは、管理テーブルから読み出した要求者ユーザIDを検索キーとして、アドレステーブル（図７の（ｂ）参照）から一致するレコードを検索することにより取得する。
【００９０】
接続維持部２２８は、ウェブ・サーバ３００においてクライアント１００aとのセッションを維持させるために、クライアント１００aのアクセス要求をウェブ・サーバ３００へ転送することに関して承認者から承認を得るまでの間、偽の通信データをウェブ・サーバ３００に定期的に送信する。偽の通信データの送信先は、ウェブ・アプリケーションIDを検索キーとして、アプリケーションテーブル（図７の（a）参照）から一致するレコードのセッション維持用URLを読み出すことにより取得する。また、ウェブ・サーバ３００へ送信する偽の通信データは、ウェブ・サーバ３００に対してクライアント１００aから送られた通信データと思わせる必要があることから、管理テーブルの認証情報５７４フィールドに登録された認証クッキー情報を使用する。
【００９１】
そして接続維持部２２８は、管理テーブルの処理状況５８４フィールドの値が「要求承認待ち」から「要求転送待ち」に変わるまでの間、管理テーブルのセッション維持予定時刻５７６フィールドからセッション維持予定時刻を定期的に読み出し、現在時刻と比較する。現在時刻がセッション維持予定時刻よりも前であれば、接続維持部２２８は、認証クッキー情報を使用して作成した偽の通信データを、読み出したセッション維持用URLに送信する。
【００９２】
偽の通信データの送信に対しウェブ・サーバ３００から成功を示す応答を受信した場合、接続維持部２２８は管理テーブルのセッション維持結果５７８フィールドに「成功」を登録する。接続維持部２２８はまた、ウェブ・アプリケーションIDを検索キーとして、アプリケーションテーブル（図７の（a）参照）から一致するレコードのセッション有効期限を読み出し、現在時刻にセッション有効期限を足したもので、管理テーブルのセッション維持予定時刻５７６フィールドを更新する。
【００９３】
一方、偽の通信データの送信に対しウェブ・サーバ３００から失敗を示す応答を受信した場合、接続維持部２２８は管理テーブルのセッション維持結果５７８フィールドに「失敗」を登録する。続維持部２２８はまた、管理テーブルのセッション維持予定時刻５７６フィールドの値を「未設定」に変更する。
【００９４】
転送部２３０は、アクセス要求をウェブ・サーバ３００へ転送することに関して承認者の承認を得られることを条件として、送信部２３４を介してアクセス要求をウェブ・サーバ３００へ転送する。すなわち、転送部２３０は一定の間隔で管理テーブルを確認し、処理状況５８４フィールドの値が「要求転送待ち」であるレコードを検出する。そのようなレコードを検出した場合、転送部２３０は、管理テーブルのセッション維持結果５７８フィールドの値が「成功」であることを確認する。そして転送部２３０は、管理テーブルからクライアント１００aのアクセス要求を読み出し、送信部２３４を介してウェブ・サーバ３００へ転送する。その際転送部２３０は管理テーブルの処理状況５８４フィールドの値を「応答受信待ち」に変更する。
【００９５】
転送部２３０はまた、ウェブ・サーバ３００の応答をクライアント１００aへ転送できる状態になると、ウェブ・サーバ３００の応答をクライアント１００aへ転送する。好ましくは、転送部２３０は、転送許可の通知を受けたクライアント１００aからの転送要求に応答して、ウェブ・サーバ３００の応答をクライアント１００aへ転送する。更に好ましくは、転送部２３０は、転送許可の通知を受けたクライアント１００aからの転送要求に応答して、かつクライアント１００aから受領証を受け取ることを条件に、ウェブ・サーバ３００の応答をクライアント１００aへ転送する。
【００９６】
上述したように、本実施の形態では、クライアント１００aは中継サーバ２００aから承認者の承認結果について通知を受け取る。従って、承認結果が「許可」である通知を受信したクライアント１００aは、先に受信した仮応答メッセージに記載されている、受領証の埋め込まれた応答受取URLをウェブブラウザのアドレス・フォームに入力することにより、中継サーバ２００aにウェブ・サーバ３００の応答の転送要求を送信する。
【００９７】
クライアント１００aの転送要求は、受信部２０２で受信された後、第１判定部２０６における判定を経て仮応答部２１８に渡される。転送要求を受け取った仮応答部２１８は、転送要求から取り出した受領証を検索キーとして、管理テーブルから一致するレコードを検索する。一致するレコードが存在し、当該レコードの要求者ユーザID５８６フィールドの値が転送要求に含まれる要求者のユーザIDと一致する場合、仮応答部２１８は更に、上記レコードの処理状況５８４フィールドの値が「応答返信待ち」であり、かつ有効期限５９８フィールドに登録された受領証の有効期限が将来の日付を示すことを確認する。仮応答部２１８の確認結果は、受領証とともに転送部２３０へ渡される。
【００９８】
転送部２３０は、「失敗」の確認結果を受け取った場合、送信部２３４を介してクライアント１００aにリクエストが不適切であることを示すエラーメッセージを送信する。一方、「成功」の確認結果を受け取った場合、転送部２３０は、受領証を検索キーとして管理テーブルから読み出したウェブ・サーバ３００の応答を、送信部２３４を介してクライアント１００aへ転送する。その後転送部２３０は管理テーブルの処理状況５８４フィールドの値を「廃棄待ち」に変更する。
【００９９】
次に図１２乃至図２１のフローチャートを参照して、第１実施形態に係る中継サーバ２００aによるデータ通信の中継処理の流れの一例を説明する。処理は図１２のステップ１００から開始し、中継サーバ２００aは他の情報処理装置より通信データ（クライアント１００aのアクセス要求／応答転送要求、クライアント１００ｂの承認結果報告のいずれか）を受信すると、処理振分部２０４により通信データを適切な処理部へ振り分ける（ステップ１０２）。処理振分部２０４による処理の振り分けの詳細は、図１３および図１８を参照して後述する。処理部による通信データの処理が終了すると、中継サーバ２００aは、受信した通信データに対する応答が送信済みであるか否か判定する（ステップ１０４）。
送信済みでない場合（ステップ１０４：ＮＯ）、中継サーバ２００は、受信した通信データに対する応答として、各処理部による処理結果を上記他の情報処理装置へ送信する（ステップ１０６）。応答が送信済みである場合（ステップ１０４：ＹＥＳ）、またはステップ１０６の後、処理は終了する。
【０１００】
図１３は、図１２のステップ１０２に示す振分処理のより詳細な処理の流れの一例を示す。通信データを受け取った第１判定部２０６は、通信データからその宛先情報を取り出し（ステップ１１０）、通信データの宛先情報が中継サーバ２００aを指すかどうか判定する（ステップ１１２）。宛先情報が中継サーバ２００aを指さない場合（ステップ１１２：ＮＯ）、第１判定部２０６は通信データ（クライアント１００aのアクセス要求、ウェブ・サーバ３００の応答のいずれか）を第２判定部２０８へ渡し転送処理を行わせる（ステップ１１４）。転送処理の詳細は図１４乃至図１７、１８を参照して後述する。一方、通信データの宛先情報が中継サーバ２００aを指す場合（ステップ１１２：YES）、第１判定部２０６は当該通信データ（クライアント１００aの応答転送要求、クライアント１００ｂの承認結果報告のいずれか）に対してローカル処理を行う（ステップ１１６）。ローカル処理の詳細は、図１８乃至図２０を参照して後述する。そして処理は終了する。
【０１０１】
図１４は、図１３のステップ１１４に示す転送処理のより詳細な処理の流れの一例を示す。第２判定部２０８は、ポリシーに基づいてクライアント１００aのアクセス要求を転送することについて承認者から承認を得る必要があるか否かを判定するための判定プログラムを、アクセス要求が要求するリソースに基づいてURIテーブル５００から選択する（ステップ１２０）。選択された判定プログラムは、アクセス要求に対し判定処理を行う（ステップ１２２）。図１５に、判定プログラムリスト５１８に示す部門機密情報Pluginによる判定処理の流れの一例を示す。
【０１０２】
図１５のステップ１４６、ステップ１４８およびステップ１５０において、部門機密情報Pluginは、第２判定部２０８から、通信データに適用すべきACLおよびPOPと、通信データの送信者のユーザIDとを取得する。そして部門機密情報Pluginは、これら情報から、通信データの転送が許可されるかどうか判定する（ステップ１５２）。通信データの転送が拒否されると判定した場合（ステップ１５４：ＹＥＳ）、部門機密情報Pluginは、「同期処理」および「拒否」の判定結果を第２判定部２０８へ返す（ステップ１５６）。
【０１０３】
一方、データの転送が許可されると判定した場合（ステップ１５４：NO）、部門機密情報Pluginは次に、通信データがウェブ・サーバ３００の応答であるか否かを判定する（ステップ１５８）。当該判定は、一例として通信データのデータ部分に含まれるHTTPメッセージにステータス・コードが含まれるか否かを判定することにより行ってもよい。通信データがウェブ・サーバ３００の応答である場合（ステップ１５８：YES）、部門機密情報Pluginは更に、HTTPメッセージのメッセージ・ボディが「機密（または英語のConfidential）」の文字を含むか否か（ステップ１６０）、また「機密」の文字を含む場合に更に送信者が部門グループに所属するか否か判定する（ステップ１６２）。
【０１０４】
「機密」の文字を含み（ステップ１６０：YES）、かつ送信者が部門グループに所属しない場合（ステップ１６２：NO）の場合、部門機密情報Pluginは、「非同期処理」および「承認」の判定結果を第２判定部２０８へ返す（ステップ１６４）。一方、通信データがウェブ・サーバ３００の応答でない場合（ステップ１５８：NO）、「機密」の文字を含まない場合（ステップ１６０：NO）、および送信者が部門グループに所属する場合（ステップ１６２：YES）、これらいずれかの場合、部門機密情報Pluginは、「同期処理」および「許可」の判定結果を第２判定部２０８へ返す（ステップ１６６）。そして処理は終了する。
【０１０５】
図１４に戻って、第２判定部２０８は、判定プログラムの判定結果が「同期処理」であるか否か判定する（ステップ１２４）。判定結果が「同期処理」を示す場合、第2判定部２０８は、「許可」または「拒否」の判定結果とともにアクセス要求を同期処理部２１２へ渡す。同期処理部２１２は、受け取った判定結果が「許可」の場合、アクセス要求をウェブ・サーバ３００へ転送する（ステップ１２８）。ウェブ・サーバ３００はアクセス要求を処理し、アクセス要求に対する応答を返す。  
【０１０６】
中継サーバ２００aにおいて、アクセス要求に対する応答が受信されると（ステップ１３０）、当該応答は、上述した図１２、図１３に示す処理を経て、第２判定部２０８に渡される。そして第２判定部２０８は、対応するアクセス要求に基づいて、今度は応答に対し判定プログラムを選択する（ステップ１３２）。選択された判定プログラムは、応答に対して判定処理を行う（ステップ１３４）。そして第２判定部２０８は再び、判定プログラムの判定結果が「同期処理」であるか否か判定する（ステップ１３６）。判定結果が「同期処理」を示す場合、第2判定部２０８は、「許可」または「拒否」の判定結果とともにアクセス要求を同期処理部２１２へ渡す。
【０１０７】
同期処理部２１２は、ステップ１２４またはステップ１３６において「同期処理」と判定され、第２判定部２０８から「拒否」の判定結果を受け取った場合、クライアント１００aのアクセス要求に対する応答としてエラーメッセージを作成する（ステップ１４０）。一方、ステップ１３６において「同期処理」と判定され、第２判定部２０８から「許可」の判定を受け取った場合、同期処理部２１２は、ウェブ・サーバ３００の応答を、クライアント１００aのアクセス要求に対する応答とする。
【０１０８】
一方、ステップ１２４またはステップ１３６において、判定結果が「非同期処理」および「承認」を示す場合、第2判定部２０８は、クライアント１００aアクセス要求またはウェブ・サーバ３００の応答を、非同期処理部２１６へ渡す。非同期処理部２１６による非同期処理の詳細は、図１６、１７、１９を参照して後述する。ステップ１３６、ステップ１３８、またはステップ１４０の後処理は終了する。
【０１０９】
図１６は、図１４のステップ１２６およびステップ１３８に示す非同期処理の詳細な処理の流れの一例を示す。非同期処理部２１６は、管理テーブルに、第２判定部２０８から受け取った通信データのレコードを作成する（ステップ１７０）。次に非同期処理部２１６の仮応答部２１８は、上記通信データに対し受領証を発行し（ステップ１７２）、ウェブ・サーバ３００の応答を中継サーバ２００aからクライアント１００aへ別途送信することを示す仮応答メッセージを、クライアント１００aのアクセス要求に対する応答として作成する（ステップ１７４）。また、非同期処理部２１６の承認処理部２２４は、クライアント１００aのアクセス要求またはウェブ・サーバ３００の応答の転送について承認者に承認を依頼する承認要求を作成し、承認者であるクライアント１００ｂへ送信する（ステップ１７６）。最後に非同期処理部２１６は、管理テーブルの上記レコードの内容を更新し、処理を終了する（ステップ１７８）。
【０１１０】
次に図１７を参照して、接続維持部２２８により行われるセッション維持の処理の流れの一例を説明する。図１７に示すセッション維持の処理は、接続維持部２２８により一定の間隔（例えば２０分など、セッションタイムアウトの一般的な時間である３０分よりも短い間隔）で繰り返し行われる。セッション維持処理はステップ１８０より開始し、接続維持部２２８は、管理テーブル（図８参照）から処理状況５８４フィールドの値が「要求転送待ち」であるレコードを取り出す。そして接続維持部２２８は、取り出したレコードのセッション維持予定時刻５７６フィールドの値が現在時刻よりも先であるか否か判定する（ステップ１８２）。管理テーブルに「要求転送待ち」であるレコードが存在しない場合（ステップ１８１：NO）、または現在時刻がセッション維持予定時刻５７６フィールドの値を過ぎている場合（ステップ１８２：YES）、処理は終了する。
【０１１１】
一方、「要求転送待ち」であるレコードが存在し、かつセッション維持予定時刻５７６フィールドの値が現在時刻よりも先である場合、接続維持部２２８は、取り出したレコードの認証情報５７４フィールドに登録されたクライアント１００aの認証クッキー情報を用いてセッション維持要求を作成し、アプリケーションテーブル（図７の（a）参照）の該当するレコードに登録されたセッション維持用のURLに送信する（ステップ１８４）。当該セッション維持要求に対する応答を受信すると（ステップ１８６）、接続維持部２２８は、セッション維持要求の結果を用いて管理テーブルの上記レコードのセッション維持結果５７８フィールドを更新する（ステップ１８８）。
【０１１２】
次に接続維持部２２８は、セッション維持要求の結果が成功であったか否か判定し（ステップ１９０）、成功であった場合（ステップ１９０：YES）、アプリケーションテーブル（図７の（a）参照）の該当するレコードからセッション有効期限を取得して（ステップ１９２）、現在時間にセッション有効期限を加えることにより新たなセッション維持予定時刻を計算する（ステップ１９４）。最後に接続維持部２２８は、求めたセッション維持予定時刻を用いて、管理テーブルの上記レコードのセッション維持予定時刻５７６フィールドを更新する（ステップ１９６）。ステップ１０９においてセッション維持要求の結果が失敗の場合（ステップ１９０：NO)、管理テーブルの上記レコードのセッション維持予定時刻５７６フィールドを「未設定」に変更する。ステップ１９６の後処理は終了する。
【０１１３】
次に図２０を参照して、図１３のステップ１１６に示すローカル処理の詳細な処理の流れの一例を説明する。図２０は、第１判定部２０６による、通信データの更に詳細な振り分け処理を示す。処理はステップ２００より開始し、第１判定部２０６は、要求の種別を取得するため、通信データのデータ部分に含まれるリクエスト・メッセージにおいて指定されるURIを取得する。例えば、図１０に示す仮応答メッセージの応答受取URLや図１１に示す承認依頼の結果受渡URLをみるとわかるように、URIによりアクセス要求の種類を識別することが可能である。
【０１１４】
要求種別がクライアント１００aの応答転送要求である場合、第１判定部２０６は、仮応答部２１８および転送部２３０に通信データを渡し、応答転送処理を行わせる（ステップ２０２：ＹＥＳ、ステップ２０４）。要求種別がクライアント１００ｂの承認要求である場合、第１判定部２０６は、承認処理部２２４に通信データを渡し、承認処理を行わせる（ステップ２０６：ＹＥＳ、ステップ２０８）。そして処理は終了する。
【０１１５】
図１９は、承認処理部２２４による承認処理の詳細な処理の流れの一例を示す。承認処理部２２４は、クライアント１００ｂの承認報告の要求からユーザIDと受領書とを取り出し（ステップ２２０、ステップ２２２）、管理テーブルに一致するレコードが存在するか否か判定する（ステップ２２４）。一致するレコードが存在する場合（ステップ２２４：YES）、承認処理部２２４は、更に当該レコードの処理状況５８４フィールドの値が「要求承認待ち」または「応答承認待ち」であるか否か判定する（ステップ２２６）。ステップ２２６でYESの場合、承認処理部２２４は、上記処理状況５８４フィールドの値を「要求転送待ち」、「応答返信待ち」、または「廃棄待ち」のいずれかに変更し、また、承認要求に含まれる承認結果を上記レコードの承認結果５８８フィールドに登録する（ステップ２２８）。
【０１１６】
また承認処理部２２４は、処理状況５８４フィールドの値の上記変更が、廃棄待ちまたは応答返信待ちへの変更であるか否か判定する（ステップ２３０）。上記変更が、廃棄待ちまたは応答返信待ちへの変更である場合（ステップ２３０：YES）、承認処理部２２４は、承認結果をクライアント１００aのユーザに知らせる通知メールを作成し、クライアント１００aへ送信する（ステップ２３２）。ステップ２３２から、またはステップ２３０でNOの場合、すなわち上記変更が要求転送待ちへの変更の場合、処理はステップ２３６へ進み、クライアント１００ｂの承認要求に対する応答として、承認処理結果を表示する応答を作成する。一方、ステップ２２４またはステップ２２６においてNOの場合、処理はステップ２３８へ進み、承認処理部２２４は、クライアント１００ｂの承認要求に対する応答として、エラーメッセージを作成する。そして処理は終了する。
【０１１７】
図１８は、仮応答部２１８および転送部２３０による応答転送処理のより詳細な処理の流れの一例を示す。仮応答部２１８は、クライアント１００aの応答転送要求からユーザIDと受領書とを取り出し（ステップ２４０、ステップ２４２）、管理テーブルに一致するレコードが存在するか否か判定する（ステップ２４４）。一致するレコードが存在しない場合（ステップ２４４：NO）、仮応答部２１８は、応答転送要求が「失敗」であることを示す結果を転送部２３０へ渡す。転送部２３０は、エラーメッセージをクライアント１００aの応答転送要求に対する応答として作成する（ステップ２４８）。
【０１１８】
一致するレコードが存在する場合（ステップ２４４：YES）、仮応答部２１８は当該レコードの処理状況５８４フィールドの値が「応答返信待ち」であるか否か判定する（ステップ２４６）。ステップ２４６でYESの場合、仮応答部２１８は、応答転送要求が「成功」であることを示す結果を転送部２３０へ渡す。転送部２３０は、上記レコードからウェブ・サーバ３００の応答を取得して（ステップ２５０）、更に上記処理状況５８４フィールドの値を「「廃棄待ち」に変更する（ステップ２５２）。一方、上記レコードの処理状況５８４フィールドの値が「応答返信待ち」でない場合（ステップ２４６：NO）、仮応答部２１８は、応答転送要求が「応答受信待ち」であることを示す結果を転送部２３０へ渡す。転送部２３０は、現在の処理状況を示す応答を、クライアント１００aの応答転送要求に対する応答として作成する（ステップ２５４）。そして処理は終了する。
【０１１９】
図２１は、転送部２３０により行われる、クライアント１００aの要求の転送処理の流れの一例を示す。図２１に示す要求転送の処理は、転送部２３０により一定の間隔（例えば５分など、中継サーバ２００aの負荷とクライアントのアクセス要求に対する応答の速さのバランスを考慮して決定される）で繰り返し行われる要求転送処理はステップ２７０より開始し転送部２３０は、管理テーブル（図８参照）から処理状況５８４フィールドの値が「要求転送待ち」であるレコードを取り出す。そして転送部２３０は、取り出したレコードの要求をウェブ・サーバ３００へ転送する（ステップ２７２）。ウェブ・サーバ３００はアクセス要求を処理し、応答を返す。
【０１２０】
中継サーバ２００aにおいて、アクセス要求に対する応答が受信されると、当該応答は上述した図１２、図１３に示す処理を経て、第２判定部２０８に渡される（ステップ２７４）。第２判定部２０８は、対応するアクセス要求に基づいて、応答に対し判定プログラムを選択する（ステップ２７６）。選択された判定プログラムは、応答に対して判定処理を行う（ステップ２７８）。第２判定部２０８は、判定プログラムの判定結果が「同期処理」であるか否か判定する（ステップ２８０）。そして第２判定部２０８は、判定結果にかかわらず、応答と判定結果を非同期処理部２１６に渡す。
【０１２１】
判定結果が「同期処理」かつ「許可」を示す場合、非同期処理部２１６は管理テーブルの承認結果５８８フィールドの値を「応答許可」に変更し、更に管理テーブルの処理状況５８４フィールドを「応答返信待ち」に変更する。判定結果が「同期処理」かつ「拒否」を示す場合、非同期処理部２１６は管理テーブルの承認結果５８８フィールドの値を「応答拒否」に変更し、更に管理テーブルの処理状況５８４フィールドを「廃棄待ち」に変更する（ステップ２８２）。
【０１２２】
一方、判定結果が「非同期処理」を示す場合、非同期処理部２１６は図１６を参照して上述した非同期処理を行う（ステップ２８４）。そして処理は終了する。
【０１２３】
以上のように、第１実施形態に係る中継サーバ２００ａは、アクセス要求に対するウェブ・サーバ３００の応答をクライアント１００ａに転送するまでに一定以上の時間を要すると判断した場合、クライアントへ、そのアクセス要求に対する応答として、ウェブ・サーバ３００の応答を別途送信することを知らせる仮応答メッセージを送信する。従って、クライアント１００ａのアクセス要求に対するウェブ・サーバ３００の応答の転送の遅延を気にすることなく、中継サーバ２００ａは、アクセス要求や当該アクセス要求に対する応答の転送について承認者に承認を依頼できるようになり、柔軟なアクセス制御を行うことが可能となる。
【０１２４】
（第２実施形態）図２２は、第２実施形態に係る中継サーバ２００ｂの機能構成を示す。第２実施形態では、ハードディスクドライブ４３０のハードディスクに格納された中継用プログラムは、例えばユーザの操作に応答してオペレーティング・システムの働きによりＲＡＭにロードされ、当該プログラムがオペレーティング・システムの所定のＡＰＩルーチンを呼び出す等の処理により、ＣＰＵ４００やその他の周辺機器への指令を出すことにより、中継サーバ２００ｂを、受信部２４０、処理振分部２４２、転送処理部２５４、非同期処理部２６０、送信部２７６として機能させる。なお、以下では第１実施形態と異なる構成、機能を中心に説明を行う。
【０１２５】
受信部２４０は、第１実施形態における受信部２０２と同一の機能を有する。但し第２実施形態の受信部２４０において受信される通信データに、承認者としてのクライアント１００ｂからの承認結果は含まれない。処理振分部２４２は、受信部２４０により受信された通信データをいずれかの処理部に振り分ける機能を有し、第１判定部２４４、第２判定部２４６のほかに、待ち行列２４８、優先度決定部２５０、および待ち行列設定部２５２を含む。第１判定部２４４は、第１実施形態における第１判定部２０６と同じ機能を有するので説明は省略する。
【０１２６】
第２判定部２４６は、第１判定部２４４から受け取った通信データについて、アクセス要求に対するウェブ・サーバ３００の応答をクライアント１００ａに転送するまでに一定以上の時間を要するか、すなわち仮応答メッセージを作成してクライアント１００ａが通信を一旦終了できるようにするための非同期処理を行う必要があるか否かを判定する。なお、第２実施形態においても、中継サーバ２００ｂはクライアントの１００ａのアクセス要求と当該アクセス要求に対するウェブ・サーバ３００の応答を関連付けて管理し処理する。そして第２判定部２４６による判定は、クライアント１００ａのアクセス要求に対し行われ、ウェブ・サーバ３００の応答は対応するアクセス要求に対する判定結果に従って処理される。第２実施形態に係る第２判定部２４６は、通信データがクライアント１００ａのアクセス要求の場合、当該アクセス要求をまず後述する優先度決定部２４８に渡す。そこで優先度決定部２４８における処理と関連する待ち行列２４８と待ち行列設定部２５２、そして優先度決定部２５０について先に説明する。
【０１２７】
待ち行列２４８は、受信部２４０において受信されたアクセス要求の転送処理を格納する。優先度決定部２５０は、クライアント１００ａのユーザ分類に基づいて、クライアント１００ａから受信したアクセス要求の転送処理の優先度を決定する。ここでユーザの分類とは、例えばウェブ・サーバが提供するサービスを受けるために有料で登録した有料ユーザと登録なしで本サービスを受ける無料ユーザのようなクライアント１００ａのユーザの属性による分類や、携帯電話やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｓ）などの限られた処理能力をもつ小型の携帯情報端末とパーソナル・コンピュータやワークステーションなどのより高い処理能力をもつ情報処理端末のようなクライアント１００ａの属性による分類を含む。優先度決定部２５０は、有料ユーザや限られた処理能力をもつ小型の携帯情報端末に対して高い優先度を決定する。なお、優先度決定部２５０は、このようなユーザの属性情報やクライアント１００ａの属性情報を、ユーザＩＤとパスワードに関連付けて予め内部に保持しておくものとする（図２３の（ａ）を参照）。
【０１２８】
待ち行列設定部２５２は、優先度決定部２５０により決定された優先度に基づいて、クライアント１００ａのアクセス要求の転送処理を待ち行列２４８の適切な位置に格納する。すなわち待ち行列設定部２５２は、高い優先度のアクセス要求の転送処理を、既に待ち行列２４８に格納された優先度の低い転送処理よりも先に取り出されるような位置に格納する。第２判定部２４６は、アクセス要求を優先度決定部２４８に渡すと、待ち行列２４８に格納される情報に基づいて、判定対象のアクセス要求よりも先にウェブ・サーバ３００へ転送されるアクセス要求が所定の数以上あるか否かを判定する。先にウェブ・サーバ３００へ転送されるアクセス要求が所定の数以上ある場合、第２判定部２４６は、アクセス要求に対するウェブ・サーバ３００の応答をクライアント１００ａに転送するまでに一定以上の時間を要すると判断し、アクセス要求を後述する転送処理部２５４と非同期処理部２６０の両方に渡す。
【０１２９】
一方、先にウェブ・サーバ３００へ転送されるアクセス要求が所定の数よりも少ない場合、第２判定部２４６は、アクセス要求を後述する転送処理部２５４にのみ渡す。通信データがウェブ・サーバ３００の応答の場合、第２判定部２４６は、上述したように対応するアクセス要求に対する判定に従って処理するべく、応答を転送処理部２５４または非同期処理部２６０のいずれか一方に渡す。すなわちアクセス要求に対し非同期処理を行う必要があると判定された場合、対応する応答は非同期処理部２６０にのみ渡される。また、アクセス要求に対し非同期処理を行う必要がないと判定された場合、対応する応答は転送処理部２５４にのみ渡される。
【０１３０】
転送処理部２５４は、通信データをウェブ・サーバ３００へ転送する機能を有し、通信データ格納部２５６と第１転送部２５８を含む。通信データ格納部２５６は、第２判定部２４６から受け取った通信データを格納する。第１転送部２５８は、待ち行列２４８から順次転送処理を取り出し、当該転送処理に対応する通信データを通信データ格納部２５６から読み出して、送信部２７６を介してウェブ・サーバ３００またはクライアント１００ａへ転送する。
【０１３１】
非同期処理部２６０は、アクセス要求に対するウェブ・サーバ３００の応答をクライアント１００ａに転送するまでに一定以上の時間を要すると判定された通信データを処理する機能を有し、仮応答部２６２、アドレステーブル格納部２６６、接続維持部２６８、アプリケーションテーブル格納部２７０、通知部２７２、および第２転送部２７４を含む。第２実施形態に係る非同期処理部２６０は、基本的に第１実施形態に係る非同期処理部２１６と同じ構成、機能を有する。但し、第２実施形態に係る非同期処理部２６０には、承認処理部２２４は含まれず、代わりに通知部２７２が含まれる。
【０１３２】
アプリケーションテーブル格納部２７０は、クライアント１００にサービスを提供するためにウェブ・サーバ３００が実行するウェブ・アプリケーションに関する属性情報を記憶する。図２３の（ｂ）にアプリケーションテーブルの一例を示す。第２実施形態において使用されるアプリケーションテーブルは、第１実施形態におけるアプリケーションテーブルに、ＵＲＩ７０６フィールドとサーバ７０８フィールドを追加したものである。追加フィールドにはそれぞれアクセス要求に指定され得るアクセス要求対象としてのＵＲＩと、当該ＵＲＩを有するサーバのサーバＩＤを記憶する。また、Application＿ID７１０フィールドには、ＵＲＩ７０６フィールドに記憶されるＵＲＩに関連してウェブ・サーバ３００上で実行されるウェブ・アプリケーションのＩＤを記憶する。セッション維持用URL７１２フィールドおよびセッション有効期限７１４フィールドは、図７の（a）を参照して説明した第１実施形態におけるアプリケーションテーブルと同じであるため説明は省略する。
【０１３３】
アドレステーブル格納部２６６は、第１実施形態におけるアドレステーブル格納部２２２と同じであるため説明を省略する。管理テーブル格納部２７６は、第２判定部２４６より受け取った通信データに対して非同期処理部２６０の各処理部が行う処理を管理するための管理テーブルを格納する。図２３の（ｃ）に管理テーブ格納部２７６が格納する管理テーブルの一例を示す。図２３の（ｃ）をみると分かるように、第２実施形態に係る管理テーブルは、第１実施形態に係る管理テーブルからいくつかのフィールドを削除したものであり、基本的に第１実施形態に係る管理テーブルと同じである。従って、各フィールドの説明は省略する。
【０１３４】
非同期処理部２６０は、第２判定部２４６からアクセス要求を受け取ると、管理テーブルに当該通信データのための空のレコードを作成する。そして非同期処理部２６０は、要求者ユーザID７２２フィールドにアクセス要求から取り出したユーザIDを登録する。非同期処理部２６０はまた、要求７３０フィールドにアクセス要求を、処理状況７３２フィールドに「要求転送待ち」を、要求時刻７３４フィールドに受信部２４０において通信データが受信された時刻を登録する。また、転送処理部２５４の第１転送部２５８は、アクセス要求を転送する場合、非同期処理部２６０に転送完了の通知をする。通知を受けた非同期処理部２６０は、管理テーブルから該当するレコードを検索し、当該レコードの処理状況７３２フィールドを「応答受信待ち」に変更する。
【０１３５】
一方、第２判定部２４６からウェブ・サーバ３００の応答を受け取る場合、当該応答に対するレコードは既に管理テーブルに登録されている。そこで、非同期処理部２６０は、該当するレコードの応答７３０フィールドに、ウェブ・サーバ３００の応答または当該ウェブ・サーバ３００の応答へのポインタ情報を、処理状況７３２フィールドに、「応答返信待ち」を、応答時刻７３６フィールドに受信部２４０において通信データが受信された時刻を登録する。
【０１３６】
なお、処理状況７３２フィールドに登録される値は、非同期処理部２６０における通信データの処理状況である。第２実施形態に係る通信データの処理状況の状態遷移は、図９に示される状態遷移図から「要求承認待ち」状態と「応答承認待ち」状態を削除したものである。
【０１３７】
通信データがクライアント１００aのアクセス要求の場合、非同期処理部２６０は第１実施形態に係る非同期処理部２１６と同様、更に、管理テーブルの上記レコードの認証情報７２４フィールドに、ウェブ・サーバ３００がクライアント１００aに対して以前に作成した認証クッキー（Cookie）情報を登録する。また、非同期処理部２６０は、上記レコードの要求時刻７３４フィールドの値にアプリケーションテーブルの該当するレコードのセッション有効期限（図２３の（ｂ）を参照）を足して計算した時刻を、上記レコードのセッション維持予定時刻７２６フィールドに登録する。管理テーブルのその他のフィールドについては、非同期処理部２６０の各処理部の説明においてあわせて行う。
【０１３８】
仮応答部２６２および受領証発行部２６４は、第１実施形態に係る仮応答部２１８および受領証発行部２２０と同一の機能を有するので説明は省略する。なお、第２実施形態に係る受領証発行部２６４もまた、管理テーブルの該当レコードの受領証７２０フィールドに発行した受領証を、有効期限７３８フィールドに受領証の有効期限をそれぞれ登録する。また、第２実施形態に係る仮応答部２６２により作成される仮応答メッセージは、図１０に示す仮応答メッセージの例において最初の一文を適宜変更するだけでよい。例えば次のような一文に変更する。「次の要求に対する処理は、処理完了までに時間がかかり、ご使用のブラウザでは結果を受信できない可能性があると判断しました。」
【０１３９】
通知部２７２は、一定の間隔で管理テーブルを確認し、処理状況５８４フィールドの値が「応答返信待ち」であるレコードを検出する。そのようなレコードを検出した場合、通知部２７２は、クライアント１００aに、ウェブ・サーバ３００の応答を転送可能であることを通知する。通知の方法は、一例として電子メールを利用してよい。通知先のメールアドレスは、管理テーブルから読み出した要求者ユーザIDを検索キーとして、アドレステーブル格納部２６６に格納されるアドレステーブルから一致するレコードを検索することにより取得する。
【０１４０】
接続維持部２６８は、ウェブ・サーバ３００においてクライアント１００aとのセッションを維持させるために、クライアント１００aのアクセス要求がウェブ・サーバ３００へ転送されるまでの間、偽の通信データをウェブ・サーバ３００に定期的に送信する。偽の通信データの送信先は、ウェブ・アプリケーションIDを検索キーとして、アプリケーションテーブル（図２３の（ｂ）参照）から一致するレコードのセッション維持用URLを読み出すことにより取得する。また、ウェブ・サーバ３００へ送信する偽の通信データは、管理テーブルの認証情報７２４フィールドに登録された認証クッキー情報を使用する。接続維持部２６８による管理テーブルを用いた偽の通信データの具体的な送信方法は、第１実施形態において説明したのと同じであるから説明は省略する。
【０１４１】
第２転送部２７４は、ウェブ・サーバ３００の応答を転送可能であるとの通知を受けたクライアント１００aからの転送要求に応答して、ウェブ・サーバ３００の応答をクライアント１００aへ転送する。好ましくは、第２転送部２７４は、通知を受けたクライアント１００aからの転送要求に応答して、クライアント１００aから受領証を受け取ることを条件に、ウェブ・サーバ３００の応答をクライアント１００aへ転送する。管理テーブルを用いた、仮応答部２６２による受領証の検証および仮応答部２６２の検証結果に基づく第２転送部２７４による転送処理は、第１実施形態における仮応答部２１８および転送部２３４による転送処理と同じであるため説明は省略する。
【０１４２】
図２４を参照して、第２実施形態に係る中継サーバ２００ｂによるデータ通信の中継処理の処理の流れの一例を説明する。第２実施形態に係る中継サーバ２００ｂによる中継処理は、図１４を参照して説明した、第１判定部２０６による振分処理後の転送処理を除いて、基本的に第１実施形態に係る中継サーバ２００aのアクセス制御の処理と同じである。そこで、ここでは中継サーバ２００ｂによる転送処理についてのみ説明する。なお、図１５を参照して説明した判定プログラムによる判定処理、図１９を参照して説明した承認処理、および図２１を参照して説明したアクセス要求転送処理は、第２実施形態に係る中継サーバ２００ｂによるアクセス制御の処理に含まれない。
【０１４３】
第１判定部２４４による振分処理後の転送処理はステップ３００より開始し、優先度決定部２５０は、クライアント１００ａのユーザの分類に基づいて、受信部２４０において受信されたクライアント１００ａのアクセス要求の転送処理に対し優先度を決定する。待ち行列設定部２５２は、優先度決定部２５０が決定した優先度に基づいて、クライアント１００ａのアクセス要求の転送処理を待ち行列２４８の適切な位置に格納する（ステップ３０２）。その後アクセス要求は転送処理部２５４の要求情報格納部２５６に格納される。
【０１４４】
次に第１転送部２５８は、上記アクセス要求の転送処理よりも先に処理すべき転送処理が待ち行列２４８になくなると、上記アクセス要求の転送処理に対応するアクセス要求を要求情報格納部２５６から読み出して、対応するウェブ・サーバ３００へ転送する（ステップ３０４）。上記ステップ３０４と並行して第２判定部２４６は、待ち行列２４８に格納される情報に基づいて、上記アクセス要求よりも先にウェブ・サーバ３００へ転送されるアクセス要求が所定の数以上あるか否かを判定する（ステップ３０６）。そして第２判定部２４６は、先にウェブ・サーバ３００へ転送されるアクセス要求が所定の数以上ある場合、アクセス要求に対するウェブ・サーバ３００の応答をクライアント１００ａに転送するまでに一定以上の時間を要すると判断し（ステップ３０６：ＹＥＳ）、アクセス要求を非同期処理部２６０に渡す（ステップ３０８）。
【０１４５】
非同期処理部２６０による非同期処理は、図１６を参照して説明したのと基本的に同一であるからここでは説明しない。但し、承認要求の作成・送信を行う図１６のステップ１７６は、第２実施形態に係る非同期処理には含まれない。非同期処理において作成された仮応答メッセージは、上記アクセス要求に対する応答としてクライアント１００ａに送信される（ステップ３１０）。ステップ３０４において一定以上の時間を要しないと判定された場合（ステップ３０６：ＮＯ）、またステップ３１０の後、処理は終了する。なおステップ３０６乃至ステップ３１０は、ステップ３０４を実行するスレッドとは別のスレッドのより実行され、当該別のスレッドはステップ３０６またはステップ３１０を実行した後処理を終了する。
【０１４６】
一方、受信部２４０において転送したアクセス要求に対する応答が受信されると（ステップ３１０）、応答は第１判定部２４４を経て第２判定部２４６に渡され、第２判定部２４６は、応答に対応するアクセス要求に対する処理が非同期処理であったか否か判定する（ステップ３１２）。対応するアクセス要求に対し非同期処理を行った場合（ステップ３１２：ＹＥＳ）、第２判定部２４６は応答を非同期処理部２６０へ渡す。非同期処理部２６０は、該当するレコードを管理テーブルから検索し、当該レコードを更新する（ステップ３１４）。対応するアクセス要求に対し非同期処理を行っていない場合（ステップ３１２：ＮＯ）、またステップ３１４の後、処理は終了する。
【０１４７】
上記第２の実施形態に係る中継サーバ２００ｂでは、クライアント１００ａのアクセス要求に対するウェブ・サーバ３００の応答をクライアント１００ａに転送するまでに一定以上の時間を要するか否かの判定を、待ち行列２４８に格納される情報に基づいて、判定対象のアクセス要求よりも先にウェブ・サーバ３００のへ転送されるアクセス要求が所定の数以上あるか否かを判断することにより行った。上記第２の実施形態の変形として、中継サーバ２００ｂは、クライアント１００ａのアクセス要求をウェブ・サーバ３００へ転送してから所定時間内にウェブ・サーバ３００の応答を受け取ることができるか否かを判断することにより、ウェブ・サーバ３００の応答をクライアント１００ａに転送するまでに一定以上の時間を要するか否かの判定を行ってもよい。
【０１４８】
この変形例では、図２２に示す処理振分部２４２は、待ち行列２４８、優先度決定部２５０、および待ち行列設定部２５２をもつ必要はない。第２判定部２４６は、第１判定部２４４から受け取った通信データがクライアント１００ａのアクセス要求の場合、そのまま第１転送部２５８に渡し、送信部２７６を介してウェブ・サーバ３００へ転送させる。そして第２判定部２４６はアクセス要求の転送から所定時間内に対応するウェブ・サーバ３００の応答を受け取らなかった場合、管理テーブルに新たにレコードを作成するため、上記アクセス要求と「非同期処理」の判定結果を非同期処理部２６０へ渡す。また、第１判定部２４４から受け取った通信データがウェブ・サーバ３００の応答の場合、第２判定部２４６は、対応するアクセス要求に対する判定結果に応じて、当該応答を非同期処理部２６０または転送処理部２５４へ渡す。
【０１４９】
図２５を参照して、第２実施形態の上記変形例における転送処理の流れの一例を説明する。第１判定部２４４による振分処理後の転送処理はステップ３３２より開始し、第２判定部２４６は受信部２４０において受信されたクライアント１００ａのアクセス要求を第１転送部２５８に渡し、第１転送部はアクセス要求をウェブ・サーバ３００へ転送する。ステップ３３２と並行して、第２判定部２４６は、アクセス要求が転送された後所定の時間が経過するのを待ち（ステップ３３４）、所定の時間が経過後、上記アクセス要求に対するウェブ・サーバ３００の応答が受信部２４０において受信されたかどうか判定する（ステップ３３６）。
【０１５０】
所定時間内にウェブ・サーバ３００の応答が得られない場合（ステップ３３６：ＮＯ）、第２判定部２４６は、アクセス要求に対するウェブ・サーバ３００の応答をクライアント１００ａに転送するまでに一定以上の時間を要すると判断する。そして第２判定部２４６は、非同期処理部２６０に非同期処理を行わせるため、アクセス要求と「非同期処理」の判定結果を渡す（ステップ３３８）。なお、非同期処理部２６０による非同期処理は、図１６を参照して説明したのと基本的に同一であるからここでは説明しない。但し、承認要求の作成・送信を行う図１６のステップ１７６は、ステップ３３８に示す非同期処理には含まれない。
【０１５１】
その後、非同期処理において作成された仮応答メッセージは、仮応答部２６２より送信部２７６を介して、上記アクセス要求に対する応答としてクライアント１００ａへ送信される（ステップ３４０）。所定時間内にウェブ・サーバ３００の応答を受信できた場合（ステップ３３６：ＹＥＳ）、またステップ３４０の後、処理は終了する。なおステップ３３４乃至ステップ３４０は、ステップ３３２を実行するスレッドとは別のスレッドのより実行され、当該別のスレッドはステップ３３４またはステップ３４０を実行した後処理を終了する。
【０１５２】
一方、受信部２４０において転送したアクセス要求に対するウェブ・サーバ３００の応答が受信されると、当該受信は第１判定部２４４を経て第２判定部２４６に渡され（ステップ３４２）、第２判定部２４６は、当該応答に対応するアクセス要求に対する処理が非同期処理であったか否か判定する（ステップ３４４）。対応するアクセス要求に対し非同期処理を行った場合（ステップ３４４：ＹＥＳ）、第２判定部２４６は当該応答を非同期処理部２６０へ渡す。非同期処理部２６０は、該当するレコードを管理レコードから検索し、当該レコードを更新する（ステップ３４６）。対応するアクセス要求に対し非同期処理を行っていない場合（ステップ３４４：ＮＯ）、またステップ３４６の後、処理は終了する。
【０１５３】
上記第２の実施形態の更なる変形例として、中継サーバ２００ｂは、ウェブ・サーバ３００の応答をクライアント１００ａに転送するまでに一定以上の時間を要するか否かの判定を、現在のウェブ・サーバ３００の負荷状態に基づいて判定してもよい。この更なる変形例では、図２２に示す処理振分部２４２は、待ち行列２４８、優先度決定部２５０、および待ち行列設定部２５２をもつ代わりに、例えば図２６に示すようなサーバテーブルをもつ。ここでServer＿ID７５０フィールドはウェブ・サーバ３００のサーバ名を記憶する。IPアドレス７５２フィールドは、ウェブ・サーバ３００のＩＰアドレスを記憶する。状況７５４フィールドは、ウェブ・サーバ３００の活動状態（ActiveまたはInactiveのいずれか）を記憶する。負荷７５６フィールドは、ウェブ・サーバ３００の負荷状態を記憶する。中継サーバ２００ｂは、ウェブ・サーバ３００の活動状態や負荷状態に関する通知を、ウェブ・サーバ３００からに定期的に受けるものとする。
【０１５４】
この更なる変形例においても、第２判定部２４６は、第１判定部２４４から受け取った通信データがクライアント１００ａのアクセス要求の場合、そのまま第１転送部２５８に渡し、送信部２７６を介してウェブ・サーバ３００へ転送させる。またこれと並行して第２判定部２４６は、アクセス要求に含まれる送信先ＩＰアドレスや、データ部分に含まれるHTTPメッセージのリクエストURIに対応する
サーバ名を検索キーとして、一致するレコードをサーバテーブルから検索し、ウェブ・サーバ３００の負荷状態を確認する。ウェブ・サーバ３００の負荷が高い場合、第２判定部２４６は、管理テーブルに新たにレコードを作成するため、上記アクセス要求と「非同期処理」の判定結果を非同期処理部２６０へ渡す。また、第１判定部２４４から受け取った通信データがウェブ・サーバ３００の応答の場合、第２判定部２４６は、対応するアクセス要求に対する判定結果に応じて、当該応答を非同期処理部２６０または転送処理部２５４へ渡す。
【０１５５】
図２７を参照して、第２実施形態の更なる変形例における転送処理の流れの一例を説明する。第１判定部２４４による振分処理後の転送処理はステップ３３５０より開始し、第２判定部２４６は受信部２４０において受信されたクライアント１００ａのアクセス要求を第１転送部２５８に渡し、第１転送部はアクセス要求をウェブ・サーバ３００へ転送する。ステップ３５０と並行して、第２判定部２４６は、サーバテーブルから該当するレコードを読み出し、ウェブ・サーバ３００の負荷状態を取得する（ステップ３５２）。
【０１５６】
所定の以上の負荷がウェブ・サーバ３００にかかっている場合（ステップ３５４：ＹＥＳ）、第２判定部２４６は、アクセス要求に対するウェブ・サーバ３００の応答をクライアント１００ａに転送するまでに一定以上の時間を要すると判断する。そして第２判定部２４６は、非同期処理部２６０に非同期処理を行わせるため、アクセス要求と「非同期処理」の判定結果を渡す（ステップ３５６）。なお、非同期処理部２６０による非同期処理は、図１６を参照して説明したのと基本的に同一であるからここでは説明しない。但し、承認要求の作成・送信を行う図１６のステップ１７６は、ステップ３３８に示す非同期処理には含まれない。
【０１５７】
その後、非同期処理において作成された仮応答メッセージは、仮王頭部２６２により送信部２７６を介して、アクセス要求に対する応答としてクライアント１００ａへ送信される（ステップ３５８）。ウェブ・サーバ３００にかかっている負荷が所定の値よりも小さい場合（ステップ３５４：ＮＯ）、またステップ３５８の後、処理は終了する。なおステップ３５２乃至ステップ３５８は、ステップ３５０を実行するスレッドとは別のスレッドのより実行され、当該別のスレッドはステップ３５２またはステップ３５８を実行した後処理を終了する。
【０１５８】
一方、受信部２４０において転送したアクセス要求に対するウェブ・サーバ３００の応答が受信されると、当該受信は第１判定部２４４を経て第２判定部２４６に渡され（ステップ３６０）、第２判定部２４６は、当該応答に対応するアクセス要求に対する処理が非同期処理であったか否か判定する（ステップ３６２）。対応するアクセス要求に対し非同期処理を行った場合（ステップ３６２：ＹＥＳ）、第２判定部２４６は当該応答を非同期処理部２６０へ渡す。非同期処理部２６０は、該当するレコードを管理レコードから検索し、当該レコードを更新する（ステップ３６４）。対応するアクセス要求に対し非同期処理を行っていない場合（ステップ３６２：ＮＯ）、またステップ３６４の後、処理は終了する。
【０１５９】
以上のように、第２実施形態に係る中継サーバ２００ｂは、ウェブ・サーバ３００の負荷が高く、ウェブ・サーバ３００からアクセス要求に対する応答を受信するまでに一定以上の時間を要すると判断した場合、そのアクセス要求に対する応答として、クライアントにウェブ・サーバ３００の応答を別途送信することを知らせる仮応答メッセージを送信する。そのため、クライアント１００ａのアクセス要求に対するウェブ・サーバ３００の応答の転送の遅延を気にする必要がなくなり、中継サーバ２００ｂにおいて、ウェブ・サーバ３００が提供するサービスを受けるために有料で登録した有料ユーザや限られた処理能力をもつ小型の携帯情報端末によるアクセス要求を優先するなど、受信した順序とは異なる順序で通信データが処理されるような追加の処理を行うことが可能となる。
【０１６０】
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。上記の実施形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【図面の簡単な説明】
【０１６１】
【図１】本発明の実施形態に係るデータ通信の中継方法を適用するシステムの構成の一例を示す図である。
【図２】本発明の実施形態に係る中継サーバ２００のハードウェア構成の一例を示す図である。
【図３】第１実施形態に係る中継サーバ２００ａの機能構成の一例を示す図である。
【図４】本発明の第１実施形態に係るＵＲＩテーブルの一例を示す図である。
【図５】本発明の第１実施形態に係る判定プログラムのリストの一例を示す図である。
【図６】（ａ）は、本発明の第１実施形態に係るアクセス制御リストの一例を示す図である。（ｂ）は、本発明の第１実施形態に係るユーザテーブルの一例を示す図である。（ｃ）は、本発明の第１実施形態に係る保護ポリシーリストの一例を示す図である。
【図７】（ａ）は、本発明の第１実施形態に係るアプリケーションテーブルの一例を示す図である。（ｂ）は、本発明の第１実施形態に係るアドレステーブルの一例を示す図である。
【図８】本発明の第１実施形態に係る管理テーブルの一例を示す図である。
【図９】本発明の第１実施形態に係る非同期処理部２１６における処理状況の遷移の一例を示す図である。
【図１０】第１実施形態に係る仮応答部２１８により作成される仮応答メッセージの一例を示す図である。
【図１１】第１実施形態に係る承認処理部２２４により作成される承認依頼の一例を示す図である。
【図１２】第１実施形態に係るアクセス制御の処理の流れの一例を示すフローチャートである。
【図１３】第１実施形態に係る通信データの振分処理の処理の流れの一例を示すフローチャートである。
【図１４】第１実施形態に係る転送処理の処理の流れの一例を示すフローチャートである。
【図１５】第１実施形態に係る判定プログラムの判定処理の処理の流れの一例を示すフローチャートである。
【図１６】第１実施形態に係る非同期処理の処理の流れの一例を示すフローチャートである。
【図１７】第１実施形態に係る接続維持処理の処理の流れの一例を示すフローチャートである。
【図１８】本発明の第１実施形態に係る転送要求処理の処理の流れを示すフローチャートである。
【図１９】本発明の第１実施形態に係る承認処理の処理の流れを示すフローチャートである。
【図２０】本発明の第１実施形態に係るローカル処理の処理の流れの一例を示すフローチャートである。
【図２１】第１実施形態に係る要求転送処理の処理の流れの一例を示すフローチャートである。
【図２２】第２実施形態に係る中継サーバ２００ｂの機能構成の一例を示す図である。
【図２３】（ａ）は、本発明の第１実施形態に係る優先度決定テーブルの一例を示す図である。（ｂ）は、本発明の第１実施形態に係るアプリケーションテーブルの一例を示す図である。（ｃ）は、本発明の第１実施形態に係る管理テーブルの一例を示す図である。
【図２４】第２実施形態に係る転送処理の処理の流れの一例を示すフローチャートである。
【図２５】第２実施形態の第１変形例に係る転送処理の処理の流れの一例を示すフローチャートである。
【図２６】第２実施形態の第２変形例に係るに係るサーバテーブルの一例を示す図である。
【図２７】第２実施形態の第２変形例に係る転送処理の処理の流れの一例を示すフローチャートである。
【図１】
0005022141.tif 000002
【図２】
0005022141.tif 000003
【図３】
0005022141.tif 000004
【図４】
0005022141.tif 000005
【図５】
0005022141.tif 000006
【図６】
0005022141.tif 000007
【図７】
0005022141.tif 000008
【図８】
0005022141.tif 000009
【図９】
0005022141.tif 000010
【図１０】
0005022141.tif 000011
【図１１】
0005022141.tif 000012
【図１２】
0005022141.tif 000013
【図１３】
0005022141.tif 000014
【図１４】
0005022141.tif 000015
【図１５】
0005022141.tif 000016
【図１６】
0005022141.tif 000017
【図１７】
0005022141.tif 000018
【図１８】
0005022141.tif 000019
【図１９】
0005022141.tif 000020
【図２０】
0005022141.tif 000021
【図２１】
0005022141.tif 000022
【図２２】
0005022141.tif 000023
【図２３】
0005022141.tif 000024
【図２４】
0005022141.tif 000025
【図２５】
0005022141.tif 000026
【図２６】
0005022141.tif 000027
【図２７】
0005022141.tif 000028