以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
図1は、本発明のデータ通信の中継方法を適用するシステムの構成の一例を示した概念図である。本実施の形態のシステムは、インターネット150およびイントラネット350にネットワーク接続された中継サーバ200を含む。クライアント100a、bはインターネット150にネットワーク接続されている。ウェブ・サーバ300はイントラネット350にネットワーク接続されている。
本発明の実施形態では、中継サーバ200は、クライアント100aからウェブ・サーバ300へのアクセス要求をインターネットを介して受信する。好適にはアクセス要求は、当業者に周知のHTTPリクエストとして実現される。アクセス要求を受信した中継サーバ200は、アクセス要求に対するウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要するか否かを判定する。転送するまでに一定以上の時間を要する理由としては次のものが挙げられる。
1)アクセス要求をウェブ・サーバ300へ転送することについて、重要情報保護の観点から承認者から承認を得る必要がある。
2)アクセス要求に対するウェブ・サーバ300の応答をクライアント100aへ転送することについて、重要情報保護の観点から承認者から承認を得る必要がある。
3)ウェブ・サーバ300の負荷が高く、ウェブ・サーバ300においてアクセス要求の処理に時間がかかる。
上記いずれかの理由によりウェブ・サーバ300の応答をクライアント100aへ転送するまでに一定以上の時間を要すると判定した場合、中継サーバ200は、ウェブ・サーバ300の応答を中継サーバ200からクライアント100aへ別途送信することを知らせる仮応答メッセージを作成し、当該仮応答メッセージをインターネット150を介してクライアント100aへ送信する。上記1)または2)の理由によりウェブ・サーバ300の応答をクライアント100aへ転送するまでに一定以上の時間を要すると判定した場合、中継サーバ200は更に、インターネット150を介して承認者としてのクライアント100bへ承認処理を要求する。承認処理の要求は、一例として電子メールを利用してもよい。
承認者により承認が得られ、またはウェブ・サーバ300においてアクセス要求が処理され、中継サーバ200においてウェブ・サーバ300の応答をクライアント100aへ転送できる状態になると、中継サーバ200は、ウェブ・サーバ300の応答をインターネット150を介してクライアント100aへ転送する。好適には、中継サーバ200はウェブ・サーバ300の応答を転送できる状態になったことを電子メール等によりクライアント100aへ通知し、クライアント100aからの転送要求に応答してウェブ・サーバ300の応答をクライアント100aへ転送する。
本発明の実施の形態では、クライアント100aはウェブ・サーバ300から所望のデータを入手するために、インターネット150を介してアクセス要求を送信する。中継サーバ200において所望のデータをクライアント100aへ転送するまでに一定以上の時間を要すると判定された場合、クライアント100aは中継サーバ200から仮応答メッセージを受信し、これによりクライアント100aは通信を一旦終了する。その後クライアント100aは所望のデータを中継サーバ200から別途受信する。好適にはクライアント100aは中継サーバ200から所望のデータを転送できる状態になった旨の通知を受信し、当該通知の受信に応答して所望のデータの転送を中継サーバ200に要求する。
本発明の実施の形態では、承認者としてのクライアント100bは、電子メール等により中継サーバ200からインターネット150を介して承認の依頼を受信する。承認の依頼を受信したクライアント100bの承認者は、承認依頼に含まれるアクセス要求者やアクセス対象の情報に基づいて承認の可否を決定し、クライアント100bを操作してインターネット150を介して承認結果を中継サーバ200へ送信する。
クライアント100a、bは、周知のインターネットに接続可能な端末で当業者は適宜実現可能である。クライアント100a、bとインターネット150の接続は、ダイアルアップ接続等によりISP(Internet Service Provider、図示せず)を介して行ってもよい。クライアント100a、bからISPへの接続はダイアルアップ接続に限られず、専用線、ADSL(Asymmetric Digital Subscriber Line)、CATV(Cable Television)等を用いた常時接続により行ってもよい。
本発明の実施の形態では、ウェブ・サーバ300は、中継サーバ200から転送されたクライアント100aのアクセス要求に応じて、適切な応答を中継サーバ200に返す。ウェブ・サーバ300の構築方法は一般に周知であり、具体的には、マイクロソフト社が提供するマイクロソフト社のMicrosoft Internet Information Server(R)やフリーウェアであるApacheなどのソフトウェアを使用して当業者は適宜実現可能である。
本発明の実施の形態では、インターネット150は、クライアント100a、bと中継サーバ200を接続する通信経路として機能する。また、イントラネット350はウェブ・サーバ300と中継サーバ200を接続する通信経路として機能する。当業者に周知の通り、インターネット150とイントラネット350は、TCP/IP(Transmission Control Protocol/Internet Protocol)を用いてコンピュータ・システム間を接続する。インターネット150とイントラネット350では、グローバル・アドレスまたはローカル・アドレスで表されるIPアドレスによって相互に通信するコンピュータが特定される。
本発明の実施の形態において、中継サーバ200は、図2のようなハードウェア構成を有するコンピュータ・システムで実現することができる。コンピュータ・システムは、ホストコントローラ405により相互に接続されるCPU400、RAM410、グラフィックコントローラ415及び表示装置420を含むCPU周辺部と、入出力コントローラ425によりホストコントローラ405に接続される通信インターフェース440、ハードディスクドライブ430、及びCD−ROMドライブ435を含む入出力部と、入出力コントローラ425に接続されるスーパーI/Oコントローラ470及びスーパーI/Oコントローラ445に接続されるフレキシブルディスクドライブ450、フラッシュROM455、ならびにキーボードマウスコントローラ460を有するレガシー入出力部を備える。
ホストコントローラ405は、RAM410と、高い転送レートでRAM410をアクセスするCPU400及びグラフィックコントローラ415とを接続する。CPU400は、フラッシュROM455やRAM410に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ415は、CPU400等がRAM410内に設けたフレームバッファ上に生成する画像データを取得し、表示装置420上に表示させる。これに代えて、グラフィックコントローラ415は、CPU400等が生成する画像データを格納するフレームバッファを内部に含んでもよい。
入出力コントローラ425は、比較的高速な入出力装置である通信インターフェース440、ハードディスクドライブ430、及びCD−ROMドライブ435をホストコントローラ405と接続する。通信インターフェース440は、通信アダプタ(イーサネット(R)・カードやトークンリング・カード)等を介してネットワークに接続し、他のコンピュータ等と通信する。ハードディスクドライブ430は、コンピュータ・システムが使用するプログラム及びデータを格納する。CD−ROMドライブ435は、CD−ROMからプログラム又はデータを読み取り、RAM410を介してCPU400に提供する。
また、入出力コントローラ425には、フレキシブルディスクドライブ450やキーボードマウスコントローラ460等の比較的低速な入出力装置と、フラッシュROM455とが接続される。フラッシュROM455は、コンピュータの起動時にCPU400が実行するブートプログラムや、コンピュータ・システムのハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ450は、フレキシブルディスクからプログラムまたはデータを読み取り、RAM410を介してCPU400に提供する。スーパーI/Oコントローラ445は、フレキシブルディスクや、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
クライアント100a、b、ウェブ・サーバ300も同様のハードウェア構成を有するコンピュータ・システムによって実現可能である。本発明の実施に使用される中継サーバ200、クライアント100a、b、ウェブ・サーバ300の各ハードウェア構成要素を、複数のマシンを組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得るものであり、それらの変更は、当然に本発明の思想に包含される概念である。
中継サーバ200、クライアント100a、b、ウェブ・サーバ300には、ハードウェア資源を活用するためのオペレーティング・システム(OS)あるいはミドルウェア等のソフトウェアを備えることが好ましい。中継サーバ200、ウェブ・サーバ300には、インターナショナル・ビジネス・マシーンズ社が提供するオペレーティング・システムであるAIX(R)を備えたサーバ・コンピュータであるeServer、pServer(R)で実現される。またクライアント100a、bは、好適には、マイクロソフト社が提供するオペレーティング・システムであるWindowsXP(R)を備えたパーソナル・コンピュータで実現される。これらのオペレーティング・システムは、TCP/IPプロトコルによる通信機能を標準でもち、本発明が必要とする通信機能を好適に提供できるものであるが、使用できるオペレーティング・システムはこれらに限定されない。
また、中継サーバ200には、本発明に係る中継用プログラムがアプリケーションプログラムとしてインストールされる。そして、上述したハードウェア構成とソフトウェア構成とが相まって、中継サーバ200は各実施形態において後述する機能を発揮する。各コンピュータ・システムに提供されるコンピュータプログラム(オペレーティング・システム及びアプリケーションプログラム)は、フレキシブルディスク、CD−ROM、DVDやPD等の光学記録媒体、MD等の光磁気記憶媒体、ICカード等の半導体メモリ等の記録媒体に格納されて、或いはWebサイトからダウンロードする等ネットワークを介して利用者によって提供される。プログラムは、記録媒体から読み出され入出力コントローラ425を介してコンピュータにインストールされ、又はネットワーク上の他のコンピュータから読み出され通信インターフェース440を介してコンピュータにインストールされ、コンピュータにおいて実行される。
(第1実施形態)図3は、第1実施形態に係る中継サーバ200aの機能構成を示す。第1実施形態では、ハードディスクドライブ430のハードディスクに格納された中継用プログラムは、例えば、ユーザの操作に応答してオペレーティング・システムの働きによりRAM410にロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他周辺機器への指令を出すことにより、中継サーバ200aを、受信部202、処理振分部204、同期処理部212、非同期処理部216、送信部234として機能させる。
受信部202は、他のコンピュータ・システムから通信データを受信する。受信部202において受信される通信データは、クライアント100aからのアクセス要求、同じくクライアント100aからの応答転送要求、アクセス要求に対するウェブ・サーバ300の応答、承認者としてのクライアント100bの承認結果報告を含み得る。処理振分部204は、受信部202により受信された通信データをいずれかの処理部に振り分ける機能を有し、第1判定部206、第2判定部208およびポリシー格納部210を含む。処理振分部204は、受信部202から受け取った通信データを第1判定部206に渡す。
第1判定部206は、受信部から受け取った通信データについて、ローカル処理、すなわち中継サーバ200aにおける処理を要求するものであるか否かを判定する。当該判定は、通信データのデータ部分に含まれるHTTPメッセージのリクエストURIが、中継サーバ200aに対応付けられる特定のURIであるかどうかを判定することにより行われる。ローカル処理を要求するものであると判定した場合、第1判定部206は、後述する非同期処理部216の承認処理部220または仮応答部224に通信データを渡す。一方、ローカル処理を要求するものではない、すなわち転送処理を要求するものであると判定した場合、第1判定部206は、通信データを第2判定部208に渡す。
第2判定部208は、第1判定部206から受け取った通信データ(クライアント100aからのアクセス要求またはウェブ・サーバ300からのアクセス要求に対する応答のいずれかであり得る)
について、アクセス要求に対するウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要するか否かを判定する。第1実施形態において判定は、ポリシー格納部210に格納される情報に基づいて行われる。ポリシー格納部210は、送信先へ転送するために承認者から承認を得る必要のある通信データを識別するための基準を定めるポリシーを格納する。そして第1実施形態に係る第2判定部208は、ポリシーに基づいて通信データの転送のために承認者から承認を得る必要があるか否かを判定することにより、ウェブ・サーバ300からの応答をクライアント100aに転送するまでに一定以上の時間を要するか否かを判定する。
ポリシー格納部210に格納されるポリシーは、クライアント100aのアクセス要求に含まれる、要求元情報、要求先情報、及び要求内容の少なくとも1つに関して、転送するために承認者から承認を得る必要のある通信データを識別するための基準を定めるものであってよい。ここで要求元情報には、送信元IPアドレス、ユーザIDが含まれる。要求先情報には、送信先IPアドレス、URIが含まれる。要求内容には、HTTPリクエスト・メッセージのメッセージ・ボディが含まれる。これに代えてあるいはこれに加えてポリシーは、ウェブ・サーバ300の応答に含まれる、応答元情報、応答先情報、及び応答内容の少なくとも1つに関して、転送するために承認者から承認を得る必要のある通信データを識別するための基準を定めるものであってもよい。ここで応答元情報には、送信元IPアドレスが含まれる。応答先情報には、送信先IPアドレスが含まれる。応答内容には、HTML文書などのコンテンツ情報、HTTPステータス・コードのようなサーバの応答状況、HTTPヘッダのようなHTTPレスポンス・メッセージのヘッダ情報などHTTPレスポンス・メッセージの全てが含まれる。またポリシー格納部210は、クライアント100aのアクセス要求に設定され得る要求先ごとに、適用されるポリシーを、当該ポリシーにより承認が必要であると判定される通信データの承認依頼先と関連付けて格納してもよい。
図4乃至図6を参照して、ポリシー格納部210に格納されるポリシーの一例を説明する。図4に示すURIテーブル500はポリシーの一部をなし、アクセス要求に指定され得るアクセス要求対象としてのURI502を、当該アクセス要求または当該アクセス要求に対する応答に適用するべきポリシーに関連付ける。なおテーブル中空欄となっている箇所は、上位のURIの設定を承継する。サーバ504フィールドは、URI502フィールドに示されるURIを有するサーバのサーバIDを記憶する。中継サーバ200aは、アクセス要求に指定されたURIを有するウェブ・サーバを、サーバ504フィールドを参照することにより知ることができる。
要求判定プログラム506のフィールドは、アクセス要求対象としてURI502フィールドに示されるURIを指定するアクセス要求に対して第2判定部208が起動するプログラムのプログラムIDを記憶する。同様に応答判定プログラム508は、アクセス要求対象としてURI502フィールドに示されるURIを指定するアクセス要求に対する応答に対して第2判定部208が起動するプログラムのプログラムIDを記憶する。すなわち第2判定部208は、要求判定プログラム506フィールドまたは応答判定プログラム508フィールドに記憶されるプログラムIDを有するプログラムに実際の判定を行わせる。
アプリケーション510フィールドは、URI502フィールドに示されるURIに関連してウェブ・サーバ300上で実行されるウェブ・アプリケーションのウェブ・アプリケーションIDを記憶する。なお、アプリケーション510フィールドに記憶されるウェブ・アプリケーションIDは、第2判定部208が通信データの処理を後述する非同期処理部216に振り分ける際に、非同期処理部216に渡される。アクセス制御リスト(Access Control List 、以下ACLという。)512フィールドは、URI502フィールドに示されるURIについてアクセス権限のあるユーザとその権限の内容を定めるACLのIDを記憶する。図6の(a)に、ポリシー格納部210に格納されるポリシーの一部であるACLの一例を示す。ACL_ID520フィールドはACLのIDを記憶する。User_ID・Group_ID522フィールドは、アクセス権限のあるユーザのユーザIDまたはグループのグループIDを記憶する。権限524フィールドは与えられる権限の内容、すなわち読み出し(Read)、書き込み(Write)、またはその両方のいずれかが記憶される。
なお、ポリシー格納部210は、ポリシーの一部として図6の(b)に示すようなユーザテーブルを更に格納する。User_ID526フィールド及びパスワード528フィールドは、ウェブ・サーバ300のログイン画面でクライアント100のユーザが入力するユーザIDとパスワードをそれぞれ記憶する。また、グループ530フィールドは、ユーザIDにより識別されるユーザが属するグループのグループIDを記憶する。
図4に戻って保護ポリシー514(Protect Object Policy、以下POPという)フィールドは、URI502フィールドに示されるURIに対して適用するべき追加のアクセス制御方法を記憶する。図6の(c)にポリシー格納部210に格納されるポリシーの一部であるPOPリストの一例を示す。POP_ID532フィールドは、POPのIDを記憶する。アクセス場所534フィールドはアクセスを許可するクライアント100の設置場所を記憶する。一例として設置場所は送信元IPアドレスを利用してよい。なお、SSL(Secure Socket Layer)やIPSec(Security Architecture for Internet Protocol)等の通信者(人、使用される機器、経由する通信機器を含む)を特定可能な通信プロトコルを利用する場合、設置場所に代えてアクセスを許可する通信者を記憶してもよい。暗号化通信536フィールドは暗号化の要・不要を記憶する。利用可能時間帯538フィールドは、アクセスを許可する時間帯を記憶する。以上のように第1実施形態に係るポリシー格納部210は、一例として、URIテーブル500、ACL、ユーザテーブル、POPリストをポリシーとして格納する。
上述したように、第1実施形態に係る第2判定部208は、ポリシーに基づいて通信データの転送のために承認者から承認を得る必要があるか否かの判定を判定プログラムに行わせる。起動する判定プログラムの選択は、通信データのデータ部分に含まれるHTTPメッセージのリクエストURIが一致するレコードを、URIテーブル500から検索することにより行う。なお、中継サーバ200aはクライアント100aのアクセス要求と当該アクセス要求に対するウェブ・サーバ300の応答を関連付けて管理し処理する。すなわち、中継サーバ200aは、クライアント100aから新規のアクセス要求を受信するたびに新たに1つのインスタンスを生成し、当該インスタンスによりクライアント100aのアクセス要求とアクセス要求に対する応答とが一緒に処理される。従って通信データがウェブ・サーバ300の応答の場合、第2判定部208は、対応するアクセス要求に基づいて起動すべき判定プログラムを選択する。
第2判定部208により起動される判定プログラムは、入力として、受信部202により受信された通信データ、URIテーブル500の対応するACL510フィールドとPOP512フィールドにそれぞれ記憶されたACL_IDとPOP_IDとを受け取る。そして判定を終了すると判定プログラムは判定結果を第2判定部208に返す。判定結果は、通信データの転送のために承認者から承認を得る必要があることを示す「非同期処理」またはアクセス要求の許可・拒否を直ちに判断可能であることを示す「同期処理」のいずれかである。判定結果が「同期処理」の場合、判定プログラムは、ACLとPOPとに従ったアクセス要求の「許可」または「拒否」のいずれかの判定結果を更に返す。また、判定結果が「非同期処理」の場合、承認を得る必要があることを示す「承認」を更に返す。
「同期処理」の判定結果を受け取る場合、第2判定部208は、「許可」または「拒否」の判定結果とともに通信データを後述する同期処理部214に渡す。一方、「非同期処理」の判定結果を受け取る場合、第2判定部208は、「承認」の判定結果とともに通信データを後述する非同期処理部216に渡す。なお、上述したように中継サーバ200aは、クライアント100aのアクセス要求と当該アクセス要求に対するウェブ・サーバ300の応答を関連付けて管理し処理する。従って、あるクライアント100aのアクセス要求に対して「非同期処理」との判定結果が出た場合、当該アクセス要求に対するウェブ・サーバ300の応答に対し「同期処理」との判定結果が出た場合でも当該応答は「非同期処理」扱いとなり、非同期処理部216に渡される。
次に図5を参照して、要求判定プログラム506のフィールドおよび応答判定プログラム508のフィールドに登録され得る判定プログラムの例を説明する。図5に示す判定プログラムリスト518の番号1にリストされる判定プログラムDefaultPluginは、受け取った通信データを対応するACLとPOP(対応するPOPがない場合もある)に基づいて調査し、判定結果として「同期処理」とアクセス要求の「許可」または「拒否」のいずれかの判定結果を返す。なお、判定プログラムDefaultPluginは従来のアクセス制御技術に従うものであるため、詳細な説明は省略する。
判定プログラムリスト518の番号2にリストされる判定プログラム部門機密情報Pluginは、判定プログラムDefaultPluginと原則同様の判定処理を行う。但し対応するACLとPOP(対応するPOPがない場合もある)に基づく判定結果が「許可」であっても、アクセス要求の要求者が社員グループに属し、かつアクセス要求に対応するウェブ・サーバ300の応答に「機密(または英語のConfidential)」の文字が含まれる場合は、判定結果として「非同期処理」かつ「承認」を返す。
部門機密情報Pluginによる判定処理を図4に示すレコード516を例に具体的に説明する。ここで受信部202により受信される通信データはウェブ・サーバ300の応答とし、当該応答に対応するアクセス要求が、URIとして/jct1/ear1/web1を指定したものとする。第2判定部208は、/jct1/ear1/web1とサーバ1を検索キーとして、URIテーブル500からレコード516を検索する。第2判定部208はまた、対応するアクセス要求に含まれるリクエスト・メッセージのAuthorizationリクエストヘッダフィールドのフィールド値からユーザIDとパスワードを求める。なおHTTPリクエスト・メッセージにAuthorizationリクエストヘッダフィールドがない場合、一例として第2判定部208は、アクセス要求の送信者のユーザIDを無認証ユーザIDとして通信データを処理する。そして第2判定部208はレコード516に基づいて部門機密情報Pluginを起動し、当該部門機密情報Pluginに入力として、ウェブ・サーバ300の応答に含まれるレスポンス・メッセージ、機密Read、POP機密1、更に、求めたユーザIDを渡す。
部門機密情報Pluginは、ポリシー格納部210に格納されるACLからACL_IDが機密Readであるレコードを読み出し、ウェブ・サーバ300の応答に対応するアクセス要求の送信者、すなわちウェブ・サーバ300の応答を受け取るユーザの権限と権限の内容を確認する。図6の(a)に示されるACLをみると、機密Readは、部門1グループおよび社員グループに対してReadのアクセス権限を与える。そこで、部門機密情報Pluginは、ポリシー格納部210に格納されるユーザテーブル(図6の(b)参照)から、第2判定部208から受け取ったユーザIDとパスワードに一致するレコードを検索し、ウェブ・サーバ300の応答に対応するアクセス要求の送信者が部門1グループまたは社員グループのいずれかのグループに属するか否かを判定する。
アクセス要求の送信者が部門1グループおよび社員グループのいずれのグループにも属さない場合、部門機密情報Pluginは判定結果として「同期処理」および「拒否」を返す。アクセス要求の送信者が部門1グループに属する場合、部門機密情報PluginはPOPリストからPOP機密1に一致するレコードを読み出す。図6の(c)に示されるPOPリストをみると、POP機密1は暗号化通信を要求する。そこで部門機密情報Pluginは判定結果として「同期処理」および「許可」を返すとともに、暗号化通信が必要である旨の判定結果を返す。
一方、アクセス要求の送信者が部門1グループには属さず、社員グループに属する場合、部門機密情報Pluginはレスポンス・メッセージのメッセージ・ボディに「機密(または英語のConfidential)」の文字が含まれるか否か判定する。これに代えてまたはこれに加えて部門機密情報Pluginは、レスポンス・メッセージのメッセージ・ボディに、重要情報であることを示す「機密」以外の他の文字、記号、数字が含まれているか否かを判定してもよい。「機密」の文字が含まれている場合、部門機密情報Pluginは判定結果として「非同期処理」および「承認」を返す。「機密」の文字が含まれていない場合、部門機密情報Pluginは判定結果として「同期処理」および「許可」を返す。
判定プログラムリスト518の番号3にリストされる判定プログラム高額取引Pluginは、判定プログラムDefaultPluginと原則同様の判定処理を行う。但し対応するACLとPOP(対応するPOPがない場合もある)に基づく判定結果が「同期処理」かつ「許可」であっても、アクセス要求に対応するウェブ・サーバ300の応答に高い金額が含まれる場合は、判定プログラム高額取引Pluginは判定結果として「非同期処理」および「承認」を返す。高い金額が含まれるか否かの判定は、一例として、レスポンス・メッセージのメッセージ・ボディに、“US$”の記号と当該記号に続いて予め設定した閾値を超える数字が含まれるような場合を検出させることにより行ってよい。
なお、上記説明した部門機密情報Pluginや高額取引Pluginは、本発明の第1実施形態に係る第2判定部208の処理を説明するための例示であり、ポリシーに基づいて通信データの転送のために承認者から承認を得る必要があるか否かの判定を行う判定プログラムとして他の判定プログラムを利用可能であることはいうまでもない。例えば、通信データがアクセス要求である場合、アクセス要求に含まれるURI、ユーザID、アクセス時刻、端末IPアドレスの少なくとも1つに対して所定の条件を満たすか否かを判定することにより「非同期処理」および「承認」を返す判定プログラムを利用することもできる。同様に、通信データがウェブ・サーバ300の応答である場合、HTTPレスポンス・メッセージのメッセージ・ボディに含まれるHTMLコンテンツ情報に限らず、時刻などの情報を含むHTTPヘッダやHTTPステータス・コードの少なくとも1つに対して所定の条件を満たすか否かを判定することにより「非同期処理」および「承認」を返す判定プログラムを利用することもできる。
同期処理部212は、第2判定部208から受け取った通信データを、同じく第2判定部208から受け取った判定結果に従って処理する。すなわち「許可」の判定結果を受け取った場合、同期処理部212は送信部234を介して通信データを通信データの送信先へ転送する。ここで通信データがクライアント100aのアクセス要求である場合、送信先はアクセス要求先のウェブ・サーバ300であり、
同期処理部212は、第2判定部208から、アクセス要求先のURIに対応するウェブ・サーバ300の情報を取得する。また、通信データがクライアント100aのアクセス要求に対するウェブ・サーバ300の応答である場合、送信先は、アクセス要求を送信したクライアント100aであり、同期処理部212は、第2判定部208から、当該応答に対応するアクセス要求の送信元の情報を取得する。
一方「拒否」の判定結果を受け取った場合、同期処理部212はエラーメッセージを作成する。そして同期処理部212は、作成したエラーメッセージを送信部234を介して、アクセス要求を送信したクライアント100aに返す。すなわち判定結果が「拒否」の場合、通信データがクライアント100aのアクセス要求に対するウェブ・サーバ300の応答であっても、エラーメッセージはアクセス要求を送信したクライアント100aに送信される。
非同期処理部216は、転送のために承認者から承認を得る必要があると判定された通信データを処理する機能を有し、仮応答部218、アドレステーブル格納部222、承認処理部224、アプリケーションテーブル格納部226、接続維持部228、転送部230、管理テーブル格納部232を含む。
アプリケーションテーブル格納部226は、クライアント100にサービスを提供するためにウェブ・サーバ300が実行するウェブ・アプリケーションに関する属性情報を記憶する。図7の(a)にアプリケーションテーブルの一例を示す。Application_ID552フィールドは、ウェブ・アプリケーションIDを記憶する。このウェブ・アプリケーションIDは、図4に示すURIテーブル500のアプリケーション510フィールドに記憶されるウェブ・アプリケーションIDと同じものである。承認者ユーザID554フィールドは、Application_ID552フィールドに記憶されるウェブ・アプリケーションIDを持つウェブ・アプリケーションがクライアント100aへ情報を提供することを承認する承認者のユーザIDを記憶する。
セッション維持用URL556フィールドは、ウェブ・サーバ300にHTTPセッションを維持させるために送信する偽の通信データの送信先のURLを記憶する。詳細は後述するが、第2判定部208が通信データに対し「非同期処理」の判定結果を出す場合、クライアント100aはウェブ・サーバ300の応答の代わりに仮応答メッセージを受信し、当該仮応答メッセージの受信によりウェブ・サーバ300との通信を終了できる状態となる。ところで、ウェブ・サーバ300は通常、クライアント100aがウェブ・アプリケーションからログアウトしたり、またログアウトしなくても通信が行われない状態が長時間続くと、セキュリティの確保およびリソースの開放の目的からHTTPセッションを廃棄する。従って、通信データがクライアント100aのアクセス要求である場合、アクセス要求をウェブ・サーバ300に転送することについて承認を待つ間に、ウェブ・サーバ300がクライアント100aとのHTTPセッションを廃棄する恐れがある。
そこで、本実施の形態では、ウェブ・サーバ300にHTTPセッションを維持させるために、中継サーバ200aがクライアント100aの代わりに偽の通信データをウェブ・サーバ300へ送信する。ところでHTTPセッションはウェブ・アプリケーション本体ではなく、ミドルウェアにより管理されている。従って、セッション維持用URL556フィールドに記憶されるURLは、クライアント100aがアクセス要求を送信する際に指定したURLとは異なるURLが記憶される。
セッション有効期限558フィールドは、Application_ID552フィールドに記憶されるウェブ・アプリケーションIDを持つウェブ・アプリケーションに対して事前に設定されているセッションの有効期限(例えば、30分など)を記憶する。中継サーバ200aはこのセッションの有効期限が切れないように一定の間隔で偽の通信データをウェブ・サーバ300へ送信する。
アドレステーブル格納部222は、クライアント100aのユーザの電子メールアドレスを記憶する。
図7の(b)に、アドレステーブルの一例を示す。User_ID560フィールドは、クライアント100aのユーザのユーザIDを記憶する。パスワード562フィールドは、User_ID560フィールドに記憶されるユーザIDと対をなすパスワードを記憶する。このユーザIDとパスワードは、図6の(b)のユーザテーブルのUser_ID526フィールド及びパスワード528フィールドに記憶されるユーザIDとパスワードと同じものである。なお、ここでは認証方式としてパスワード認証を示したが、パスワード認証にSSLクライアント認証や生態認証を用いてもよい。
メールアドレス564フィールドは、クライアント100aのユーザの電子メールアドレスを記憶する。アドレステーブル格納部222に格納されるアドレステーブルは、本発明によるアクセス制御を行うために事前に用意されるものである。電子メールアドレスは、ユーザに通知文書を送付する際に利用することを目的としている。本実施例では、詳細は後述するが、承認者による承認の結果やウェブ・サーバ300の応答を転送できる状態になったことをユーザに通知する。なお、このような通知文書を送信することなく、ユーザからのウェブ・サーバ300の応答の転送要求を待つように構成してもよい。
管理テーブル格納部232は、第2判定部208より受け取った通信データに対して非同期処理部216の各処理部が行う処理を管理するための管理テーブルを格納する。図8に管理テーブル格納部232が格納する管理テーブルの一例を示す。図8には2つのテーブルが示されているように見えるが、実際は1つの管理テーブルである。
非同期処理部216は、第2判定部208から通信データを受け取ると、管理テーブルに当該通信データのための空のレコードを作成する。そして非同期処理部216は、要求者ユーザID572フィールドにユーザIDを登録する。ユーザIDはアクセス要求に含まれるため、通信データがウェブ・サーバ300の応答の場合、非同期処理部216は、アクセス要求と対応する応答を関連付けて管理する第2判定部208よりユーザIDを受け取る。非同期処理部216はまた、ウェブ・アプリケーションIDを検索キーとして、アプリケーションテーブル(図7の(a)参照)から一致するレコードの承認者ユーザIDを読み出し、管理テーブルの承認者ユーザID586フィールドに登録する。なお、上述したようにウェブ・アプリケーションIDは通信データとともに第2判定部208から渡される。
通信データがクライアント100aのアクセス要求の場合、非同期処理部216は更に、要求580フィールドに、クライアント100aのアクセス要求または当該アクセス要求へのポインタ情報を、処理状況584フィールドに、「要求承認待ち」を、要求時刻590フィールドに受信部202において通信データが受信された時刻を登録する。一方、通信データがウェブ・サーバ300の応答の場合、非同期処理部216は、応答582フィールドに、ウェブ・サーバ300の応答または当該ウェブ・サーバ300の応答へのポインタ情報を、処理状況584フィールドに、「応答承認待ち」を、応答時刻594フィールドに受信部202において通信データが受信された時刻を登録する。但し、第2判定部208からウェブ・サーバ300の応答とともに「同期処理」の判定結果を受け取る場合、非同期処理部216は、処理状況584フィールドに「応答返信待ち」を登録する。なお、応答時刻594フィールドは管理テーブルからレコード廃棄をする基準として利用してよい。例えば、応答受信後一定期間、要求者による応答転送要求が行なわれなかった場合はレコードを廃棄してもよい。
処理状況584フィールドに登録されるステータスは、非同期処理部216における通信データの処理状況である。図9に、通信データの処理状況の状態遷移の一例を示す。第2判定部208からアクセス要求を受け取ると、非同期処理部216における通信データの処理状況は最初「要求承認待ち」状態となる。承認が得られると処理状況は「要求転送待ち」状態に遷移する。そして通信データがウェブ・サーバ300に転送されると処理状況は「応答受信待ち」状態に遷移し、その後応答の受信により処理状況は「応答返信待ち」状態、または「応答承認待ち」状態を経て「応答返信待ち」状態へ遷移する。最後にクライアント100aに応答が転送されたことを受けて、処理状況は応答の「廃棄待ち」状態へ遷移する。一方、アクセス要求の転送が承認されない場合、処理状況は「要求承認待ち」状態から要求の「廃棄待ち」状態へ遷移する。同様に応答の転送が承認されない場合、処理状況は「応答承認待ち」状態から応答の「廃棄待ち」状態へ遷移する。
通信データがクライアント100aのアクセス要求の場合、非同期処理部216は更に、認証情報574フィールドに、ウェブ・サーバ300がクライアント100aに対して以前に作成した認証クッキー(Cookie)情報を登録する。なお、認証クッキー情報は、クライアント100aがウェブ・サーバ300に送信した要求から予め抽出し保持しておくものとする。非同期処理部216は更にまた、管理テーブルの要求時刻590フィールドに登録された要求時刻にセッション有効期限を足した時刻を、セッション維持予定時刻576フィールドに登録する。ここでセッション有効期限は、ウェブ・アプリケーションIDを検索キーとして、アプリケーションテーブル(図7の(a)参照)から一致するレコードを検索することにより取得する。管理テーブルのその他のフィールドについては、非同期処理部216の各処理部の説明においてあわせて行う。
仮応答部218は、通信データをクライアント100aに転送するまでに一定以上の時間を要するとの第2判定部208の判定結果に応答して、ウェブ・サーバ300の応答を中継サーバ200aからクライアント100aへ別途送信することを知らせる仮応答メッセージをクライアント100aに送信する。クライアント100aは、そのアクセス要求に対する応答として仮応答メッセージを受信するため、当該受信によりウェブ・サーバ300との通信を終了できる状態となる。
仮応答部218は、仮応答メッセージに含めるべき、ウェブ・サーバ300の応答の正当な受信者であることを示す受領証を発行する受領証発行部220を含む。上述したようにクライアント100aは仮応答メッセージの受信により、ウェブ・サーバ300との通信を終了することができる。そのため、中継サーバ200aがウェブ・サーバ300の応答をクライアント100aへ別途送信する際には、セキュリティの観点から再度クライアント100aを認証することが望ましい。
そこで本実施の形態に係る中継サーバ200aは、認証用の受領証を仮応答メッセージに含めて予めクライアント100aへ送信し、ウェブ・サーバ300の応答を転送する際は、クライアント100aに受領証の提示を要求する。これに代えてまたはこれに加えてユーザIDによる認証を利用してもよい。なお、中継サーバ200aにおいて受領証をユーザIDと対応付けて保持することにより、同一ユーザによる複数のアクセス要求に対して非同期処理が並行して行われる場合、受領証は、転送すべきウェブ・サーバ300の応答を識別する識別子としても機能する。
受領証発行部220が発行する受領証は、推測困難な文字列でよく、一例として十分に長い乱数をハッシュ関数により変換したものを利用してよい。また、受領証には有効期限を設けてもよい。受領証発行部220は、管理テーブルの受領証570フィールドに発行した受領証を、同じく管理テーブルの有効期限598フィールドに受領証の有効期限を登録する。
図10は、通信データがクライアント100aのアクセス要求である場合にHTML文書として作成される仮応答メッセージの一例を示す。図10に示す仮応答メッセージは、クライアント100aのユーザの名前、すなわち要求者の名前、ウェブ・サーバ300の応答を転送できる状態になったことを知らせる通知メールの送信先、アクセス要求があった要求日時、アクセス要求の内容を示す要求URL、アクセス要求に対するウェブ・サーバ300の応答の受け取り場所を示す応答受取URL、そして承認者の電子メールアドレスを含む。
ここで要求者の名前はユーザIDを使用できる。通知メールの送信先は、ユーザIDを検索キーとして、アドレステーブル(図7の(b)参照)から読み出される。なお、ユーザIDが無認証ユーザIDである場合、通知メールの送信先を記載する代わりに、通知メールの送信先アドレスを入力するフォームと、アドレス設定ボタンとを作成する。仮応答メッセージを受信したクライアント100aのユーザは、フォームに通知メールの受信を希望するアドレスを入力し、アドレス設定ボタンをクリックすることにより、アドレス設定要求を中継サーバ100aに送信することができる。要求日時は、管理テーブルの要求時刻590フィールドの値を利用できる。また、承認者の記載として承認者の電子メールアドレスを利用してよい。承認者の電子メールアドレスは、まず管理テーブルの承認者ユーザID586フィールドから承認者IDを読み出し、次に読み出した承認者IDを検索キーとしてアドレステーブル(図7の(b)参照)から一致するレコードを検索することにより取得できる。
図10に示す仮応答メッセージの例では、受領証は、応答受取URLの一部に“ticketid”(参照番号600)として埋め込まれる。従って、クライアント100aのユーザは、例えば応答受取URLをウェブブラウザのアドレス・フォームに指定するだけで、受領証を中継サーバ200aに送信することができる。もちろん、受領証を応答受取URLとは別に記載し、クライアント100aが中継サーバ200aにアクセスする際に受領証を直接入力させるようにしてもよい。なお、通信データがウェブ・サーバ300の応答の場合も同様の仮応答メッセージを作成してよい。
承認処理部218は、第2判定部208から受け取った通信データの転送について承認者から承認を得るために承認依頼を作成し、送信部234を介して承認依頼先へ送信する。依頼方法は、一例として電子メールを利用してよい。承認依頼先に関する情報は、上述したように管理テーブルから読み出した承認者IDを検索キーとして、アドレステーブル(図7の(b)参照)から一致するレコードを検索することにより取得できる。
図11に、電子メールとして作成される承認依頼の一例を示す。図11に示す承認依頼は、承認対象が要求処理または応答返信処理であることを知らせる依頼内容、要求者の名前、ウェブ・サーバ300の応答を転送できる状態になるかアクセス拒否になったことを知らせる通知メールの送信先、アクセス要求があった要求日時、アクセス要求の内容を示す要求URLおよび承認処理を実施するための結果受渡URL(許可および拒否)を含む。なお、図11に示す承認依頼の承認対象は要求処理である。承認対象が応答返信処理の場合、依頼内容は一例として「次の要求について応答返信処理を実行するために承認処理を実行してください。」としてよい。
要求者の名前はユーザIDを使用できる。通知メールの送信先は、ユーザIDを検索キーとして、アドレステーブル(図7の(b)参照)から読み出される。要求日時は、管理テーブルの要求時刻590フィールドの値を利用できる。要求URLは、管理テーブルの要求580フィールドの値の中から取得できる。
図11に示す承認依頼の例では、承認結果と受領証が、2種類の結果受渡URLの一部にそれぞれ“accept”または“reject”(参照番号605、615)および“ticketid”(参照番号610、620)として埋め込まれる。従って、承認者は、その承認結果に対応する結果受渡URLを選択し、例えば選択したURLをウェブブラウザのアドレス・フォームに指定するだけで、「許可」または「拒否」の承認結果と受領証とを中継サーバ200aに送信することができる。もちろん、承認結果や受領証を含まない結果受渡URLを承認依頼に記載し、承認者が中継サーバ200aにアクセスする際に承認結果や受領証を直接入力させるようにしてもよい。
承認者の承認結果は、受信部202で受信された後、第1判定部206における判定を経て承認処理部224に渡される。承認結果を受け取った承認処理部224は、承認結果に含まれる受領証を検索キーとして管理テーブル(図8参照)から一致するレコードを検索する。一致するレコードが存在し、かつ当該レコードの承認者ユーザID586フィールドの値が承認結果に含まれる承認者のユーザIDと一致する場合、承認処理部224は更に、上記レコードの処理状況584フィールドの値が「要求承認待ち」または「応答承認待ち」であることを確認する。そして、承認処理部224は、承認結果を管理テーブルの承認結果588フィールドに登録し、承認者としてのクライアント100bに承認結果が正しく受理されたことを示すメッセージを、送信部234を介して送信する。それ以外の場合、承認処理部224は、送信部234を介して承認者としてのクライアント100bにリクエストが不適切であることを示すエラーメッセージを送信する。
承認結果の管理テーブルへの登録において、承認処理部224は、レコードの処理状況584フィールドの値が「要求承認待ち」である場合、承認結果が「許可」ならば「要求許可」を、承認結果が「拒否」ならば「要求拒否」を登録する。同様に、承認処理部224は、レコードの処理状況584フィールドの値が「応答承認待ち」である場合、承認結果が「許可」ならば「応答許可」を、承認結果が「拒否」ならば「応答拒否」を登録する。このとき承認処理部224は、承認が得られた時刻を要求承認時刻592フィールドまたは応答承認時刻596フィールドに登録する。承認時刻フィールドは、承認状況の監査を行なう際の記録として利用することができる。
判定結果を受け取った承認処理部224は更にまた、管理テーブルの処理状況584フィールドを更新する。アクセス要求の転送に対し承認が得られた場合、承認処理部224は承認状況を「要求転送待ち」に変更する。同様にウェブ・サーバ300の応答転送に対し承認が得られた場合、承認処理部224は承認状況を「応答返信待ち」に変更する。クライアント100aのアクセス要求の転送またはウェブ・サーバ300の応答の転送に対し承認が得られなかった場合、承認処理部224は処理状況を「廃棄待ち」に変更する。
承認状況を「応答返信待ち」または「廃棄待ち」に変更する場合、承認処理部224はまた、承認結果をクライアント100aに通知する。通知の方法は、一例として電子メールを利用してよい。通知先のメールアドレスは、管理テーブルから読み出した要求者ユーザIDを検索キーとして、アドレステーブル(図7の(b)参照)から一致するレコードを検索することにより取得する。
接続維持部228は、ウェブ・サーバ300においてクライアント100aとのセッションを維持させるために、クライアント100aのアクセス要求をウェブ・サーバ300へ転送することに関して承認者から承認を得るまでの間、偽の通信データをウェブ・サーバ300に定期的に送信する。偽の通信データの送信先は、ウェブ・アプリケーションIDを検索キーとして、アプリケーションテーブル(図7の(a)参照)から一致するレコードのセッション維持用URLを読み出すことにより取得する。また、ウェブ・サーバ300へ送信する偽の通信データは、ウェブ・サーバ300に対してクライアント100aから送られた通信データと思わせる必要があることから、管理テーブルの認証情報574フィールドに登録された認証クッキー情報を使用する。
そして接続維持部228は、管理テーブルの処理状況584フィールドの値が「要求承認待ち」から「要求転送待ち」に変わるまでの間、管理テーブルのセッション維持予定時刻576フィールドからセッション維持予定時刻を定期的に読み出し、現在時刻と比較する。現在時刻がセッション維持予定時刻よりも前であれば、接続維持部228は、認証クッキー情報を使用して作成した偽の通信データを、読み出したセッション維持用URLに送信する。
偽の通信データの送信に対しウェブ・サーバ300から成功を示す応答を受信した場合、接続維持部228は管理テーブルのセッション維持結果578フィールドに「成功」を登録する。接続維持部228はまた、ウェブ・アプリケーションIDを検索キーとして、アプリケーションテーブル(図7の(a)参照)から一致するレコードのセッション有効期限を読み出し、現在時刻にセッション有効期限を足したもので、管理テーブルのセッション維持予定時刻576フィールドを更新する。
一方、偽の通信データの送信に対しウェブ・サーバ300から失敗を示す応答を受信した場合、接続維持部228は管理テーブルのセッション維持結果578フィールドに「失敗」を登録する。続維持部228はまた、管理テーブルのセッション維持予定時刻576フィールドの値を「未設定」に変更する。
転送部230は、アクセス要求をウェブ・サーバ300へ転送することに関して承認者の承認を得られることを条件として、送信部234を介してアクセス要求をウェブ・サーバ300へ転送する。すなわち、転送部230は一定の間隔で管理テーブルを確認し、処理状況584フィールドの値が「要求転送待ち」であるレコードを検出する。そのようなレコードを検出した場合、転送部230は、管理テーブルのセッション維持結果578フィールドの値が「成功」であることを確認する。そして転送部230は、管理テーブルからクライアント100aのアクセス要求を読み出し、送信部234を介してウェブ・サーバ300へ転送する。その際転送部230は管理テーブルの処理状況584フィールドの値を「応答受信待ち」に変更する。
転送部230はまた、ウェブ・サーバ300の応答をクライアント100aへ転送できる状態になると、ウェブ・サーバ300の応答をクライアント100aへ転送する。好ましくは、転送部230は、転送許可の通知を受けたクライアント100aからの転送要求に応答して、ウェブ・サーバ300の応答をクライアント100aへ転送する。更に好ましくは、転送部230は、転送許可の通知を受けたクライアント100aからの転送要求に応答して、かつクライアント100aから受領証を受け取ることを条件に、ウェブ・サーバ300の応答をクライアント100aへ転送する。
上述したように、本実施の形態では、クライアント100aは中継サーバ200aから承認者の承認結果について通知を受け取る。従って、承認結果が「許可」である通知を受信したクライアント100aは、先に受信した仮応答メッセージに記載されている、受領証の埋め込まれた応答受取URLをウェブブラウザのアドレス・フォームに入力することにより、中継サーバ200aにウェブ・サーバ300の応答の転送要求を送信する。
クライアント100aの転送要求は、受信部202で受信された後、第1判定部206における判定を経て仮応答部218に渡される。転送要求を受け取った仮応答部218は、転送要求から取り出した受領証を検索キーとして、管理テーブルから一致するレコードを検索する。一致するレコードが存在し、当該レコードの要求者ユーザID586フィールドの値が転送要求に含まれる要求者のユーザIDと一致する場合、仮応答部218は更に、上記レコードの処理状況584フィールドの値が「応答返信待ち」であり、かつ有効期限598フィールドに登録された受領証の有効期限が将来の日付を示すことを確認する。仮応答部218の確認結果は、受領証とともに転送部230へ渡される。
転送部230は、「失敗」の確認結果を受け取った場合、送信部234を介してクライアント100aにリクエストが不適切であることを示すエラーメッセージを送信する。一方、「成功」の確認結果を受け取った場合、転送部230は、受領証を検索キーとして管理テーブルから読み出したウェブ・サーバ300の応答を、送信部234を介してクライアント100aへ転送する。その後転送部230は管理テーブルの処理状況584フィールドの値を「廃棄待ち」に変更する。
次に図12乃至図21のフローチャートを参照して、第1実施形態に係る中継サーバ200aによるデータ通信の中継処理の流れの一例を説明する。処理は図12のステップ100から開始し、中継サーバ200aは他の情報処理装置より通信データ(クライアント100aのアクセス要求/応答転送要求、クライアント100bの承認結果報告のいずれか)を受信すると、処理振分部204により通信データを適切な処理部へ振り分ける(ステップ102)。処理振分部204による処理の振り分けの詳細は、図13および図18を参照して後述する。処理部による通信データの処理が終了すると、中継サーバ200aは、受信した通信データに対する応答が送信済みであるか否か判定する(ステップ104)。
送信済みでない場合(ステップ104:NO)、中継サーバ200は、受信した通信データに対する応答として、各処理部による処理結果を上記他の情報処理装置へ送信する(ステップ106)。応答が送信済みである場合(ステップ104:YES)、またはステップ106の後、処理は終了する。
図13は、図12のステップ102に示す振分処理のより詳細な処理の流れの一例を示す。通信データを受け取った第1判定部206は、通信データからその宛先情報を取り出し(ステップ110)、通信データの宛先情報が中継サーバ200aを指すかどうか判定する(ステップ112)。宛先情報が中継サーバ200aを指さない場合(ステップ112:NO)、第1判定部206は通信データ(クライアント100aのアクセス要求、ウェブ・サーバ300の応答のいずれか)を第2判定部208へ渡し転送処理を行わせる(ステップ114)。転送処理の詳細は図14乃至図17、18を参照して後述する。一方、通信データの宛先情報が中継サーバ200aを指す場合(ステップ112:YES)、第1判定部206は当該通信データ(クライアント100aの応答転送要求、クライアント100bの承認結果報告のいずれか)に対してローカル処理を行う(ステップ116)。ローカル処理の詳細は、図18乃至図20を参照して後述する。そして処理は終了する。
図14は、図13のステップ114に示す転送処理のより詳細な処理の流れの一例を示す。第2判定部208は、ポリシーに基づいてクライアント100aのアクセス要求を転送することについて承認者から承認を得る必要があるか否かを判定するための判定プログラムを、アクセス要求が要求するリソースに基づいてURIテーブル500から選択する(ステップ120)。選択された判定プログラムは、アクセス要求に対し判定処理を行う(ステップ122)。図15に、判定プログラムリスト518に示す部門機密情報Pluginによる判定処理の流れの一例を示す。
図15のステップ146、ステップ148およびステップ150において、部門機密情報Pluginは、第2判定部208から、通信データに適用すべきACLおよびPOPと、通信データの送信者のユーザIDとを取得する。そして部門機密情報Pluginは、これら情報から、通信データの転送が許可されるかどうか判定する(ステップ152)。通信データの転送が拒否されると判定した場合(ステップ154:YES)、部門機密情報Pluginは、「同期処理」および「拒否」の判定結果を第2判定部208へ返す(ステップ156)。
一方、データの転送が許可されると判定した場合(ステップ154:NO)、部門機密情報Pluginは次に、通信データがウェブ・サーバ300の応答であるか否かを判定する(ステップ158)。当該判定は、一例として通信データのデータ部分に含まれるHTTPメッセージにステータス・コードが含まれるか否かを判定することにより行ってもよい。通信データがウェブ・サーバ300の応答である場合(ステップ158:YES)、部門機密情報Pluginは更に、HTTPメッセージのメッセージ・ボディが「機密(または英語のConfidential)」の文字を含むか否か(ステップ160)、また「機密」の文字を含む場合に更に送信者が部門グループに所属するか否か判定する(ステップ162)。
「機密」の文字を含み(ステップ160:YES)、かつ送信者が部門グループに所属しない場合(ステップ162:NO)の場合、部門機密情報Pluginは、「非同期処理」および「承認」の判定結果を第2判定部208へ返す(ステップ164)。一方、通信データがウェブ・サーバ300の応答でない場合(ステップ158:NO)、「機密」の文字を含まない場合(ステップ160:NO)、および送信者が部門グループに所属する場合(ステップ162:YES)、これらいずれかの場合、部門機密情報Pluginは、「同期処理」および「許可」の判定結果を第2判定部208へ返す(ステップ166)。そして処理は終了する。
図14に戻って、第2判定部208は、判定プログラムの判定結果が「同期処理」であるか否か判定する(ステップ124)。判定結果が「同期処理」を示す場合、第2判定部208は、「許可」または「拒否」の判定結果とともにアクセス要求を同期処理部212へ渡す。同期処理部212は、受け取った判定結果が「許可」の場合、アクセス要求をウェブ・サーバ300へ転送する(ステップ128)。ウェブ・サーバ300はアクセス要求を処理し、アクセス要求に対する応答を返す。
中継サーバ200aにおいて、アクセス要求に対する応答が受信されると(ステップ130)、当該応答は、上述した図12、図13に示す処理を経て、第2判定部208に渡される。そして第2判定部208は、対応するアクセス要求に基づいて、今度は応答に対し判定プログラムを選択する(ステップ132)。選択された判定プログラムは、応答に対して判定処理を行う(ステップ134)。そして第2判定部208は再び、判定プログラムの判定結果が「同期処理」であるか否か判定する(ステップ136)。判定結果が「同期処理」を示す場合、第2判定部208は、「許可」または「拒否」の判定結果とともにアクセス要求を同期処理部212へ渡す。
同期処理部212は、ステップ124またはステップ136において「同期処理」と判定され、第2判定部208から「拒否」の判定結果を受け取った場合、クライアント100aのアクセス要求に対する応答としてエラーメッセージを作成する(ステップ140)。一方、ステップ136において「同期処理」と判定され、第2判定部208から「許可」の判定を受け取った場合、同期処理部212は、ウェブ・サーバ300の応答を、クライアント100aのアクセス要求に対する応答とする。
一方、ステップ124またはステップ136において、判定結果が「非同期処理」および「承認」を示す場合、第2判定部208は、クライアント100aアクセス要求またはウェブ・サーバ300の応答を、非同期処理部216へ渡す。非同期処理部216による非同期処理の詳細は、図16、17、19を参照して後述する。ステップ136、ステップ138、またはステップ140の後処理は終了する。
図16は、図14のステップ126およびステップ138に示す非同期処理の詳細な処理の流れの一例を示す。非同期処理部216は、管理テーブルに、第2判定部208から受け取った通信データのレコードを作成する(ステップ170)。次に非同期処理部216の仮応答部218は、上記通信データに対し受領証を発行し(ステップ172)、ウェブ・サーバ300の応答を中継サーバ200aからクライアント100aへ別途送信することを示す仮応答メッセージを、クライアント100aのアクセス要求に対する応答として作成する(ステップ174)。また、非同期処理部216の承認処理部224は、クライアント100aのアクセス要求またはウェブ・サーバ300の応答の転送について承認者に承認を依頼する承認要求を作成し、承認者であるクライアント100bへ送信する(ステップ176)。最後に非同期処理部216は、管理テーブルの上記レコードの内容を更新し、処理を終了する(ステップ178)。
次に図17を参照して、接続維持部228により行われるセッション維持の処理の流れの一例を説明する。図17に示すセッション維持の処理は、接続維持部228により一定の間隔(例えば20分など、セッションタイムアウトの一般的な時間である30分よりも短い間隔)で繰り返し行われる。セッション維持処理はステップ180より開始し、接続維持部228は、管理テーブル(図8参照)から処理状況584フィールドの値が「要求転送待ち」であるレコードを取り出す。そして接続維持部228は、取り出したレコードのセッション維持予定時刻576フィールドの値が現在時刻よりも先であるか否か判定する(ステップ182)。管理テーブルに「要求転送待ち」であるレコードが存在しない場合(ステップ181:NO)、または現在時刻がセッション維持予定時刻576フィールドの値を過ぎている場合(ステップ182:YES)、処理は終了する。
一方、「要求転送待ち」であるレコードが存在し、かつセッション維持予定時刻576フィールドの値が現在時刻よりも先である場合、接続維持部228は、取り出したレコードの認証情報574フィールドに登録されたクライアント100aの認証クッキー情報を用いてセッション維持要求を作成し、アプリケーションテーブル(図7の(a)参照)の該当するレコードに登録されたセッション維持用のURLに送信する(ステップ184)。当該セッション維持要求に対する応答を受信すると(ステップ186)、接続維持部228は、セッション維持要求の結果を用いて管理テーブルの上記レコードのセッション維持結果578フィールドを更新する(ステップ188)。
次に接続維持部228は、セッション維持要求の結果が成功であったか否か判定し(ステップ190)、成功であった場合(ステップ190:YES)、アプリケーションテーブル(図7の(a)参照)の該当するレコードからセッション有効期限を取得して(ステップ192)、現在時間にセッション有効期限を加えることにより新たなセッション維持予定時刻を計算する(ステップ194)。最後に接続維持部228は、求めたセッション維持予定時刻を用いて、管理テーブルの上記レコードのセッション維持予定時刻576フィールドを更新する(ステップ196)。ステップ109においてセッション維持要求の結果が失敗の場合(ステップ190:NO)、管理テーブルの上記レコードのセッション維持予定時刻576フィールドを「未設定」に変更する。ステップ196の後処理は終了する。
次に図20を参照して、図13のステップ116に示すローカル処理の詳細な処理の流れの一例を説明する。図20は、第1判定部206による、通信データの更に詳細な振り分け処理を示す。処理はステップ200より開始し、第1判定部206は、要求の種別を取得するため、通信データのデータ部分に含まれるリクエスト・メッセージにおいて指定されるURIを取得する。例えば、図10に示す仮応答メッセージの応答受取URLや図11に示す承認依頼の結果受渡URLをみるとわかるように、URIによりアクセス要求の種類を識別することが可能である。
要求種別がクライアント100aの応答転送要求である場合、第1判定部206は、仮応答部218および転送部230に通信データを渡し、応答転送処理を行わせる(ステップ202:YES、ステップ204)。要求種別がクライアント100bの承認要求である場合、第1判定部206は、承認処理部224に通信データを渡し、承認処理を行わせる(ステップ206:YES、ステップ208)。そして処理は終了する。
図19は、承認処理部224による承認処理の詳細な処理の流れの一例を示す。承認処理部224は、クライアント100bの承認報告の要求からユーザIDと受領書とを取り出し(ステップ220、ステップ222)、管理テーブルに一致するレコードが存在するか否か判定する(ステップ224)。一致するレコードが存在する場合(ステップ224:YES)、承認処理部224は、更に当該レコードの処理状況584フィールドの値が「要求承認待ち」または「応答承認待ち」であるか否か判定する(ステップ226)。ステップ226でYESの場合、承認処理部224は、上記処理状況584フィールドの値を「要求転送待ち」、「応答返信待ち」、または「廃棄待ち」のいずれかに変更し、また、承認要求に含まれる承認結果を上記レコードの承認結果588フィールドに登録する(ステップ228)。
また承認処理部224は、処理状況584フィールドの値の上記変更が、廃棄待ちまたは応答返信待ちへの変更であるか否か判定する(ステップ230)。上記変更が、廃棄待ちまたは応答返信待ちへの変更である場合(ステップ230:YES)、承認処理部224は、承認結果をクライアント100aのユーザに知らせる通知メールを作成し、クライアント100aへ送信する(ステップ232)。ステップ232から、またはステップ230でNOの場合、すなわち上記変更が要求転送待ちへの変更の場合、処理はステップ236へ進み、クライアント100bの承認要求に対する応答として、承認処理結果を表示する応答を作成する。一方、ステップ224またはステップ226においてNOの場合、処理はステップ238へ進み、承認処理部224は、クライアント100bの承認要求に対する応答として、エラーメッセージを作成する。そして処理は終了する。
図18は、仮応答部218および転送部230による応答転送処理のより詳細な処理の流れの一例を示す。仮応答部218は、クライアント100aの応答転送要求からユーザIDと受領書とを取り出し(ステップ240、ステップ242)、管理テーブルに一致するレコードが存在するか否か判定する(ステップ244)。一致するレコードが存在しない場合(ステップ244:NO)、仮応答部218は、応答転送要求が「失敗」であることを示す結果を転送部230へ渡す。転送部230は、エラーメッセージをクライアント100aの応答転送要求に対する応答として作成する(ステップ248)。
一致するレコードが存在する場合(ステップ244:YES)、仮応答部218は当該レコードの処理状況584フィールドの値が「応答返信待ち」であるか否か判定する(ステップ246)。ステップ246でYESの場合、仮応答部218は、応答転送要求が「成功」であることを示す結果を転送部230へ渡す。転送部230は、上記レコードからウェブ・サーバ300の応答を取得して(ステップ250)、更に上記処理状況584フィールドの値を「「廃棄待ち」に変更する(ステップ252)。一方、上記レコードの処理状況584フィールドの値が「応答返信待ち」でない場合(ステップ246:NO)、仮応答部218は、応答転送要求が「応答受信待ち」であることを示す結果を転送部230へ渡す。転送部230は、現在の処理状況を示す応答を、クライアント100aの応答転送要求に対する応答として作成する(ステップ254)。そして処理は終了する。
図21は、転送部230により行われる、クライアント100aの要求の転送処理の流れの一例を示す。図21に示す要求転送の処理は、転送部230により一定の間隔(例えば5分など、中継サーバ200aの負荷とクライアントのアクセス要求に対する応答の速さのバランスを考慮して決定される)で繰り返し行われる要求転送処理はステップ270より開始し転送部230は、管理テーブル(図8参照)から処理状況584フィールドの値が「要求転送待ち」であるレコードを取り出す。そして転送部230は、取り出したレコードの要求をウェブ・サーバ300へ転送する(ステップ272)。ウェブ・サーバ300はアクセス要求を処理し、応答を返す。
中継サーバ200aにおいて、アクセス要求に対する応答が受信されると、当該応答は上述した図12、図13に示す処理を経て、第2判定部208に渡される(ステップ274)。第2判定部208は、対応するアクセス要求に基づいて、応答に対し判定プログラムを選択する(ステップ276)。選択された判定プログラムは、応答に対して判定処理を行う(ステップ278)。第2判定部208は、判定プログラムの判定結果が「同期処理」であるか否か判定する(ステップ280)。そして第2判定部208は、判定結果にかかわらず、応答と判定結果を非同期処理部216に渡す。
判定結果が「同期処理」かつ「許可」を示す場合、非同期処理部216は管理テーブルの承認結果588フィールドの値を「応答許可」に変更し、更に管理テーブルの処理状況584フィールドを「応答返信待ち」に変更する。判定結果が「同期処理」かつ「拒否」を示す場合、非同期処理部216は管理テーブルの承認結果588フィールドの値を「応答拒否」に変更し、更に管理テーブルの処理状況584フィールドを「廃棄待ち」に変更する(ステップ282)。
一方、判定結果が「非同期処理」を示す場合、非同期処理部216は図16を参照して上述した非同期処理を行う(ステップ284)。そして処理は終了する。
以上のように、第1実施形態に係る中継サーバ200aは、アクセス要求に対するウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要すると判断した場合、クライアントへ、そのアクセス要求に対する応答として、ウェブ・サーバ300の応答を別途送信することを知らせる仮応答メッセージを送信する。従って、クライアント100aのアクセス要求に対するウェブ・サーバ300の応答の転送の遅延を気にすることなく、中継サーバ200aは、アクセス要求や当該アクセス要求に対する応答の転送について承認者に承認を依頼できるようになり、柔軟なアクセス制御を行うことが可能となる。
(第2実施形態)図22は、第2実施形態に係る中継サーバ200bの機能構成を示す。第2実施形態では、ハードディスクドライブ430のハードディスクに格納された中継用プログラムは、例えばユーザの操作に応答してオペレーティング・システムの働きによりRAMにロードされ、当該プログラムがオペレーティング・システムの所定のAPIルーチンを呼び出す等の処理により、CPU400やその他の周辺機器への指令を出すことにより、中継サーバ200bを、受信部240、処理振分部242、転送処理部254、非同期処理部260、送信部276として機能させる。なお、以下では第1実施形態と異なる構成、機能を中心に説明を行う。
受信部240は、第1実施形態における受信部202と同一の機能を有する。但し第2実施形態の受信部240において受信される通信データに、承認者としてのクライアント100bからの承認結果は含まれない。処理振分部242は、受信部240により受信された通信データをいずれかの処理部に振り分ける機能を有し、第1判定部244、第2判定部246のほかに、待ち行列248、優先度決定部250、および待ち行列設定部252を含む。第1判定部244は、第1実施形態における第1判定部206と同じ機能を有するので説明は省略する。
第2判定部246は、第1判定部244から受け取った通信データについて、アクセス要求に対するウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要するか、すなわち仮応答メッセージを作成してクライアント100aが通信を一旦終了できるようにするための非同期処理を行う必要があるか否かを判定する。なお、第2実施形態においても、中継サーバ200bはクライアントの100aのアクセス要求と当該アクセス要求に対するウェブ・サーバ300の応答を関連付けて管理し処理する。そして第2判定部246による判定は、クライアント100aのアクセス要求に対し行われ、ウェブ・サーバ300の応答は対応するアクセス要求に対する判定結果に従って処理される。第2実施形態に係る第2判定部246は、通信データがクライアント100aのアクセス要求の場合、当該アクセス要求をまず後述する優先度決定部248に渡す。そこで優先度決定部248における処理と関連する待ち行列248と待ち行列設定部252、そして優先度決定部250について先に説明する。
待ち行列248は、受信部240において受信されたアクセス要求の転送処理を格納する。優先度決定部250は、クライアント100aのユーザ分類に基づいて、クライアント100aから受信したアクセス要求の転送処理の優先度を決定する。ここでユーザの分類とは、例えばウェブ・サーバが提供するサービスを受けるために有料で登録した有料ユーザと登録なしで本サービスを受ける無料ユーザのようなクライアント100aのユーザの属性による分類や、携帯電話やPDA(Personal Digital Assistans)などの限られた処理能力をもつ小型の携帯情報端末とパーソナル・コンピュータやワークステーションなどのより高い処理能力をもつ情報処理端末のようなクライアント100aの属性による分類を含む。優先度決定部250は、有料ユーザや限られた処理能力をもつ小型の携帯情報端末に対して高い優先度を決定する。なお、優先度決定部250は、このようなユーザの属性情報やクライアント100aの属性情報を、ユーザIDとパスワードに関連付けて予め内部に保持しておくものとする(図23の(a)を参照)。
待ち行列設定部252は、優先度決定部250により決定された優先度に基づいて、クライアント100aのアクセス要求の転送処理を待ち行列248の適切な位置に格納する。すなわち待ち行列設定部252は、高い優先度のアクセス要求の転送処理を、既に待ち行列248に格納された優先度の低い転送処理よりも先に取り出されるような位置に格納する。第2判定部246は、アクセス要求を優先度決定部248に渡すと、待ち行列248に格納される情報に基づいて、判定対象のアクセス要求よりも先にウェブ・サーバ300へ転送されるアクセス要求が所定の数以上あるか否かを判定する。先にウェブ・サーバ300へ転送されるアクセス要求が所定の数以上ある場合、第2判定部246は、アクセス要求に対するウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要すると判断し、アクセス要求を後述する転送処理部254と非同期処理部260の両方に渡す。
一方、先にウェブ・サーバ300へ転送されるアクセス要求が所定の数よりも少ない場合、第2判定部246は、アクセス要求を後述する転送処理部254にのみ渡す。通信データがウェブ・サーバ300の応答の場合、第2判定部246は、上述したように対応するアクセス要求に対する判定に従って処理するべく、応答を転送処理部254または非同期処理部260のいずれか一方に渡す。すなわちアクセス要求に対し非同期処理を行う必要があると判定された場合、対応する応答は非同期処理部260にのみ渡される。また、アクセス要求に対し非同期処理を行う必要がないと判定された場合、対応する応答は転送処理部254にのみ渡される。
転送処理部254は、通信データをウェブ・サーバ300へ転送する機能を有し、通信データ格納部256と第1転送部258を含む。通信データ格納部256は、第2判定部246から受け取った通信データを格納する。第1転送部258は、待ち行列248から順次転送処理を取り出し、当該転送処理に対応する通信データを通信データ格納部256から読み出して、送信部276を介してウェブ・サーバ300またはクライアント100aへ転送する。
非同期処理部260は、アクセス要求に対するウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要すると判定された通信データを処理する機能を有し、仮応答部262、アドレステーブル格納部266、接続維持部268、アプリケーションテーブル格納部270、通知部272、および第2転送部274を含む。第2実施形態に係る非同期処理部260は、基本的に第1実施形態に係る非同期処理部216と同じ構成、機能を有する。但し、第2実施形態に係る非同期処理部260には、承認処理部224は含まれず、代わりに通知部272が含まれる。
アプリケーションテーブル格納部270は、クライアント100にサービスを提供するためにウェブ・サーバ300が実行するウェブ・アプリケーションに関する属性情報を記憶する。図23の(b)にアプリケーションテーブルの一例を示す。第2実施形態において使用されるアプリケーションテーブルは、第1実施形態におけるアプリケーションテーブルに、URI706フィールドとサーバ708フィールドを追加したものである。追加フィールドにはそれぞれアクセス要求に指定され得るアクセス要求対象としてのURIと、当該URIを有するサーバのサーバIDを記憶する。また、Application_ID710フィールドには、URI706フィールドに記憶されるURIに関連してウェブ・サーバ300上で実行されるウェブ・アプリケーションのIDを記憶する。セッション維持用URL712フィールドおよびセッション有効期限714フィールドは、図7の(a)を参照して説明した第1実施形態におけるアプリケーションテーブルと同じであるため説明は省略する。
アドレステーブル格納部266は、第1実施形態におけるアドレステーブル格納部222と同じであるため説明を省略する。管理テーブル格納部276は、第2判定部246より受け取った通信データに対して非同期処理部260の各処理部が行う処理を管理するための管理テーブルを格納する。図23の(c)に管理テーブ格納部276が格納する管理テーブルの一例を示す。図23の(c)をみると分かるように、第2実施形態に係る管理テーブルは、第1実施形態に係る管理テーブルからいくつかのフィールドを削除したものであり、基本的に第1実施形態に係る管理テーブルと同じである。従って、各フィールドの説明は省略する。
非同期処理部260は、第2判定部246からアクセス要求を受け取ると、管理テーブルに当該通信データのための空のレコードを作成する。そして非同期処理部260は、要求者ユーザID722フィールドにアクセス要求から取り出したユーザIDを登録する。非同期処理部260はまた、要求730フィールドにアクセス要求を、処理状況732フィールドに「要求転送待ち」を、要求時刻734フィールドに受信部240において通信データが受信された時刻を登録する。また、転送処理部254の第1転送部258は、アクセス要求を転送する場合、非同期処理部260に転送完了の通知をする。通知を受けた非同期処理部260は、管理テーブルから該当するレコードを検索し、当該レコードの処理状況732フィールドを「応答受信待ち」に変更する。
一方、第2判定部246からウェブ・サーバ300の応答を受け取る場合、当該応答に対するレコードは既に管理テーブルに登録されている。そこで、非同期処理部260は、該当するレコードの応答730フィールドに、ウェブ・サーバ300の応答または当該ウェブ・サーバ300の応答へのポインタ情報を、処理状況732フィールドに、「応答返信待ち」を、応答時刻736フィールドに受信部240において通信データが受信された時刻を登録する。
なお、処理状況732フィールドに登録される値は、非同期処理部260における通信データの処理状況である。第2実施形態に係る通信データの処理状況の状態遷移は、図9に示される状態遷移図から「要求承認待ち」状態と「応答承認待ち」状態を削除したものである。
通信データがクライアント100aのアクセス要求の場合、非同期処理部260は第1実施形態に係る非同期処理部216と同様、更に、管理テーブルの上記レコードの認証情報724フィールドに、ウェブ・サーバ300がクライアント100aに対して以前に作成した認証クッキー(Cookie)情報を登録する。また、非同期処理部260は、上記レコードの要求時刻734フィールドの値にアプリケーションテーブルの該当するレコードのセッション有効期限(図23の(b)を参照)を足して計算した時刻を、上記レコードのセッション維持予定時刻726フィールドに登録する。管理テーブルのその他のフィールドについては、非同期処理部260の各処理部の説明においてあわせて行う。
仮応答部262および受領証発行部264は、第1実施形態に係る仮応答部218および受領証発行部220と同一の機能を有するので説明は省略する。なお、第2実施形態に係る受領証発行部264もまた、管理テーブルの該当レコードの受領証720フィールドに発行した受領証を、有効期限738フィールドに受領証の有効期限をそれぞれ登録する。また、第2実施形態に係る仮応答部262により作成される仮応答メッセージは、図10に示す仮応答メッセージの例において最初の一文を適宜変更するだけでよい。例えば次のような一文に変更する。「次の要求に対する処理は、処理完了までに時間がかかり、ご使用のブラウザでは結果を受信できない可能性があると判断しました。」
通知部272は、一定の間隔で管理テーブルを確認し、処理状況584フィールドの値が「応答返信待ち」であるレコードを検出する。そのようなレコードを検出した場合、通知部272は、クライアント100aに、ウェブ・サーバ300の応答を転送可能であることを通知する。通知の方法は、一例として電子メールを利用してよい。通知先のメールアドレスは、管理テーブルから読み出した要求者ユーザIDを検索キーとして、アドレステーブル格納部266に格納されるアドレステーブルから一致するレコードを検索することにより取得する。
接続維持部268は、ウェブ・サーバ300においてクライアント100aとのセッションを維持させるために、クライアント100aのアクセス要求がウェブ・サーバ300へ転送されるまでの間、偽の通信データをウェブ・サーバ300に定期的に送信する。偽の通信データの送信先は、ウェブ・アプリケーションIDを検索キーとして、アプリケーションテーブル(図23の(b)参照)から一致するレコードのセッション維持用URLを読み出すことにより取得する。また、ウェブ・サーバ300へ送信する偽の通信データは、管理テーブルの認証情報724フィールドに登録された認証クッキー情報を使用する。接続維持部268による管理テーブルを用いた偽の通信データの具体的な送信方法は、第1実施形態において説明したのと同じであるから説明は省略する。
第2転送部274は、ウェブ・サーバ300の応答を転送可能であるとの通知を受けたクライアント100aからの転送要求に応答して、ウェブ・サーバ300の応答をクライアント100aへ転送する。好ましくは、第2転送部274は、通知を受けたクライアント100aからの転送要求に応答して、クライアント100aから受領証を受け取ることを条件に、ウェブ・サーバ300の応答をクライアント100aへ転送する。管理テーブルを用いた、仮応答部262による受領証の検証および仮応答部262の検証結果に基づく第2転送部274による転送処理は、第1実施形態における仮応答部218および転送部234による転送処理と同じであるため説明は省略する。
図24を参照して、第2実施形態に係る中継サーバ200bによるデータ通信の中継処理の処理の流れの一例を説明する。第2実施形態に係る中継サーバ200bによる中継処理は、図14を参照して説明した、第1判定部206による振分処理後の転送処理を除いて、基本的に第1実施形態に係る中継サーバ200aのアクセス制御の処理と同じである。そこで、ここでは中継サーバ200bによる転送処理についてのみ説明する。なお、図15を参照して説明した判定プログラムによる判定処理、図19を参照して説明した承認処理、および図21を参照して説明したアクセス要求転送処理は、第2実施形態に係る中継サーバ200bによるアクセス制御の処理に含まれない。
第1判定部244による振分処理後の転送処理はステップ300より開始し、優先度決定部250は、クライアント100aのユーザの分類に基づいて、受信部240において受信されたクライアント100aのアクセス要求の転送処理に対し優先度を決定する。待ち行列設定部252は、優先度決定部250が決定した優先度に基づいて、クライアント100aのアクセス要求の転送処理を待ち行列248の適切な位置に格納する(ステップ302)。その後アクセス要求は転送処理部254の要求情報格納部256に格納される。
次に第1転送部258は、上記アクセス要求の転送処理よりも先に処理すべき転送処理が待ち行列248になくなると、上記アクセス要求の転送処理に対応するアクセス要求を要求情報格納部256から読み出して、対応するウェブ・サーバ300へ転送する(ステップ304)。上記ステップ304と並行して第2判定部246は、待ち行列248に格納される情報に基づいて、上記アクセス要求よりも先にウェブ・サーバ300へ転送されるアクセス要求が所定の数以上あるか否かを判定する(ステップ306)。そして第2判定部246は、先にウェブ・サーバ300へ転送されるアクセス要求が所定の数以上ある場合、アクセス要求に対するウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要すると判断し(ステップ306:YES)、アクセス要求を非同期処理部260に渡す(ステップ308)。
非同期処理部260による非同期処理は、図16を参照して説明したのと基本的に同一であるからここでは説明しない。但し、承認要求の作成・送信を行う図16のステップ176は、第2実施形態に係る非同期処理には含まれない。非同期処理において作成された仮応答メッセージは、上記アクセス要求に対する応答としてクライアント100aに送信される(ステップ310)。ステップ304において一定以上の時間を要しないと判定された場合(ステップ306:NO)、またステップ310の後、処理は終了する。なおステップ306乃至ステップ310は、ステップ304を実行するスレッドとは別のスレッドのより実行され、当該別のスレッドはステップ306またはステップ310を実行した後処理を終了する。
一方、受信部240において転送したアクセス要求に対する応答が受信されると(ステップ310)、応答は第1判定部244を経て第2判定部246に渡され、第2判定部246は、応答に対応するアクセス要求に対する処理が非同期処理であったか否か判定する(ステップ312)。対応するアクセス要求に対し非同期処理を行った場合(ステップ312:YES)、第2判定部246は応答を非同期処理部260へ渡す。非同期処理部260は、該当するレコードを管理テーブルから検索し、当該レコードを更新する(ステップ314)。対応するアクセス要求に対し非同期処理を行っていない場合(ステップ312:NO)、またステップ314の後、処理は終了する。
上記第2の実施形態に係る中継サーバ200bでは、クライアント100aのアクセス要求に対するウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要するか否かの判定を、待ち行列248に格納される情報に基づいて、判定対象のアクセス要求よりも先にウェブ・サーバ300のへ転送されるアクセス要求が所定の数以上あるか否かを判断することにより行った。上記第2の実施形態の変形として、中継サーバ200bは、クライアント100aのアクセス要求をウェブ・サーバ300へ転送してから所定時間内にウェブ・サーバ300の応答を受け取ることができるか否かを判断することにより、ウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要するか否かの判定を行ってもよい。
この変形例では、図22に示す処理振分部242は、待ち行列248、優先度決定部250、および待ち行列設定部252をもつ必要はない。第2判定部246は、第1判定部244から受け取った通信データがクライアント100aのアクセス要求の場合、そのまま第1転送部258に渡し、送信部276を介してウェブ・サーバ300へ転送させる。そして第2判定部246はアクセス要求の転送から所定時間内に対応するウェブ・サーバ300の応答を受け取らなかった場合、管理テーブルに新たにレコードを作成するため、上記アクセス要求と「非同期処理」の判定結果を非同期処理部260へ渡す。また、第1判定部244から受け取った通信データがウェブ・サーバ300の応答の場合、第2判定部246は、対応するアクセス要求に対する判定結果に応じて、当該応答を非同期処理部260または転送処理部254へ渡す。
図25を参照して、第2実施形態の上記変形例における転送処理の流れの一例を説明する。第1判定部244による振分処理後の転送処理はステップ332より開始し、第2判定部246は受信部240において受信されたクライアント100aのアクセス要求を第1転送部258に渡し、第1転送部はアクセス要求をウェブ・サーバ300へ転送する。ステップ332と並行して、第2判定部246は、アクセス要求が転送された後所定の時間が経過するのを待ち(ステップ334)、所定の時間が経過後、上記アクセス要求に対するウェブ・サーバ300の応答が受信部240において受信されたかどうか判定する(ステップ336)。
所定時間内にウェブ・サーバ300の応答が得られない場合(ステップ336:NO)、第2判定部246は、アクセス要求に対するウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要すると判断する。そして第2判定部246は、非同期処理部260に非同期処理を行わせるため、アクセス要求と「非同期処理」の判定結果を渡す(ステップ338)。なお、非同期処理部260による非同期処理は、図16を参照して説明したのと基本的に同一であるからここでは説明しない。但し、承認要求の作成・送信を行う図16のステップ176は、ステップ338に示す非同期処理には含まれない。
その後、非同期処理において作成された仮応答メッセージは、仮応答部262より送信部276を介して、上記アクセス要求に対する応答としてクライアント100aへ送信される(ステップ340)。所定時間内にウェブ・サーバ300の応答を受信できた場合(ステップ336:YES)、またステップ340の後、処理は終了する。なおステップ334乃至ステップ340は、ステップ332を実行するスレッドとは別のスレッドのより実行され、当該別のスレッドはステップ334またはステップ340を実行した後処理を終了する。
一方、受信部240において転送したアクセス要求に対するウェブ・サーバ300の応答が受信されると、当該受信は第1判定部244を経て第2判定部246に渡され(ステップ342)、第2判定部246は、当該応答に対応するアクセス要求に対する処理が非同期処理であったか否か判定する(ステップ344)。対応するアクセス要求に対し非同期処理を行った場合(ステップ344:YES)、第2判定部246は当該応答を非同期処理部260へ渡す。非同期処理部260は、該当するレコードを管理レコードから検索し、当該レコードを更新する(ステップ346)。対応するアクセス要求に対し非同期処理を行っていない場合(ステップ344:NO)、またステップ346の後、処理は終了する。
上記第2の実施形態の更なる変形例として、中継サーバ200bは、ウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要するか否かの判定を、現在のウェブ・サーバ300の負荷状態に基づいて判定してもよい。この更なる変形例では、図22に示す処理振分部242は、待ち行列248、優先度決定部250、および待ち行列設定部252をもつ代わりに、例えば図26に示すようなサーバテーブルをもつ。ここでServer_ID750フィールドはウェブ・サーバ300のサーバ名を記憶する。IPアドレス752フィールドは、ウェブ・サーバ300のIPアドレスを記憶する。状況754フィールドは、ウェブ・サーバ300の活動状態(ActiveまたはInactiveのいずれか)を記憶する。負荷756フィールドは、ウェブ・サーバ300の負荷状態を記憶する。中継サーバ200bは、ウェブ・サーバ300の活動状態や負荷状態に関する通知を、ウェブ・サーバ300からに定期的に受けるものとする。
この更なる変形例においても、第2判定部246は、第1判定部244から受け取った通信データがクライアント100aのアクセス要求の場合、そのまま第1転送部258に渡し、送信部276を介してウェブ・サーバ300へ転送させる。またこれと並行して第2判定部246は、アクセス要求に含まれる送信先IPアドレスや、データ部分に含まれるHTTPメッセージのリクエストURIに対応する
サーバ名を検索キーとして、一致するレコードをサーバテーブルから検索し、ウェブ・サーバ300の負荷状態を確認する。ウェブ・サーバ300の負荷が高い場合、第2判定部246は、管理テーブルに新たにレコードを作成するため、上記アクセス要求と「非同期処理」の判定結果を非同期処理部260へ渡す。また、第1判定部244から受け取った通信データがウェブ・サーバ300の応答の場合、第2判定部246は、対応するアクセス要求に対する判定結果に応じて、当該応答を非同期処理部260または転送処理部254へ渡す。
図27を参照して、第2実施形態の更なる変形例における転送処理の流れの一例を説明する。第1判定部244による振分処理後の転送処理はステップ3350より開始し、第2判定部246は受信部240において受信されたクライアント100aのアクセス要求を第1転送部258に渡し、第1転送部はアクセス要求をウェブ・サーバ300へ転送する。ステップ350と並行して、第2判定部246は、サーバテーブルから該当するレコードを読み出し、ウェブ・サーバ300の負荷状態を取得する(ステップ352)。
所定の以上の負荷がウェブ・サーバ300にかかっている場合(ステップ354:YES)、第2判定部246は、アクセス要求に対するウェブ・サーバ300の応答をクライアント100aに転送するまでに一定以上の時間を要すると判断する。そして第2判定部246は、非同期処理部260に非同期処理を行わせるため、アクセス要求と「非同期処理」の判定結果を渡す(ステップ356)。なお、非同期処理部260による非同期処理は、図16を参照して説明したのと基本的に同一であるからここでは説明しない。但し、承認要求の作成・送信を行う図16のステップ176は、ステップ338に示す非同期処理には含まれない。
その後、非同期処理において作成された仮応答メッセージは、仮王頭部262により送信部276を介して、アクセス要求に対する応答としてクライアント100aへ送信される(ステップ358)。ウェブ・サーバ300にかかっている負荷が所定の値よりも小さい場合(ステップ354:NO)、またステップ358の後、処理は終了する。なおステップ352乃至ステップ358は、ステップ350を実行するスレッドとは別のスレッドのより実行され、当該別のスレッドはステップ352またはステップ358を実行した後処理を終了する。
一方、受信部240において転送したアクセス要求に対するウェブ・サーバ300の応答が受信されると、当該受信は第1判定部244を経て第2判定部246に渡され(ステップ360)、第2判定部246は、当該応答に対応するアクセス要求に対する処理が非同期処理であったか否か判定する(ステップ362)。対応するアクセス要求に対し非同期処理を行った場合(ステップ362:YES)、第2判定部246は当該応答を非同期処理部260へ渡す。非同期処理部260は、該当するレコードを管理レコードから検索し、当該レコードを更新する(ステップ364)。対応するアクセス要求に対し非同期処理を行っていない場合(ステップ362:NO)、またステップ364の後、処理は終了する。
以上のように、第2実施形態に係る中継サーバ200bは、ウェブ・サーバ300の負荷が高く、ウェブ・サーバ300からアクセス要求に対する応答を受信するまでに一定以上の時間を要すると判断した場合、そのアクセス要求に対する応答として、クライアントにウェブ・サーバ300の応答を別途送信することを知らせる仮応答メッセージを送信する。そのため、クライアント100aのアクセス要求に対するウェブ・サーバ300の応答の転送の遅延を気にする必要がなくなり、中継サーバ200bにおいて、ウェブ・サーバ300が提供するサービスを受けるために有料で登録した有料ユーザや限られた処理能力をもつ小型の携帯情報端末によるアクセス要求を優先するなど、受信した順序とは異なる順序で通信データが処理されるような追加の処理を行うことが可能となる。
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。上記の実施形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。