クライアントリダイレクトによるプライベートネットワークへの安全なアクセス提供方法およびシステム
プライベートネットワーク上で維持されているリソースへの安全なアクセスを提供するための改善された方法を開示する。安全なアクセスは、クライアント/サーバソフトウェアのクライアントソフトウエアを使用し、および/またはファイルシステムソフトウェアを用いて、公衆ネットワークを介し、提供することができる。複数のリモートユーザが、リモートネットワークの中間サーバのような、共通のアクセスポイントを介し、プライベートネットワークの少なくとも一部に、制限およびコントロールされた環境下でアクセスすることができる。
【発明の詳細な説明】
【関連出願への相互参照】
【0001】
本出願は、2001年11月2日出願の米国仮出願第60/350,097号の利益を主張する、2002年1月29日出願の米国特許出願第10/060,792号の一部継続出願である。
【技術分野】
【0002】
本発明は、クライアント/サーバコンピューティングに関し、より詳しくは、ネットワーク上で安全にリソースにアクセスするためのクライアント/サーバコンピューティングに関するものである。
【背景技術】
【0003】
ネットスケープナビゲーターもしくはマイクロソフトエクスプローラのようなネットワークブラウザ(ブラウザアプリケーション)により、クライアントマシンのユーザは、インターネットを介して、遠隔地に位置するサーバマシンにリソースを要求し検索することができる。これらのネットワークブラウザは、遠隔地に位置するサーバマシンから提供されるハイパーテキストマークアップランゲージ(HTML)ドキュメントを表示もしくは提供することができる。更に、ブラウザは、あるローカル機能を提供するために、HTMLドキュメントに埋め込まれたスクリプトプログラムを実行することができる。
【0004】
従来、ネットワークブラウザは、インターネットのようなパブリックネットワークにアクセスするのに用いられている。プライベートネットワーク外のコンピュータィングマシン上にあるネットワークブラウザが、プライベートネットワーク上のいかなるリソースにもアクセスできないように、プライベートネットワークは、ファイアウォールによって通常保護されている。
【0005】
ファイアウォールは、プライベートネットワークへの外部アクセスを防ぐ上で効果的であるが、外部の個人または企業が、他人または他企業のプライベートネットワークへの少なくとも制限された範囲内でのアクセスを必要とする場合がしばしばある。たとえば、企業顧客に対するパーツのサプライヤは、企業顧客のプライベートネットワーク上で維持された情報(例えば、在庫レベルや注文)にアクセスすることにより、企業顧客により良いサービスを提供できる場合もある。従来用いられている方法の一つとしては、サプライヤのマシンに、パブリックネットワークを通じてファイアウォールを介し、プライベートネットワークにアクセスさせることが挙げられるが、この場合、ファイアウォールに「セキュリティホール」ができ、プライベートネットワークのセキュリティを深刻な危険にさらすことになる。従って、セキュリティが重要事項である場合、この従来の方法は通常許されない。他の従来の方法としては、サプライヤのマシンで仮想私設網(Virtual Private Network:VPN)を確立することが挙げられる。この場合、サプライヤのマシンは、パブリックネットワークやファイアウォールを介してプライベートネットワークにアクセスすることもできるが、全てのデータ伝送は暗号化される。ファイアウォールの中には、VPNをサポートしているものもあり、PPTP(Point−to−Point Tunneling Protocol)のような暗号化された通信を提供するプロトコルを使用することができる。VPNは、セキュアリモートアクセスを提供するが、準備、構成、管理が難しい。各VPNは、プライベートネットワークへのアクセスを許可された外部の各個人または企業にも提供されなければならない。更に、VPNは高価であり、また、各VPNは、プライベートネットワーク全体のセキュリティを、多少なりとも危険にさらすことになる。
【0006】
したがって、プライベートネットワーク上で維持されているリソースへのセキュアリモートアクセスを提供するための改善された方法が必要とされている。
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、プライベートネットワーク上で維持されているリソースへの安全なアクセスを提供するための改善された方法に関する。クライアント/サーバソフトウェアのクライアントソフトウェアを使用し、および/またはファイルシステムソフトウェアを用いて、公衆ネットワークを介し、安全なアクセスを提供することができる。また、複数のリモートユーザが、リモートネットワークの中間サーバのような、共通のアクセスポイントを介し、プライベートネットワークの少なくとも一部に、制限およびコントロールされた環境下でアクセスすることができる。リモートネットワークの一例は、プライベートネットワークでる。
【課題を解決するための手段】
【0008】
本発明は、システム、方法、デバイスおよびコンピュータ読み取り可能メディアを含め、多くの手段で実現できる。以下、本発明のいくつかの実施形態について説明する。
【0009】
一方法実施形態では、ネットワーク接続要求を受け、そのネットワーク接続要求を転送し、データを中間サーバに送信する。この方法は、リモートネットワークへのセキュアリモートアクセスを可能にする。
【0010】
ネットワーク接続要求は、ローカルネットワーク上のコンピュータで受け取ることがでる。ネットワーク接続要求は、クライアント/サーバプリケーションのクライアントアプリケーションによって開始される。クライアントアプリケーションは前記コンピュータ上にあってもよい。ネットワーク接続要求は、リモートネットワーク上の宛先を含んでいてもよい。クライアント/サーバプリケーションのサーバプリケーションは、リモートネットワーク上にあってもよい。
【0011】
ネットワーク接続要求は、コンピュータ上のWindows(登録商標)ソケットレイヤ内に転送することができる。これには、ネームスペースプロバイダ(例えば、リモートネットワーク上のドメインネームサービスルックアップに利用)およびレイヤドサービスプロバイダ(例えば、ローカルネットワークからリモートネットワークへのクライアントアプリケーションのデータ転送に利用)を用いて、ネットワーク接続要求を転送することが含まれる。ネットワーク接続要求は、コンピュータのトランスポートサービスプロバイダ(例えば、TCP/IPトランスポートサービスプロバイダ)を避けて転送することができる。ネットワーク接続要求は、リモートネットワーク内の中間サーバに転送することができる。中間サーバは、コンピュータに代わってネットワーク接続要求を行なうことができる。転送は、クライアントアプリケーションの名前、クライアントアプリケーションのチェックサム、クライアントアプリケーションのバージョン、宛先のサーバ、および宛先のポートの内の一つ又はそれ以上に基づいて行われる。転送に先立ち、ネットワーク要求は、WinsockダイナミックリンクライブラリおよびWinsock2ダイナミックリンクライブラリの少なくとも一方を介することができる。ネットワーク接続要求は、コンピュータ上の少なくとも一つのプロキシにより、リモートネットワーク内の中間サーバに転送することができる。
【0012】
クライアントアプリケーションのデータは、コンピュータから中間サーバへ向けて送信することができる。セキュア・ソケット・レイヤ(SSL)は、コンピュータと中間サーバ間の通信を暗号化することができる。クライアントアプリケーションのデータは、中間サーバからサーバプリケーションへ向けて送信することができる。様々な実施形態は、中間サーバからサーバプリケーションへ向けてクライアントアプリケーションのデータを送信したり、あるいは、実施形態外部のソフトウェアまたはハードウェアによりこれを行わせる。クライアントアプリケーションのデータは、クライアントアプリケーションのデータを中間サーバへ向けて送信する前に、コンピュータの少なくとも一ローカルアドレスおよび一ローカルポートを介して送信される。
【0013】
いくつかの実施形態においては、クライアントアプリケーションと中間サーバとの間のセキュア接続を示すためビジュアルキューが設けられる。ネームスペースプロバイダおよびレイヤドサービスプロバイダは、自動的にコンピュータにインストールおよび/またはコンピュータからアンインストールすることができる。
【0014】
他の方法実施形態では、ネットワーク接続要求を受け、そのネットワーク接続要求を転送し、データを中間サーバから受け取る。この方法は、リモートネットワークへのセキュアリモートアクセスを可能にする。
【0015】
ネットワーク接続要求は、ローカルネットワーク上のコンピュータ上で受け取ることができる。ネットワーク接続要求は、リモートネットワーク上のファイルシステムに対して開始される。ネットワーク接続要求は、ファイルシステムの名前を含んでいてもよい。
【0016】
ネットワーク接続要求は、コンピュータ上でトランスポートドライバインターフェイスを用いて転送することができ、さらにネームスペースプロバイダを使用してもよい。転送することにより、ネットワークファイルシステムトラフィックをキャプチャーすることができる。ネットワーク接続要求は、コンピュータ上のトランスポートドライバ(例えば、TCP/IPトランスポートドライバ)を避けて転送することができる。そのネットワーク接続要求は、リモートネットワーク内の中間サーバに転送することができる。中間サーバは、コンピュータに代わりネットワーク接続要求を行なう。転送は、宛先サーバおよび宛先ポートの少なくとも一方に基づいて行われる。転送前に、ネットワーク接続要求は、少なくとも一つのトランスポートドライバインターフェースフィルタを通過することができる。
【0017】
中間サーバからのファイルシステムのコンピュータデータを受け取ることができる。セキュア・ソケット・レイヤ(SSL)は、コンピュータと中間サーバ間の通信を暗号化することができる。ファイルシステムのデータは、リモートネットワーク上の中間サーバとファイルシステム間で転送することができる。様々な実施形態では、中間サーバとファイルシステム間でファイルシステムのデータを転送するか、あるいは、実施形態外部のハードウェアあるいはソフトウェアによりこれを行わせる。
【0018】
いくつかの実施形態では、トランスポートドライバインターフェースは、自動的にコンピュータにインストールおよび/またはコンピュータからアンインストールすることができる。
【0019】
種々の態様、特徴、実施形態あるいは上記のいくつかの実施形態のインプリメンテーションは、単独あるいは様々な組み合わせで用いることができる。
【0020】
いくつかの実施形態は、ソフトウェアにおいてインプリメントできるが、ハードウェアにおいて、またはハードウェアとソフトウェアの組み合わせにおいてインプリメントすることもできる。本発明のいくつかの実施形態はまた、コンピュータ読み取り可能メディア上のコンピュータ読み取り可能コードとして実施することができる。コンピュータ読み取り可能メディアは、データを格納することができ、その後コンピュータシステムにより読み取ることができる任意のデータ記憶装置である。コンピュータ読み取り可能メディアの例としては、読み取り専用メモリ、ランダムアクセスメモリ、CD−ROM、DVD、磁気テープ、光学データ記憶装置、および搬送波が挙げられる。コンピュータ読み取り可能メディアはまた、コンピュータ読み取り可能コードが分散して格納され、実行されるよう、複数のネットワーク結合コンピュータシステムに分散させることができる。
【0021】
様々な実施形態におけるコンピュータコードは、ハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアの組み合わせにおいてインプリメントできる。
【0022】
本発明の他の態様および利点は、本発明の原理を例示する添付の図面を参照した以下の詳細な説明から明白となるであろう。
【発明を実施するための最良の形態】
【0023】
本発明は、添付の図面を参照した以下の詳細な説明により容易に理解されるであろう。図面中、同様の参照番号は、同様の構造要素を示す。
【0024】
本発明は、プライベートネットワーク上で維持されているリソースへの安全なアクセスを提供するための改善された方法に関する。安全なアクセスは、標準ネットワークブラウザを使用し、公衆ネットワークを介して提供することができる。多数のリモートユーザは、共通のアクセスポイントを経由し、制限およびコントロールされた環境下で、プライベートネットワークの少なくとも一部にアクセスすることができる。
【0025】
このソリューションにより、従業員、契約者、あるいはパートナーといったユーザは、プライベートネットワークへの直接接続から離れた場所にいながら、安全な方法でプライベートネットワーク上にあるリソースにアクセスすることができる。本発明のいくつかの実施形態により提供されるソリューションは、容易に設定および操作できるだけでなく、多くのリモートユーザをコスト効率の良くサポートすることもできる。
【0026】
以下、本発明に係るこの態様の実施形態を、図1A〜図27を参照しながら説明する。しかしながら、当業者には、これらの図に関してここで述べている詳細な説明は、あくまでも説明を目的としたものであり、本発明はこれらの限定された実施形態の範囲を超えるものであることは容易に理解されるであろう。
【0027】
図1Aは、本発明の一実施形態に係る情報検索システム100を示すブロック図である。情報検索システム100は、ネットワーク102、クライアントマシン104、106、仲介サーバ108、リモートサーバ110、112、プライベートネットワーク114、およびプライベートサーバ116、118を備えている。ネットワーク102は、クライアントマシン104、106、仲介サーバ108、およびリモートサーバ110、112の通信を可能にする通信媒体としての役割を果たす。ネットワーク102は、例えば、インターネット、広域ネットワーク、あるいはローカルエリアネットワークを含むデータネットワークである。インターネットとは、相互に接続されたコンピュータのグローバネットワークのことをいう。プライベートネットワーク114は、さらに、仲介サーバ108およびプライベートサーバ116、118の通信を可能にする通信媒体としての役割も果たす。ネットワーク114はまた、データネットワークでもある。プライベートネットワーク114はエンティティに関連付けられていることが多いため、プライベートネットワーク114上でコンピューティングデバイスを操作する従業員は、プライベートサーバ116、118と通信することができる。例えば、プライベートネットワーク114は、企業ネットワークあるいはイントラネットと呼ぶことができる。しかしながら、外部コンピュータィングデバイスによるプライベートネットワーク114へのアクセスは、一般にファイアウォール(図示なし)により制限されている。仲介サーバ108は、ファイアウォールを介してプライベートネットワーク114と通信することが許可されている。ここで、クライアントマシン(リクエスタ)が認可および許可されている範囲で、仲介サーバ108はクライアントマシン(リクエスタ)に代わりプライベートネットワーク114と通信する。仲介サーバ108は、外部コンピューティングデバイスにプライベートネットワーク114へアクセスさせる範囲を実質的にコントロールする。
【0028】
本発明のいくつかの実施形態によれば、プライベートサーバ116、118上にあるコンテンツに対する要求は、クライアントマシン104、106から受け取ることができる。ここで使用されているように、「コンテンツ」とは、サーバ上に格納することができ、クライアントが検索することのできるあらゆる情報またはリソースのことである。一般に、コンテンツは電子ファイルとして表示され、テキストおよび/またはイメージを含む。しばしば、クライアントマシン104、106は、ネットワーク102およびプライベートネットワーク114を介してコンテンツの要求および検索を容易にするブラウザアプリケーションを操作する。そのような場合、ブラウザアプリケーションが同一のコンテンツを表示することができるよう、コンテンツは、多くの場合、ブラウザを通して表示可能なドキュメント(例えば、マークアップ言語ドキュメント、ウェブページなど)としてブラウザアプリケーションに返される。クライアントマシン104、106は、仲介サーバ108と通信する。まず、仲介サーバ108は、コンテンツを求めているクライアントマシン104、106が、プライベートネットワーク114へのそのようなアクセスに認証および許可されているかどうか判断する。認証および許可検査を正常に終えた後、仲介サーバ108は、次に、クライアントマシン104、106に代わりプライベートネットワーク114上にあるプライベートサーバ116、118にアクセスする。仲介サーバ108が、要求されたコンテンツをプライベートサーバ116、118から得ると、仲介サーバ108は、クライアントマシン104、106に要求されたコンテンツを直接返すか、あるいは要求されたコンテンツをまず修正した後、クライアントマシン104、106に送信することができる。
【0029】
仲介サーバ108は、要求されたコンテンツを様々な形式で修正することができる。一例として、仲介サーバ108は、クライアントマシン104、106に送信する前に、要求されたコンテンツにツールバーを挿入することができる。別の例としては、仲介サーバ108は、一仲介サーバ(例えば、仲介サーバ108)に転送されるように、要求されたコンテンツ内のハイパーリンクを修正することができる。仲介サーバ108は、要求されたコンテンツに関して、その他様々なタスクを実行することができる。さらに、情報検索システム100はまた、サーバに格納された情報の仲介サーバ108における集中格納をサポートすることもできる。サーバに格納された情報は、「クッキー」と呼ばれることが多いが、クッキーは、通常クライアントマシンに格納される。
【0030】
図1Aに示した報検索システム100は、一対のクライアントマシン、一対のリモートサーバ、単一の仲介サーバ、および一対のプライベートサーバのみを示しているが、情報検索システム100は、多くのクライアントマシンおよび多くのサーバマシンをサポートできるものと理解されたい。情報検索システム100はまた、多数の仲介サーバもサポートすることができることも理解されたい。
【0031】
図1Bは、本発明の一実施形態に係る情報検索システム150を示すブロック図である。情報検索システム150は、例えば、図1に示した情報検索システム100の更に詳細なインプリメンテーションである。
【0032】
情報検索システム150は、インターネット152と、有線または無線手段を介してインターネット152に接続したクライアントマシン154、156とを利用している。一般に、クライアントマシン154、156は、ネットワークブラウザまたはメールアプリケーションといったクライアント側アプリケーションを操作する。クライアントマシン154、156のリクエスタ(ユーザ)が、リモートリソースにアクセスすることを望む場合、リソース要求がクライアントマシン154、156からインターネット152を介して仲介サーバ158に送られる。一般に、クライアントマシン154、156と仲介サーバ158間の通信は、暗号化技術(例えば、セキュア・ソケット・レイヤ(SSL))によって保護される。仲介サーバ158は、イントラネット160へのアクセスを可能にする。クライアントマシン154、156により要求されているリソースは、イントラネット160内にある。一般に、ファイアウォールは、イントラネット160への外部アクセスを制限または排除するため、仲介サーバ158は、ファイアウォール162を介してイントラネットと通信することができなければならない。イントラネット160は、一般に、電子的にアクセスすることができる様々な異なったタイプのリソースを含む。一般に、これらのリソースは、イントラネットに接続した、またはその一部をなすサーバマシンに格納されている。図1Bに示しているように、イントラネット160は、認証サーバ164、ウェブサーバ166、メールサーバ168、ファイルサーバ170、およびログサーバ172に接続されているか、またはそれらを備えている。よって、所定のクライアントマシンは、仲介サーバ158を経由し、イントラネット160内またはイントラネット160上にあるサーバ164〜172のいずれにもアクセスすることができる。従って、所定のクライアントマシンは、ネットワークブラウザアプリケーションを使用し、ウェブサーバ166上にあるリソースを要求し受け取ることができる。別の例として、所定のクライアントマシンは、クライアント側メールアプリケーションを使用し、メールサーバ168上にあるメールリソースにアクセスすることができる。更に別の例として、所定のクライアントマシンは、イントラネット160内またはイントラネット160上にあるファイルサーバ170にアクセスし、そこで電子ファイルを得る、格納する、あるいは表示することができる。
【0033】
仲介サーバ158は、仲介サーバ158を介したイントラネット160へのアクセスが継続的に確実に保護されるよう構成される。この点で、イントラネット160上にあるリソースまたはコンテンツにアクセスしようとしているリクエスタは、認証されなければならない。認証には、イントラネット160内またはイントラネット160上にある認証サーバ164を利用することができる。この点に関しては、イントラネット160が利用するネイティブの認証技術を、仲介サーバ158でリクエスタを認証する際に使用することができる。更に、管理者は、様々なリクエスタ(例えば、クライアントマシンのユーザ)に、イントラネット160内またはイントラネット160上の種々のリソース(例えば、サーバ)に対し、異なったアクセス権を与えることができるように仲介サーバ158を構成することができる。ログサーバ172は、仲介サーバ158における、イントラネット160へのアクセス要求に関するログ情報の格納を可能にする。ログ情報は、ユーザがよりよく認識できるように、アプリケーションレベルごとに提供することができる。
【0034】
図2Aは、本発明の一実施形態に係る仲介サーバ200を示すブロック図である。仲介サーバ200は、例えば、図1に示した仲介サーバ108としての使用に適している。仲介サーバはまた、中間サーバとも称される。
【0035】
仲介サーバ200は、仲介サーバにより利用される処理装置により実行されるコンピュータプログラムコードにより一般にインプリメントされる様々な処理モジュールを含む。より詳しくは、仲介サーバ200の処理モジュールは、ウェブサーバ202およびプロトコルハンドラ204を含む。ウェブサーバ202は、リンク206により(ネットワークを介して)クライアントマシンに接続され、プロトコルハンドラ204は、リンク208により(ネットワークを介して)リモートサーバに接続される。ウェブサーバ202およびプロトコルハンドラ204は互いに通信すると同様に、様々な支援モジュールおよびデータ記憶装置210とも通信する。データ記憶装置210は、仲介サーバ200により維持されている様々なデータ項目の永続性または不揮発性の記憶を可能にする。一般に、一クライアントマシンを使用する各ユーザまたはリクエスタに対し、データ記憶装置は個別に記憶することを可能にする。
【0036】
処理モジュールは、認証マネージャ212およびアクセスマネージャ214を備えている。認証マネージャ212は、リクエスタが、申告通り本人かどうかを判断する役目を果たす認証処理を管理する。認証処理は、仲介サーバ200内部または外部で行われる。例えば、外部認証は、プライベートネットワーク(例えば、認証サーバ164)内の認証サーバにより提供される。アクセスマネージャ214は、プライベートネットワーク上の様々なリソースへのアクセスを制限する。すなわち、異なるリクエスタに、様々なアクセス権レベル、タイプ、あるいはエリアを割り当てることができる。例えば、リクエスタAは、サーバXにはアクセスできるが、サーバYおよびZにはアクセスできず、リクエスタBは、サーバYには読み出し専用でアクセスできるが、サーバXおよびZにはアクセスできない。
【0037】
仲介サーバ200はまた、コンテンツトランスフォーマ216も備えている。これは、リモートサーバから受け取った要求コンテンツを解析した後、所定の方法でコンテンツを修正するのに使用される、別の処理モジュールである。
【0038】
仲介サーバ200が備えている場合もある別の処理モジュールは、クッキーマネージャ218である。クッキーマネージャは、リモートサーバから受け取る「クッキー」が、データ記憶装置210に格納され、データ記憶装置210に前もって格納されたものが適切なタイミングでリモートサーバに送信されるように「クッキー」を管理する。より一般的には、「クッキー」は、サーバに格納された情報のことを指す。そのようなサーバに格納された情報は、多くの場合、リモートサーバにより設定され、セッション、状態、あるいは識別を目的として使用される。
【0039】
図2Bは、本発明の一実施形態に係るリモートアクセスシステム250を示すブロック図である。リモートアクセスシステム250は、クライアント/サーバ環境下で作動し、クライアントのユーザが、リモートサーバでリソースにアクセスできるようにする。具体的には、リモートアクセスシステム250は、ネットワークブラウザ254およびメールクライアント256を備えている。ネットワークブラウザ254およびメールクライアント256は、クライアントマシン上で作動又は実行されるクライアントアプリケーションである。一般に、ユーザまたはリクエスタは、リモートサーバにあるリソースを要求するために、これら一以上のクライアントプログラムと対話する。ネットワークブラウザ254およびメールクライアント256は、セキュアリンクあるいは接続を介して仲介サーバ252に接続される。仲介サーバ252はまた、セキュアまたは非セキュア接続あるいはリンクのいずれかを通じてリモートサーバに接続される。仲介サーバ252は、プライベートネットワーク上で見られるサーバのような様々な異なったサーバへの接続をサポートすることができる。プライベートネットワークの一例は、企業ネットワークである。図2Bに示したサーバは、ウェブサーバ258、Eメールサーバ260、Windows(登録商標)ファイルサーバ262、UNIX(登録商標)ファイルサーバ264、認証サーバ266、およびログサーバ268を備えている。
【0040】
仲介サーバ252は、フロントエンドプロトコルハンドラレイヤ270に達する前にクライアントアプリケーションとの接続またはリンクに暗号化処理を提供するセキュア・ソケット・レイヤ(SSL)272を備えている。フロントエンドプロトコルハンドラレイヤ270は、様々なクライアントアプリケーションにより利用され得る、送信されてくる異なったタイプのプロトコルを処理するため、複数のプロトコルハンドラを有する。図213に示されているように、フロントエンドプロトコルハンドラレイヤ270は、HTTP、IMAP、SMTP、POP、およびMAPIのプロトコル用に個別のプロトコルハンドラを有する。送られてくる要求に、適切なプロトコルハンドラが利用された後、仲介サーバ252内の他の機能モジュールが利用される。具体的には、アクセスマネージャ274は、要求を送信したリクエスタに、要求しているタイプのアクセスが許可されているかどうか判断することができる。認証マネージャ276は、リクエスタが認証され得るかどうか判断することができる。コンテンツトランスフォーマ278は、受信したリクエスト、またはリモートサーバにより提供された要求されたレスポンスのコンテンツを変換することができる。システム管理マネージャ280は、アクセス権、システム構成、およびログイン機能を構成するために、システム管理者が仲介サーバ252と対話できるようにする。
【0041】
仲介サーバ252はまた、バックエンドプロトコルハンドラ282も有する。バックエンドプロトコルハンドラ282は、特定のサーバに関して、送信されてくる通信および発信される通信に適切なプロトコルを提供する。図2Bに示されているバックエンドプロトコルハンドラのレイヤは、HTTP、IMAP、SMTP、POP、SMB、NFS、NIS、RADIUS、LDAP、およびNTのプロトコル用のプロトコルハンドラを有する。仲介サーバ252に送信されてくるプロトコルと、仲介サーバ252から発信されるプロトコルとが異なる場合、コンテンツトランスフォーマ278は、プロトコルを変換(例えば、翻訳)することができる。さらに、仲介サーバ252は、データストア284、ログマネージャ286、およびデータ同期マネージャ288を有する。データストア284は、仲介サーバ252の様々なコンポーネントに一時的または半永久的なデータの格納を可能にする。例えば、認証を目的としたローカルレコードは、各クライアントまたはリクエスタのために、データストア284に格納することができる。さらに、クライアントまたはリクエスタのためのセッションIDまたはクッキーも、データストア284に集中的に格納できる。データ同期マネージャ288は、フォルトトレランスを提供するため、一仲介サーバと別の仲介サーバとの接続を可能にするモジュールである。従って、一仲介サーバが機能しなくなった場合、機能しなくなった仲介サーバは、リンク290を介して作動している仲介サーバに接続することができ、一般に一仲介サーバに関連したオペレーションのうちのいくつかあるいは全てを提供することができる。ログマネージャ286は、仲介サーバ252を介してなされる様々なアクセス要求のアプリケーションレベルのロギングを可能にするために設けられている。ログマネージャ286により作成されたログは、ログサーバ268に格納される。
【0042】
図3は、本発明の一実施形態に係る要求処理300を示すフローチャートである。図1Aに示した仲介サーバ108、図1Bに示した仲介サーバ158、図2Aに示した仲介サーバ200、または、図2Bに示した仲介サーバ252といった仲介サーバが、リクエスタからの要求を受け取ると、常に要求処理300が実行される。
【0043】
要求処理300は、受信した要求がシステムログイン要求かどうかを判断する決定302から始まる。受信した要求が、システムログイン要求であると決定302で判断されると、要求処理300はリクエスタを認証しようとする304。認証は、ローカルまたはリモートで行なわれる。認証についての更なる詳細を以下記載する。その後、決定306により、リクエスタが認証されたかどうか判断される。決定306により、リクエスタを認証することができないと判断された場合、ログインの試みは失敗に終わり、ログインページがリクエスタに返される308。そのログインページは、リクエスタによるログインの再試行を容易にする。ログイン要求が失敗に終わった場合、オペレーション308をもって要求処理300は完了し終了となる。
【0044】
また、決定306で、リクエスタが認証されると判断された場合には、セッションIDがリクエスタに返される310。リクエスタは、コンテキストによって、クライアントデバイスのユーザあるいはクライアントデバイスに照会することができる。セッションが実行中である限り、セッションIDは仲介サーバへの次の要求に使用される。さらに、最初のアクセスページが、リクエスタに返される312。最初のアクセスページから、リクエスタはプライベートネットワーク上で利用可能な様々なリソースにアクセスすることができる。ログイン要求が達成された場合、オペレーション312をもって、要求処理300は完了し終了となる。
【0045】
ログイン要求の処理に加えて、要求処理300はさらに、仲介サーバを介して他のすべてのリモートアクセス要求を処理すべく機能する。従って、決定302で、受信した要求がシステムログイン要求ではないと判断された場合、決定314で、受信した要求が有効なセッションIDを有するかどうか判断される。リクエスタが既に認証されており(つまり、仲介サーバにログインしている)、セッションがまだ有効であれば、受信した要求は有効なセッションIDを有するであろう。従って、決定314で、受信した要求に関連したセッションIDが有効ではないと判断された場合、仲介サーバへのアクセスは拒否され、ログインページがリクエスタに返される308。あるいは、決定314で、セッションIDが有効であると判断された場合、決定316で、セッションがタイムアウトしているかどうか判断される。決定316で、セッションはタイムアウトしていると断定された場合、仲介サーバへのアクセスは拒否され、ログインページがリクエスタに返される308。ここで、リクエスタが、無効のセッションIDを有するか、セッションがタイムアウトしている場合、リクエスタはログインし認証を得るよう強いられる。
【0046】
一方、決定316で、セッションはタイムアウトしていないと断定された場合、リクエスタは、仲介サーバを介してプライベートネットワークにアクセスすることが許される。その後、リクエスタがアクセスしようとしているアクセスのタイプによって、更なる処理が行われ、リクエスタが、確実に適切かつ対象とみなされるリソースのみにアクセスするようにする。特に、要求処理300に関しては、リクエスタに関連したアクセス権が得られる318。アクセス権は、リクエスタがどのリソースにアクセスする権利を与えられているかを示す。次に、決定320で、受信した要求に関連した特定のアクセスタイプが許可されるかどうか判断される。決定320で、受信した要求に関連したアクセスタイプが許可されていないと判断された場合、アクセスを拒否されたページは、リクエスタに返される322。また、決定320で、受信した要求のアクセスのタイプが許可されていると判断された場合、受信した要求は許可され324、処理される。この場合、この受信した要求の処理により、リクエスタは、プライベートネットワークの保護されたリソースにアクセス(例えば、表示、検索など)することができる。オペレーション322および324をもって要求処理300は完了し、アクセスが許可される場合のみ、受信した要求が処理され終了となる。
【0047】
図4は、本発明の一実施形態に係る認証処理400を示すフローチャートである。認証処理400は、例えば、図3に示した認証オペレーション304に関連した処理である。
【0048】
認証処理400は、リクエスタ(ユーザ)に関するローカルレコードが存在するかどうか判断する決定402で開始される。リクエスタに関するローカルレコードが存在すると決定402で判断された場合、決定404で、内部または外部認証が必要かどうか判断される。ここで、ローカルレコードは、内部または外部認証が行なわれるべきかどうかを示す。内部又は外部認証が行なわれるべきかどうかを示す他に、ローカルレコードは更に他の有用な情報、例えば、リクエスタ(ユーザ)の名前、最後にログインした時間、アカウントステータスなどを格納することもできる。決定404で、内部認証が行われるべきであると判断された場合、認証されるべく処理されるログイン要求と共に提供されたパスワードがハッシュされる406。ハッシングとは、文字列を、オリジナルの文字列を示す「キー」と呼ばれる別の文字列に変換することである。ハッシュ機能によりハッシングオペレーションが行われる。ハッシングは、暗号化および復号化コンテキストにおいて行なわれることが多い。
【0049】
次に、決定408で、ハッシュされたパスワードが、格納されたハッシュパスワードと一致するかどうか判断される。決定408で、一致すると判断された場合、認証が得られたとみなされる410。また、決定408で、一致しないと判断された場合、認証に失敗したとみなされる412。さらに、決定408で、一致しないと判断された場合、アクセス失敗もログに記録させることができる414。一実施形態では、ログはログサーバにより提供することができる。アクセス失敗のロギング414は、後にログを閲覧する際、生じたアクセス失敗の性質についての理解を容易にする、アプリケーションレベル情報を提供することができる。オペレーション410および414をもって、認証処理400は完了し、ログイン要求が正しいパスワードを有しているかどうかにより、認証が得られるかまたは得られず終了となる。
【0050】
一方、決定402で、リクエスタに関するローカルレコードが存在しないと判断された場合、決定416で、ローカル設定が必要かどうか判断される。システム設定を用いて、ローカルレコードが必要かどうか示すことができる。管理者は、このようなシステム設定を用いてローカルレコードを有するユーザのみにアクセスを限定することができる。決定416で、ローカル設定が必要であると判断された場合、利用可能なローカルレコードがないため、認証に失敗したとみなされる412。ここでも、アクセス失敗を記録することができる414。また、決定416で、ローカル設定は必要ではないと判断された場合、あるいは、決定404で、外部認証が行なわれるべきであると判断された場合、認証に使用される外部認証サーバ(EAS)のアドレスおよびタイプが得られる418。別の処理は、一般に、異なったタイプの外部認証サーバで行なわれる。通常、これらの外部認証サーバは、認証を行なうことを目的としてプライベートネットワーク内に前もって設けられている。一般に、使用される特定の外部認証サーバを示すシステム設定がある。従って、認証処理400には、そのような外部認証サーバによって提供されるネイティブ認証機能を利用することができる。以下、図7に関する説明により、異なるタイプの外部認証に関する更なる詳細を提供する。
【0051】
次に、決定420で、外部認証が得られたかどうか判断される。ここで、外部認証は示された特定タイプの外部認証により行われる。決定420で、外部認証が得られないと判断された場合、認証に失敗したものとみなされる412。更に、上述のように、アクセス失敗をログすることができる414。一方、決定420で、外部認証が得られたと判断された場合、認証が得られたとみなされる422。オペレーション422をもって、認証処理400は完了し、リクエスタは認証され終了する。
【0052】
図5は、本発明の一実施形態に係るアクセス権処理500を示すフローチャートである。アクセス権処理500は、例えば、図3の決定320によって行なわれる処理である。すなわち、アクセス権処理500は、要求されているアクセスタイプが、特定のリクエスタに許可されるかどうかを判断する。事実上、アクセスタイプにより、リクエスタによるアクセスを制限するために使用することのできる様々な基準が提供される。図5に示した実施形態に関して、その基準には、ソースインターネットプロトコル(IP)アドレス、時刻、およびオペレーションが含まれる。
【0053】
アクセス権処理500は、受信した要求に関連したソースIPアドレス(すなわち、リクエスタ)が認可されるかどうかが判断される決定502で始まる。決定502で、受信した要求に関連したソースIPアドレスが認可されないと判断された場合、アクセス権処理500はアクセスを拒否する504。ここで、認可されていないアクセスの危険性を低減するため、アクセス権処理500は、確実に既知のリクエスタのIPアドレスだけがプライベートリソースにアクセスすることができるようにする。
【0054】
決定502で、ソースIPアドレスが認可されると判断された場合、決定506で、要求がなされている時間が、時刻アクセス制限の条件を満たすかどうか判断される。一般に、この制限は、全リクエスタ、あるいはそれぞれ個別のリクエスタに対して設定することができる。ここで、必要であれば、仲介サーバを構成し、ある一定の期間のみプライベートリソースへのアクセスを許可することができる。これは、例えば、営業時間内または他の限定時間内にのみアクセスを許可することができる。決定506で、要求を受信した時間が、許可された時間外であると判断された場合、アクセス権処理500はアクセスを拒否する504。
【0055】
要求を受信した時間が、許可された時間内であると判断された場合506、決定508で、受信した要求に関連した特定のオペレーションが許可されるかどうか判断される。ここで、送信されてきた要求は、プライベートリソースに関して様々な異なったオペレーションが行なわれることを要求することができる。これらの様々な異なったオペレーションは、提供されているアプリケーションのタイプに応じて異なる傾向にある。決定508を行うことにより、異なったリクエスタにより使用されることが許可されるオペレーションを制限することができる。決定508で、要求されているオペレーションが許可されないと判断された場合、アクセスは拒否される504。一方、決定508で、要求されたオペレーションが許可されると判断された場合、アクセスが許可される510。オペレーション504および510をもって、アクセス権処理500は完全し終了となる。
【0056】
図6は、本発明の一実施形態に係る、操作権限処理600を示すフローチャートである。操作権限処理600は、例えば、図5に示した決定508により行なわれる。操作権限処理600は、要求されたオペレーションが許可されると判断された場合、そのようなオペレーションを実行することから、図3のオペレーション320および324に関連させることができる点にも注意されたい。
【0057】
操作権限処理600は、ファイルブラウズオペレーションが要求されているかどうか判断する決定602で始まる。決定602で、ファイルブラウズオペレーションが要求されていると判断された場合、決定604で、ファイルブラウズがリクエスタに許可されているかどうか判断される。決定604で、ファイルブラウズがリクエスタに許可されていないと判断された場合、アクセスは拒否され606、操作権限処理600は終了する。また、決定604で、ファイルブラウズがリクエスタに許可されていると判断された場合、決定608で、読み取りまたは書き込みオペレーションが要求されているかどうか判断される。決定608で、書き込みオペレーションが要求されていると判断された場合、決定610で、書き込みアクセスが許可されているかどうか判断される。一実施形態では、決定610で、要求をしている特定のリクエスタによる書き込みアクセスが、許可されているかどうか判断される。決定610で、書き込みアクセスが許可されていないと判断された場合、アクセスは拒否され606、操作権限処理600は終了する。また、決定610で、書き込みアクセスが許可されていると判断された場合、書き込み要求処理が行われ612、受信した要求を実行する。オペレーション612をもって、要求されたオペレーションが実行され、操作権限処理600が終了する。
【0058】
一方、決定608で、読み取りオペレーションが要求されていると判断された場合、決定614で、読み取りアクセスが許可されているかどうか判断される。一実施形態では、決定614で、要求している特定のリクエスタによる読み取りアクセスが許可されているかどうか判断される。決定614で、読み取りアクセスが許可されていないと判断された場合、アクセスは拒否される606。また、決定614で、読み取りアクセスが許可されていると判断された場合、読み取り要求処理が行われ616、要求されたオペレーションが実行される。オペレーション616をもって操作権限処理600は完了し、要求されたオペレーションが実行され、終了する。
【0059】
一方、決定602で、要求されたオペレーションがファイルブラウズオペレーションではないと判断された場合、決定618で、要求されたオペレーションがウェブブラウズオペレーションかどうか判断される。決定618で、要求されたオペレーションがウェブブラウズオペレーションであると判断された場合、決定620で、そのウェブブラウズオペレーションに関連したサーバが、リクエスタにアクセス可能かどうか判断される。決定620で、サーバがリクエスタにアクセス不可能であると判断された場合、アクセスは拒否される606。一実施形態では、仲介サーバは、特定のリクエスタによりアクセス可能なサーバのリストを保持することができる。これにより、仲介サーバは、特定のリクエスタがサーバ名によってブラウズすることができるリソースをコントロールすることができる。例えば、プライベートネットワークには多数のサーバが含まれている場合もあるが、リクエスタは、ある一定のサーバにのみアクセスできるよう、個別に制限することができる。また、決定620で、そのウェブブラウズオペレーションに関連したサーバが、リクエスタにアクセス可能であると判断された場合、ウェブブラウズ要求処理が行われる622。言い換えれば、リクエスタに特定のサーバにアクセスする権限が与えられていたため、要求されたウェブブラウズオペレーションが行われる622。オペレーション622をもって、要求されたオペレーションが実行され、操作権限処理600は終了する。
【0060】
一方、決定618で、要求されたオペレーションが、ウェブブラウズオペレーションではないと判断された場合、決定624で、要求されたオペレーションがEメールオペレーションであるかどうか判断される。決定624で、要求されたオペレーションがEメールオペレーションであると判断された場合、決定626で、Eメール(電子メール)がリクエスタに許可されているかどうか判断される。決定626で、Eメールがリクエスタに許可されていないと判断された場合、アクセスは拒否される606。ここで、仲介サーバは、特定のリクエスタによるEメールオペレーションへのアクセスをコントロールすることができる。また、決定626で、Eメールがリクエスタに許可されている判断された場合、Eメール要求処理が行われる628。言い換えれば、リクエスタがそのオペレーションを行なうための適切な権限を持っていたため、要求されたEメールオペレーションが実行される。オペレーション628をもって、要求されたオペレーションが実行され、操作権限処理600は終了する。
【0061】
更に、決定624で、要求されたオペレーションがEメールオペレーションではないと判断された場合、決定630で、要求されたオペレーションが、仲介サーバにより許可されている他の何らかのオペレーションであるかどうか判断される。この場合、他のオペレーションとしては、仲介サーバにより容易になされる適切ないかなるオペレーションであってもよい。実質的に、他のオペレーションは、仲介サーバで利用可能な汎用オペレーションであってもよい。他のオペレーションはまた、プライベートネットワークにアクセスすることなく、仲介サーバが実行するローカルオペレーションのことであってもよい。ローカルオペレーションの例は多種多様であるが、ブックマークの付加、ローカルレコードの追加、編集、および削除、ファイルシェアの修正などが挙げられる。しかしながら、前記他のオペレーションは、プライベートネットワーク内で行なわれるオペレーションであってもよい。決定630で、要求されたオペレーションが上記他のオペレーションのうちの一つであると判断された場合、決定632で、当該他のオペレーションが許可されているかどうか判断される。決定632で、要求されたオペレーションが許可されている上記他のオペレーションのうちの一つではないと判断された場合、アクセスは拒否される606。また、決定632で、前記他のオペレーションが許可されていると判断された場合、他の要求処理が行われる634。オペレーション634をもって、操作権限処理600は完了し、他のタイプのオペレーションが行われ、終了となる。
【0062】
一方、決定630で、要求されたオペレーションが許可されている(リクエスタによる)他のオペレーションのうちの一つではないと判断された場合、操作権限処理600は、要求されたオペレーションを行うことなく終了となる。この場合、要求されたオペレーションが、操作権限処理600によりサポートされず、要求されたオペレーションは仲介サーバで処理されない(つまり、ブロックされる)。
【0063】
図7は、本発明の一実施形態に係る詳細な外部認証処理700を示すフローチャートである。詳細な外部認証処理700は、例えば、図4に示した決定420に関連した詳細な処理である。詳細な外部認証処理700は、ネットワーク情報システム(NIS)、リモート・オーセンティケイション・ダイアル・イン・ユーザ・サービス(RADIUS)、ライトウェイト・ディレクトリー・アクセス・プロトコル(LDAP)、およびNTドメインを含む様々な異なったタイプの外部認証システムをサポートする。従って、仲介サーバに対し行なわれる外部認証は、プライベートネットワークが提供している場合もある、様々なネイティブの認証アプローチのうちのいずれかを使用することができる。
【0064】
詳細な外部認証処理700は、外部認証サーバ(EAS)がNISであるかどうか判断する決定702で開始される。外部認証サーバがNISである場合、NISレコードが読み取られる704。その後、ログイン要求と共に提供されたパスワードが、ハッシュされる706。ハッシュされたパスワードは、NISレコード内に提供されているものと比較される708。そして、決定710で、ハッシュされたパスワードが一致するかどうか判断される。パスワードが一致した場合、認証が行われる712。パスワードが一致しない場合、認証は失敗に終わる714。
【0065】
一方、決定702で、外部の認証サーバがNISではないと判断された場合、決定716で、外部認証サーバがRADIUSであるかどうか判断される。外部認証サーバがRADIUSである場合、ログイン要求と共に提供されたユーザ名およびパスワードが、RADIUSの共有秘密を用いて暗号化される718。RADIUSの共有秘密は、一般に共有鍵である。その後、暗号化された値は、認証のためRADIUSサーバに送られる720。そして、決定722で、RADIUSサーバからのレスポンスが受け取られたかどうか判断される。レスポンスは、受け取られると、認証成功か失敗かを示す724。
【0066】
一方、決定716で、外部認証サーバがRADIUSではないと判断された場合、決定726で、外部認証サーバがLDAPであるかどうか判断される。決定726で、外部認証サーバがLDAPであると判断された場合、ログイン要求と共に提供されたユーザ名とパスワードが認証のためにLDAPサーバに送られる728。その後、決定730で、LDAPサーバからのレスポンスが受け取られたかどうか判断される。レスポンスは、受け取られると、認証成功か失敗かを示す732。
【0067】
一方、決定726で、外部認証サーバがLDAPではないと判断された場合、決定734で、外部認証サーバがNTドメイン(NTドメインサーバ)であるかどうか判断される。決定734で、外部認証サーバがNTドメインであると判断された場合、NTドメインサーバから乱数が得られる736。その後、ログイン要求と共に提供されたパスワードは、その乱数を用いてハッシュされる738。次に、ハッシュされた値は、認証のためNTドメインサーバに送られる740。その後、決定742で、NTドメインサーバからのレスポンが受け取られたかどうか判断される。レスポンスは、認証成功か失敗かを示す744。
【0068】
図8Aおよび図8Bは、本発明の一実施形態に係るファイルアクセス要求処理800を示すフローチャートである。ファイルアクセス要求処理800は、例えば、ウェブブラウズオペレーションがリクエスタによって要求された場合行われる処理である。言い換えれば、ファイルアクセス要求処理800は、例えば、図6のブロック622の一実施形態により行なわれる処理であってもよい。
【0069】
ファイルアクセス要求処理800は、サーバが発見されているかどうか判断される決定802で始まる。決定802で、サーバが既に発見されていると判断した場合、決定804で、ファイルアクセス要求がフォルダコンテンツを表示しようとするものかどうか判断される。決定804で、ファイルアクセス要求がフォルダコンテンツの表示を望むものであると判断された場合、フォルダのコンテンツが検索される806。そして、検索されたコンテンツが、リクエスタに送られる808。
【0070】
一方、決定804で、ファイルアクセス要求がフォルダコンテンツを表示しようとするものではないと判断された場合、決定810で、ファイルアクセス要求が新しいフォルダを要求しているものかどうか判断される。決定810で、ファイルアクセス要求が新しいフォルダを要求しようとしていると判断された場合、リクエスタは新しいフォルダ名の入力を促される812。その後、決定813で、フォルダ名が受け取られたかどうか判断される。決定813で、フォルダ名がまだ受け取られていないと判断された場合、ファイルアクセス要求処理800はフォルダ名の入力を待つ。決定813で、フォルダ名が受け取られたと判断されると、新しいフォルダが作成される814。
【0071】
また、決定810で、ファイルアクセス要求が新しいフォルダの作成を求めていないと判断された場合、決定816で、ファイルアクセス要求がファイルのダウンロードを求めているものかどうか判断される。決定816で、ファイルアクセス要求がファイルのダウンロードを求めていると判断された場合、リクエスタに対し、要求されたファイルがダウンロードされる818。一方、決定816で、ファイルアクセス要求がファイルのダウンロードを求めているものではないと判断された場合、決定820で、ファイルアクセス要求がファイルのアップロードを求めているものかどうか判断される。決定820で、ファイルアクセス要求がファイルのアップロードを求めていると判断した場合、リクエスタに対し、要求されたファイルがアップロードされる822。また、決定820で、ファイルアクセス要求がファイルのアップロードを求めていないと判断した場合、図8Aには示していないが、更なるタイプのファイルアクセス要求を処理することができる。従って、ファイルアクセス要求がファイルのアップロードを求めているものではない(また、更なるタイプのファイルアクセス要求がサポートされていない)場合、決定820をもって、ファイルアクセス要求処理800は完了し、ファイルアクセスオペレーションは実行されず終了となる。同様に、ブロック808、814、818、および822をもって、ファイルアクセス要求処理800は完了し終了するが、要求されたファイルアクセスは実行されていない。
【0072】
更に、決定802で、サーバがまだ発見されていないと判断された場合、ファイルアクセス要求処理800は、図8Bに示した処理を行う。この場合、利用可能なサーバのリストがまず発見される824。その後、決定826で、リクエスタが利用可能なサーバの中から一つを選択するのを待つ。決定826で、サーバ選択がなされたと判断された場合、選択されたサーバに関する共有情報が検索される828。一実施形態では、共用情報は、リモートリクエスタなどのサードパーティと共用可能である、選択されたサーバに格納されたフォルダの情報を識別する。その後、決定830で、サーバに関する情報を永続的に保存するべきであるかどうか判断される。決定830で、サーバに関する情報を永続的に保存するべきであると判断された場合、サーバ情報は保存される832。サーバ情報の保存により、当該サーバは、次回システムにログインした際、利用可能なサーバを発見する必要がなくなるよう「利用可能なサーバ」となる。一方、決定830で、サーバに関する情報を永続的に保存すべきではないと判断された場合、ブロック832はバイパスされる。いかなる場合も、サーバ情報が永続的に保存されるべきではない場合、ブロック830をもって、また同様に、サーバ情報が永続的に保存されるべきである場合、ブロック832をもって、サーバを発見するための処理は完了し、よって、ファイルアクセス処理800は、決定802に戻り、それ以降のオペレーションを繰り返す。
【0073】
図9A〜9Cは、本発明の一実施形態に係るウェブリソース要求処理900を示すフローチャートである。ウェブリソース要求処理900は、例えば、図1Aに示した仲介サーバ108あるいは図1Bに示した仲介サーバ158といった仲介サーバにより行なわれる。ウェブリソース要求処理900は、ウェブリソース要求を処理するために行われる。
【0074】
まず、適切なリモートサーバのホスト名を得る902。一実施形態では、ホスト名はストレージから得ることができる。この場合、ストレージは、例えば、図2Aに示したデータ記憶装置214であってもよい。別の実施形態では、ホスト名は、ウェブリソース要求に関連したURLから得ることができる。適切なリモートサーバのホスト名が得られた902後、ホスト名が検索され904、適切なリモートサーバのIPアドレスを得る。その後、リモートサーバに接続される906(あるいは、既に接続されている場合維持される)。次に、必要に応じて、仲介サーバとリモートサーバ間で安全なハンドシェークが行われる908。その後、得られたホスト名に関連するあらゆる「クッキー」が得られる910。オペレーション910をもって、仲介サーバにおけるウェブリソース要求の前処理は完了し、こうして、当該要求はリモートサーバへ転送されることができる。この時、関連した「クッキー」を備えたウェブリソースに対する要求がリモートサーバに送られる912。
【0075】
その後、決定914で、レスポンスが受け取られたかどうか判断される。決定914で、レスポンスがまだ受け取られていないと判断された場合、ウェブリソース要求処理900は、そのレスポンスを待つ。決定914で、レスポンスが受け取られたと判断された場合、決定91で、レスポンス内に「クッキー」が存在するかどうか判断される。決定916で、「クッキー」がレスポンス内に存在すると判断された場合、「クッキー」はレスポンスから抽出される918。そして、抽出された「クッキー」は保存される920。一般に、「クッキー」は、仲介サーバ内に設けられた中央ストレージ、あるいは、仲介サーバに関連したまたは接続された他のストレージに格納される。オペレーション920、および「クッキー」がレスポンス内に存在しないと判断された場合は、決定916に引き続き、レスポンスのヘッダー内のURLが修正される922。
【0076】
その後、決定924で、レスポンスが修正されるべきタイプのものであるかどうか判断される。この場合、一般的に、レスポンスは、HTML、グラフィックス、pdf、MPEGあるいは他のフォーマットといった様々な形式のものであり得る。決定924で、レスポンスが修正できないタイプのもの(例えば、グラフィックス)であると判断された場合、レスポンスは直ちにリクエスタに送られる(または転送される)926。その後、決定928で、レスポンスが完了したかどうか判断される。決定928で、レスポンスが完了したと判断された場合、ウェブリソース要求処理900は、更なるウェブリソース要求を処理することができるように、決定914に戻り、それ以降のオペレーションを繰り返す。また、決定928で、これまでのところレスポンスの一部のみがリクエスタに送信されていると判断された場合、ウェブリソース要求処理900は、レスポンスの後続部分を同様に処理することができるように、決定914に戻り、それ以降のオペレーションなどを繰り返す。
【0077】
一方、決定924で、レスポンスは修正可能なタイプのもの(例えば、HTML)であると判断された場合、レスポンスを処理し、レスポンスがリクエスタに戻る前に修正する。図9Cに示した処理は、レスポンスを修正するために行うことができる処理の一実施形態である。詳細には、決定932では、ツールバーが求められているかどうか判断される。仲介サーバは、ツールバーを、常にまたは時によって挿入するように、あるいは、まったく挿入しないように構成することができる。ツールバーは、仲介サーバにより標準化またはカスタマイズすることができる。決定932で、ツールバーが求められていると判断された場合、ツールバーHTMLがレスポンスに挿入される。ツールバーHTMLによって作成されるツールバーは、仲介サーバによって提供されたフィーチャまたはファンクションを容易にするように、得られたレスポンスに付加されるコントロールあるいはコンテンツを提供することができる。
【0078】
次に、レスポンスのHTML部分内の一定のURLは修正できる936。一実施形態では、一定のURLの修正は、得られたHTMLの一定のタグ内でURLのホスト名部分を修正することにより行なうことができる。別の実施形態では、一定のURLは、そのURLにサフィックスを付加することにより修正することができる。サフィックスは、このようにURLに追加情報を持たせる役目をする。さらに、得られたHTML内の言語部分をスクリプトすることにより提供または作成される一定のURLを修正することができる938。言語をスクリプトする例としては、Java(登録商標)ScriptとVBscriptが挙げられる。一実施形態においては、得られたHTML内の言語部分をスクリプトすることにより提供または作成される一定のURLのホスト名部分を修正する938。別の実施形態においては、言語部分をスクリプトすることにより提供または作成される一定のURLを修正し938、補足的情報を有するサフィックスを含むようにする。以下、言語部分のスクリプトの修正に関する更なる詳細を、図13Aおよび図13Bを参照し説明する。その後、修正されたレスポンスは、リクエスタに送信される940。
【0079】
その後、決定942で、要求が終了したかどうか判断される。決定942で、要求は終了したと断定された場合、ウェブリソース要求処理900は完了し終了となる。一方、決定942で、要求はまだ完了していないと判断された場合、ウェブリソース要求処理900は、レスポンスの残りの部分が、受け取られると同時に同様に処理されるように、決定914に戻りそれ以降のオペレーションを繰り返す。このように、ウェブリソース要求処理900は実行され、多数のデータ部分あるいはデータブロック中のリソース要求に対する単一のレスポンスを処理することができる。このような場合、リクエスタへの応答性が阻害されないように、ウェブリソース要求処理900は、リモートサーバからのレスポンスを受け取るとすぐ処理することができる。この点に関して、ウェブリソース要求処理900は、レスポンスに関連した各データ部分あるいはデータブロックに対して、オペレーション914〜942が繰り返されるようにする。
【0080】
図10は、本発明の一実施形態に係る情報検索システム1000を示す図である。情報検索システム1000は、図1Aの情報検索システム100または図1Bの情報検索システム150と概して同様のものである。情報検索システム1000のオペレーションに関して、一実施形態に係るそのオペレーションを示す代表例を挙げて以下論じる。情報検索システム1000は、クライアント1002、データストア1006を備えた仲介サーバ1004、およびリモートサーバ1008を含む。図3の要求処理300は、既に行なわれているものとし、また、リクエスタは、試みた方法で、要求されたリソースにアクセスすることを許可されているものとする。
【0081】
この代表的な例は、ユーザが、ウェブブラウズ要求のコンテンツ内に表示されたウェブページ中のハイパーリンクを選択することで開始される安全な要求に関する。選択されたハイパーリンクを、
https://secure.danastreet.com/quote/msft:danainfo:host=www.xyz.com
と仮定する。ここで、「https」は、セキュア・ソケット・レイヤ(SSL)を使用するプロトコルであり、「secure.danastreet.com」は、「danastreet.com」をドメインとし、「secure」をサブドメインとするホスト名であり、「/quote/msft」は、前記ハイパーリンクの選択により要求される特定のリソースへのパスであり、「danainfo」はキーワードであり、「www.xyz.com」は、要求されたリソースが存在するホストある。従って、ホスト名前「secure.danastreet.com」のドメインネームの検索は、この例に関する仲介サーバ1004であるdanastreet.comのIPアドレスによりなされる。そして、その要求はクライアント1002から仲介サーバ1004へ送信される。その要求は、例えば、以下のようなものである:
GET:/quote/msft:danainfo:host=www.xyz.com HTTP/1.0
Host:secure.danastreet.com
Cookie:DSID=123xyzzbc
追加のクッキー、暗号化の容認等、他の情報も、要求内に含まれていてもよい。クッキーは、この例では、セッションクッキー(セッションID)であり、クライアント1002に、仲介サーバ1004を用いた使用が許可されているかどうかを判断する際に使用される。
【0082】
安全な要求の場合には、要求内のホスト名は、要求が最終的に送信されるリモートサーバ1008を直接識別することはできない。しかしながら、リモートサーバ1008に関するホスト名は、要求と共に提供される情報から得られる。より詳しくは、情報(つまり、ホスト変数)は、要求と共にサフィックスとして提供される。この例において、サフィックスは、リモートサーバ1008のホスト名が、「www.xyz.com」であるという情報を含む。適切なホスト名が得られると、ホスト名(「www.xyz.com」)に関するドメインネーム検索が行われる。次に、仲介サーバ1004およびリモートサーバ1008からの接続が行われ(あるいは、既に接続されていた場合は、維持され)、安全なハンドシェークがオプションとして行われる。その後、ホスト名およびリクエスタに関連したデータストア1006内のあらゆるクッキーを得ることができる。次に、仲介サーバ1004による要求は、リモートサーバ1008に送信される。その要求は、例えば、
GET:/quote/msft HTTP/1.0
Host:www.xyz.com
Cookie:xyzUserID=sam
である。他の情報も前記要求に含まれていてもよい。オリジナルの要求と共に提供されるクッキーは、仲介サーバ1004に関したものであり、よって、リモートサーバ1008へ要求と共に転送されることはないという点に注意されたい。
【0083】
リモートサーバ1008は、要求を受け取り、レスポンスヘッダーおよび要求されたリソースのコンテンツの一部または全てを送り返す。典型的なレスポンスは、以下のフォーマットを有していてもよい:
HTTP/1.0 200 OK
Set−cookie:xyzuserID=Samual,expires=01−Jul−2002
Content−type:text/html
Content−length:2000
Location:https://www.xyz.com/quote/msft<HTML>
**
</HTML>
レスポンスが、設定すべき「クッキー」を含んでいたため、クッキー設定コマンドは、レスポンスから取り除かれた後、データストア1006に保存される。次に、ヘッダー内のURLは、存在する範囲内で、仲介サーバ1004に向けられるように修正される。この例において、位置ヘッダはフルパス(ホスト名を含む)を含む、すなわちhttps://www.xyz.com/quote/msftを含み、よって、これは、https://secure.danastreet.com/quote/msft:danainfo:host=www.xyz.com,SSLに修正される。この例においては、ホスト名が修正されただけでなく、URLの終わり(つまり、サフィックス)に変数も付加されている。付加された変数情報は、要求されたリソースを持つホストサーバのインジケータおよびSSLインジケータである。この例では、関連URLの終わりに変数情報(「danainfo:host=www.xyz.com」)を含むように、関連URLを修正する必要がある。関連URLのホスト名は、現在のホスト名(「secure.danastreet.com」)をそのようなパスに使用させるクライアント1002上で作動するブラウザアプリケーションにより適切に提供される。もし必要であれば、仲介サーバ1004にサポートされたオペレーションまたはファンクションを容易にするために、ツールバーをHTMLデータに挿入することができる。更に、得られたHTMLの一定のタグ内のURL、または言語をスクリプトすることにより作成されたものは、仲介サーバ1004に向けられるように修正される。
【0084】
例えば、HTMLデータが、
<a ref=https://www.xyz.com/quote/msft>
といったハイパーリンクを含んでいた場合、ハイパーリンクは、
<a ref=https:Hsecure.danastreet.com
/quote/msft:danainfo:host=www.xyz.com,
SSL>
に修正されるであろう。
また、HTMLデータが
<a ref=a.html>
という関連したハイパーリンクを含んでいた場合、このハイパーリンクは、
<a ref=a.html:danainfo:host=www.xyz.com,
SSL>
に修正されるであろう。
URLの終わり(すなわち、サフィックス)に提供される変数情報は、実際に末尾にある必要はない点に注意されたい。この場合、サフィックスは、一般にドメインネームの右側に示すのに使用される。事実、変数情報は、URL中の様々な異なった位置に(ドメインネームの左側にさえ)配置することができる。例えば、オリジナルのハイパーリンク自体が、記号「?」または「#」に続くような変数を有する場合、一実施例において、変数情報(「danainfo:host=www.xyz.com」)は、オリジナルの変数を示す記号「?」または「#」の前に配置できる。例えば、HTMLデータが、ハイパーリンク:
<a ref=https://www.xyz.com/quote/msft?color=red>
を含んでいた場合、このハイパーリンクは、
<a ref=https:Hsecure.danastreet.com
/quote/msft:d an ainfo:host=www.xyz.com?
color=red>
に修正されるであろう。
また、HTMLデータが、関連したハイパーリンク:
<a ref=a.html?x=1234>
を含んでいた場合、このハイパーリンクは、
<a ref=a.html:danainfo:host=www.xyz.com?
x=1234>
に修正されるであろう。
また別の例として、HTMLデータが、関連したハイパーリンク:
<a ref=a.html,port=1234>
を含んでいた場合、このハイパーリンクは、
<a ref=a.html:danainfo:host=www.xyz.
com,port=1234>
に修正されるであろう。
【0085】
図11は、本発明の一実施形態に係るURL修正処理1100を示すフローチャートである。URL修正処理1100は、例えば、図9Cのオペレーション936によって行われる処理である。URL修正処理1100は、例えば、図2Aに示したコンテンツトランスフォーマ216または図2Bに示したコンテンツトランスフォーマ278により行うことができる。
【0086】
URL修正処理1100は、レスポンスのHTML部分内のターゲットURL(例えば、ウェブページ)を選択1102することにより開始される。一般に、一つ以上のターゲットURLが、前もってHTMLデータのスキャンにより識別される。その後、決定1104で、ターゲットURLが関連URLかどうか判断される。関連URLは、そのソースURLの特性を継承する。ソースURLは、ターゲットURLを含むウェブページ(得られたHTMLを含む)に関連したURLである。決定1104で、ターゲットURLが関連URLであると判断された場合、ソースURLからのホスト名および/またはポートサフィックスが、ターゲットURLに付加される1106。
【0087】
また、決定1104で、ターゲットURLが関連URLではないと判断された場合、決定1108で、ターゲットURLが安全な要求(例えば、HTTPS)に関連しているかどうか判断される。決定1108で、ターゲットURLに対する要求が、安全な要求であると判断された場合、安全標識(例えば、HTTPS)がターゲットURLに付加される1110。一方、決定1108で、ターゲットURLが安全な要求に関連したものではないと判断された場合、オペレーション1110はバイパスされる。
【0088】
オペレーション1110に引き続き、また、ターゲットURLが安全な要求に関連していない場合は決定1108の直後に、ターゲットURLと共に提供されたホスト名は、ターゲットURLのどこか他の位置に追加される1112。例えば、ターゲットURLと共に提供されたホスト名は、ターゲットURLにアペンドすることができる。そして、ターゲットURLと共に提供されたオリジナルのホスト名は、所定のホスト名に置き換えられる1114。言い換えれば、ターゲットURLに元々提供されていたホスト名は、オリジナルのホスト名が所定のホスト名に置き換えられるように効果的に書き換えられるが、オリジナルのホスト名は、ターゲットURLの一部として残る。例えば、所定のホスト名は、適切な仲介サーバのホスト名である。
【0089】
次に、決定1116で、ポート番号がターゲットURLの中で指定されているかどうか判断される。決定1116で、ポート番号がターゲットURLの中で指定されていると判断された場合、ポート番号サフィックスが、ターゲットURLに付加される1118。ホスト名に続くターゲットURLの中で本来指定されていたポート番号は、削除される1120。
【0090】
オペレーション1120に引き続き、URL修正処理1100は決定1122を行う。さらに、決定1116で、ポート番号がターゲットURL内で指定されていないと判断された場合、ポート番号処理は必要なく、決定1122が行われる。決定1122で、更にターゲットURLが処理されることになっているかどうか判断される。先に述べたように、これらのターゲットURLは、得られたHTMLデータのスキャンにより前もって識別されている。決定1122で、処理すべきターゲットURLがまだあると判断された場合、URL修正処理1100は、更なるターゲットURLを処理できるように、オペレーション1102に戻り、それ以降のオペレーションを繰り返す。また、決定1122で、それ以上ターゲットURLはないと判断された場合、URL修正処理1100は完了し、終了となる。
【0091】
図12は、本発明の一実施形態に係るスクリプト修正処理1200を示すフローチャートである。スクリプト修正処理1200は、例えば、図9Cに示したオペレーション938によって行われる。一般に、スクリプト修正処理1200は、得られたHTML内のスクリプト部分を修正する働きをする。
【0092】
スクリプト修正処理1200は、まず、<script>タグに関するHTMLデータ(例えば、得られたHTMLのデータ)をスキャンする1202。その後、決定1204で、スクリプトが見つかったかどうか判断される。決定1204で、スクリプトが見つからなかったと判断された場合、決定1206で、スキャンすべき更なるHTMLデータがあるかどうか判断される。決定1206で、更にスキャンすべきHTMLデータがあると判断された場合、スクリプト修正処理1200は、オペレーション1202に戻り、それ以降のオペレーションを繰り返す。また、決定1206で、スキャンすべきHTMLデータはこれ以上ないと判断された場合、スクリプト修正処理1200は完了し、終了となる。
【0093】
一方、決定1204で、スクリプトが発見されたと判断された場合、ホスト名が後に続くテキストストリング「http://」または「https://」を配置するためスクリプトを検索する1208。そして、決定1210で、スクリプトの検索1208によりURLホスト名が発見されたかどうか判断される。決定1210で、URLホスト名が発見されなかったと判断された場合、決定1212で、スクリプトの最後に達したかどうか判断される。決定1212で、まだスクリプトの最後に達していないと判断された場合、スクリプト修正処理1200はオペレーション1208に戻り、それ以降のオペレーションを繰り返す。また、決定1212で、スクリプトの最後に達したと判断された場合、スクリプト修正処理1200は、更なるスクリプトを発見し処理することができるように、オペレーション1202に戻り、それ以降のオペレーションを繰り返す。
【0094】
一方、決定1210で、URLホスト名が発見されたと判断された場合、書き換えられたホスト名が作成される1214。スクリプトに設けられたホスト名は、その書き換えられたホスト名で置き換えられる1216。オペレーション1216に引き続き、スクリプト内の更なるホスト名を同様に処理できるように、スクリプト修正処理1200は、オペレーション1208に戻り、それ以降のオペレーションを繰り返す。
【0095】
図13Aおよび図13Bは、本発明の別の実施形態に係るスクリプト修正処理1300を示すフローチャートである。スクリプト修正処理1300は、例えば、図9Cに示したオペレーション938によって行われる。一般に、スクリプト修正処理1300は、得られたHTMLのスクリプト部分を修正する働きをする。
【0096】
スクリプト修正処理1300は、最初に、<スクリプト>タグに関するHTMLデータ(例えば、得られたHTMLのデータ)をスキャンする1301。その後、決定1302で、スクリプトが発見されたかどうか判断される。決定1302で、スクリプトが発見されたと判断された場合、スクリプトは解析され1304、スクリプトに関連した所定のプロパティおよび関数を判断または検出する。その後、決定1306で、スクリプト内に少なくとも一つのプロパティまたは関数が発見されたかどうか判断される。決定1306で、少なくとも一つのプロパティまたは関数が発見されたと判断された場合、スクリプト修正処理1300は、仲介サーバがクライアントデバイスとリモートサーバの間に配置されている場合でも、スクリプトが意図通り働くように、スクリプト内で発見されたプロパティまたは関数に関してスクリプトが修正されるように継続される。
【0097】
とりわけ、スクリプト内で発見された各プロパティまたは関数に関しては、処理は以下のように行われる。決定1308で、スクリプト内で発見された、選択されたプロパティまたは関数が、クッキープロパティの読み取りに関するものかどうか判断される。決定1308で、識別されたプロパティまたは関数がクッキープロパティの読み取りに関するものであると判断された場合、クッキープロパティの読み取りは、getCookies関数呼び出しに置き換えられる1310。また、決定1308で、識別されたプロパティまたは関数がクッキープロパティの読み取りではないと判断された場合、および、オペレーション1310の後、決定1312で、識別されたプロパティまたは関数がクッキープロパティへの書き込みに関するかものであるかどうか判断される。決定1312で、識別されたプロパティまたは関数がクッキープロパティへの書き込みに関するものであると判断された場合、クッキープロパティへの書き込みは、set_Cookies関数呼び出しに置き換えられる1314。
【0098】
一方、決定1312で、識別されたプロパティまたは関数がクッキープロパティへの書き込みに関連のないものであると判断された場合、およびオペレーション1314の後、決定1316で、識別されたプロパティまたは関数が、要求を開始するプロパティへの書き込みに関するものかどうか判断される。決定1316で、識別されたプロパティまたは関数が、要求を開始するプロパティへの書き込みに関するものであると判断された場合、要求を開始する(引き起こす)プロパティへの書き込みが、setURL関数呼び出しに置き換えられる1318。また、決定1316で、識別されたプロパティまたは関数が要求を開始するプロパティへの書き込みに関するものではないと判断された場合、およびオペレーション1318の後、決定1320で、識別されたプロパティまたは関数が、URLを返すプロパティからの読み出しに関するものかどうか判断される。決定1320で、識別されたプロパティまたは関数が、URLを返すプロパティからの読み出しに関するものであると判断された場合、URLを返すプロパティからの読み出しは、適切なストリングに置き換えられる1322。
【0099】
また、識別されたプロパティまたは関数が、URLを返すプロパティからの読み出しに関するものではない場合は決定1320の後、および、オペレーション1322の後、決定1324で、スクリプト内に、更に処理を必要とするプロパティまたは関数が発見されたかどうか判断される。更なるプロパティまたは関数が発見され、処理を必要とする場合、スクリプト修正処理1300は、更なるプロパティまたは関数を同様に処理できるように、決定1308に戻り、それ以降のオペレーションを繰り返す。一方、決定1324で、スクリプト内で発見されたプロパティまたは関数が全て処理されていると判断された場合、スクリプト修正処理1300は、決定1326を行う。決定1326はまた、決定1302で、スクリプトは発見されなかったと判断された場合にも行われる。決定1326で、スキャンすべき更なるHTMLデータがあるかどうか判断される。決定1326で、スキャンすべき更なるHTMLデータがあると判断された場合、スクリプト修正処理1300は、オペレーション1301に戻り、それ以降のオペレーションを繰り返す。また、決定1326で、スキャンすべきHTMLデータはこれ以上ないと判断された場合、スクリプト修正処理1300は完了し、終了となる。
【0100】
以下、get cookies関数、set_cookies関数、setURL関数、およびストリング置換の代表的な例を記載する。これらの例は、理解を助けるために挙げられているものであり、よって、本発明のいずれかの態様に関する限定とみなされるべきではない。以下の例では、スクリプト言語としてJava(登録商標)Scriptを使用する。
【0101】
get cookies関数およびオペレーション1310に関する第一の例を以下説明する。この例において、スクリプトは、スクリプト命令
var c=document.cookie;
を含んでいる。これは、そのドキュメント(ページ)に関連したクッキーを変数cに割り当てるものである。このスクリプト命令は、
var c=get cookies (「othercookie=abc」);
と置き換えられるであろう。これは、そのドキュメント(ページ)の特定のドメインおよび特定のユーザ(例えば、「othercookie=abc」)の仲介サーバに存在するクッキーを割り当てるものである。更に、get cookies関数は、その引数として仲介サーバからクッキーを取り、それにスクリプトによって設定される他のクッキーを加える。
【0102】
set cookies関数およびオペレーション1314に関する第二の例を以下説明する。この例において、スクリプトはスクリプト命令
document.cookie="selection=ijk;expires=...":
を含む。これは、ドキュメント(ページ)に関連したクッキーをブラウザに格納する。このスクリプト命令(ステートメント)は
document. cookie = set_cookie("<domain>","selection=ijk;expires=...";);
と置き換えられる。これは、ドキュメント(ページ)に関連したクッキーをブラウザおよび仲介サーバにも格納する。set cookies関数は、2つの引数を含んでいる。第一の引数は、スクリプトを有するページのドメインを識別する。第2の引数は、元々ドキュメントクッキープロパティに割り当てられていた値である。set cookies関数は、これら2つの引数を組み合わせ、有効期限のないservercookieXと呼ばれるクッキーを設定する。但し、Xは、識別数値を表す。ブラウザにより、このクッキーは仲介サーバに送られるであろう。その後、仲介サーバはユーザ用のクッキーストレージにクッキーを組み入れることができる。クッキーはまた、ユーザ用のストレージ中の既存のクッキーを失効させるために使用することができる。一旦、クッキーが仲介サーバに格納されると、仲介サーバが返送する次のページでは、servercookieXはもはや必要とされないため、失効する。setcookies関数に対する呼び出しはまた、servercookieX内にあるいかなるクッキー価値をも付加するであろう。
【0103】
更なる説明を目的として、次の例について考えてみる。次の例では、www.xyz.comのページが、以下のスクリプトを有する:
document.cookie="a=b";
var x=document.cookie;.
また、www.xyz.comサーバは、値"sam"を持つ"id1"という名前を有する仲介サーバに前もってクッキーを返しているものとする。上記コードは、
document.cookie=set cookie("www.xyz.com","a=b");
var x=get cookie("id 1=sam");
に変換されるであろう。
一行目により、「a=b−domain=www.xyz.com」といった値を有するクッキー「servercookie()」が設定される。従って、クッキー全体は以下のようになる:
servercookie()=a=b−domain=www.xyz.com。
servercookie()のドメイン部分は、どのドメインがクッキーを設定しているかが分かるように、仲介サーバによってのみ使用されることに注意されたい。二行目は、その最初の引数(スクリプトが書き換えられると同時に、仲介サーバによって書き込まれた)をとり、ブラウザで全てのservercookie()のクッキーを検査するgetcookies関数を呼び出す。それは、あらゆるservercookieXクッキーと共に最初の引数を連結し、その結果:
id 1=sam;a=b
を返す。これは、たとえ書き換えられていなかったとしても、オリジナルのページから返されるのと同様の結果であることに注意されたい。
【0104】
setURL関数およびオペレーション1318に関する第三の例を以下説明する。そのsetURL関数は、要求をさせるプロパティを修正する働きをする。この例において、スクリプトはスクリプト命令
document.location="http://www.xyz.com/foo.htmi";
を含む。これは、ブラウザを新しいページに導く。このようなスクリプト命令は、
document.location=set URL
" " ,"http://www.xyz.com/foo.html");
と置き換えられる。
setURL関数呼び出しは、2つの引数をとる。第一の引数は仲介サーバによって書き込まれる一方で、スクリプトは書き換えられ、URLに従うためにサフィックス(例えば、「danainfo:」)に通常設けられているあらゆるパラメーターを含んでいる。後で説明するように、これは必ずしも必要とは限らない。第二の引数は、URLであるが、実際には、URLを組み立てるか返信するスクリプト表現(例えば、関数呼び出し)であり得る。
【0105】
setURL関数は、設定されているURLを検査し、ブラウザを仲介サーバに導く形式になるようにそれを書き換える。上述のように、URLは様々な手法で修正することができる。
【0106】
そのページが、ホスト名修正手法を用いている場合、ホスト名が必要な情報をエンコードするため、関連URLを修正する必要はない。前記URLが、全URLである場合、setURL関数は、URLを変換するために必要とする全ての情報を有する。例えば、サフィックス(例えば、「:danalnfo:host=xxx」)をURLにアペンドすることができる。従って、スクリプトが現われるページが、ホスト名修正手法を用いている場合、setURL関数は、第一の引数を必要としない。
【0107】
また、スクリプトの存在するページが、URLサフィックス手法を用いている場合、setURL関数に渡される関連URLは、それに適用されているのと同様のサフィックスを有していなければならない。この場合、仲介サーバは、setURL関数に対する第一の引数として、サフィックスにおいて渡される必要のあるあらゆる引数を挿入するであろう。例えば、そのページのURLが、
https://secure.danastreet.com/quote/msft:danalnfo:host=www.xyz.com
であり、そのページのスクリプト命令が、
document.location="/uqote/ibm";
を含む場合、書き換えられたスクリプト命令は、
document.location=set URL("Host=www.xyz.com","/quote/ibm");
といったものになるであろう。そして、setURL関数から返された結果は、
/quote/ibm:danalnfo:host=www.xyz.com
となるであろう。これは、
https://secure.danastreet.com/quote/ibm:danalnfo:host=www.xyz.com
に対するブラウザからの要求となるであろう。
また、スクリプト命令が上記の代わりに
document.location="https://www.abc.com/info/msft";
であった場合、書き換えられたスクリプト命令は、
document.location=set URL("Host=www.xyz.com","https://www.abc.com/info/msft");
といったものになるであろう。そして、setURL関数から返された結果は、
https://secure.danastreet.com/info/msft:danalnfo:host=www.abc.com
となるであろう。
この場合、第二の引数が完全URLであり、最終URLを構築するのに必要な情報を全て含んでいるため、setURL関数に対する第一の引数は必要とされないことに注意されたい。
【0108】
書かれた時、ブラウザにURLをフェッチさせることのできる多くの関数またはプロパティがあることに注意すべきである。例としては、
window.open('url',...)
form.action='url';
document.location='url';
document.location.replace('url');
image.src='url';
などが挙げられる。
【0109】
ストリング置換およびオペレーション1322に関する第四の実施例を、以下説明する。ストリング置換は、URLを返すプロパティを修正する働きをする。ここで、URLを返すプロパティから読み取るスクリプト命令は、定数ストリングと置き換えられる。この例において、スクリプトが、
var url=document.location;
を含んでいる場合、そのようなものは、
var url="http://www.yahoo.com/foo.htmi";
によって置き換えられるであろう。
このオペレーションは、その環境を検査するいかなるスクリプトも、そのページの実際のURLが、予期するものとは異なることにより混乱することがないよう徹底する役目を果たす。修正を必要とするかもしれない二つ以上のプロパティがあることに注意されたい。そのような修正をすることのできるプロパティのいくつかの例としては、
document.location (全URLを返す)
document.domain (URLのホスト名部分のみを返す)
が挙げられる。
【0110】
図14は、本発明の一実施形態に係る、Eメール要求処理1400を示すフローチャートである。Eメール要求処理1400は、例えば、図6のブロック628で行われたEメール要求処理としての使用に適している。
【0111】
Eメール要求処理1400は、まず、メールクライアントとのセキュア接続を受け入れる1402。ここで、メールクライアントと、受け入れられている1402仲介サーバとの間のセキュア接続は、例えば、セキュア・ソケット・レイヤ(SSL)を使用することにより安全なものとすることができる。次に、リクエスタは、認証のため入力を促される1404。一般に、リクエスタは、リクエスタを認証するために使用できる少なくとも一つのパスワードを入力するように促される1404。そして、決定1406で、パスワードが受け取られたかどうか判断される。一般に、受け取られたパスワードは、なんらかの方法でエンコードされるが、必ずしもエンコードされるとは限らない。例えば、Base64エンコードがよく利用される。決定1406で、パスワードが受け取られたと判断された場合、そのパスワードは、メールサーバパスワードと認証サーバパスワードとに分けられる1408。一例として、受け取られたパスワードは、パスワードセパレータによって分離されたメールサーバパスワードおよび認証サーバパスワードの両方を含んでいてもよい。
【0112】
次に、Eメールサーバは、メールサーバパスワードの確認1410を試みる。ほぼ同時に、認証サーバパスワードは、認証サーバにより確認1412が試みられる。次に、決定1414で、ブロック1410および1412の両方の確認ができたかどうか判断される。決定1414で、両方の確認ができたと判断された場合、パスワードのハッシュされたバージョンが格納される1416。そして、Eメール要求に関連したメールオペレーション処理1418が行われる。一方、決定1414で、ブロック1410および1412の両方の確認ができないと判断された場合、Eメール要求は拒否される1420。オペレーション1418および1420をもって、Eメール要求処理1400は完了し、終了となる。
【0113】
図15は、本発明の一実施形態に係るメールオペレーション処理1500を示すフローチャートである。メールオペレーション処理1500は、例えば、図14に示したブロック1418によって行われる処理の一例である。
【0114】
メールオペレーション処理1500は、接続が時間切れあるいはクローズしたかどうかを判断する決定1502で始まる。この場合、接続とは、メールクライアントと仲介サーバとの間のセキュア接続のことを言う。決定1502で、セキュア接続が時間切れあるいはクローズしたと判断された場合、メールサーバへのEメールアクセスは拒否される1504。従って、セキュア接続が時間切れあるいはクローズした場合、ブロック1504をもって、メールオペレーション処理は完了し終了となる。しかしながら、前記処理を続け、メールサーバにアクセスするために、リクエスタがログインし認証されるようにするため、ログインページをリクエスタに返すこともできる。
【0115】
その一方で、決定1502で、既存の接続が時間切れあるいはクローズしていないと判断された場合、決定1506で、メールクライアントからのコマンドを受け取ったかどうか判断される。決定1506で、メールクライアントからのコマンドを受け取っていないと判断された場合、メールオペレーション処理1500は、決定1502に戻り、メールクライアントからのコマンドを受け取るか、接続が時間切れあるいはクローズするまで、それ以降のオペレーションを繰り返す。
【0116】
決定1506で、メールクライアントからのコマンドを受け取ったと判断されると、コマンドはメールサーバに送られる1508。次に、決定1510で、メールサーバからレスポンを受け取ったかどうか判断される。決定1510で、メールサーバからレスポンスをまだ受け取っていないと判断された場合、メールオペレーション処理1500は、そのようなレスポンスを待つ。決定1510で、レスポンスを受け取ったと判断されると、レスポンス内の一定のユニバーサル・リソース・ロケーター(URL)を修正する1512。例えば、コンテンツトランスフォーマの一部として、リンクまたはURLは、仲介サーバを介してリンクを転送するように修正することができる。次に、レスポンスは、メールクライアントに送られる1514。ここで、レスポンスは、メールクライアントと仲介サーバとの間に存在する接続を用いて、メールクライアントに送られる。ブロック1514に引き続き、メールオペレーション処理1500は、メールサーバに関して更なるコマンドを処理することができるように決定1502に戻り、それ以降のオペレーションを繰り返す。
【0117】
図16は、本発明の一実施形態に係る認証処理1600を示すフローチャートである。認証処理1600は、図14に示したブロック1412の一実施形態を表す。この実施形態では、ある条件が満たされた場合、仲介サーバは、認証サーバによるパスワードの実際の確認をバイパスまたは回避することができる。そうすることにより、認証は、多くの場合、非常に迅速、且つ、リクエスタに負担をかけたり、いらだたせたりすることなく行なうことができる。
【0118】
認証処理1600は、格納されているハッシュされたパスワードが利用可能かどうか判断する決定1602で始まる。ハッシュされたパスワードが前もって格納されている(図14のオペレーション1416)場合、そのハッシュされたパスワードは、この事項に関して後に検索され使用される。従って、決定1602で、格納されているハッシュされたパスワードが利用可能であると判断された場合、その格納されているハッシュされたパスワード、最後に許可された時間、および最後にパスワードが使用された時間が検索される1604。一般に、これらの値は、仲介サーバに関連したデータストアに格納されており、そのリクエスタに特有の保管値である。
【0119】
次に、決定1606で、受け取ったパスワードのハッシュが格納されているハッシュされたパスワードと等しいかどうか判断される。決定1606で、受け取ったパスワードのハッシュが、格納されているハッシュされたパスワードと等しいと判断された場合、リクエスタは事実上認証される。これは、セッションの初めに、適切なパスワードを入力し、そして認証されたためである。さらに、決定1610で、最後に許可されてからの時間が、セッション継続時間の上限より長いかどうか判断される。ここで、最後に許可されてから有効期限が切れていた時間の長さを示す変数を、セッション継続時間の上限と比較する。一般に、セッション継続時間の上限は、リクエスタ、あるいは仲介サーバのシステム管理者によって設定される。
【0120】
いかなる場合も、決定1610で、最後に許可されてからの時間がセッション継続時間の上限を超過していないと判断された場合、決定1612で、最後にパスワードが使用されてからの時間が、アイドルタイムの上限を超過しているかどうか判断される。ここで、最後にパスワードが使用されてから有効期限が切れていた時間の長さを示す変数を、アイドルタイムの上限と比較する。決定1612で、最後にパスワードが使用されてからの時間が、アイドルタイムの上限を超過していないと判断された場合、認証サーバと対話する必要なく、認証サーバによる認証1614が正常に得られたものとされる。従って、最後に許可されてからの時間がセッション継続時間の上限を超過しておらず、更に、最後にパスワードが使用されてからの時間がアイドルタイムの上限を超過していなければ、受け取ったパスワードのハッシュが、格納されているハッシュパスワードと等しい場合、許可サーバに関する認証はバイパスすることができる。
【0121】
一方、特別な条件が存在しない場合、パスワードは認証サーバにより確認される1608。例えば、決定1602で、格納されているハッシュパスワードが利用不可能であると判断された場合、認証サーバによる確認1608が行われる。同様に、決定1606で、受け取ったパスワードのハッシュが格納されているハッシュパスワードと等しくないと判断された場合も、認証サーバによるパスワードの確認1608が必要となる。さらにまた、決定1610で、最後に許可されてからの時間が、セッション継続時間の上限を超過していると判断された場合、または、決定1612で、最後にパスワードが使用されてからの時間がアイドルタイムの上限を超過していると判断された場合、パスワードは、認証サーバにより確認1608される必要がある。
【0122】
オペレーション1608および1614に引き続き、認証処理1600は、他の処理を行うため前のオペレーション、すなわち図14に示したオペレーション1414に戻る。従って、上記の特別な条件が存在するため確認1608がバイパスされる場合、認証処理は非常に簡素化され、多くの場合、認証サーバに関する複雑な認証処理を行なったり、リクエスタに認証情報の入力を促したりする必要がなくなる。
【0123】
図17Aと1713は、本発明のいくつかの実施形態により使用できるコンピュータシステムの一例を示す。このコンピュータシステムは、例えば、クライアントマシン、仲介サーバ、あるいはリモートまたはプライベートサーバのうちのいずれかに該当し得る。図17Aは、ディスプレイ1723、スクリーン1725、キャビネット1727、キーボード1729、およびマウス1731を備えたコンピュータシステム1721を示している。マウス1731は、グラフィカルユーザインターフェースとの対話のため一以上のボタンを備えていてもよい。キャビネット1727は、本発明のいくつかの実施形態をインプリメントするコンピュータコードを組み込むソフトウェアプログラムや、本発明のいくつかの実施形態で使用するデータ等を格納したり検索したりするのに利用できる取出し可能なメディア(例えば、CD−ROM)ドライブ1733、システムメモリ、およびハードドライブ(図1713参照)を収容している。CD−ROM1735は、典型的なコンピュータ読み取り可能記憶媒体として示しているが、フロッピー(登録商標)ディスク、テープ、DVD、フラッシュメモリ、システムメモリ、およびハードドライブを含む他のコンピュータ読み取り可能記憶媒体を利用してもよい。さらに、搬送波(例えば、インターネットを含むネットワーク)に組み込まれたデータ信号が、コンピュータ読み取り可能記憶媒体であってもよい。一インプリメンテーションにおいて、コンピュータシステム1721用のオペレーティングシステムは、システムメモリ、ハードドライブ、CD−ROM1735、または他のコンピュータ読み取り可能な記憶媒体に設けられ、本発明のいくつかの実施形態をインプリメントするコンピュータコードを組込む役目を果たす。
【0124】
図1713は、本発明の一実施形態に係る処理を行なうために使用されるコンピュータシステム1721のシステムブロック図を示す。図17Aに示すように、コンピュータシステム1721は、モニター1723、キーボード1729、およびマウス1731を備えている。コンピュータシステム1721は、更に、中央処理装置1751、システムメモリ1753、固定記憶装置1755(例えば、ハードドライブ)、取外し可能記憶装置1757(例えば、コンパクトディスク)、ディスプレイアダプタ1759、サウンドカード1761、スピーカー1763、およびネットワークインターフェイス1765等のサブシステムを備えている。中央処理装置1751は、例えば、コンピュータプログラムコード(例えば、オペレーティングシステム)を実行し、本発明のいくつかの実施形態をインプリメントすることができる。オペレーティングシステムは、通常、実行中はシステムメモリ1753内に存在するが、必ずしもそうでなくてもよい。本発明のいくつかの実施形態における使用に適した他のコンピュータシステムは、更なるサブシステムを備えていてもよいし、より少ない数のサブシステムを備えていてもよい。例えば、別のコンピュータシステムは、二以上のプロセッサ1751(すなわち、マルチプロセッサシステム)またはキャッシュメモリを備えていてもよい。
【0125】
コンピュータシステム1721のシステムバスアーキテクチャは、矢印1767で示されている。しかしながら、これらの矢印は、サブシステムをリンクする役目を果たす相互連結スキームを説明するものである。例えば、システムメモリやディスプレイアダプタに中央処理装置を接続するためにローカルバスを利用することができる。図17Aに示したコンピュータシステム1721は、単に、本発明のいくつかの実施形態での使用に適したコンピュータシステムの例に過ぎない。サブシステムの構成が異なるその他のコンピュータアーキテクチャも利用できる。
【0126】
上記実施形態では、情報検索システム内の単一仲介サーバの使用について説明したが、情報検索システムは複数の仲介サーバを備えていてもよいことに気付くべきである。様々な仲介サーバは、クライアントマシンから個々に要求を受け、適切なサーバに転送し、仲介サーバを介してクライアントマシンにレスポンスを返すことができる。複数のサーバを有することによって、更なる処理能力が得られるだけでなく、ロードバランシング、フォルトトレランス、およびローカライゼーション問題もさらに対処することができる。
【0127】
図18は、いくつかの実施形態を示すブロック図である。いくつかの実施形態は、少なくともクライアント側の部分を含み、いくつかの実施形態は、少なくともサーバ側の部分を含み、また、いくつかの実施形態は、少なくともそれぞれ一つづつを含む。図18は、この例ではクライアントマシンを含むクライアントネットワーク1810と、この例では、企業サーバを含むリモートネットワーク1840と、クライアントネットワーク1810とリモートネットワーク1840を接続するインターネット1890とを示している。クライアントマシン1810は、Win32アプリケーション等のクライアント/サーバプリケーションのクライアントアプリケーション1812と、レイヤドサービスプロバイダ(LSP)1814と、ネームスペースプロバイダ(NSP)1815と、セッションマネージャ1816と、Winsock API1818とを備えている。リモートネットワーク1840は、クライアント/サーバプリケーションのサーバプリケーション1842と、DNSサーバ1844と、中間サーバ1846とを備えている。中間サーバ1846は、デーモン1848を備えている。セッションマネージャ1816とデーモン1848は、(例えば、ポート443を介して)通信プロトコル1850によりインターネット1890上で通信する。セッションマネージャ1816は、通信プロトコルクライアントと呼ぶことができる。多くの実施形態では、中間サーバはリモートネットワークの一部と考えられる。
【0128】
いくつかの実施形態は、セキュアアプリケーションマネージャと呼ばれる。セキュアアプリケーションマネージャのいくつかの実施形態は、クライアントと企業リソース間のネットワークレベルで分離されており、したがって、より安全である。
【0129】
セキュアアプリケーションマネージャのいくつかの実施形態は、クライアントソフトウェア、例えば、Win32ベースのソフトウェアを備えており、これは、リモートアクセスセキュアネットワークコネクションを、アプリケーション毎および/またはホスト毎に、中間サーバを介して安全に、企業クライアント/サーバプリケーションリソースにトランスペアレントに転送できる。例えば、中間サーバの管理者は、特定のクライアントアプリケーションから、企業リソースへのアクセスの一部または全てを保護するよういくつかの実施形態を構成することができる。クライアント側アプリケーションのいくつかの例としては、Outlook等のEメールアプリケーション、連絡先管理アプリケーション、またはメモ帳アプリケーション;SAP R/3クライアント等のクライアント側エンタープライズリソースプランニングアプリケーション、Citrix ICA等のクライアント側アプリケーションサービスソフトウェア、インターネットエクスプローラ等のブラウザなどが挙げられる。
【0130】
いくつかの実施形態は、Windows(登録商標)(登録商標)ソケットレイヤの内でネットワーク接続要求を転送する。Windows(登録商標)(登録商標)ソケットレイヤは、Winsockダイナミックリンクライブラリ、Winsock2ダイナミックリンクライブラリ、アプリケーションプログラムインターフェイス、レイヤドサービスプロバイダ(LSP)、レイヤドサービスプロバイダのためのサービスプロバイダインターフェース、ネームスペースプロバイダ(NSP)、ネームスペースプロバイダインターフェース、トランスポートサービスプロバイダインターフェース、およびトランスポートサービスプロバイダのうち少なくとも一つを含むことができる。
【0131】
図19は、WinsockアプリケーションおよびWindows(登録商標)(登録商標)ソケットレイヤを備えた実施形態を示す。図19は、Winsockアプリケーション1910、Winsock API1915、Winsock DLL1920、Winsockトランスポート SPIおよびネームスペースSPI1930、LSP SPI 1935、LSP 1936および1938、トランスポートサービスプロバイダ1945(図示されているTCP/IPトランスポートサービスプロバイダおよびIPX/SPXトランスポートサービスプロバイダ)、およびネームスペースプロバイダ1955(図示されているDNSネームスペースプロバイダおよびIPXネームスペースプロバイダ)を示している。
【0132】
図20は、WinsockアプリケーションとWindows(登録商標)(登録商標)ソケットレイヤを含む別の実施形態を示す。図20は、Winsock2アプリケーション2010、Winsock2 API2015、Winsock2 DLL2020、Winsock2トランスポートSPI2030、Winsock2ネームスペースSPI2040、トランスポートサービスプロバイダ2050、およびネームスペースプロバイダ2060を示している。
【0133】
クライアントソフトウェアは、(例えば、中間サーバ上にあるActiveXコントロールから)ダウンロードし、起動することができる。LSPとNSPは、システムにインストールすることができる。セキュアアプリケーションマネージャプロキシは、(例えば、ActiveXコントロールにより)ダウンロードし、起動することができる。
【0134】
1990年代の初めに、いくつかのソフトウエアベンダーが協力し、Windows(登録商標)(登録商標)に初めて標準化されたTCP/IP接続が導入され、これはWinsockとしてよく知られている。この成功に伴い、ソフトウエアベンダーは、ネットワークトラフィックストリームに接続するための多くのアプリケーションを見つけ出し、WinsockDLLの接続、チェーニング、および置き換えを開始した。これにより、ネットワークトラフィックをモニター、修正、または転送するためのソリューションを提供した。しかしながら、それらを提供する上で基準となる方法がなかったため、Windows(登録商標)(登録商標)プラットフォームに多くのコンパティビリティ問題が生じた。
【0135】
1990年代中頃に、Winsockフォーラムが、Winsock2のスペックを作成した。この新しいAPIの目的の例としては、オーバーラップした、イベントベースの入出力等、より多くのWin32入出力機構のサポート、複数のベンダーが、Winsock APIにあらゆるタイプのネットワークプロトコルを接続することができるようプロトコルの独立性の確立、そして、Winsock呼び出しを接続するためのメカニズム(LSP)を標準化することが挙げられる。
【0136】
マイクロソフトは、Windows(登録商標)(登録商標)NT4.0と共に1996年に最初のWinsock2の使用を可能にしたOSの販売を開始し、後にWindows(登録商標)(登録商標)98のリリースと共に、古いシステムをWinsock2にアップグレードするためにWindows(登録商標)(登録商標)95最新版をリリースした。
【0137】
最初のWinsock2およびベンダーLSPインプリメンテーションはバグが多く、これらをベースとした製品は、限定された範囲での成功に終わった。2003年の今日、Winsock2フレームワークは安定し、LSPをベースにしたいくつかの製品により、その技術は証明されている。
【0138】
Winsock2は、アプリケーションプログラムインターフェイス(API)だけでなく、トランスポートおよびネームスペースプロバイダ双方のためのサービスプロバイダーインターフェース(SPI)も標準化している。さらに、そのフレームワークは、トランスポートプロバイダ、別名、LSPの階層化をサポートする。実際のWinsock DLLは、マイクロソフトによりインプリメントされ、あらゆるベンダーが自由にトランスポートおよびネームスペースプロバイダをインプリメントし、それらをシステムにインストールすることができる。レガシーWinsock1 API(例えば、winsock.dll、wsock32.dII; いずれもWinsockダイナミックリンクライブラリとして知られている)に書き込まれたアプリケーションは、新しいWinsock2 API(ws2 32.dII、さらに、Winsockダイナミックリンクライブラリとも呼ばれる)にサンクされている。
【0139】
レイヤドサービスプロバイダー(LSP)は、Windows(登録商標)(登録商標)で使用することができ、アプリケーションがTCP/IPスタック上でカスタムトランスポートサービスを行うことを可能にするLSPアーキテクチャを提供する。クライアントマシンにLSPサービスがインストールさている場合、クライアントマシン上で作動するWin32アプリケーションは自動的にLSPサービスを読み込むことができる。そして、LSPサービスは、Winsock呼び出しに対する呼び出しの一部または全てをインターセプトすることができ、更なるカスタムトランスポートメカニズムを付加することができる。また、ネットワークデータおよび/またはWinsock APIからのイベントを検査、修正、および/または転送することができる。このレベルでネットワークトラフィックをキャプチャすることにより、LSPは、呼び出しアプリケーションのコンテキストにおいて実行することができ、そのプロセス情報にフルにアクセスできる。アプリケーションレベルデータへのアクセスは可能であるが、TCPおよび/またはIPレベルヘッダー情報へのアクセスはできない場合もある。
【0140】
LSPサービスは、(例えば、中間サーバにおいて)アプリケーションの設定リストから送られてくるソケット接続呼び出しの一部または全てといったトラフィックをインターセプトすることができ、セッションマネージャを介して、通信プロトコル、例えば、カスタムまたは標準プロトコルを使用するHTTPSによる場合のように安全に送信できる。同様に、NSPは、(例えば、中間サーバにおいて)アプリケーションの設定リストから送られてくる宛先ホスト名に関するDNS照会を処理し、セッションマネージャを介して、通信プロトコル、例えば、カスタムまたは標準プロトコルを使用するHTTPSによる場合のように安全に送信できる。
【0141】
セッションタイムアウト処理および/または他のアクセス機構の同時処理のために、LSPサービスは、ホストを対象としたトラフィックを無視する(Winsock APIに直接渡す)ことを自動的に選択することができる。このトラフィックは、クライアント側部分がダウンロードされるホストのIPアドレスであってもよい。これは、たとえブラウザが、セキュアアプリケーションマネージャを介して保護されるアプリケーションとなるように構成されている場合でも可能である。
【0142】
いくつかの実施形態は、WSPStartup()関数をエクスポートすることができるWin32 DLLのようなダイナミックリンクライブラリを備えている。インストーラーは、他のLSP上にレイヤとなるプロトコルおよび他のLSPに関してのオーダーについて記述する一以上のプロトコルチェーンとLSPとを登録することができる。アプリケーションがWinsockライブラリーを読み込む場合、WinsockはLSPのWSPStartup()関数を呼び出すことができる。この時、LSPは、チェーン内で上に位置するLSPまたはWinsockカタログにそのSPIエントリーポイントを返すことができる。LSPは、チェーン内の次のプロバイダを読み込み、同様のエントリーポイント交換を行なうことができる。チェーンは、ベーストランスポートプロバイダと呼ばれるトランスポートサービスプロバイダで終わっていてもよい。この時点で、呼び出しは、カーネル内のTDIプロトコルドライバに、またはTDIプロトコルドライバからディスパッチすることができる。
【0143】
LSPは、マイクロソフトにより供給される参照インプリメンテーションをベースにすることができる。
【0144】
LSPプロトコルチェーンインストール/アンインストールコードは、インストーラーへの組み込みを容易にするため、自動登録機能、DIIRegisterServer()およびDIIUnregisterServer()を使用し、同じDLLにおいてインプリメントすることができる。他の実施形態は、複数のDLLにおいてインプリメントすることができる。
【0145】
ネームスペースプロバイダ(NSP)は、所定のネームスペースに対しネーム解決を行なうことができる。TCP/IPネームスペースに対して、マイクロソフト・インプリメンテーションは、DNSレゾリューションを行なうことができる。NSPは、NSPStartup()関数をエクスポートするWin32 DLLのようなダイナミックリンクライブラリを含むことができる。LSP同様、インストーラーはNSPを登録することができる。Winsockは、必要に応じてNSPを読み込んだり、エントリーポイントを交換したりすることができる。NSPが階層化されている場合、例えば、複数のNSPが同じネームスペースを共有して、インストールされている場合、その動作はWinsock2では不確定である。
【0146】
NSPは、安全なリモートネットワークにDNS要求を中継するためにDNS検索をインターセプトすることができる。LSPは、Winsock connect()呼び出しをインターセプトし、発信TCP接続の一部または全てを、セキュアアプリケーションマネージャプロキシに転送することができる。セキュアアプリケーションマネージャは、多数のオペレーションモードを有することができる。アプリケーションプロキシモードのような一モードにおいて、LSPは、管理者の選択したアプリケーションセットに読み込み、それらアプリケーション内の接続の一部または全てを中間サーバに転送する。宛先プロキシモードのような別のモードでは、LSPは、プロセスの一部または全てに読み込み、管理者の選択した宛先ホスト、アドレス、および/またはポートのリストに基づき転送する。
【0147】
NSPは、インストールすることができ、マイクロソフトDNSプロバイダと共存することができる。セキュアアプリケーションマネージャNSPは、DNS要求をリモートネットワークに安全に中継することができる。マイクロソフトWinsock2インプリメンテーションは、レジストリ内に列挙された順序で各プロバイダを呼び出す。照会において空でない結果を返す第一のプロバイダは、サイクルを終了し、それを有効なレスポンスであるとみなす。NSPは、Winsock2構成APIを用いて、指定された方法でインストールすることができ、レジストリ内に列挙されたキーの名前を交換することにより、レジストリ内で再配列することができる。
【0148】
マイクロソフトは、この動作の仕方を変更することができる。別の実施形態は、DNS要求を解析しスプーフする。しかしながら、LSPからの生のDNSトラフィックを解析しスプーフすることにより、どのアプリケーションがDNS要求を行なっているかのトラッキングが困難になり、アプリケーション単位でホスト名検索を行う性能が損なわれる。
【0149】
NSPエントリーポイントは、インストール済み環境をシンプルかつ軽量にしておくため、LSPと同じDLLにインプリメントすることができる。他の実施形態は、複数のDLLをインプリメントする。
【0150】
NSPインストール/アンインストールコードは、インストーラーへの組み込みを容易にするため、自動登録機能、DIIRegisterServer()およびDIIUnregisterServer()を使用し、同じDLLにインプリメントすることができる。他の実施形態は、複数のDLLをインプリメントする。
【0151】
セキュアアプリケーションマネージャプロキシは、下記のうち一つ以上のオペレーションを行なうことのできるウィンドウレスWin32アプリケーションであってもよい:中間サーバへの接続を管理する、NSPに対するDNS要求を行なう、LSPに関するポートマッピングを管理する、中間サーバからセキュアアプリケーションマネージャコンフィギュレーションデータを取り出す、転送テーブルを維持する。
【0152】
セッションマネージャ(通信プロトコルクライアント)は、例えば、LSPサービスからトラフィックの一部または全てを受け入れることができ、および/または通信プロトコルを用いて、トラフィックを中間サーバへ転送することができるWin32クライアント(場合によっては、ActiveXをベースとした)のようなクライアントであってもよい。セッションマネージャは、例えば、LSPサービスによって保護された一つ、一部、または全ての宛先ホストのループバックアドレス(127.0.0.1、127.0.0.2.など)をリスンする。
【0153】
セッションマネージャは、システムトレー内で実行することができ、クライアントアプリケーションに関して保護されたアプリケーションのリストを表示することができる。個々のアクティブアプリケーションに関して、このセッションマネージャは、既存のセッションマネージャと同様に、送信/受信バイト数といった、セッションのステータスを表示することもできる。
【0154】
通信プロトコルは、HTTPSセッションを用いて、TCPソケット接続をシミュレートすることができる。ソケット接続はそれぞれ、二つの半二重HTTPSセッション(上流および下流)を用いてシミュレートすることができる。通信プロトコルは、セッションマネージャが、SSLによりクライアント/サーバプリケーションから発信されるトラフィックの一部または全てを保護することを可能にすることができる。HTTPSにより送信することで、通信プロトコルは、プロキシやファイアウォールを介して作用することができる。
【0155】
単一ワーカースレッド(他の実施形態においては、複数のスレッドあるいはプロセス)は、これらのタスクを処理することができる一方で、個別の要求スレッド(他の実施形態においては、同一スレッドあるいは異なるプロセス)は、LSPおよび/またはNSPから送られてくる要求を処理することができる。要求スレッドは、応答時間を最短化することができ、要求を行なったクライアントアプリケーションにおける不必要なブロッキングを回避することができる。ワーカースレッドにより行なわれるタスクの一部または全ては非同期であってもよく、全てのタスクを一スレッドで十分にすることができる。単一スレッドがそれらのタスクを処理することにより、パフォーマンスに何らかの問題が生じた場合、異なるワーカースレッドに関するような、いくつかのタスクを、オフロードすることができる。
【0156】
セキュアアプリケーションマネージャは、例えば、中間サーバ上のウェブページに組み込まれたActiveXコントロールから起動することができる。SSLセッション認証は、インターネットエクスプローラのようなブラウザによって処理される。セキュアアプリケーションマネージャプロキシは、起動されると、中間サーバへの接続を確立しようとすることができる。これは、現行のセッションクッキーおよび中間サーバホストの名前を用いて行なうことができる。ActiveXコントロールは、例えば、メモリおよびミューテックの以下の名前を持つメモリマップファイルを用いて共用メモリ領域にホストおよびクッキーを書き込むことができる。
【0157】
<name>:<communication protocol>:Pagelnformation:SharedMemory
【0158】
<name>:<communication protocol>:Pagelnformation:Mutex
【0159】
この共用メモリ領域が得られた場合、その場所に格納されたデータは、以下のようなフォーマットになっている。
【0160】
Data Format:<session cookie>+’ ¥(但し、原文は逆スラッシュ。以下同じ)0’+<ivehostname>+’ ¥0’
【0161】
データパラメーターは、通信プロトコルセッションを確立するために通信プロトコルAPIへ渡すことができる。セッションがタイムアウトした場合、通信プロトコルAPIは、セキュアアプリケーションマネージャプロキシに通知することができる。セキュアアプリケーションマネージャプロキシは、例えば、モーダルダイアログボックスのポップアップによって、ユーザに再接続することを望むか、あるいはセキュアアプリケーションマネージャを終了することを望むかをユーザに照会することができる。ユーザが、再接続することを選択した場合、セキュアアプリケーションマネージャプロキシは、セキュアアプリケーションマネージャページに、インターネットエクスプローラウィンドウのような新しいウィンドウを開くことができる。これにより、ログインを促し、セキュアアプリケーションマネージャプロキシの別のインスタンスの再起動を促すことができる。プロキシの新しいインスタンスは、前インスタンスを検知しシグナル通知し、中間サーバに再接続するために伝えることができる。新しいインスタンスは、前インスタンスをシグナル通知した後に終了することができる。
【0162】
中間サーバセッションが確立された状態で、セキュアアプリケーションマネージャプロキシは、新しい通信プロトコルコマンドでコンフィギュレーションデータをダウンロードすることができる。データは、「;」で分離された名前=値の複数対のような形式で、セキュアアプリケーションマネージャプロキシまで降りて来ることができる。例としての構成ストリングは、以下のようなものであってもよい。
【0163】
“opmode=0;exitmode=0;apps=outlook.exe|Microsoft Outlook|28cb48bd8f,telnet.exe,netscp*;dests=10.10.3.0/8”
【0164】
セキュアアプリケーションマネージャを宛先プロキシモードで実行するように構成することができる場合、IPアドレス/マスク/ポートの組み合わせは、静的転送用の転送テーブルに配置することができる。ホスト名は、別のリストに配置することができ、DNS検索結果は、実行時、そのホスト名に関連したアドレスに基づき転送することおよび/またはIPアドレスに関連したホスト名を通信プロトコル接続呼び出しへ渡すことを目的として転送テーブルに配置することができる。
【0165】
ワーカースレッドは、共有メモリキューからDNS要求を受け取り、その要求を中間サーバへ渡すことができる。結果が届くと、要求において指定されたLSP応答キューにその結果を返すことができる。中間サーバがホスト名を解決できない場合、マイクロソフトDNSプロバイダに検索を行なわせることができるNSPから空の結果を返すことができる。
【0166】
接続を開始する前に、ポートマップ要求がLSPから届く。セキュアアプリケーションマネージャプロキシは、バインドするために利用可能なローカルアドレスとポート、例えばループバックアドレスとポートを見つけることができ、その関連を記録し、その双方をLSPに返す。そして、LSPは、このループバックアドレスとポートへの接続を開始することができる。セキュアアプリケーションマネージャプロキシが、接続指示を受け取ると、中間サーバへの接続を開始することができる。この接続がうまくいった場合、前記ループバックアドレスから入ってくる接続が受け入れられる。一旦接続がなされれば、例えば、Winsock APIおよび/または通信プロトコルAPIの非同期の10個の特性に基づいたステートマシンは、ポートマップデータを処理することができる。
【0167】
セキュアアプリケーションマネージャは、127.1.0.1で始まり、127.1.255.254で終わる、ポートマッピング用の一連のループバックアドレスを使用することができる。ループバックアドレスの選択方法は数多くある。一実施形態では、セキュアアプリケーションマネージャは、まず、開始アドレス127.1.0.1と宛先ポートをバインドすることを試みることができる。このアドレスが既に使用されている場合には、次のアドレス127.1.0.2にバインドすることを試みることができる。これは、バインドするために利用可能なアドレスを見つけるまで、続けることができる。65kのアドレス全てが所定のポートで使用されている場合、代替のポート番号へのバインドを試み、再度127.1.0.1から始めることができる。
【0168】
ユーザインターフェースは、別個のWin32として構築することができる。このインプリメンテーションは、セキュアアプリケーションマネージャプロキシから抜け出すことができ、ユーザインターフェースインプリメンテーションをウィンドウレスのセキュアアプリケーションマネージャプロキシの制約から解放することができる。マイクロソフトファンデーションクラスは、ユーザインターフェースをインプリメントすることができる。これは、システムトレーアイコンを持つ隠しアプリケーションとして起動することができる。セレクション(例えば、アイコンの右クリック)により、プルアップメニューを表示することができる。ユーザインターフェースは、セレクション(例えば、アイコンのダブルクリック、右クリックメニューから「開く」を選択する)により開くことができる。
【0169】
ユーザに、どのアプリケーションが安全でありまた安全でないかといった感覚を提供するために、DLL、例えば個別のDLLは、各プロセスに関しWM PAINTメッセージをインターセプトするためにWin32ステータスフックを使用することができる。フックは、例えば、ステータスアイコンの書き込みにより、ビジュアルキューを、例えば、各ウィンドウの上部右側に提供することができ、アプリケーションが中間サーバに安全に接続されているかどうか示すことができる。ステータス情報は、セキュアアプリケーションマネージャプロキシによって作成された共有メモリ領域を読み取ることで得られる。
【0170】
LSPは、システムに適切にインストールし、ロックされたファイル、バージョニングおよび/またはアンインストールに対処することができる。
【0171】
ActiveXコントロールは、ブラウザ内で実行することができ、中間サーバのサーバから提供されてもよい。このコントロールは、セキュアアプリケーションマネージャに関連したプログラムおよび/またはインストールを、ダウンロード、解凍、および/または実行することができる。これは、ネットワーク接続およびセキュアアプリケーションマネージャと共に使用することができる。これが起動するアプリケーションはスクリプタブルであってもよい。例えば、VBscriptは、プログラム名を、ダウンロード、解凍、および/または起動のため、コントロールへ渡すことができる。
【0172】
中間サーバデーモンは、セッションマネージャから受け取ったトラフィックの一部または全てを処理する。次に、デーモンは、企業内の宛先ホストへのソケット接続をすることができ、クライアントアプリケーションに代わってデータを送受信することができる。デーモンは、さらに、クライアント上で実行されているLSP/セッションマネージャのために最初のホスト名解決を行なうことを目的としてDNSサーバとコンタクトすることができる。
【0173】
中間サーバセキュアアプリケーションマネージャは、一以上の機能を有することができる。
【0174】
1.TCPベースのクライアント/サーバプリケーションはすべてサポートされる。例えば、サーバ開始コネクションを含んでいないもの等。
【0175】
2.いくつかの実施形態は、アウトルック(Outlook)、ロータスノーツ(Lotus Notes)、および/またはNetBIOSプロキシング(Windows(登録商標)(登録商標)マップネットワークドライブへのアクセス)等のアプリケーションをサポートすることができる。
【0176】
3.いくつかの実施形態では、Windows(登録商標)プラットフォームや、インターネットエクスプローラのようなブラウザ上でサポートされる。
【0177】
4.いくつかの実施形態は、クライアントマシンからのダイアルアップ、ブロードバンドおよび/またはLANシナリオといった、あらゆるインターネットアクセスモードで動作可能である。
【0178】
5.いくつかの実施形態は、ポート443を介したSSLトラフィックを許可するデバイスのように、クライアント側プロキシおよびファイアウォールを介して作動可能である。
【0179】
6.いくつかの実施形態は、サードパーティのエンドポイントセキュリティ製品をサポートする。アプリケーションレベルでのアクセスを有するいくつかの実施形態は、安全なクライアントマシンから使用することができる。いくつかの実施形態は、ネットワークレベルでのアクセスセッションを起動する前に、Whole Security、Sygateなどのパーソナルファイアウォールに対処する。
【0180】
前記中間サーバは、最初のリリースから「Whole Security」のベンダーとの統合をサポートすることができる。指定されたレジストリ設定は、クライアントマシン上でチェックし、セッションを起動する前に、いくつかのプロセスが実行されていることを確かめることができる。
【0181】
ここで、「Whole Security」/ZoneAlarmの統合をサポートする例を挙げる。
【0182】
1.ネットワーククライアントは、レジストリキーの既存のものをチェックする
HKEY_LOCAL_MACHINE¥SOFTWARE¥Zone Labs
または
HKEY_CURRENT USER¥Software¥Zone Labs
【0183】
2.その後、ネットワーククライアントは、ZoneAlarm exeに結合されている実行中プロセスをチェックする。
【0184】
いくつかの実施形態は、管理者が、ベンダー名および関連のレジストリキー・プロセス名を指定することができ、セキュアアプリケーションマネージャクライアントによりサポートされるよう、一般的に十分に統合をインプリメントする。
【0185】
下記の内、一またはそれ以上の項目が管理者必要条件となり得る。
【0186】
1.セキュアアプリケーションマネージャはグループレベルの機能であってもよい。管理者は、中間サーバグループをベースとしたポリシーを用いた場合のように、セキュアアプリケーションマネージャにアクセスするユーザを制限することができる。
【0187】
2.管理者は、アプリケーションレベルでのアクセス、指定された宛先ホストのみへのアクセス、および/または指定された宛先ホストおよびポートへのアクセスといったモードにセキュアアプリケーションマネージャ機能を構成することができる。
【0188】
2.A.アプリケーションレベルでのアクセスに関して、管理者は、保護する必要のあるアプリケーションのリストを指定することができる。例えば、sapR3.exe、outlook.exe、ie.exe等である。NetBIOSプロキシングは、キーワード「netbios」を用いる等、特別のアプリケーションとして処理される。
【0189】
一つまたはそれ以上のアプリケーションに関して、管理者は、実行可能なものの下記パスのうち一つ以上を指定することができる:(例えば、"%system Root¥Program Files¥SAP¥sap r3.exe”といった実行可能なものの完全パス、分かりやすい記述(例えば、SAP R/3クライアント、および/または実行可能名のデフォルト)、セキュリティ上の理由からセキュアアプリケーションマネージャLSPにより強化され得る実行可能なアプリケーションに関するMD5チェックサム値のオプションリスト、およびクライアントアプリケーションから保護できる宛先ホスト/ポートのオプションリスト。
【0190】
2.B.指定された宛先ホストのみに対するアクセスに関して、管理者は、保護される必要のある宛先ホストのリストを指定することができる。セキュアアプリケーションマネージャは、自動的にTCPポート、UDPポートおよび/またはアプリケーションバージョン番号の一部または全てに関して、宛先ホストを対象とするトラフィックの一部または全てを保護することができる。
【0191】
宛先ホストは、下記のうちの一つまたはそれ以上のもので表わすことができる:単一のIPアドレスまたはIPアドレス範囲;宛先ホスト名またはホスト名のリスト。ホスト名は、*や?のようなワイルドカード表現を使用することができる。ここで、*は、任意の数のキャラクタのパターンを表し、?は単一キャラクタのパターンを表わす。IPアドレスが指定され、アプリケーションがホスト名を照会する場合、セキュアアプリケーションマネージャは、そのIPアドレスを、IPアドレス範囲内のホストのリストに照らし合わしチェックすることができる。セキュアアプリケーションマネージャは、ホスト名に関する少なくとも単方向のDNS検索サポートをサポートすることができる。
【0192】
宛先ホストは、ホスト名またはIPアドレスであってもよい。ホスト名に関しては、ワイルドカードをサポートすることができる。宛先ホストは、フォーマット10.10.0.0/255.255.0.0でサブネットを表わすマスクを用いて指定することができる。
【0193】
2.C.指定された宛先ホストおよびポートへのアクセスに関し、管理者は、保護する必要のある宛先ホストのリストおよびポートを指定することができる。セキュアアプリケーションマネージャは、これらの宛先ホストおよびポートを対象としたトラフィックを自動的に保護することができる。
【0194】
3.管理者は、同一グループに対し、ウェブブラウジング、ファイル、telnet/ssh等のような他の中間サーバ機能へのアクセスを提供することを決めることができる。セキュアアプリケーションマネージャは、サブグループのための追加アクセス機構として構成することができる。
【0195】
4.管理者は、一グループ用にセキュアアプリケーションマネージャを構成することができる。Java(登録商標)対セキュアアプリケーションマネージャ(例えば、ActiveX)バージョンの構成は、ユーザエージェントストリングを調べることによりクライアントオペレーティングシステム(例えば、非Windows(登録商標)対Windows(登録商標))に基づいて自動的に行なうことができる。
【0196】
5.いくつかの実施形態では、管理者は、エンドユーザ(セッションマネージャ等)のための「自動起動」セキュアアプリケーションマネージャクライアントを構成することができる。
【0197】
6.管理者は、例えば、グループ単位で「セキュアアプリケーションマネージャクライアントの自動完全クリーンアップ(アンインストール)」を選択することができる。このデフォルト値は、「使用不可」とすることもでき、セキュアアプリケーションマネージャのセッションマネージャ上のコンポーネントをすべてアンインストールするオプションをエンドユーザに提供することができる。
【0198】
7.管理者は、「完全セキュリティ」といったエンドポイントセキュリティ製品との統合を指定することができる。選択された場合、セキュアアプリケーションマネージャクライアントはまず、指定されたソフトウエアパッケージの存在をチェックし、セキュアアプリケーションマネージャセッションを起動する前に、それが作動していることを確認することができる。ユーザのマシンが指定されたソフトウェアを備えていないか、あるいは作動していない場合、ユーザに対し、セッションを起動することなく、適切な記述でエラーを返すことができる。
【0199】
セキュアアプリケーションマネージャプロキシに対し、LSPの各インスタンスからDNSおよび/またはポートマップ要求するために、何らかの形のプロセス間通信が必要とされる場合もある。Windows(登録商標)には、依存性を有する多くのプロセス間通信タイプがある。ネットワークに依存するプロセス間通信は、LSPに再送信され、無限ループを作ることがある。Windows(登録商標)メッセージに依存するプロセス間通信は、それが実行されているプロセスおよびスレッドを殆どコントロールできないLSP内からエラーおよびデッドロックが生じる傾向にある。残りの選択肢は、多くのマイクロソフトプラットフォームではインプリメントされない。
【0200】
プロセス間通信機構として、メモリマップファイルは、依存性を有することはできず、多くのプラットフォームに存在することができ、尚且つ比較的効率的であり得る。
【0201】
セキュアアプリケーションマネージャプロキシに対し、LSPから複数のプロセスで同期呼び出しを行なうため、複数のキュー(例えば、二つのキュー)とWin32 Named Mutexを使用することができる。メッセージキューは、連続したメモリブロック(メモリマップファイル)によりインプリメントすることができ、各種サイズのメッセージをサポートすることができる。このキューは、最初から終わりまでラップアラウンドするデータに対処することができる。一つのキューは、一送信側と一受信側を持つことができ、このような二つのキューは、要求/応答シーケンス、例えば、既知の名前を持つシステム上の要求キューの場合や、固有の名前を持つLSPプロセスによる応答キューの場合に使用することができる。Named Mutexは、メモリへのアクセスの同期化に対処することができる。要求/応答シーケンスを同期化するため、応答データを待機させる場合、要求をしているスレッドは、応答キューミューテックからの信号を待つことができる。
【0202】
図21は複数のキューを示す。図21は、Winsockアプリケーション2110およびLSP2120、要求キュー2130、応答キュー2140、そして、セキュアアプリケーションマネージャプロキシ2150を示す。
【0203】
メモリマップファイル領域および/またはnamed mutexはそれぞれ、アクセスするために既知の名前を要求することができる。名前が知られている場合、同一アカウント(または、例えば、Win 9xにおけるシステム全体)で実行されているプロセスは、このメモリにアクセスすることができるため、このメモリへのアクセスをより困難にするため、更なるステップを設定することができる。セキュアアプリケーションマネージャが公開する既知のメモリとミューテック名は、リアルメモリとミューテック名を暗号化したフォーマットで格納するために使用することができる。リアルメモリとミューテック名は、それら各々の機能を示すためストリング「:Shared Memory」および「:Mutex」を含むような、実行時に作成されたランダムな名前をベースにしていてもよい。
【0204】
既知の共有メモリ領域名は以下のように定義することができる:
【0205】
<name>:AppProxy:StartupRequestQueue
【0206】
<name>:AppProxy:DnsRequestQueue
【0207】
<name>:AppProxy:PortmapRequestQueue
【0208】
<name>:AppProxy:Statistics
【0209】
<name>:AppProxy:AppTable
【0210】
<name>:AppProxy:FlowTable
【0211】
<name>:<communication protocol>:PageInformation
【0212】
StartupResponsetQueue、DnsResponseQueue、およびPortmapResponseQueueは、実行時に作成されるランダムなストリングであってもよく、要求と共に渡すことができる。
【0213】
一旦セキュアアプリケーションマネージャプロキシが、<communication protocol>:PageInformation領域からセッションクッキーを読み取れば、メモリに常に「ぶら下がって」いなくてもすむようクッキーを消去することができる。
【0214】
以下の疑似コードは、セキュアアプリケーションマネージャプロキシが、共有メモリからセッションクッキーを読み取る一方法を示す。
【0215】
EnterReadLock("<name>:<communication protocol>:PageInformation:Mutex″)
OpenSharedMemory("<name>:<communication protocol>:PageInformation:SharedMemory″)
EncryptedMemoryName= ReadEncryptedMemoryName()
CloseSharedMemory("<name>:<communication protocol>:PageInformation:SharedMemory″)
LeaveReadLock("<name>:<communication protocol>:PageInformation:Mutex″)
DecryptedMemoryName = Decrypt(EncryptedMemoryName)
EnterWriteLock(DecryptedMemoryName + ":Mutex″)
OpenSharedMemory(DecryptedMemoryName + ":SharedMemory″)
SessionCookie = ReadSessionCookie()
ClearSessionCookie
CloseSharedMemory(DecryptedMemoryName + ":SharedMemory″)
LeaveWriteLock(DecryptedMemoryName + ":Mutex″)
【0216】
LSPは、通常のクライアントアプリケーションのようにシステム上にインストールすることができる。LSPがActiveXダウンロードエリアからインストールされる場合、インターネットエクスプローラによってこれらのファイルを一掃することができ、故障したネットワークコンフィギュレーションを残すことができる。リブートシナリオ上のLocked FilesおよびCopy/Deleteは、他のクライアントソフトウエアインストールと同様に処理できる。一実施形態のインストールパッケージングツールは、LSP関連ファイルを自己解凍型EXEファイルに圧縮する。別の二つのファイルと共にこのEXEファイルは、Active−Xダウンローダと使用できるようキャビネットファイル化される。
【0217】
図22は、インストールパッケージの例を示している。LSP、NSPおよびsamsp.dll2210、インストールスクリプト2214、およびMS redist Sporder.dll2218は、自己解凍型.EXE samsp.exe2220に圧縮される。これは、samsp.cab2230にキャビネットファイル化される。SAMP Proxy samsvc.exe2240は、samsvc.cab2260にキャビネットファイル化される。SAM UI Samui.exe2250は、samui.cab2270にキャビネットファイル化される。タイトルバーTitlebar.exe2280は、titlebar.cab2290にキャビネットファイル化される。
【0218】
下記は、セキュアアプリケーションマネージャのオペレーションの一例である。様々な実施形態は、オペレーションの一部を追加、削除、再配置、および/または修正することができる。
【0219】
1.ユーザは、中間サーバの作成したウェブページ上のセキュアアプリケーションマネージャを選択する
a.ActiveXコントロールが、LSP、NSPをダウンロードしインストールする
b.ActiveXコントロールが,セキュアアプリケーションマネージャプロキシをダウンロードし起動する
c.セキュアアプリケーションマネージャプロキシは、中間サーバからコンフィギュレーションデータを取り出す
d.宛先モードで作動する場合、アドレス/マスク/ポートの組み合わせをリダイレクトテーブルに書き込むことができる
【0220】
2.ユーザは、以下のプロセスで読み込まれた新しいアプリケーション、LSP、NSPを起動する
a.アプリケーションは、LSPからセキュアアプリケーションマネージャプロキシにStartupRequestを送出し、オペレーティングモードおよび/またはこのアプリケーションがプロキシ化されるべきかどうか判断する
b.オペレーティングモードが、アップリケーションプロキシであり、このアプリケーションがリストにない場合、LSPはプロセスから外れ、NSPは、DNSリクエストを無視することができる
c.セキュアアプリケーションマネージャのユーザインターフェースは、アプリケーションEXEファイルからアイコンを抽出し、システムトレーのリストに加える。
【0221】
3.アプリケーションは、DNS検索を実行する
a.NSPは、セキュアアプリケーションマネージャプロキシにDNS要求を出す
b.セキュアアプリケーションマネージャプロキシは、中間サーバにDNS要求を出す
i.これが、中間サーバホスト名である場合、ローカルDNS検索を実行し、アドレスを記憶する
c.DNS応答は、もしあれば、同様のパスで返される。
【0222】
4.アプリケーションは、IPアドレスへの接続を行なう
a.LSPは、セキュアアプリケーションマネージャプロキシにポートマップ要求を出す
b.このアプリケーション、関連の宛先ホスト名、宛先アドレス/ポートが、リダイレクトテーブルにあれば、ポートマップを設定し、ローカルアドレス/ポートをLSPに返す
c.LSPは、セキュアアプリケーションマネージャプロキシにより指定されたアドレス/ポートへの接続を行なう
【0223】
5.クライアントアプリケーションは、接続をシャットダウンおよび/またはソケットをクローズする
a.セキュアアプリケーションマネージャプロキシは、Winsock終了通知を受け取る
b.セキュアアプリケーションマネージャプロキシは、通信プロトコル接続をクローズする
c.セキュアアプリケーションマネージャプロキシは、ローカルポートマップソケットをクローズする
【0224】
6.サーバは、接続をクローズする
a.セキュアアプリケーションマネージャプロキシは、通信プロトコル終了通知を受け取る
b.セキュアアプリケーションマネージャプロキシは、ローカルポートマップ接続およびソケットをクローズする
c.アプリケーションは、通常のWinsock終了通知を得る
【0225】
7.アプリケーション終了
a.LSPは、セキュアアプリケーションマネージャプロキシにApplicationCleanupメッセージを出し、現行アプリケーションをアクティブリストから削除する。
【0226】
ユーザインターフェースは、セキュアアプリケーションマネージャのステータスを表示するためのシステムトレーアイコンアプリケーションおよびWin32フック等のコンポーネントを、例えば、各アプリケーションのタイトルバーに含むことができる。
【0227】
いくつかの実施形態は、エンドユーザのユーザインターフェースにおいて、下記のうちの一以上を備えている
【0228】
1.エンドユーザは、中間サーバグループをベースとしたポリシーに基づいて、許可されている場合のみ、中間サーバに「セキュアクライアントアプリケーション(Secure Client Applications)」アクセス機構を有することができる。セキュアクライアントアプリケーションアクセス機構は、サブグループに関する管理機能構成によって、セキュアアプリケーションマネージャ(例えば、ActiveXを備えた)をベースとしたセッションまたはJava(登録商標)セッションマネージャを起動することができる。いくつかの実施形態では、エンドユーザは、例えば、Java(登録商標)対ActiveXをベースにしたセキュアアプリケーションアクセス機構の間で選択することができ、その他の実施形態では、ユーザが選択することなく、自動的に選択される。
【0229】
2.ユーザは、中間サーバにおいてユーザのサブグループに対し使用可能となっている場合、ウェブブラウジング、ファイルブラウジング、telnet/ssh等のような他の中間サーバクセス機構を、セキュアアプリケーションマネージャと共に選択することができる。セキュアアプリケーションマネージャアクセス機構は、中間サーバ上の追加アクセス機構であってもよい。
【0230】
3.セキュアアプリケーションマネージャクライアントダウンロードは、いかなるサイズのものであってもよい。いくつかの実施形態では、ダウンロードにかかる時間は、ダイヤルアップ接続(約56Kbps)で約30秒以下である。セキュアアプリケーションセッションマネージャのいくつかの実施形態は、1分以下で開始され、ユーザは企業アプリケーションにアクセスを開始できるようになる。
【0231】
4.セキュアアプリケーションマネージャクライアントのインストールは、コンポーネントをインストールするために、いくつかの管理者権限を要求することができる。ユーザが正しい権限を持っていなければ、ユーザに権限に関する問題があることを通知することができる。ユーザは、セキュアアプリケーションマネージャクライアントコンポーネントをインストールするために、正しい管理者認証情報を提供するように促される。
【0232】
5.セキュアアプリケーションマネージャのセッションマネージャは、セキュアアプリケーションマネージャによって保護されるクライアントアプリケーションのリスト等の統計情報、および/またはセキュアアプリケーションマネージャによって保護されるクライアントアプリケーションのうちの一以上のステータスを表示することができる。セキュアアプリケーションマネージャによって保護されるクライアントアプリケーションのリストは、管理者が構成した、保護される必要のあるアプリケーションリストであってもよい。これらのクライアントアプリケーションに関連したアイコンを表示することができる。これらアプリケーション/アイコンは、選択(例えば、クリック)することにより、保護されたバージョンのクライアントアプリケーションを起動することができる。セキュアアプリケーションマネージャによって保護されたクライアントアプリケーションのうち一つ以上に対し、セッションマネージャは、例えば、このアプリケーションに関する送受信バイト数がオプションとして共に提供されるアクティブ(例えば、ユーザがアプリケーションを起動した)、非アクティブ(例えば、アプリケーションがまだ起動されていない)、およびエラー(例えば、セッションのエラー)といったステータスを提供することができる。
【0233】
6.セキュアアプリケーションマネージャのセッションマネージャは、セキュアアプリケーションマネージャを起動したユーザと同じアカウント権限の下、バックグラウンドアプリケーションとして実行することができる。ユーザは、セキュアアプリケーションマネージャセッションのステータスを表示するためにシステムトレーアイコンを選択(例えば、クリック)することができる。
【0234】
7.セッションマネージャ(例えば、クライアント/サーバ、セキュアアプリケーションマネージャのセッションマネージャ、および/またはネットワーク接続)は、バックグラウンドアプリケーションとして実行することができる。
【0235】
8.クライアントにおいては、セッションマネージャによるセキュアアプリケーションマネージャセッションは、円滑に閉じる(切断および/または終了する)ことができる。セッションマネージャを閉じると、セキュアアプリケーションマネージャのセッションマネージャは、自動的にマシンを正常な状態に回復させることができる。いくつかの場合には、セッションマネージャを終了した後、マシンを正常な状態に回復させることができ、他の場合には、マシンが次回リブートされた後、正常な状態に回復させる。
【0236】
9.セッションマネージャウィンドウは、中間サーバウィンドウを開くためのオプションを有することができる。
【0237】
10.ユーザセッションがタイムアウトになった場合、中間サーバのユーザは、Java(登録商標)セッションマネージャの機能と同様の経験をすることもある。セキュアアプリケーションマネージャのセッションマネージャは、「エラー」等のステータスを表示することができる。また、セッションを再開するオプションがあってもよい。セッション再開を選択(例えば、クリック)することにより、例えば、ユーザが認証情報を再入力するために新しいブラウザを開けることもできる。一旦ユーザが中間サーバにログインすれば、セキュアアプリケーションマネージャセッションは再起動される。いくつかの実施形態では、セッションマネージャは、中間サーバへのログインウェブページを開くことにより、クライアント側で認証情報を再入力するようユーザに促すことができる。ユーザは、既存のアプリケーションセッションを閉じることなく継続することができる。
【0238】
11.セキュアアプリケーションマネージャクライアントインストールや、セッションスタートアップ/回復に際して生じたエラー、および/またはセッションの失敗は、Windows(登録商標) Event Log(ウインドウズイベントログ)(Application Log(アプリケーションログ))などのログおよび/またはセッションマネージャのカスタムユーザインターフェースログにレポートされる。
【0239】
モジュールは、LSP(例えば、%Program Files%¥name¥Application Proxy¥samlog.txt)と同じディレクトリに存在することのできるテキストファイルにメッセージを記録することができる。このログは、例えば、システムトレーアプリケーションからの要求で読まれたり表示したりすることができる。アンインストールに際して、このログファイルは削除することができる。
【0240】
LSPは、多くの方法でアップグレードすることができる。現行のLSPは、メモリへロックすることができ、また、リブートなしでは、新バージョンでそれに上書きすることはできない場合もある。このリブートを避けるために、インストーラがロックされたファイルを検出した場合、末尾に数を付加したコピーをインストールすることができる。例えば、samsp.dllがロックされていた場合、インストールでは、samsp1.dllをインストールディレクトリーに書き込み、それによってWinsockカタログを更新することができる。古いdllは、再起動の際に削除するためフラグを立てておくことができる。多数の異なったバージョンのLSPは、異なるアプリケーション内で同時に実行することができる。
【0241】
プロセス間通信メッセージ通信および共有メモリテーブルヘッダーは、モジュール間に後方互換性に関するバージョン番号を含んでいてもよい。ダウンロードされ、インストールされ、および/または実行されているモジュールは、いつアップグレードが必要であるかを判断するために、バイナリーファイルに組み込まれたバージョン番号を持っていてもよい。
【0242】
多くのWindows(登録商標)デスクトップソフトウェアは、あまり安全な環境でないことが知られている。そこで、セキュリティ強化の大部分は、中間サーバ上で行なうことができる。クライアント側では、ユーザが、認可されていないアプリケーションを安全な環境に導きいれるのを防ぐための取り組みを行なうことができる。これに関するいくつかの例としては、アプリケーションに関する、オプションとしてのチェックサムリスト、および/または悪意のあるユーザがポートマップ要求プロトコルをインターセプトしないようにするため共有メモリ名を暗号化することが挙げられる。
【0243】
標準のWin32のローカライゼーション技術は、ユーザインターフェースに使用できる(例えば、Unicode(ユニコード))。
【0244】
接続は、インターネットエクスプローラのようなブラウザを用いて開始することができるため、いくつかの実施形態では、プロキシを介して中間サーバホストに宛てられたインターネットエクスプローラのトラフィックを転送しないように注意する。セキュアアプリケーションマネージャプロキシは、起動されると、中間サーバホスト名および/またはアドレスを、例えば、ActiveXコントロールから取り出すことができる。アプリケーションが、中間サーバホスト名に対するDNS要求を出すと、ローカルDNS検索が行なわれ、その結果がアプリケーションに返される。そして、セキュアアプリケーションマネージャプロキシは、得られたアドレスを記録することができる。アプリケーションが、これらアドレスのうちの1つへの接続を実行した場合、いくつかの実施形態では、この接続は転送されない。
【0245】
LSPが、実行されプロセスに付加されるために、LSPがプロトコルカタログにインストールされた後、アプリケーションの新しいインスタンスを起動することができる。中間サーバUIは、ユーザにこれを警告することができる。ウィンドウが開かれる場合、インターネットエクスプローラのようないくつかのアプリケーションは必ずしも新しいプロセスを作成するとは限らない場合もある。アプリケーション起動アイコンは、システムトレーアプリケーションに配置することができ、インターネットエクスプローラを起動し、新しいプロセスが確実に作成されるようにする。
【0246】
LSPが前もってシステムにインストールされていた場合、アプリケーションを再始動する必要はない場合もある。
【0247】
いくつかの実施形態は、インターネットエクスプローラをベースとしたブラウザでのみ機能するであろうActiveXコントロールに依存する。他の実施形態は、例えば、独立型インストールパッケージを備えた他のブラウザをサポートする。いくつかの実施形態は、Java(登録商標)またはネットスケープ(Netscape)プラグインを用いて、モジュールを起動する。
【0248】
いくつかの実施形態は、UDPおよび/またはRAW IPトラフィックを保護する上でサポートする。セキュアアプリケーションマネージャが、アプリケーションプロキシモードで実行されている場合、非TCPトラフィックの一部または全てが、LSPにより拒絶される。
【0249】
ネットワーク化されたファイルシステムの大部分は、カーネルのファイルシステムドライバによりインプリメントされ、ファイルシステム要求をネットワークに転送するために、カーネルをベースとしたTDIインターフェースを使用している。これは、LSPはこのトラフィックを処理しない場合もあることを意味する。
【0250】
マイクロソフトは、NetBIOSのためのWinsock2トランスポートプロバイダ(Transport Provider)を提供している。もしアプリケーションが,このトランスポートプロバイダを使用したならば、LSPはNetBIOSトラフィックを処理することができるであろう。しかしながら、Windows(登録商標)エクスプローラは、このトランスポートプロバイダをそのNetBIOS処理に使用していない。
【0251】
多くの実施形態は、他のLSPをベースにした製品と相互協調処理するLSPを有する。いかなるTCPベースのクライアント/サーバプリケーションも、セキュアアプリケーションマネージャのいくつかの実施形態を用いて作動できる。
【0252】
いくつかの実施形態は、トラフィックをプロキシングするため、ループバックアドレスにより接続をポートマッピングする。ネットワークデータは、ユーザスペースからカーネルへそしてまたユーザスペースへと余分に往復する。一定のWindows(登録商標)サービスは、Winsockの知らないカーネル内のループバックアドレスおよびポートにバインドする。これを、セキュアアプリケーションマネージャプロキシは、カーネルサービスが要求をインターセプトしたことにより、いかなる接続もデータもまだ受け取ってはいないにもかかわらず、ループバックアドレスおよびポートに正常にバインドされたものとみなすことがある。この一例として、マイクロソフトリモートデスクトッププロトコルは、Winsockに通知することなく、127.0.0.1:3389を引き継ぎ、コントロールする。
【0253】
いくつかの実施形態は、ソケット入出力を行なうため、LSPとセキュアアプリケーションマネージャプロキシとの間にプロセス間通信インターフェースを設ける。これは、Winsock2トランスポートプロバイダが、プロセス間通信により、データおよびイベントを別のプロセスにコピーすることでインプリメントすることができる。こうして、LSPは、セキュアアプリケーションマネージャによって保護されたアプリケーションを、新たなトランスポートプロバイダに転送するスイッチとしての役割を果たすことができる。
【0254】
セキュアアプリケーションマネージャは、インターネットエクスプローラ、ネットスケープ、オペラ(Opera)などのウェブブラウザをサポートすることができる。いくつかの実施形態では、ウェブページからネイティブWin32アプリケーションを起動するために接続するJava(登録商標)あるいはネットスケープを使用する。
【0255】
TDIフックドライバは、NetBIOSトラフィックの一部または全てのキャプチャおよび転送を可能にすることができる。
【0256】
通信プロトコルは、UDPベースのアプリケーションをサポートすることができる。LSPおよびセキュアアプリケーションマネージャプロキシは、例えば、「UDP関連付け」コマンドを使い、その間のUDPフローをセットアップすることができる。
【0257】
通信プロトコルのプロトコルは、入ってくるTCP接続をサポートすることができる。LSPおよびセキュアアプリケーションマネージャプロキシは、「バインド」コマンドを使用し、プロキシからアプリケーションに入ってくる接続をセットアップすることができる。
【0258】
SOCKSは、UDPと、入って来るTCP接続をサポートすることができる。いくつかの実施形態において、SOCKSはサポートされている。
【0259】
一度ActiveXコントロールが、ネットワーク接続またはセキュアアプリケーションマネージャ用のシステム上にダウンロードされインストールされると、ウェブサイトは、コントロールをスクリプトすることができ、.exeのファイルをそれら独自のサーバからダウンロードし実行することができる。いくつかのコントロールは、特定のホストまたはドメインから実行されるようにそれを制限することによるなど、コントロールをロックするサイトによりこの問題に対処する。
【0260】
いくつかの実施形態は、コントロールと中間サーバの間でハンドシェークが行なわれ、これが本物の中間サーバからスクリプトされていることを確認する。
【0261】
いくつかの実施形態は、下記の一以上を行う。下記リストの要素は、修正、再配置、追加、および/または削除できる。
【0262】
1. クライアントは、ウェブブラウザから中間サーバにログインすることができる。このクライアントに対して、中間サーバ管理者は、中間サーバグループをベースとしたポリシーを使用して、例証を目的としたSAPクライアントのように、アプリケーションにアクセスするための中間サーバ機能を使用可能にすることができる。
【0263】
2.セッションを始めるクライアントが選択することにより、中間サーバメニューからセキュアアプリケーションマネージャセッションを起動することができる。
【0264】
3.クライアントマシン上にLSPサービスをインストールするセキュアアプリケーションマネージャクライアント(これは、ActiveXコントロールであってもよい)をダウンロードすることができる。クライアントマシン上で起動される新しいアプリケーションは、LSPサービスにより読み込むことができる。セキュアアプリケーションマネージャクライアントは、さらにシステムトレー内のプロセスとして実行することもできる。上記のように、セッションマネージャは、設定されたアプリケーションのためのLSPサービスによってインターセプトされたトラフィックの一部または全てを保護することができる。さらに、セッションマネージャは、アクティブなセキュアアプリケーションマネージャセッションの一部または全てのステータスを表示することができる。
【0265】
4.ユーザは、クライアントアプリケーション、例えば、SAPクライアントを起動し、企業SAPアプリケーションリソースに接続することができる。
【0266】
5.クライアントが、リソース、例えば、sapservl.mycompany.comへの接続を試みると、その呼び出しはNSPサービスによってインターセプトされる。
【0267】
6.そして、NSPサービスは、通信プロトコルにより、ホスト名を中間サーバへ転送することができる。
【0268】
7.中間サーバにおいて実行することができるセキュアアプリケーションマネージャデーモン(プロトコルコネクターサービス)は、イントラネットにおいて、ホスト名、sapsrvl.mycompany.comを解決し、応答をセキュアアプリケーションマネージャクライアントに返す。
【0269】
8.中間サーバからの正常に「解決された」応答に基づくセキュアアプリケーションマネージャクライアントは、例えば、127.0.0.9のような利用可能なループバックアドレスの自動プロビジョニングにより、ポートフォワーディングチャネルを自動的に構成することができる。
【0270】
9.その後、セキュアアプリケーションマネージャクライアントは、アプリケーションにループバックアドレスを返すことができる。
【0271】
いくつかの実施形態は、下記のうち一つ以上をサポートする:静的クライアント/サーバプリケーション;動的および/または複数ポートTCPをベースとしたクライアント/サーバプリケーション;特定クライアント/サーバプリケーションに関するクライアントポートおよび/またはサーバポート、宛先ホスト名リストのスペック;クライアント/サーバポートフォワーディング;ポート、宛先ホストアドレスなどの余分なスペックを作成するクライアントとの統合;単一ポートおよび/または複数ポートに関する宛先ホストおよび/または一以上のアプリケーション;サーバ開始接続(例えば、Active FTP)および/またはクライアント開始アプリケーションを含むクライアント/サーバプリケーション;TCPおよび/またはUDPベースのクライアント/サーバプリケーション;Windows(登録商標)メディア(Media)、リアル(Real)、クイックタイム(Quicktime)といった、ライブストリーミングを含む企業ストリーミングリソース;および、企業リアルタイムコラボレーションアプリケーションおよび/またはEラーンニングリソース(例えば、ネットミーティング(Netmeeting)、サムタイム(Sametime)オーディオ/ビデオなど)。
【0272】
セキュアアプリケーションマネージャは、例えば、少なくとも500または1000の同時ユーザを、サポートするためなどに調整することができる。
【0273】
いくつかの実施形態は、セキュアMAPIおよび/またはロータスノーツのような、セキュアメッセージング機能を有する。
【0274】
いくつかの実施形態は、静的ポートクライアント/サーバプリケーションなどのセキュアクライアント/サーバプリケーションを保護する。
【0275】
セキュアアプリケーションマネージャのいくつかの実施形態は、TCPを使用するクライアント/サーバプリケーションの一部または全てを保護し、一部または全ての接続は、クライアントから開始される。
【0276】
いくつかの実施形態は、セッションタイムアウトを処理するおよび/または同時に他の中間サーバクセス機構に対処するといった、クラスタリングサポートを有する。LSPサービスは、IEが、セキュアアプリケーションマネージャによって保護されるアプリケーションになるよう構成される場合でも、中間サーバホスト(セキュアアプリケーションマネージャがダウンロードされるホストのIPアドレス)に向けられたトラフィックを無視することを自動的に決めることができる。
【0277】
いくつかの実施形態は、UDPベースのアプリケーション、および/または、通信プロトコルの代わりに、あるいは通信プロトコルに加えてSOCKSV5のようなプロトコルの使用に対応している。
【0278】
いくつかの実施形態は、FTPのようなサーバ開始接続を含むことができるTCPベースのアプリケーションに対応している。SOCKS V5のようなプロトコルは、通信プロトコルの代わりに、あるいは通信プロトコルに加えて使用することができる。
【0279】
いくつかの実施形態は、ウィルススキャンおよび/またはエンドポイントセキュリティ製品といったサードパーティベンダーとの統合性を有する。
【0280】
入って来るTCP接続を必要とする一例は、ほとんどのインプリメンテーションにおいてデフォルトモードであってもよい、FTPnアクティブモードをサポートすることである。これはクライアントマシン上のクライアントアプリケーションを参照することができる。アプリケーションがソケットでリスンする場合、それはwinsock API関数listen()に呼び出しをする。LSP内で、この呼び出しはインターセプトされ得る。ローカルセキュアアプリケーションマネージャ(SAM)プロキシに要求をする。これは、「バインド要求」と呼ばれる。バインド要求は、クライアントマシンがバインドされているIPアドレスおよびポートを含んでいる。次に、ローカルSAMプロキシは、リモートネットワーク上のIPアドレスと、ローカルクライアントマシン上のクライアントアプリケーションにより指定されたポートとを割り当てることができる中間サーバへのバインド要求をすることができる。中間サーバは、新たに割り当てられたアドレス/ポートで、入って来る接続をリスンすることができる。接続が行なわれた場合、入って来る接続要求は、クライアントマシン上のローカルSAMプロキシに返送され、次に、前記接続要求を、クライアントアプリケーションがリスンしている実アドレスおよび実ポートに転送することができる。その後、このアドレス/ポート(ソケット)にリモートネットワークから入って来るデータは、クライアントのクライアントアプリケーションに転送することができ、また逆も同様である。ローカルクライアントマシン上のクライアントアプリケーションがTCP接続をクローズする場合、SAMプロキシは、接続を切断するために中間サーバへ接続終了メッセージを送ることができる。
【0281】
リモートネットワーク上のクライアントアプリケーションがTCP接続をクローズする場合、中間サーバはローカルマシン上のSAMプロキシに接続終了メッセージを送ることができ、そして、ローカルクライアントマシン上のサーバプリケーションへのTCP接続を切断することができる。
【0282】
クライアントマシン上のクライアントアプリケーションが、リスンしていたソケットをクローズする場合、レイヤドサービスプロバイダは、「バインドクローズ」メッセージをセキュアアプリケーションマネージャプロキシに送信することができ、次にその要求を、中間サーバに転送し、そのアドレスおよびポート上でのリスンをやめさせることができる。
【0283】
UDPアプリケーションは、IPを使用したヴォイス(Voice)、シーユーシーミー(CU−SeeMe)、リアルオーディオ(Real−Audio)等のリアルタイムマルチメディアアプリケーションであってもよい。一般的な方法でUDPをサポートするため、UDPトラフィックはクライアントから開始されるべきである。他の実施形態では、非クライアントから開始されたUDPトラフィックをサポートする。
【0284】
LSP内で、WSPSend()およびWSPSendTo()呼び出しは、UDPソケット上でインターセプトすることができる。これが、このアドレス/ポート上で検出された最初のUDPトラフィックである場合、クライアントアプリケーションからローカルセキュアアプリケーションマネージャプロキシに「UDPフロー要求」を送ることができる。ローカルセキュアアプリケーションマネージャプロキシは、、次に、中間サーバに「UDPフロー要求」をすることができる。一旦これが完了すれば、セキュアアプリケーションマネージャプロキシは、クライアントアプリケーションにローカルループバックアドレスおよびUDPポートを割り当てることができる。レイヤドサービスプロバイダー内で、前記要求が完了すると、宛先パラメーターにおいて、WSPSendTo()呼び出し(または、Winsockフックインプリメンテーションではsendto())か、あるいは、WSPConnect()呼び出しの間であれば、接続されたUDPソケットAPI使用(Winsockフックインプリメンテーションではconnect())の代わりに新たに割り当てられたアドレスを使用することができる。
【0285】
中間サーバはUDPフロータイマーをインプリメントすることができる。一定の期間の後、アドレスおよびポートにおいて、UDPトラフィックが検出されない場合、その「UDPフロー」クライアント結合を切断することができる。そして、UDPフロー切断メッセージが、ローカル結合を切断するクライアントマシン上のローカルセキュアアプリケーションマネージャプロキシに送信される。UDPのステートレスな性質により、クライアントアプリケーションに通知が送られない場合もある。タイムアウト期間が終了した後、アプリケーションがUDPアドレスおよびポートにモーレスデータ(mores data)を送る場合、新たなUDPフロー要求が開始される。データがアドレスとポートに送信されると、UDPタイムアウト期間はリセットされる
【0286】
図23は、アプリケーションの一例と、ローカルネットワーク上のクライアントコンピュータのトランスポートドライバインターフェースを示す。図23は、ソケットアプリケーション2310と、NetBIOSアプリケーション2315とを示している。トランスポートドライバインターフェースクライアントは、ソケットエミュレータ2330、NetBIOSエミュレータ2334、およびリダイレクタやサーバなど2338を備えている。ソケットインターフェース2320は、ソケットアプリケーション2310とソケットエミュレータ2330の間にある。NetBIOSインターフェース2325は、NetBIOSアプリケーション2315とNetBIOSエミュレータ2334の間にある。トランスポートドライバ(トランスポートプロバイダとも呼ばれる)は、Appletalkトランスポートドライバ2350、NetBTトランスポートドライバ2352、Nbfトランスポートドライバ2354、TCP/IPトランスポートドライバ2356、およびNWlinkトランスポートドライバ2358を備えている。トランスポートドライバインターフェース2340は、トランスポートドライバインターフェースクライアントとトランスポートプロバイダの間にある。
【0287】
カーネルベースTDIクライアントのいくつかの例としては、NetBIOS、NFS、MSリモートデスクトッププロトコルおよびマイクロソフトインターネットインフォメーションサーバが挙げられる。TDIクライアントは、Winsockをネーム解決に使用することもでき、その場合には、Winsock2ネームスペースプロバイダはリモートネームサービスを提供することができる。NetBIOSのような他のネットワークアプリケーションは、カーネルで作成された名前検索および/またはブロードキャストディスカバリなどの追加機能を実行してもよい。その場合、これらのイベントは、カーネルでトラップでき、および/またはカスタム処理を実行することができる。いくつかの実施形態は、一以上の操作モードを有することができる。一モードとしては、一般モードが挙げられ、Winsockネームスペースプロバイダにより行なわれた名前検索結果を、フィルタリングやリダイレクションのためドライバに結果を渡すことができる。別のモードでは、アプリケーションまたはプロトコルに特有のカスタムハンドラを用いることができる。
【0288】
図24は、一般的なオペレーティングモードを示す。エクスプローラやIISといったアプリケーション2410、ネームスペースプロバイダ2420、NetBIOSおよび/またはNFSのようなTCP/IP TDIクライアント2430、TDIフックドライバ2440、TCP/IPトランスポートドライバ2450、セキュアアプリケーションマネージャプロキシ2460、中間サーバへのリモート接続2470が示されている。
【0289】
図25は、カスタムハンドラを用いたモードを示し、図24と類似しているが、ネームスペースプロバイダが関与していない。
【0290】
サーバ上で、一アプリケーションに非Winsockアプリケーションのフラグを立てる場合、DNS検索を行なうことができ、および/またはその結果は、TDIフィルタドライバに渡される。ループバックアドレスおよびポートはプロキシによって開かれ、さらに、ドライバに渡されることにより、ターゲットアドレスが修正されそのトラフィックを中間サーバに転送することができる。
【0291】
NetBIOSは、DNSを使用するだけではないため、プロトコル特定のハンドラにより処理できる。それはWINSを使用して(UDP要求をサーバに送信)、ブロードキャストディスカバリおよびLAN上でUDPブロードキャストを行なうことができる。そして、それはWINSを用いたNetBIOS特定のホスト名解決および/またはUDPブロードキャストを行うこともでき、その後DNSが使用される。マイクロソフトWindows(登録商標)へのシームレス統合をサポートするために、プロトコル特定のハンドラは、リモートネットワーク上でネットワークディスカバリ要求を行なうことができる。たとえNetBIOSが、WINSおよびブロードキャスト検索の後DNSにフォールバックできるとしても、カスタム名検索処理を行なうことができる。カスタム名検索処理により、NetBIOSネーム解決が、タイムアウトおよびDNSへのフォールバックを待つ代わりとして使用されれば、より効率的であり、また、NetBIOS DNS解決は、ユーザがセキュアアプリケーションマネージャを起動する前に開始したシステムサービスによって行なうことができ、これは、SAMのモデルに反することもある。
【0292】
TDIフックドライバは、NetBIOSディスカバリ要求をキャプチャし、要求をコピーし、中間サーバに要求を転送することのできるセキュアアプリケーションマネージャプロキシに渡すことができる。中間サーバから返された結果は、クライアントが結果を発見できるようにローカルに再送信することができる。
【0293】
中間サーバは、ブロードキャストディスカバリおよび/またはNetBIOSネーム検索をサポートするために特別なプロトコルハンドラを必要とすることもある。このハンドラは、リモートクライアントの代わりに典型的なNetBIOSのタスクを行なうことができ、および/またはセキュアリンクにより結果を返すことができる。
【0294】
下記は、NetBIOSを用いた一例である。ステップは、追加、削除、再配置、および/または修正することができる。
【0295】
1.管理者は、リモートアクセスするNetBIOSホストおよび/またはアドレスを設定する
【0296】
2.ユーザがログインすると、設定がクライアントに送られる
【0297】
3.TDIフックドライバが読み込む
【0298】
4.セキュアアプリケーションマネージャプロキシが読み込み、ドライバへの入出力チャネルを開く
【0299】
5.ユーザは、NetBIOS名によりネットワーク共用回線を開く要求を出す
【0300】
6.TDIフックドライバは、既知のNetBIOSポートに関する指定WINSの照会またはブロードキャスト要求を検知する
【0301】
7.TDIフックドライバは、要求を消化し、ioctlを介してプロキシに渡す
【0302】
8.プロキシは、ホスト名をフィルタリング処理にかける。マッチングが確認された場合、NetBIOSネーム検索は中間サーバ上のNetBIOSネームサービスハンドラに転送される。マッチングが確認されなかった場合、要求は通常のオペレーションを行なうためローカルネットワーク上で再送信される
【0303】
9.中間サーバは、リモートネットワーク設定によってWINSおよび/またはブロードキャストネーム検索を行う
【0304】
10.プロキシは、NetBIOSネーム検索応答を受け取る
【0305】
a.転送のためループバックアドレスおよびポートを開く
【0306】
b.実IPアドレス、ポート+ループバックIPアドレスおよびポートをTDIフィルタドライバに渡す
【0307】
c.クライアントアプリケーションにネーム検索結果を再送信
【0308】
11.TDIフィルタは、得られた宛先IPアドレスでNetBIOSトラフィックを検出する
【0309】
12.TDIフィルタは、宛先IPアドレスを、割り当てられたループバックアドレスおよびポートと置き換え、結果として、TCP/IPスタックは、データをセキュアアプリケーションマネージャプロキシに送信する
【0310】
13.プロキシは、中間サーバへNetBIOSを転送する。
【0311】
図26は、方法の一実施形態を示す。2610において、ネットワーク接続要求が受信される。2620において、ネットワーク接続要求が転送される。2630において、データは中間サーバに向け送信される。この方法は、リモートネットワークへのセキュアリモートアクセスを可能にすることができる。
【0312】
ネットワーク接続要求は、ローカルネットワーク上のコンピュータで受信されることができる。ネットワーク接続要求は、クライアント/サーバプリケーションのクライアントアプリケーションにより開始することができる。クライアントアプリケーションはコンピュータ上にあってもよい。ネットワーク接続要求は、リモートネットワーク上の宛先を含むことができる。クライアント/サーバプリケーションのサーバプリケーションは、リモートネットワーク上にあってもよい。
【0313】
ネットワーク接続要求は、コンピュータ上のWindows(登録商標)ソケットレイヤ内に転送することができる。これには、ネームスペースプロバイダ(例えば、リモートネットワーク上のドメインネームサービス検索に利用)およびレイヤドサービスプロバイダ(例えば、ローカルネットワークからリモートネットワークへのクライアントアプリケーションのデータ転送に利用)を用いて、ネットワーク接続要求を転送することが含まれる。ネットワーク接続要求は、コンピュータのトランスポートサービスプロバイダ(例えば、TCP/IPトランスポートサービスプロバイダ)を避けて転送することができる。ネットワーク接続要求は、リモートネットワーク内の中間サーバに転送することができる。その中間物サーバは、コンピュータに代わってネットワーク接続要求を行なうことができる。転送は以下のうちの一以上に基づいて行うことができる:クライアントアプリケーションの名前、クライアントアプリケーションのチェックサム、クライアントアプリケーションのバージョン、宛先のサーバ、および宛先のポート。転送前に、ネットワーク要求は、WinsockダイナミックリンクライブラリおよびWinsock2ダイナミックリンクライブラリの少なくとも一つ通過することができる。ネットワーク接続要求は、コンピュータ上の少なくともプロキシを介して、リモートネットワーク内の中間サーバに転送することができる。
【0314】
クライアントアプリケーションのデータは、コンピュータから中間サーバに向けて送信することができる。セキュア・ソケット・レイヤ(SSL)は、コンピュータと中間サーバの間の通信を暗号化することができる。クライアントアプリケーションのデータは、中間サーバからサーバプリケーションに向けて送信することができる。様々な実施形態は、中間サーバからサーバプリケーションに向けてクライアントアプリケーションのデータを送信するか、あるいは、実施形態外部のソフトウェアまたはハードウェアによってこれを行わせる。クライアントアプリケーションのデータは、中間サーバに向けてクライアントアプリケーションのデータを送信する前に、少なくとも前記コンピュータのローカルアドレスおよびローカルポートにより送信することができる。
【0315】
いくつかの実施形態では、クライアントアプリケーションと中間サーバとの間のセキュア接続を示すためビジュアルキューが設けられる。ネームスペースプロバイダおよびレイヤドサービスプロバイダは、自動的にコンピュータにインストールおよび/またはコンピュータからアンインストールすることができる。
【0316】
図27は別の方法実施形態を示す。2710において、ネットワーク接続要求が受信される。2720において、ネットワーク接続要求が転送される。2730において、中間サーバからデータを受信する。この方法は、リモートネットワークへのセキュアリモートアクセスを可能にすることができる。
【0317】
ネットワーク接続要求は、ローカルネットワーク上のコンピュータで受信できる。ネットワーク接続要求は、リモートネットワーク上のファイルシステムに対し、開始することができる。ネットワーク接続要求は、前記ファイルシステムの名前を含んでいてもよい。
【0318】
ネットワーク接続要求は、コンピュータ上のトランスポートドライバインターフェースを用いて転送することができ、更に、ネームスペースプロバイダを使用してもよい。転送することにより、ネットワークファイルシステムトラフィックをキャプチャすることができる。ネットワーク接続要求は、コンピュータ上でトランスポートドライバ(例えば、TCP/IPトランスポートドライバ)を避けて転送することができる。ネットワーク接続要求は、リモートネットワーク内の中間サーバに転送することができる。中間サーバは、コンピュータに代わってネットワーク接続要求を行う。転送は、宛先サーバおよび宛先ポートの内の一以上に基づいて行なわれる。転送に先立ち、ネットワーク接続要求は、少なくともトランスポートドライバインターフェースフィルタを通過することができる。
【0319】
中間サーバからのファイルシステムのデータはコンピュータで受信することができる。セキュア・ソケット・レイヤ(SSL)は、コンピュータと中間サーバの間の通信を暗号化することができる。ファイルシステムのデータは、リモートネットワーク上の中間サーバとファイルシステムの間で転送することができる。様々な実施形態は、中間サーバとファイルシステムの間でファイルシステムのデータをやりとりするか、或いは、実施形態外部のハードウェアまたはソフトウェアによってこれを行わせる。
【0320】
いくつかの実施形態では、トランスポートドライバインターフェースは、自動的にコンピュータにインストールおよび/またはコンピュータからアンインストールすることができる。
【0321】
種々様々な態様、特徴、実施形態、または上述のいくつかの実施形態のインプリメンテーションは、単独であるいは様々な組み合わせで使用することができる。
【0322】
いくつかの実施形態は、ソフトウェアにおいてインプリメントすることができるが、ハードウェアまたはハードウェアとソフトウェアの組み合わせにおいてインプリメントすることもできる。本発明のいくつかの実施形態はまた、コンピュータ読み取り可能メディア上のコンピュータ読み取り可能コードとして実施することができる。コンピュータ読み取り可能メディアとは、データを格納することができ、その後コンピュータシステムにより読み取ることができる任意のデータ記憶装置である。コンピュータ読み取り可能メディアの例としては、読み取り専用メモリ、ランダムアクセスメモリ、CD−ROM、DVD、磁気テープ、光学データ記憶装置、および搬送波が挙げられる。コンピュータ読み取り可能メディアはまた、コンピュータ読み取り可能コードが分散して格納され、実行されるよう、複数のネットワーク結合コンピュータシステムに分散させることができる。
【0323】
いくつかの実施形態は、多数の利点を有する。様々な実施形態またはインプリメンテーションにより、下記利点の中から一つ以上が得られる。いくつかの実施形態の一利点は、仲介サーバをリモートサーバとクライアント間に配置し、安全なアクセスを容易にすることができる点である。いくつかの実施形態の別の利点は、クライアントが要求したコンテンツを変更し、次のクライアントの要求を仲介サーバに送信することで、仲介サーバはクライアントのために要求されたコンテンツを得ることができる点である。また、いくつかの実施形態の更に別の利点は、仲介サーバが、プライベートネットワークによって提供されるネイティブ認証の使用を通じてプライベートネットワーク上のリソースへのアクセスを求めるリクエスタを認証することができるという点である。更に、いくつかの実施形態の別の利点は、プライベートネットワークへのセキュアリモートアクセスを、許可された人にリーズナブルなコストで容易に提供することができるという点である。
【0324】
いくつかの実施形態の多くの特徴および利点は、記載された説明から明白であることから、本発明のいくつかの実施形態のそのような特徴および利点の全てが、添付クレームによってカバーされるものとする。さらに、当業者にとって、多数の修正および変更が容易に考えられるため、本発明を、例示および説明した厳密な構成およびオペレーションに限定することを意図するものではない。従って、適切な修正および等価物はすべて、本発明の範囲内にあるものとして分類される。
【図面の簡単な説明】
【0325】
【図1A】図1Aは、本発明の一実施形態に係る情報検索システムを示すブロック図である。
【図1B】図1Bは、本発明の別の実施形態に係る情報検索システムを示すブロック図である。
【図2A】図2Aは、本発明の一実施形態に係る仲介サーバを示すブロック図である。
【図2B】図2Bは、本発明の一実施形態に係るリモートアクセスシステムを示すブロック図である。
【図3】図3は、本発明の一実施形態に係る要求処理を示すフローチャートである。
【図4】図4は、本発明の一実施形態に係る認証処理を示すフローチャートである。
【図5】図5は、本発明の一実施形態に係るアクセス権処理を示すフローチャートである。
【図6】図6は、本発明の一実施形態に係る操作権限処理を示すフローチャートである。
【図7】図7は、本発明の一実施形態に係る詳細な外部認証処理を示すフローチャートである。
【図8A】図8Aは、本発明の一実施形態に係るファイルアクセス要求処理を示すフローチャートである。
【図8B】図8Bは、本発明の一実施形態に係るファイルアクセス要求処理を示すフローチャートである。
【図9A】9Aは、本発明の一実施形態に係るウェブリソース要求処理を示すフローチャートである。
【図9B】図9Bは、本発明の一実施形態に係るウェブリソース要求処理を示すフローチャートである。
【図9C】図9Cは、本発明の一実施形態に係るウェブリソース要求処理を示すフローチャートである。
【図10】図10は、本発明の一実施形態に係る情報検索システムを示す図である。
【図11】図11は、本発明の一実施形態に係るURL修正処理を示すフローチャートである。
【図12】図12は、本発明の一実施形態に係るスクリプト修正処理を示すフローチャートである。
【図13A】図13Aは、本発明の別の実施形態に係るスクリプト修正処理を示すフローチャートである。
【図13B】図13Bは、本発明の別の実施形態に係るスクリプト修正処理を示すフローチャートである。
【図14】図14は、本発明の一実施形態に係るEメール要求処理を示すフローチャートである。
【図15】図15は、本発明の一実施形態に係るメールオペレーション処理を示すフローチャートである。
【図16】図16は、本発明の一実施形態に係る認証処理を示すフローチャートである。
【図17A】図17Aは、本発明のいくつかの実施形態により使用できるコンピュータシステムの一例を示す図である。
【図17B】図17Bは、本発明のいくつかの実施形態により使用できるコンピュータシステムの一例を示す図である。
【図18】図18は、本発明の一実施形態に係るセキュアアプリケーションマネージャのいくつかの実施形態を示すブロック図である。
【図19】図19は、本発明の一実施形態に係るWinsockアプリケーションおよびWindows(登録商標)ソケットレイヤを示すブロック図である。
【図20】図20は、本発明の一実施形態に係るWinsockアプリケーションおよびWindows(登録商標)ソケットレイヤを示す別のブロック図である。
【図21】図21は、本発明の一実施形態に係るセキュアアプリケーションマネージャプロキシとWinsockアプリケーション間のキューを示すブロック図である。
【図22】図22は、本発明の一実施形態に係るインストールパッケージングを示すブロック図である。
【図23】図23は、本発明の一実施形態に係るローカルネットワーク上のクライアントコンピュータのトランスポートドライバインターフェイスおよびアプリケーションを示すブロック図である。
【図24】図24は、本発明の一実施形態に係るファイルシステムネットワーク接続要求を転送するための汎用オペレーティングモードを示すブロック図である。
【図25】図25は、本発明の一実施形態に係るファイルシステムネットワーク接続要求を転送するためのカスタムハンドラを用いたモードを示すブロック図である。
【図26】図26は、本発明の一実施形態に係るネットワーク接続要求を転送するためのフローチャートである。
【図27】図27は、本発明の別の実施形態に係るネットワーク接続要求を転送するためのフローチャートである。
【関連出願への相互参照】
【0001】
本出願は、2001年11月2日出願の米国仮出願第60/350,097号の利益を主張する、2002年1月29日出願の米国特許出願第10/060,792号の一部継続出願である。
【技術分野】
【0002】
本発明は、クライアント/サーバコンピューティングに関し、より詳しくは、ネットワーク上で安全にリソースにアクセスするためのクライアント/サーバコンピューティングに関するものである。
【背景技術】
【0003】
ネットスケープナビゲーターもしくはマイクロソフトエクスプローラのようなネットワークブラウザ(ブラウザアプリケーション)により、クライアントマシンのユーザは、インターネットを介して、遠隔地に位置するサーバマシンにリソースを要求し検索することができる。これらのネットワークブラウザは、遠隔地に位置するサーバマシンから提供されるハイパーテキストマークアップランゲージ(HTML)ドキュメントを表示もしくは提供することができる。更に、ブラウザは、あるローカル機能を提供するために、HTMLドキュメントに埋め込まれたスクリプトプログラムを実行することができる。
【0004】
従来、ネットワークブラウザは、インターネットのようなパブリックネットワークにアクセスするのに用いられている。プライベートネットワーク外のコンピュータィングマシン上にあるネットワークブラウザが、プライベートネットワーク上のいかなるリソースにもアクセスできないように、プライベートネットワークは、ファイアウォールによって通常保護されている。
【0005】
ファイアウォールは、プライベートネットワークへの外部アクセスを防ぐ上で効果的であるが、外部の個人または企業が、他人または他企業のプライベートネットワークへの少なくとも制限された範囲内でのアクセスを必要とする場合がしばしばある。たとえば、企業顧客に対するパーツのサプライヤは、企業顧客のプライベートネットワーク上で維持された情報(例えば、在庫レベルや注文)にアクセスすることにより、企業顧客により良いサービスを提供できる場合もある。従来用いられている方法の一つとしては、サプライヤのマシンに、パブリックネットワークを通じてファイアウォールを介し、プライベートネットワークにアクセスさせることが挙げられるが、この場合、ファイアウォールに「セキュリティホール」ができ、プライベートネットワークのセキュリティを深刻な危険にさらすことになる。従って、セキュリティが重要事項である場合、この従来の方法は通常許されない。他の従来の方法としては、サプライヤのマシンで仮想私設網(Virtual Private Network:VPN)を確立することが挙げられる。この場合、サプライヤのマシンは、パブリックネットワークやファイアウォールを介してプライベートネットワークにアクセスすることもできるが、全てのデータ伝送は暗号化される。ファイアウォールの中には、VPNをサポートしているものもあり、PPTP(Point−to−Point Tunneling Protocol)のような暗号化された通信を提供するプロトコルを使用することができる。VPNは、セキュアリモートアクセスを提供するが、準備、構成、管理が難しい。各VPNは、プライベートネットワークへのアクセスを許可された外部の各個人または企業にも提供されなければならない。更に、VPNは高価であり、また、各VPNは、プライベートネットワーク全体のセキュリティを、多少なりとも危険にさらすことになる。
【0006】
したがって、プライベートネットワーク上で維持されているリソースへのセキュアリモートアクセスを提供するための改善された方法が必要とされている。
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、プライベートネットワーク上で維持されているリソースへの安全なアクセスを提供するための改善された方法に関する。クライアント/サーバソフトウェアのクライアントソフトウェアを使用し、および/またはファイルシステムソフトウェアを用いて、公衆ネットワークを介し、安全なアクセスを提供することができる。また、複数のリモートユーザが、リモートネットワークの中間サーバのような、共通のアクセスポイントを介し、プライベートネットワークの少なくとも一部に、制限およびコントロールされた環境下でアクセスすることができる。リモートネットワークの一例は、プライベートネットワークでる。
【課題を解決するための手段】
【0008】
本発明は、システム、方法、デバイスおよびコンピュータ読み取り可能メディアを含め、多くの手段で実現できる。以下、本発明のいくつかの実施形態について説明する。
【0009】
一方法実施形態では、ネットワーク接続要求を受け、そのネットワーク接続要求を転送し、データを中間サーバに送信する。この方法は、リモートネットワークへのセキュアリモートアクセスを可能にする。
【0010】
ネットワーク接続要求は、ローカルネットワーク上のコンピュータで受け取ることがでる。ネットワーク接続要求は、クライアント/サーバプリケーションのクライアントアプリケーションによって開始される。クライアントアプリケーションは前記コンピュータ上にあってもよい。ネットワーク接続要求は、リモートネットワーク上の宛先を含んでいてもよい。クライアント/サーバプリケーションのサーバプリケーションは、リモートネットワーク上にあってもよい。
【0011】
ネットワーク接続要求は、コンピュータ上のWindows(登録商標)ソケットレイヤ内に転送することができる。これには、ネームスペースプロバイダ(例えば、リモートネットワーク上のドメインネームサービスルックアップに利用)およびレイヤドサービスプロバイダ(例えば、ローカルネットワークからリモートネットワークへのクライアントアプリケーションのデータ転送に利用)を用いて、ネットワーク接続要求を転送することが含まれる。ネットワーク接続要求は、コンピュータのトランスポートサービスプロバイダ(例えば、TCP/IPトランスポートサービスプロバイダ)を避けて転送することができる。ネットワーク接続要求は、リモートネットワーク内の中間サーバに転送することができる。中間サーバは、コンピュータに代わってネットワーク接続要求を行なうことができる。転送は、クライアントアプリケーションの名前、クライアントアプリケーションのチェックサム、クライアントアプリケーションのバージョン、宛先のサーバ、および宛先のポートの内の一つ又はそれ以上に基づいて行われる。転送に先立ち、ネットワーク要求は、WinsockダイナミックリンクライブラリおよびWinsock2ダイナミックリンクライブラリの少なくとも一方を介することができる。ネットワーク接続要求は、コンピュータ上の少なくとも一つのプロキシにより、リモートネットワーク内の中間サーバに転送することができる。
【0012】
クライアントアプリケーションのデータは、コンピュータから中間サーバへ向けて送信することができる。セキュア・ソケット・レイヤ(SSL)は、コンピュータと中間サーバ間の通信を暗号化することができる。クライアントアプリケーションのデータは、中間サーバからサーバプリケーションへ向けて送信することができる。様々な実施形態は、中間サーバからサーバプリケーションへ向けてクライアントアプリケーションのデータを送信したり、あるいは、実施形態外部のソフトウェアまたはハードウェアによりこれを行わせる。クライアントアプリケーションのデータは、クライアントアプリケーションのデータを中間サーバへ向けて送信する前に、コンピュータの少なくとも一ローカルアドレスおよび一ローカルポートを介して送信される。
【0013】
いくつかの実施形態においては、クライアントアプリケーションと中間サーバとの間のセキュア接続を示すためビジュアルキューが設けられる。ネームスペースプロバイダおよびレイヤドサービスプロバイダは、自動的にコンピュータにインストールおよび/またはコンピュータからアンインストールすることができる。
【0014】
他の方法実施形態では、ネットワーク接続要求を受け、そのネットワーク接続要求を転送し、データを中間サーバから受け取る。この方法は、リモートネットワークへのセキュアリモートアクセスを可能にする。
【0015】
ネットワーク接続要求は、ローカルネットワーク上のコンピュータ上で受け取ることができる。ネットワーク接続要求は、リモートネットワーク上のファイルシステムに対して開始される。ネットワーク接続要求は、ファイルシステムの名前を含んでいてもよい。
【0016】
ネットワーク接続要求は、コンピュータ上でトランスポートドライバインターフェイスを用いて転送することができ、さらにネームスペースプロバイダを使用してもよい。転送することにより、ネットワークファイルシステムトラフィックをキャプチャーすることができる。ネットワーク接続要求は、コンピュータ上のトランスポートドライバ(例えば、TCP/IPトランスポートドライバ)を避けて転送することができる。そのネットワーク接続要求は、リモートネットワーク内の中間サーバに転送することができる。中間サーバは、コンピュータに代わりネットワーク接続要求を行なう。転送は、宛先サーバおよび宛先ポートの少なくとも一方に基づいて行われる。転送前に、ネットワーク接続要求は、少なくとも一つのトランスポートドライバインターフェースフィルタを通過することができる。
【0017】
中間サーバからのファイルシステムのコンピュータデータを受け取ることができる。セキュア・ソケット・レイヤ(SSL)は、コンピュータと中間サーバ間の通信を暗号化することができる。ファイルシステムのデータは、リモートネットワーク上の中間サーバとファイルシステム間で転送することができる。様々な実施形態では、中間サーバとファイルシステム間でファイルシステムのデータを転送するか、あるいは、実施形態外部のハードウェアあるいはソフトウェアによりこれを行わせる。
【0018】
いくつかの実施形態では、トランスポートドライバインターフェースは、自動的にコンピュータにインストールおよび/またはコンピュータからアンインストールすることができる。
【0019】
種々の態様、特徴、実施形態あるいは上記のいくつかの実施形態のインプリメンテーションは、単独あるいは様々な組み合わせで用いることができる。
【0020】
いくつかの実施形態は、ソフトウェアにおいてインプリメントできるが、ハードウェアにおいて、またはハードウェアとソフトウェアの組み合わせにおいてインプリメントすることもできる。本発明のいくつかの実施形態はまた、コンピュータ読み取り可能メディア上のコンピュータ読み取り可能コードとして実施することができる。コンピュータ読み取り可能メディアは、データを格納することができ、その後コンピュータシステムにより読み取ることができる任意のデータ記憶装置である。コンピュータ読み取り可能メディアの例としては、読み取り専用メモリ、ランダムアクセスメモリ、CD−ROM、DVD、磁気テープ、光学データ記憶装置、および搬送波が挙げられる。コンピュータ読み取り可能メディアはまた、コンピュータ読み取り可能コードが分散して格納され、実行されるよう、複数のネットワーク結合コンピュータシステムに分散させることができる。
【0021】
様々な実施形態におけるコンピュータコードは、ハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアの組み合わせにおいてインプリメントできる。
【0022】
本発明の他の態様および利点は、本発明の原理を例示する添付の図面を参照した以下の詳細な説明から明白となるであろう。
【発明を実施するための最良の形態】
【0023】
本発明は、添付の図面を参照した以下の詳細な説明により容易に理解されるであろう。図面中、同様の参照番号は、同様の構造要素を示す。
【0024】
本発明は、プライベートネットワーク上で維持されているリソースへの安全なアクセスを提供するための改善された方法に関する。安全なアクセスは、標準ネットワークブラウザを使用し、公衆ネットワークを介して提供することができる。多数のリモートユーザは、共通のアクセスポイントを経由し、制限およびコントロールされた環境下で、プライベートネットワークの少なくとも一部にアクセスすることができる。
【0025】
このソリューションにより、従業員、契約者、あるいはパートナーといったユーザは、プライベートネットワークへの直接接続から離れた場所にいながら、安全な方法でプライベートネットワーク上にあるリソースにアクセスすることができる。本発明のいくつかの実施形態により提供されるソリューションは、容易に設定および操作できるだけでなく、多くのリモートユーザをコスト効率の良くサポートすることもできる。
【0026】
以下、本発明に係るこの態様の実施形態を、図1A〜図27を参照しながら説明する。しかしながら、当業者には、これらの図に関してここで述べている詳細な説明は、あくまでも説明を目的としたものであり、本発明はこれらの限定された実施形態の範囲を超えるものであることは容易に理解されるであろう。
【0027】
図1Aは、本発明の一実施形態に係る情報検索システム100を示すブロック図である。情報検索システム100は、ネットワーク102、クライアントマシン104、106、仲介サーバ108、リモートサーバ110、112、プライベートネットワーク114、およびプライベートサーバ116、118を備えている。ネットワーク102は、クライアントマシン104、106、仲介サーバ108、およびリモートサーバ110、112の通信を可能にする通信媒体としての役割を果たす。ネットワーク102は、例えば、インターネット、広域ネットワーク、あるいはローカルエリアネットワークを含むデータネットワークである。インターネットとは、相互に接続されたコンピュータのグローバネットワークのことをいう。プライベートネットワーク114は、さらに、仲介サーバ108およびプライベートサーバ116、118の通信を可能にする通信媒体としての役割も果たす。ネットワーク114はまた、データネットワークでもある。プライベートネットワーク114はエンティティに関連付けられていることが多いため、プライベートネットワーク114上でコンピューティングデバイスを操作する従業員は、プライベートサーバ116、118と通信することができる。例えば、プライベートネットワーク114は、企業ネットワークあるいはイントラネットと呼ぶことができる。しかしながら、外部コンピュータィングデバイスによるプライベートネットワーク114へのアクセスは、一般にファイアウォール(図示なし)により制限されている。仲介サーバ108は、ファイアウォールを介してプライベートネットワーク114と通信することが許可されている。ここで、クライアントマシン(リクエスタ)が認可および許可されている範囲で、仲介サーバ108はクライアントマシン(リクエスタ)に代わりプライベートネットワーク114と通信する。仲介サーバ108は、外部コンピューティングデバイスにプライベートネットワーク114へアクセスさせる範囲を実質的にコントロールする。
【0028】
本発明のいくつかの実施形態によれば、プライベートサーバ116、118上にあるコンテンツに対する要求は、クライアントマシン104、106から受け取ることができる。ここで使用されているように、「コンテンツ」とは、サーバ上に格納することができ、クライアントが検索することのできるあらゆる情報またはリソースのことである。一般に、コンテンツは電子ファイルとして表示され、テキストおよび/またはイメージを含む。しばしば、クライアントマシン104、106は、ネットワーク102およびプライベートネットワーク114を介してコンテンツの要求および検索を容易にするブラウザアプリケーションを操作する。そのような場合、ブラウザアプリケーションが同一のコンテンツを表示することができるよう、コンテンツは、多くの場合、ブラウザを通して表示可能なドキュメント(例えば、マークアップ言語ドキュメント、ウェブページなど)としてブラウザアプリケーションに返される。クライアントマシン104、106は、仲介サーバ108と通信する。まず、仲介サーバ108は、コンテンツを求めているクライアントマシン104、106が、プライベートネットワーク114へのそのようなアクセスに認証および許可されているかどうか判断する。認証および許可検査を正常に終えた後、仲介サーバ108は、次に、クライアントマシン104、106に代わりプライベートネットワーク114上にあるプライベートサーバ116、118にアクセスする。仲介サーバ108が、要求されたコンテンツをプライベートサーバ116、118から得ると、仲介サーバ108は、クライアントマシン104、106に要求されたコンテンツを直接返すか、あるいは要求されたコンテンツをまず修正した後、クライアントマシン104、106に送信することができる。
【0029】
仲介サーバ108は、要求されたコンテンツを様々な形式で修正することができる。一例として、仲介サーバ108は、クライアントマシン104、106に送信する前に、要求されたコンテンツにツールバーを挿入することができる。別の例としては、仲介サーバ108は、一仲介サーバ(例えば、仲介サーバ108)に転送されるように、要求されたコンテンツ内のハイパーリンクを修正することができる。仲介サーバ108は、要求されたコンテンツに関して、その他様々なタスクを実行することができる。さらに、情報検索システム100はまた、サーバに格納された情報の仲介サーバ108における集中格納をサポートすることもできる。サーバに格納された情報は、「クッキー」と呼ばれることが多いが、クッキーは、通常クライアントマシンに格納される。
【0030】
図1Aに示した報検索システム100は、一対のクライアントマシン、一対のリモートサーバ、単一の仲介サーバ、および一対のプライベートサーバのみを示しているが、情報検索システム100は、多くのクライアントマシンおよび多くのサーバマシンをサポートできるものと理解されたい。情報検索システム100はまた、多数の仲介サーバもサポートすることができることも理解されたい。
【0031】
図1Bは、本発明の一実施形態に係る情報検索システム150を示すブロック図である。情報検索システム150は、例えば、図1に示した情報検索システム100の更に詳細なインプリメンテーションである。
【0032】
情報検索システム150は、インターネット152と、有線または無線手段を介してインターネット152に接続したクライアントマシン154、156とを利用している。一般に、クライアントマシン154、156は、ネットワークブラウザまたはメールアプリケーションといったクライアント側アプリケーションを操作する。クライアントマシン154、156のリクエスタ(ユーザ)が、リモートリソースにアクセスすることを望む場合、リソース要求がクライアントマシン154、156からインターネット152を介して仲介サーバ158に送られる。一般に、クライアントマシン154、156と仲介サーバ158間の通信は、暗号化技術(例えば、セキュア・ソケット・レイヤ(SSL))によって保護される。仲介サーバ158は、イントラネット160へのアクセスを可能にする。クライアントマシン154、156により要求されているリソースは、イントラネット160内にある。一般に、ファイアウォールは、イントラネット160への外部アクセスを制限または排除するため、仲介サーバ158は、ファイアウォール162を介してイントラネットと通信することができなければならない。イントラネット160は、一般に、電子的にアクセスすることができる様々な異なったタイプのリソースを含む。一般に、これらのリソースは、イントラネットに接続した、またはその一部をなすサーバマシンに格納されている。図1Bに示しているように、イントラネット160は、認証サーバ164、ウェブサーバ166、メールサーバ168、ファイルサーバ170、およびログサーバ172に接続されているか、またはそれらを備えている。よって、所定のクライアントマシンは、仲介サーバ158を経由し、イントラネット160内またはイントラネット160上にあるサーバ164〜172のいずれにもアクセスすることができる。従って、所定のクライアントマシンは、ネットワークブラウザアプリケーションを使用し、ウェブサーバ166上にあるリソースを要求し受け取ることができる。別の例として、所定のクライアントマシンは、クライアント側メールアプリケーションを使用し、メールサーバ168上にあるメールリソースにアクセスすることができる。更に別の例として、所定のクライアントマシンは、イントラネット160内またはイントラネット160上にあるファイルサーバ170にアクセスし、そこで電子ファイルを得る、格納する、あるいは表示することができる。
【0033】
仲介サーバ158は、仲介サーバ158を介したイントラネット160へのアクセスが継続的に確実に保護されるよう構成される。この点で、イントラネット160上にあるリソースまたはコンテンツにアクセスしようとしているリクエスタは、認証されなければならない。認証には、イントラネット160内またはイントラネット160上にある認証サーバ164を利用することができる。この点に関しては、イントラネット160が利用するネイティブの認証技術を、仲介サーバ158でリクエスタを認証する際に使用することができる。更に、管理者は、様々なリクエスタ(例えば、クライアントマシンのユーザ)に、イントラネット160内またはイントラネット160上の種々のリソース(例えば、サーバ)に対し、異なったアクセス権を与えることができるように仲介サーバ158を構成することができる。ログサーバ172は、仲介サーバ158における、イントラネット160へのアクセス要求に関するログ情報の格納を可能にする。ログ情報は、ユーザがよりよく認識できるように、アプリケーションレベルごとに提供することができる。
【0034】
図2Aは、本発明の一実施形態に係る仲介サーバ200を示すブロック図である。仲介サーバ200は、例えば、図1に示した仲介サーバ108としての使用に適している。仲介サーバはまた、中間サーバとも称される。
【0035】
仲介サーバ200は、仲介サーバにより利用される処理装置により実行されるコンピュータプログラムコードにより一般にインプリメントされる様々な処理モジュールを含む。より詳しくは、仲介サーバ200の処理モジュールは、ウェブサーバ202およびプロトコルハンドラ204を含む。ウェブサーバ202は、リンク206により(ネットワークを介して)クライアントマシンに接続され、プロトコルハンドラ204は、リンク208により(ネットワークを介して)リモートサーバに接続される。ウェブサーバ202およびプロトコルハンドラ204は互いに通信すると同様に、様々な支援モジュールおよびデータ記憶装置210とも通信する。データ記憶装置210は、仲介サーバ200により維持されている様々なデータ項目の永続性または不揮発性の記憶を可能にする。一般に、一クライアントマシンを使用する各ユーザまたはリクエスタに対し、データ記憶装置は個別に記憶することを可能にする。
【0036】
処理モジュールは、認証マネージャ212およびアクセスマネージャ214を備えている。認証マネージャ212は、リクエスタが、申告通り本人かどうかを判断する役目を果たす認証処理を管理する。認証処理は、仲介サーバ200内部または外部で行われる。例えば、外部認証は、プライベートネットワーク(例えば、認証サーバ164)内の認証サーバにより提供される。アクセスマネージャ214は、プライベートネットワーク上の様々なリソースへのアクセスを制限する。すなわち、異なるリクエスタに、様々なアクセス権レベル、タイプ、あるいはエリアを割り当てることができる。例えば、リクエスタAは、サーバXにはアクセスできるが、サーバYおよびZにはアクセスできず、リクエスタBは、サーバYには読み出し専用でアクセスできるが、サーバXおよびZにはアクセスできない。
【0037】
仲介サーバ200はまた、コンテンツトランスフォーマ216も備えている。これは、リモートサーバから受け取った要求コンテンツを解析した後、所定の方法でコンテンツを修正するのに使用される、別の処理モジュールである。
【0038】
仲介サーバ200が備えている場合もある別の処理モジュールは、クッキーマネージャ218である。クッキーマネージャは、リモートサーバから受け取る「クッキー」が、データ記憶装置210に格納され、データ記憶装置210に前もって格納されたものが適切なタイミングでリモートサーバに送信されるように「クッキー」を管理する。より一般的には、「クッキー」は、サーバに格納された情報のことを指す。そのようなサーバに格納された情報は、多くの場合、リモートサーバにより設定され、セッション、状態、あるいは識別を目的として使用される。
【0039】
図2Bは、本発明の一実施形態に係るリモートアクセスシステム250を示すブロック図である。リモートアクセスシステム250は、クライアント/サーバ環境下で作動し、クライアントのユーザが、リモートサーバでリソースにアクセスできるようにする。具体的には、リモートアクセスシステム250は、ネットワークブラウザ254およびメールクライアント256を備えている。ネットワークブラウザ254およびメールクライアント256は、クライアントマシン上で作動又は実行されるクライアントアプリケーションである。一般に、ユーザまたはリクエスタは、リモートサーバにあるリソースを要求するために、これら一以上のクライアントプログラムと対話する。ネットワークブラウザ254およびメールクライアント256は、セキュアリンクあるいは接続を介して仲介サーバ252に接続される。仲介サーバ252はまた、セキュアまたは非セキュア接続あるいはリンクのいずれかを通じてリモートサーバに接続される。仲介サーバ252は、プライベートネットワーク上で見られるサーバのような様々な異なったサーバへの接続をサポートすることができる。プライベートネットワークの一例は、企業ネットワークである。図2Bに示したサーバは、ウェブサーバ258、Eメールサーバ260、Windows(登録商標)ファイルサーバ262、UNIX(登録商標)ファイルサーバ264、認証サーバ266、およびログサーバ268を備えている。
【0040】
仲介サーバ252は、フロントエンドプロトコルハンドラレイヤ270に達する前にクライアントアプリケーションとの接続またはリンクに暗号化処理を提供するセキュア・ソケット・レイヤ(SSL)272を備えている。フロントエンドプロトコルハンドラレイヤ270は、様々なクライアントアプリケーションにより利用され得る、送信されてくる異なったタイプのプロトコルを処理するため、複数のプロトコルハンドラを有する。図213に示されているように、フロントエンドプロトコルハンドラレイヤ270は、HTTP、IMAP、SMTP、POP、およびMAPIのプロトコル用に個別のプロトコルハンドラを有する。送られてくる要求に、適切なプロトコルハンドラが利用された後、仲介サーバ252内の他の機能モジュールが利用される。具体的には、アクセスマネージャ274は、要求を送信したリクエスタに、要求しているタイプのアクセスが許可されているかどうか判断することができる。認証マネージャ276は、リクエスタが認証され得るかどうか判断することができる。コンテンツトランスフォーマ278は、受信したリクエスト、またはリモートサーバにより提供された要求されたレスポンスのコンテンツを変換することができる。システム管理マネージャ280は、アクセス権、システム構成、およびログイン機能を構成するために、システム管理者が仲介サーバ252と対話できるようにする。
【0041】
仲介サーバ252はまた、バックエンドプロトコルハンドラ282も有する。バックエンドプロトコルハンドラ282は、特定のサーバに関して、送信されてくる通信および発信される通信に適切なプロトコルを提供する。図2Bに示されているバックエンドプロトコルハンドラのレイヤは、HTTP、IMAP、SMTP、POP、SMB、NFS、NIS、RADIUS、LDAP、およびNTのプロトコル用のプロトコルハンドラを有する。仲介サーバ252に送信されてくるプロトコルと、仲介サーバ252から発信されるプロトコルとが異なる場合、コンテンツトランスフォーマ278は、プロトコルを変換(例えば、翻訳)することができる。さらに、仲介サーバ252は、データストア284、ログマネージャ286、およびデータ同期マネージャ288を有する。データストア284は、仲介サーバ252の様々なコンポーネントに一時的または半永久的なデータの格納を可能にする。例えば、認証を目的としたローカルレコードは、各クライアントまたはリクエスタのために、データストア284に格納することができる。さらに、クライアントまたはリクエスタのためのセッションIDまたはクッキーも、データストア284に集中的に格納できる。データ同期マネージャ288は、フォルトトレランスを提供するため、一仲介サーバと別の仲介サーバとの接続を可能にするモジュールである。従って、一仲介サーバが機能しなくなった場合、機能しなくなった仲介サーバは、リンク290を介して作動している仲介サーバに接続することができ、一般に一仲介サーバに関連したオペレーションのうちのいくつかあるいは全てを提供することができる。ログマネージャ286は、仲介サーバ252を介してなされる様々なアクセス要求のアプリケーションレベルのロギングを可能にするために設けられている。ログマネージャ286により作成されたログは、ログサーバ268に格納される。
【0042】
図3は、本発明の一実施形態に係る要求処理300を示すフローチャートである。図1Aに示した仲介サーバ108、図1Bに示した仲介サーバ158、図2Aに示した仲介サーバ200、または、図2Bに示した仲介サーバ252といった仲介サーバが、リクエスタからの要求を受け取ると、常に要求処理300が実行される。
【0043】
要求処理300は、受信した要求がシステムログイン要求かどうかを判断する決定302から始まる。受信した要求が、システムログイン要求であると決定302で判断されると、要求処理300はリクエスタを認証しようとする304。認証は、ローカルまたはリモートで行なわれる。認証についての更なる詳細を以下記載する。その後、決定306により、リクエスタが認証されたかどうか判断される。決定306により、リクエスタを認証することができないと判断された場合、ログインの試みは失敗に終わり、ログインページがリクエスタに返される308。そのログインページは、リクエスタによるログインの再試行を容易にする。ログイン要求が失敗に終わった場合、オペレーション308をもって要求処理300は完了し終了となる。
【0044】
また、決定306で、リクエスタが認証されると判断された場合には、セッションIDがリクエスタに返される310。リクエスタは、コンテキストによって、クライアントデバイスのユーザあるいはクライアントデバイスに照会することができる。セッションが実行中である限り、セッションIDは仲介サーバへの次の要求に使用される。さらに、最初のアクセスページが、リクエスタに返される312。最初のアクセスページから、リクエスタはプライベートネットワーク上で利用可能な様々なリソースにアクセスすることができる。ログイン要求が達成された場合、オペレーション312をもって、要求処理300は完了し終了となる。
【0045】
ログイン要求の処理に加えて、要求処理300はさらに、仲介サーバを介して他のすべてのリモートアクセス要求を処理すべく機能する。従って、決定302で、受信した要求がシステムログイン要求ではないと判断された場合、決定314で、受信した要求が有効なセッションIDを有するかどうか判断される。リクエスタが既に認証されており(つまり、仲介サーバにログインしている)、セッションがまだ有効であれば、受信した要求は有効なセッションIDを有するであろう。従って、決定314で、受信した要求に関連したセッションIDが有効ではないと判断された場合、仲介サーバへのアクセスは拒否され、ログインページがリクエスタに返される308。あるいは、決定314で、セッションIDが有効であると判断された場合、決定316で、セッションがタイムアウトしているかどうか判断される。決定316で、セッションはタイムアウトしていると断定された場合、仲介サーバへのアクセスは拒否され、ログインページがリクエスタに返される308。ここで、リクエスタが、無効のセッションIDを有するか、セッションがタイムアウトしている場合、リクエスタはログインし認証を得るよう強いられる。
【0046】
一方、決定316で、セッションはタイムアウトしていないと断定された場合、リクエスタは、仲介サーバを介してプライベートネットワークにアクセスすることが許される。その後、リクエスタがアクセスしようとしているアクセスのタイプによって、更なる処理が行われ、リクエスタが、確実に適切かつ対象とみなされるリソースのみにアクセスするようにする。特に、要求処理300に関しては、リクエスタに関連したアクセス権が得られる318。アクセス権は、リクエスタがどのリソースにアクセスする権利を与えられているかを示す。次に、決定320で、受信した要求に関連した特定のアクセスタイプが許可されるかどうか判断される。決定320で、受信した要求に関連したアクセスタイプが許可されていないと判断された場合、アクセスを拒否されたページは、リクエスタに返される322。また、決定320で、受信した要求のアクセスのタイプが許可されていると判断された場合、受信した要求は許可され324、処理される。この場合、この受信した要求の処理により、リクエスタは、プライベートネットワークの保護されたリソースにアクセス(例えば、表示、検索など)することができる。オペレーション322および324をもって要求処理300は完了し、アクセスが許可される場合のみ、受信した要求が処理され終了となる。
【0047】
図4は、本発明の一実施形態に係る認証処理400を示すフローチャートである。認証処理400は、例えば、図3に示した認証オペレーション304に関連した処理である。
【0048】
認証処理400は、リクエスタ(ユーザ)に関するローカルレコードが存在するかどうか判断する決定402で開始される。リクエスタに関するローカルレコードが存在すると決定402で判断された場合、決定404で、内部または外部認証が必要かどうか判断される。ここで、ローカルレコードは、内部または外部認証が行なわれるべきかどうかを示す。内部又は外部認証が行なわれるべきかどうかを示す他に、ローカルレコードは更に他の有用な情報、例えば、リクエスタ(ユーザ)の名前、最後にログインした時間、アカウントステータスなどを格納することもできる。決定404で、内部認証が行われるべきであると判断された場合、認証されるべく処理されるログイン要求と共に提供されたパスワードがハッシュされる406。ハッシングとは、文字列を、オリジナルの文字列を示す「キー」と呼ばれる別の文字列に変換することである。ハッシュ機能によりハッシングオペレーションが行われる。ハッシングは、暗号化および復号化コンテキストにおいて行なわれることが多い。
【0049】
次に、決定408で、ハッシュされたパスワードが、格納されたハッシュパスワードと一致するかどうか判断される。決定408で、一致すると判断された場合、認証が得られたとみなされる410。また、決定408で、一致しないと判断された場合、認証に失敗したとみなされる412。さらに、決定408で、一致しないと判断された場合、アクセス失敗もログに記録させることができる414。一実施形態では、ログはログサーバにより提供することができる。アクセス失敗のロギング414は、後にログを閲覧する際、生じたアクセス失敗の性質についての理解を容易にする、アプリケーションレベル情報を提供することができる。オペレーション410および414をもって、認証処理400は完了し、ログイン要求が正しいパスワードを有しているかどうかにより、認証が得られるかまたは得られず終了となる。
【0050】
一方、決定402で、リクエスタに関するローカルレコードが存在しないと判断された場合、決定416で、ローカル設定が必要かどうか判断される。システム設定を用いて、ローカルレコードが必要かどうか示すことができる。管理者は、このようなシステム設定を用いてローカルレコードを有するユーザのみにアクセスを限定することができる。決定416で、ローカル設定が必要であると判断された場合、利用可能なローカルレコードがないため、認証に失敗したとみなされる412。ここでも、アクセス失敗を記録することができる414。また、決定416で、ローカル設定は必要ではないと判断された場合、あるいは、決定404で、外部認証が行なわれるべきであると判断された場合、認証に使用される外部認証サーバ(EAS)のアドレスおよびタイプが得られる418。別の処理は、一般に、異なったタイプの外部認証サーバで行なわれる。通常、これらの外部認証サーバは、認証を行なうことを目的としてプライベートネットワーク内に前もって設けられている。一般に、使用される特定の外部認証サーバを示すシステム設定がある。従って、認証処理400には、そのような外部認証サーバによって提供されるネイティブ認証機能を利用することができる。以下、図7に関する説明により、異なるタイプの外部認証に関する更なる詳細を提供する。
【0051】
次に、決定420で、外部認証が得られたかどうか判断される。ここで、外部認証は示された特定タイプの外部認証により行われる。決定420で、外部認証が得られないと判断された場合、認証に失敗したものとみなされる412。更に、上述のように、アクセス失敗をログすることができる414。一方、決定420で、外部認証が得られたと判断された場合、認証が得られたとみなされる422。オペレーション422をもって、認証処理400は完了し、リクエスタは認証され終了する。
【0052】
図5は、本発明の一実施形態に係るアクセス権処理500を示すフローチャートである。アクセス権処理500は、例えば、図3の決定320によって行なわれる処理である。すなわち、アクセス権処理500は、要求されているアクセスタイプが、特定のリクエスタに許可されるかどうかを判断する。事実上、アクセスタイプにより、リクエスタによるアクセスを制限するために使用することのできる様々な基準が提供される。図5に示した実施形態に関して、その基準には、ソースインターネットプロトコル(IP)アドレス、時刻、およびオペレーションが含まれる。
【0053】
アクセス権処理500は、受信した要求に関連したソースIPアドレス(すなわち、リクエスタ)が認可されるかどうかが判断される決定502で始まる。決定502で、受信した要求に関連したソースIPアドレスが認可されないと判断された場合、アクセス権処理500はアクセスを拒否する504。ここで、認可されていないアクセスの危険性を低減するため、アクセス権処理500は、確実に既知のリクエスタのIPアドレスだけがプライベートリソースにアクセスすることができるようにする。
【0054】
決定502で、ソースIPアドレスが認可されると判断された場合、決定506で、要求がなされている時間が、時刻アクセス制限の条件を満たすかどうか判断される。一般に、この制限は、全リクエスタ、あるいはそれぞれ個別のリクエスタに対して設定することができる。ここで、必要であれば、仲介サーバを構成し、ある一定の期間のみプライベートリソースへのアクセスを許可することができる。これは、例えば、営業時間内または他の限定時間内にのみアクセスを許可することができる。決定506で、要求を受信した時間が、許可された時間外であると判断された場合、アクセス権処理500はアクセスを拒否する504。
【0055】
要求を受信した時間が、許可された時間内であると判断された場合506、決定508で、受信した要求に関連した特定のオペレーションが許可されるかどうか判断される。ここで、送信されてきた要求は、プライベートリソースに関して様々な異なったオペレーションが行なわれることを要求することができる。これらの様々な異なったオペレーションは、提供されているアプリケーションのタイプに応じて異なる傾向にある。決定508を行うことにより、異なったリクエスタにより使用されることが許可されるオペレーションを制限することができる。決定508で、要求されているオペレーションが許可されないと判断された場合、アクセスは拒否される504。一方、決定508で、要求されたオペレーションが許可されると判断された場合、アクセスが許可される510。オペレーション504および510をもって、アクセス権処理500は完全し終了となる。
【0056】
図6は、本発明の一実施形態に係る、操作権限処理600を示すフローチャートである。操作権限処理600は、例えば、図5に示した決定508により行なわれる。操作権限処理600は、要求されたオペレーションが許可されると判断された場合、そのようなオペレーションを実行することから、図3のオペレーション320および324に関連させることができる点にも注意されたい。
【0057】
操作権限処理600は、ファイルブラウズオペレーションが要求されているかどうか判断する決定602で始まる。決定602で、ファイルブラウズオペレーションが要求されていると判断された場合、決定604で、ファイルブラウズがリクエスタに許可されているかどうか判断される。決定604で、ファイルブラウズがリクエスタに許可されていないと判断された場合、アクセスは拒否され606、操作権限処理600は終了する。また、決定604で、ファイルブラウズがリクエスタに許可されていると判断された場合、決定608で、読み取りまたは書き込みオペレーションが要求されているかどうか判断される。決定608で、書き込みオペレーションが要求されていると判断された場合、決定610で、書き込みアクセスが許可されているかどうか判断される。一実施形態では、決定610で、要求をしている特定のリクエスタによる書き込みアクセスが、許可されているかどうか判断される。決定610で、書き込みアクセスが許可されていないと判断された場合、アクセスは拒否され606、操作権限処理600は終了する。また、決定610で、書き込みアクセスが許可されていると判断された場合、書き込み要求処理が行われ612、受信した要求を実行する。オペレーション612をもって、要求されたオペレーションが実行され、操作権限処理600が終了する。
【0058】
一方、決定608で、読み取りオペレーションが要求されていると判断された場合、決定614で、読み取りアクセスが許可されているかどうか判断される。一実施形態では、決定614で、要求している特定のリクエスタによる読み取りアクセスが許可されているかどうか判断される。決定614で、読み取りアクセスが許可されていないと判断された場合、アクセスは拒否される606。また、決定614で、読み取りアクセスが許可されていると判断された場合、読み取り要求処理が行われ616、要求されたオペレーションが実行される。オペレーション616をもって操作権限処理600は完了し、要求されたオペレーションが実行され、終了する。
【0059】
一方、決定602で、要求されたオペレーションがファイルブラウズオペレーションではないと判断された場合、決定618で、要求されたオペレーションがウェブブラウズオペレーションかどうか判断される。決定618で、要求されたオペレーションがウェブブラウズオペレーションであると判断された場合、決定620で、そのウェブブラウズオペレーションに関連したサーバが、リクエスタにアクセス可能かどうか判断される。決定620で、サーバがリクエスタにアクセス不可能であると判断された場合、アクセスは拒否される606。一実施形態では、仲介サーバは、特定のリクエスタによりアクセス可能なサーバのリストを保持することができる。これにより、仲介サーバは、特定のリクエスタがサーバ名によってブラウズすることができるリソースをコントロールすることができる。例えば、プライベートネットワークには多数のサーバが含まれている場合もあるが、リクエスタは、ある一定のサーバにのみアクセスできるよう、個別に制限することができる。また、決定620で、そのウェブブラウズオペレーションに関連したサーバが、リクエスタにアクセス可能であると判断された場合、ウェブブラウズ要求処理が行われる622。言い換えれば、リクエスタに特定のサーバにアクセスする権限が与えられていたため、要求されたウェブブラウズオペレーションが行われる622。オペレーション622をもって、要求されたオペレーションが実行され、操作権限処理600は終了する。
【0060】
一方、決定618で、要求されたオペレーションが、ウェブブラウズオペレーションではないと判断された場合、決定624で、要求されたオペレーションがEメールオペレーションであるかどうか判断される。決定624で、要求されたオペレーションがEメールオペレーションであると判断された場合、決定626で、Eメール(電子メール)がリクエスタに許可されているかどうか判断される。決定626で、Eメールがリクエスタに許可されていないと判断された場合、アクセスは拒否される606。ここで、仲介サーバは、特定のリクエスタによるEメールオペレーションへのアクセスをコントロールすることができる。また、決定626で、Eメールがリクエスタに許可されている判断された場合、Eメール要求処理が行われる628。言い換えれば、リクエスタがそのオペレーションを行なうための適切な権限を持っていたため、要求されたEメールオペレーションが実行される。オペレーション628をもって、要求されたオペレーションが実行され、操作権限処理600は終了する。
【0061】
更に、決定624で、要求されたオペレーションがEメールオペレーションではないと判断された場合、決定630で、要求されたオペレーションが、仲介サーバにより許可されている他の何らかのオペレーションであるかどうか判断される。この場合、他のオペレーションとしては、仲介サーバにより容易になされる適切ないかなるオペレーションであってもよい。実質的に、他のオペレーションは、仲介サーバで利用可能な汎用オペレーションであってもよい。他のオペレーションはまた、プライベートネットワークにアクセスすることなく、仲介サーバが実行するローカルオペレーションのことであってもよい。ローカルオペレーションの例は多種多様であるが、ブックマークの付加、ローカルレコードの追加、編集、および削除、ファイルシェアの修正などが挙げられる。しかしながら、前記他のオペレーションは、プライベートネットワーク内で行なわれるオペレーションであってもよい。決定630で、要求されたオペレーションが上記他のオペレーションのうちの一つであると判断された場合、決定632で、当該他のオペレーションが許可されているかどうか判断される。決定632で、要求されたオペレーションが許可されている上記他のオペレーションのうちの一つではないと判断された場合、アクセスは拒否される606。また、決定632で、前記他のオペレーションが許可されていると判断された場合、他の要求処理が行われる634。オペレーション634をもって、操作権限処理600は完了し、他のタイプのオペレーションが行われ、終了となる。
【0062】
一方、決定630で、要求されたオペレーションが許可されている(リクエスタによる)他のオペレーションのうちの一つではないと判断された場合、操作権限処理600は、要求されたオペレーションを行うことなく終了となる。この場合、要求されたオペレーションが、操作権限処理600によりサポートされず、要求されたオペレーションは仲介サーバで処理されない(つまり、ブロックされる)。
【0063】
図7は、本発明の一実施形態に係る詳細な外部認証処理700を示すフローチャートである。詳細な外部認証処理700は、例えば、図4に示した決定420に関連した詳細な処理である。詳細な外部認証処理700は、ネットワーク情報システム(NIS)、リモート・オーセンティケイション・ダイアル・イン・ユーザ・サービス(RADIUS)、ライトウェイト・ディレクトリー・アクセス・プロトコル(LDAP)、およびNTドメインを含む様々な異なったタイプの外部認証システムをサポートする。従って、仲介サーバに対し行なわれる外部認証は、プライベートネットワークが提供している場合もある、様々なネイティブの認証アプローチのうちのいずれかを使用することができる。
【0064】
詳細な外部認証処理700は、外部認証サーバ(EAS)がNISであるかどうか判断する決定702で開始される。外部認証サーバがNISである場合、NISレコードが読み取られる704。その後、ログイン要求と共に提供されたパスワードが、ハッシュされる706。ハッシュされたパスワードは、NISレコード内に提供されているものと比較される708。そして、決定710で、ハッシュされたパスワードが一致するかどうか判断される。パスワードが一致した場合、認証が行われる712。パスワードが一致しない場合、認証は失敗に終わる714。
【0065】
一方、決定702で、外部の認証サーバがNISではないと判断された場合、決定716で、外部認証サーバがRADIUSであるかどうか判断される。外部認証サーバがRADIUSである場合、ログイン要求と共に提供されたユーザ名およびパスワードが、RADIUSの共有秘密を用いて暗号化される718。RADIUSの共有秘密は、一般に共有鍵である。その後、暗号化された値は、認証のためRADIUSサーバに送られる720。そして、決定722で、RADIUSサーバからのレスポンスが受け取られたかどうか判断される。レスポンスは、受け取られると、認証成功か失敗かを示す724。
【0066】
一方、決定716で、外部認証サーバがRADIUSではないと判断された場合、決定726で、外部認証サーバがLDAPであるかどうか判断される。決定726で、外部認証サーバがLDAPであると判断された場合、ログイン要求と共に提供されたユーザ名とパスワードが認証のためにLDAPサーバに送られる728。その後、決定730で、LDAPサーバからのレスポンスが受け取られたかどうか判断される。レスポンスは、受け取られると、認証成功か失敗かを示す732。
【0067】
一方、決定726で、外部認証サーバがLDAPではないと判断された場合、決定734で、外部認証サーバがNTドメイン(NTドメインサーバ)であるかどうか判断される。決定734で、外部認証サーバがNTドメインであると判断された場合、NTドメインサーバから乱数が得られる736。その後、ログイン要求と共に提供されたパスワードは、その乱数を用いてハッシュされる738。次に、ハッシュされた値は、認証のためNTドメインサーバに送られる740。その後、決定742で、NTドメインサーバからのレスポンが受け取られたかどうか判断される。レスポンスは、認証成功か失敗かを示す744。
【0068】
図8Aおよび図8Bは、本発明の一実施形態に係るファイルアクセス要求処理800を示すフローチャートである。ファイルアクセス要求処理800は、例えば、ウェブブラウズオペレーションがリクエスタによって要求された場合行われる処理である。言い換えれば、ファイルアクセス要求処理800は、例えば、図6のブロック622の一実施形態により行なわれる処理であってもよい。
【0069】
ファイルアクセス要求処理800は、サーバが発見されているかどうか判断される決定802で始まる。決定802で、サーバが既に発見されていると判断した場合、決定804で、ファイルアクセス要求がフォルダコンテンツを表示しようとするものかどうか判断される。決定804で、ファイルアクセス要求がフォルダコンテンツの表示を望むものであると判断された場合、フォルダのコンテンツが検索される806。そして、検索されたコンテンツが、リクエスタに送られる808。
【0070】
一方、決定804で、ファイルアクセス要求がフォルダコンテンツを表示しようとするものではないと判断された場合、決定810で、ファイルアクセス要求が新しいフォルダを要求しているものかどうか判断される。決定810で、ファイルアクセス要求が新しいフォルダを要求しようとしていると判断された場合、リクエスタは新しいフォルダ名の入力を促される812。その後、決定813で、フォルダ名が受け取られたかどうか判断される。決定813で、フォルダ名がまだ受け取られていないと判断された場合、ファイルアクセス要求処理800はフォルダ名の入力を待つ。決定813で、フォルダ名が受け取られたと判断されると、新しいフォルダが作成される814。
【0071】
また、決定810で、ファイルアクセス要求が新しいフォルダの作成を求めていないと判断された場合、決定816で、ファイルアクセス要求がファイルのダウンロードを求めているものかどうか判断される。決定816で、ファイルアクセス要求がファイルのダウンロードを求めていると判断された場合、リクエスタに対し、要求されたファイルがダウンロードされる818。一方、決定816で、ファイルアクセス要求がファイルのダウンロードを求めているものではないと判断された場合、決定820で、ファイルアクセス要求がファイルのアップロードを求めているものかどうか判断される。決定820で、ファイルアクセス要求がファイルのアップロードを求めていると判断した場合、リクエスタに対し、要求されたファイルがアップロードされる822。また、決定820で、ファイルアクセス要求がファイルのアップロードを求めていないと判断した場合、図8Aには示していないが、更なるタイプのファイルアクセス要求を処理することができる。従って、ファイルアクセス要求がファイルのアップロードを求めているものではない(また、更なるタイプのファイルアクセス要求がサポートされていない)場合、決定820をもって、ファイルアクセス要求処理800は完了し、ファイルアクセスオペレーションは実行されず終了となる。同様に、ブロック808、814、818、および822をもって、ファイルアクセス要求処理800は完了し終了するが、要求されたファイルアクセスは実行されていない。
【0072】
更に、決定802で、サーバがまだ発見されていないと判断された場合、ファイルアクセス要求処理800は、図8Bに示した処理を行う。この場合、利用可能なサーバのリストがまず発見される824。その後、決定826で、リクエスタが利用可能なサーバの中から一つを選択するのを待つ。決定826で、サーバ選択がなされたと判断された場合、選択されたサーバに関する共有情報が検索される828。一実施形態では、共用情報は、リモートリクエスタなどのサードパーティと共用可能である、選択されたサーバに格納されたフォルダの情報を識別する。その後、決定830で、サーバに関する情報を永続的に保存するべきであるかどうか判断される。決定830で、サーバに関する情報を永続的に保存するべきであると判断された場合、サーバ情報は保存される832。サーバ情報の保存により、当該サーバは、次回システムにログインした際、利用可能なサーバを発見する必要がなくなるよう「利用可能なサーバ」となる。一方、決定830で、サーバに関する情報を永続的に保存すべきではないと判断された場合、ブロック832はバイパスされる。いかなる場合も、サーバ情報が永続的に保存されるべきではない場合、ブロック830をもって、また同様に、サーバ情報が永続的に保存されるべきである場合、ブロック832をもって、サーバを発見するための処理は完了し、よって、ファイルアクセス処理800は、決定802に戻り、それ以降のオペレーションを繰り返す。
【0073】
図9A〜9Cは、本発明の一実施形態に係るウェブリソース要求処理900を示すフローチャートである。ウェブリソース要求処理900は、例えば、図1Aに示した仲介サーバ108あるいは図1Bに示した仲介サーバ158といった仲介サーバにより行なわれる。ウェブリソース要求処理900は、ウェブリソース要求を処理するために行われる。
【0074】
まず、適切なリモートサーバのホスト名を得る902。一実施形態では、ホスト名はストレージから得ることができる。この場合、ストレージは、例えば、図2Aに示したデータ記憶装置214であってもよい。別の実施形態では、ホスト名は、ウェブリソース要求に関連したURLから得ることができる。適切なリモートサーバのホスト名が得られた902後、ホスト名が検索され904、適切なリモートサーバのIPアドレスを得る。その後、リモートサーバに接続される906(あるいは、既に接続されている場合維持される)。次に、必要に応じて、仲介サーバとリモートサーバ間で安全なハンドシェークが行われる908。その後、得られたホスト名に関連するあらゆる「クッキー」が得られる910。オペレーション910をもって、仲介サーバにおけるウェブリソース要求の前処理は完了し、こうして、当該要求はリモートサーバへ転送されることができる。この時、関連した「クッキー」を備えたウェブリソースに対する要求がリモートサーバに送られる912。
【0075】
その後、決定914で、レスポンスが受け取られたかどうか判断される。決定914で、レスポンスがまだ受け取られていないと判断された場合、ウェブリソース要求処理900は、そのレスポンスを待つ。決定914で、レスポンスが受け取られたと判断された場合、決定91で、レスポンス内に「クッキー」が存在するかどうか判断される。決定916で、「クッキー」がレスポンス内に存在すると判断された場合、「クッキー」はレスポンスから抽出される918。そして、抽出された「クッキー」は保存される920。一般に、「クッキー」は、仲介サーバ内に設けられた中央ストレージ、あるいは、仲介サーバに関連したまたは接続された他のストレージに格納される。オペレーション920、および「クッキー」がレスポンス内に存在しないと判断された場合は、決定916に引き続き、レスポンスのヘッダー内のURLが修正される922。
【0076】
その後、決定924で、レスポンスが修正されるべきタイプのものであるかどうか判断される。この場合、一般的に、レスポンスは、HTML、グラフィックス、pdf、MPEGあるいは他のフォーマットといった様々な形式のものであり得る。決定924で、レスポンスが修正できないタイプのもの(例えば、グラフィックス)であると判断された場合、レスポンスは直ちにリクエスタに送られる(または転送される)926。その後、決定928で、レスポンスが完了したかどうか判断される。決定928で、レスポンスが完了したと判断された場合、ウェブリソース要求処理900は、更なるウェブリソース要求を処理することができるように、決定914に戻り、それ以降のオペレーションを繰り返す。また、決定928で、これまでのところレスポンスの一部のみがリクエスタに送信されていると判断された場合、ウェブリソース要求処理900は、レスポンスの後続部分を同様に処理することができるように、決定914に戻り、それ以降のオペレーションなどを繰り返す。
【0077】
一方、決定924で、レスポンスは修正可能なタイプのもの(例えば、HTML)であると判断された場合、レスポンスを処理し、レスポンスがリクエスタに戻る前に修正する。図9Cに示した処理は、レスポンスを修正するために行うことができる処理の一実施形態である。詳細には、決定932では、ツールバーが求められているかどうか判断される。仲介サーバは、ツールバーを、常にまたは時によって挿入するように、あるいは、まったく挿入しないように構成することができる。ツールバーは、仲介サーバにより標準化またはカスタマイズすることができる。決定932で、ツールバーが求められていると判断された場合、ツールバーHTMLがレスポンスに挿入される。ツールバーHTMLによって作成されるツールバーは、仲介サーバによって提供されたフィーチャまたはファンクションを容易にするように、得られたレスポンスに付加されるコントロールあるいはコンテンツを提供することができる。
【0078】
次に、レスポンスのHTML部分内の一定のURLは修正できる936。一実施形態では、一定のURLの修正は、得られたHTMLの一定のタグ内でURLのホスト名部分を修正することにより行なうことができる。別の実施形態では、一定のURLは、そのURLにサフィックスを付加することにより修正することができる。サフィックスは、このようにURLに追加情報を持たせる役目をする。さらに、得られたHTML内の言語部分をスクリプトすることにより提供または作成される一定のURLを修正することができる938。言語をスクリプトする例としては、Java(登録商標)ScriptとVBscriptが挙げられる。一実施形態においては、得られたHTML内の言語部分をスクリプトすることにより提供または作成される一定のURLのホスト名部分を修正する938。別の実施形態においては、言語部分をスクリプトすることにより提供または作成される一定のURLを修正し938、補足的情報を有するサフィックスを含むようにする。以下、言語部分のスクリプトの修正に関する更なる詳細を、図13Aおよび図13Bを参照し説明する。その後、修正されたレスポンスは、リクエスタに送信される940。
【0079】
その後、決定942で、要求が終了したかどうか判断される。決定942で、要求は終了したと断定された場合、ウェブリソース要求処理900は完了し終了となる。一方、決定942で、要求はまだ完了していないと判断された場合、ウェブリソース要求処理900は、レスポンスの残りの部分が、受け取られると同時に同様に処理されるように、決定914に戻りそれ以降のオペレーションを繰り返す。このように、ウェブリソース要求処理900は実行され、多数のデータ部分あるいはデータブロック中のリソース要求に対する単一のレスポンスを処理することができる。このような場合、リクエスタへの応答性が阻害されないように、ウェブリソース要求処理900は、リモートサーバからのレスポンスを受け取るとすぐ処理することができる。この点に関して、ウェブリソース要求処理900は、レスポンスに関連した各データ部分あるいはデータブロックに対して、オペレーション914〜942が繰り返されるようにする。
【0080】
図10は、本発明の一実施形態に係る情報検索システム1000を示す図である。情報検索システム1000は、図1Aの情報検索システム100または図1Bの情報検索システム150と概して同様のものである。情報検索システム1000のオペレーションに関して、一実施形態に係るそのオペレーションを示す代表例を挙げて以下論じる。情報検索システム1000は、クライアント1002、データストア1006を備えた仲介サーバ1004、およびリモートサーバ1008を含む。図3の要求処理300は、既に行なわれているものとし、また、リクエスタは、試みた方法で、要求されたリソースにアクセスすることを許可されているものとする。
【0081】
この代表的な例は、ユーザが、ウェブブラウズ要求のコンテンツ内に表示されたウェブページ中のハイパーリンクを選択することで開始される安全な要求に関する。選択されたハイパーリンクを、
https://secure.danastreet.com/quote/msft:danainfo:host=www.xyz.com
と仮定する。ここで、「https」は、セキュア・ソケット・レイヤ(SSL)を使用するプロトコルであり、「secure.danastreet.com」は、「danastreet.com」をドメインとし、「secure」をサブドメインとするホスト名であり、「/quote/msft」は、前記ハイパーリンクの選択により要求される特定のリソースへのパスであり、「danainfo」はキーワードであり、「www.xyz.com」は、要求されたリソースが存在するホストある。従って、ホスト名前「secure.danastreet.com」のドメインネームの検索は、この例に関する仲介サーバ1004であるdanastreet.comのIPアドレスによりなされる。そして、その要求はクライアント1002から仲介サーバ1004へ送信される。その要求は、例えば、以下のようなものである:
GET:/quote/msft:danainfo:host=www.xyz.com HTTP/1.0
Host:secure.danastreet.com
Cookie:DSID=123xyzzbc
追加のクッキー、暗号化の容認等、他の情報も、要求内に含まれていてもよい。クッキーは、この例では、セッションクッキー(セッションID)であり、クライアント1002に、仲介サーバ1004を用いた使用が許可されているかどうかを判断する際に使用される。
【0082】
安全な要求の場合には、要求内のホスト名は、要求が最終的に送信されるリモートサーバ1008を直接識別することはできない。しかしながら、リモートサーバ1008に関するホスト名は、要求と共に提供される情報から得られる。より詳しくは、情報(つまり、ホスト変数)は、要求と共にサフィックスとして提供される。この例において、サフィックスは、リモートサーバ1008のホスト名が、「www.xyz.com」であるという情報を含む。適切なホスト名が得られると、ホスト名(「www.xyz.com」)に関するドメインネーム検索が行われる。次に、仲介サーバ1004およびリモートサーバ1008からの接続が行われ(あるいは、既に接続されていた場合は、維持され)、安全なハンドシェークがオプションとして行われる。その後、ホスト名およびリクエスタに関連したデータストア1006内のあらゆるクッキーを得ることができる。次に、仲介サーバ1004による要求は、リモートサーバ1008に送信される。その要求は、例えば、
GET:/quote/msft HTTP/1.0
Host:www.xyz.com
Cookie:xyzUserID=sam
である。他の情報も前記要求に含まれていてもよい。オリジナルの要求と共に提供されるクッキーは、仲介サーバ1004に関したものであり、よって、リモートサーバ1008へ要求と共に転送されることはないという点に注意されたい。
【0083】
リモートサーバ1008は、要求を受け取り、レスポンスヘッダーおよび要求されたリソースのコンテンツの一部または全てを送り返す。典型的なレスポンスは、以下のフォーマットを有していてもよい:
HTTP/1.0 200 OK
Set−cookie:xyzuserID=Samual,expires=01−Jul−2002
Content−type:text/html
Content−length:2000
Location:https://www.xyz.com/quote/msft<HTML>
**
</HTML>
レスポンスが、設定すべき「クッキー」を含んでいたため、クッキー設定コマンドは、レスポンスから取り除かれた後、データストア1006に保存される。次に、ヘッダー内のURLは、存在する範囲内で、仲介サーバ1004に向けられるように修正される。この例において、位置ヘッダはフルパス(ホスト名を含む)を含む、すなわちhttps://www.xyz.com/quote/msftを含み、よって、これは、https://secure.danastreet.com/quote/msft:danainfo:host=www.xyz.com,SSLに修正される。この例においては、ホスト名が修正されただけでなく、URLの終わり(つまり、サフィックス)に変数も付加されている。付加された変数情報は、要求されたリソースを持つホストサーバのインジケータおよびSSLインジケータである。この例では、関連URLの終わりに変数情報(「danainfo:host=www.xyz.com」)を含むように、関連URLを修正する必要がある。関連URLのホスト名は、現在のホスト名(「secure.danastreet.com」)をそのようなパスに使用させるクライアント1002上で作動するブラウザアプリケーションにより適切に提供される。もし必要であれば、仲介サーバ1004にサポートされたオペレーションまたはファンクションを容易にするために、ツールバーをHTMLデータに挿入することができる。更に、得られたHTMLの一定のタグ内のURL、または言語をスクリプトすることにより作成されたものは、仲介サーバ1004に向けられるように修正される。
【0084】
例えば、HTMLデータが、
<a ref=https://www.xyz.com/quote/msft>
といったハイパーリンクを含んでいた場合、ハイパーリンクは、
<a ref=https:Hsecure.danastreet.com
/quote/msft:danainfo:host=www.xyz.com,
SSL>
に修正されるであろう。
また、HTMLデータが
<a ref=a.html>
という関連したハイパーリンクを含んでいた場合、このハイパーリンクは、
<a ref=a.html:danainfo:host=www.xyz.com,
SSL>
に修正されるであろう。
URLの終わり(すなわち、サフィックス)に提供される変数情報は、実際に末尾にある必要はない点に注意されたい。この場合、サフィックスは、一般にドメインネームの右側に示すのに使用される。事実、変数情報は、URL中の様々な異なった位置に(ドメインネームの左側にさえ)配置することができる。例えば、オリジナルのハイパーリンク自体が、記号「?」または「#」に続くような変数を有する場合、一実施例において、変数情報(「danainfo:host=www.xyz.com」)は、オリジナルの変数を示す記号「?」または「#」の前に配置できる。例えば、HTMLデータが、ハイパーリンク:
<a ref=https://www.xyz.com/quote/msft?color=red>
を含んでいた場合、このハイパーリンクは、
<a ref=https:Hsecure.danastreet.com
/quote/msft:d an ainfo:host=www.xyz.com?
color=red>
に修正されるであろう。
また、HTMLデータが、関連したハイパーリンク:
<a ref=a.html?x=1234>
を含んでいた場合、このハイパーリンクは、
<a ref=a.html:danainfo:host=www.xyz.com?
x=1234>
に修正されるであろう。
また別の例として、HTMLデータが、関連したハイパーリンク:
<a ref=a.html,port=1234>
を含んでいた場合、このハイパーリンクは、
<a ref=a.html:danainfo:host=www.xyz.
com,port=1234>
に修正されるであろう。
【0085】
図11は、本発明の一実施形態に係るURL修正処理1100を示すフローチャートである。URL修正処理1100は、例えば、図9Cのオペレーション936によって行われる処理である。URL修正処理1100は、例えば、図2Aに示したコンテンツトランスフォーマ216または図2Bに示したコンテンツトランスフォーマ278により行うことができる。
【0086】
URL修正処理1100は、レスポンスのHTML部分内のターゲットURL(例えば、ウェブページ)を選択1102することにより開始される。一般に、一つ以上のターゲットURLが、前もってHTMLデータのスキャンにより識別される。その後、決定1104で、ターゲットURLが関連URLかどうか判断される。関連URLは、そのソースURLの特性を継承する。ソースURLは、ターゲットURLを含むウェブページ(得られたHTMLを含む)に関連したURLである。決定1104で、ターゲットURLが関連URLであると判断された場合、ソースURLからのホスト名および/またはポートサフィックスが、ターゲットURLに付加される1106。
【0087】
また、決定1104で、ターゲットURLが関連URLではないと判断された場合、決定1108で、ターゲットURLが安全な要求(例えば、HTTPS)に関連しているかどうか判断される。決定1108で、ターゲットURLに対する要求が、安全な要求であると判断された場合、安全標識(例えば、HTTPS)がターゲットURLに付加される1110。一方、決定1108で、ターゲットURLが安全な要求に関連したものではないと判断された場合、オペレーション1110はバイパスされる。
【0088】
オペレーション1110に引き続き、また、ターゲットURLが安全な要求に関連していない場合は決定1108の直後に、ターゲットURLと共に提供されたホスト名は、ターゲットURLのどこか他の位置に追加される1112。例えば、ターゲットURLと共に提供されたホスト名は、ターゲットURLにアペンドすることができる。そして、ターゲットURLと共に提供されたオリジナルのホスト名は、所定のホスト名に置き換えられる1114。言い換えれば、ターゲットURLに元々提供されていたホスト名は、オリジナルのホスト名が所定のホスト名に置き換えられるように効果的に書き換えられるが、オリジナルのホスト名は、ターゲットURLの一部として残る。例えば、所定のホスト名は、適切な仲介サーバのホスト名である。
【0089】
次に、決定1116で、ポート番号がターゲットURLの中で指定されているかどうか判断される。決定1116で、ポート番号がターゲットURLの中で指定されていると判断された場合、ポート番号サフィックスが、ターゲットURLに付加される1118。ホスト名に続くターゲットURLの中で本来指定されていたポート番号は、削除される1120。
【0090】
オペレーション1120に引き続き、URL修正処理1100は決定1122を行う。さらに、決定1116で、ポート番号がターゲットURL内で指定されていないと判断された場合、ポート番号処理は必要なく、決定1122が行われる。決定1122で、更にターゲットURLが処理されることになっているかどうか判断される。先に述べたように、これらのターゲットURLは、得られたHTMLデータのスキャンにより前もって識別されている。決定1122で、処理すべきターゲットURLがまだあると判断された場合、URL修正処理1100は、更なるターゲットURLを処理できるように、オペレーション1102に戻り、それ以降のオペレーションを繰り返す。また、決定1122で、それ以上ターゲットURLはないと判断された場合、URL修正処理1100は完了し、終了となる。
【0091】
図12は、本発明の一実施形態に係るスクリプト修正処理1200を示すフローチャートである。スクリプト修正処理1200は、例えば、図9Cに示したオペレーション938によって行われる。一般に、スクリプト修正処理1200は、得られたHTML内のスクリプト部分を修正する働きをする。
【0092】
スクリプト修正処理1200は、まず、<script>タグに関するHTMLデータ(例えば、得られたHTMLのデータ)をスキャンする1202。その後、決定1204で、スクリプトが見つかったかどうか判断される。決定1204で、スクリプトが見つからなかったと判断された場合、決定1206で、スキャンすべき更なるHTMLデータがあるかどうか判断される。決定1206で、更にスキャンすべきHTMLデータがあると判断された場合、スクリプト修正処理1200は、オペレーション1202に戻り、それ以降のオペレーションを繰り返す。また、決定1206で、スキャンすべきHTMLデータはこれ以上ないと判断された場合、スクリプト修正処理1200は完了し、終了となる。
【0093】
一方、決定1204で、スクリプトが発見されたと判断された場合、ホスト名が後に続くテキストストリング「http://」または「https://」を配置するためスクリプトを検索する1208。そして、決定1210で、スクリプトの検索1208によりURLホスト名が発見されたかどうか判断される。決定1210で、URLホスト名が発見されなかったと判断された場合、決定1212で、スクリプトの最後に達したかどうか判断される。決定1212で、まだスクリプトの最後に達していないと判断された場合、スクリプト修正処理1200はオペレーション1208に戻り、それ以降のオペレーションを繰り返す。また、決定1212で、スクリプトの最後に達したと判断された場合、スクリプト修正処理1200は、更なるスクリプトを発見し処理することができるように、オペレーション1202に戻り、それ以降のオペレーションを繰り返す。
【0094】
一方、決定1210で、URLホスト名が発見されたと判断された場合、書き換えられたホスト名が作成される1214。スクリプトに設けられたホスト名は、その書き換えられたホスト名で置き換えられる1216。オペレーション1216に引き続き、スクリプト内の更なるホスト名を同様に処理できるように、スクリプト修正処理1200は、オペレーション1208に戻り、それ以降のオペレーションを繰り返す。
【0095】
図13Aおよび図13Bは、本発明の別の実施形態に係るスクリプト修正処理1300を示すフローチャートである。スクリプト修正処理1300は、例えば、図9Cに示したオペレーション938によって行われる。一般に、スクリプト修正処理1300は、得られたHTMLのスクリプト部分を修正する働きをする。
【0096】
スクリプト修正処理1300は、最初に、<スクリプト>タグに関するHTMLデータ(例えば、得られたHTMLのデータ)をスキャンする1301。その後、決定1302で、スクリプトが発見されたかどうか判断される。決定1302で、スクリプトが発見されたと判断された場合、スクリプトは解析され1304、スクリプトに関連した所定のプロパティおよび関数を判断または検出する。その後、決定1306で、スクリプト内に少なくとも一つのプロパティまたは関数が発見されたかどうか判断される。決定1306で、少なくとも一つのプロパティまたは関数が発見されたと判断された場合、スクリプト修正処理1300は、仲介サーバがクライアントデバイスとリモートサーバの間に配置されている場合でも、スクリプトが意図通り働くように、スクリプト内で発見されたプロパティまたは関数に関してスクリプトが修正されるように継続される。
【0097】
とりわけ、スクリプト内で発見された各プロパティまたは関数に関しては、処理は以下のように行われる。決定1308で、スクリプト内で発見された、選択されたプロパティまたは関数が、クッキープロパティの読み取りに関するものかどうか判断される。決定1308で、識別されたプロパティまたは関数がクッキープロパティの読み取りに関するものであると判断された場合、クッキープロパティの読み取りは、getCookies関数呼び出しに置き換えられる1310。また、決定1308で、識別されたプロパティまたは関数がクッキープロパティの読み取りではないと判断された場合、および、オペレーション1310の後、決定1312で、識別されたプロパティまたは関数がクッキープロパティへの書き込みに関するかものであるかどうか判断される。決定1312で、識別されたプロパティまたは関数がクッキープロパティへの書き込みに関するものであると判断された場合、クッキープロパティへの書き込みは、set_Cookies関数呼び出しに置き換えられる1314。
【0098】
一方、決定1312で、識別されたプロパティまたは関数がクッキープロパティへの書き込みに関連のないものであると判断された場合、およびオペレーション1314の後、決定1316で、識別されたプロパティまたは関数が、要求を開始するプロパティへの書き込みに関するものかどうか判断される。決定1316で、識別されたプロパティまたは関数が、要求を開始するプロパティへの書き込みに関するものであると判断された場合、要求を開始する(引き起こす)プロパティへの書き込みが、setURL関数呼び出しに置き換えられる1318。また、決定1316で、識別されたプロパティまたは関数が要求を開始するプロパティへの書き込みに関するものではないと判断された場合、およびオペレーション1318の後、決定1320で、識別されたプロパティまたは関数が、URLを返すプロパティからの読み出しに関するものかどうか判断される。決定1320で、識別されたプロパティまたは関数が、URLを返すプロパティからの読み出しに関するものであると判断された場合、URLを返すプロパティからの読み出しは、適切なストリングに置き換えられる1322。
【0099】
また、識別されたプロパティまたは関数が、URLを返すプロパティからの読み出しに関するものではない場合は決定1320の後、および、オペレーション1322の後、決定1324で、スクリプト内に、更に処理を必要とするプロパティまたは関数が発見されたかどうか判断される。更なるプロパティまたは関数が発見され、処理を必要とする場合、スクリプト修正処理1300は、更なるプロパティまたは関数を同様に処理できるように、決定1308に戻り、それ以降のオペレーションを繰り返す。一方、決定1324で、スクリプト内で発見されたプロパティまたは関数が全て処理されていると判断された場合、スクリプト修正処理1300は、決定1326を行う。決定1326はまた、決定1302で、スクリプトは発見されなかったと判断された場合にも行われる。決定1326で、スキャンすべき更なるHTMLデータがあるかどうか判断される。決定1326で、スキャンすべき更なるHTMLデータがあると判断された場合、スクリプト修正処理1300は、オペレーション1301に戻り、それ以降のオペレーションを繰り返す。また、決定1326で、スキャンすべきHTMLデータはこれ以上ないと判断された場合、スクリプト修正処理1300は完了し、終了となる。
【0100】
以下、get cookies関数、set_cookies関数、setURL関数、およびストリング置換の代表的な例を記載する。これらの例は、理解を助けるために挙げられているものであり、よって、本発明のいずれかの態様に関する限定とみなされるべきではない。以下の例では、スクリプト言語としてJava(登録商標)Scriptを使用する。
【0101】
get cookies関数およびオペレーション1310に関する第一の例を以下説明する。この例において、スクリプトは、スクリプト命令
var c=document.cookie;
を含んでいる。これは、そのドキュメント(ページ)に関連したクッキーを変数cに割り当てるものである。このスクリプト命令は、
var c=get cookies (「othercookie=abc」);
と置き換えられるであろう。これは、そのドキュメント(ページ)の特定のドメインおよび特定のユーザ(例えば、「othercookie=abc」)の仲介サーバに存在するクッキーを割り当てるものである。更に、get cookies関数は、その引数として仲介サーバからクッキーを取り、それにスクリプトによって設定される他のクッキーを加える。
【0102】
set cookies関数およびオペレーション1314に関する第二の例を以下説明する。この例において、スクリプトはスクリプト命令
document.cookie="selection=ijk;expires=...":
を含む。これは、ドキュメント(ページ)に関連したクッキーをブラウザに格納する。このスクリプト命令(ステートメント)は
document. cookie = set_cookie("<domain>","selection=ijk;expires=...";);
と置き換えられる。これは、ドキュメント(ページ)に関連したクッキーをブラウザおよび仲介サーバにも格納する。set cookies関数は、2つの引数を含んでいる。第一の引数は、スクリプトを有するページのドメインを識別する。第2の引数は、元々ドキュメントクッキープロパティに割り当てられていた値である。set cookies関数は、これら2つの引数を組み合わせ、有効期限のないservercookieXと呼ばれるクッキーを設定する。但し、Xは、識別数値を表す。ブラウザにより、このクッキーは仲介サーバに送られるであろう。その後、仲介サーバはユーザ用のクッキーストレージにクッキーを組み入れることができる。クッキーはまた、ユーザ用のストレージ中の既存のクッキーを失効させるために使用することができる。一旦、クッキーが仲介サーバに格納されると、仲介サーバが返送する次のページでは、servercookieXはもはや必要とされないため、失効する。setcookies関数に対する呼び出しはまた、servercookieX内にあるいかなるクッキー価値をも付加するであろう。
【0103】
更なる説明を目的として、次の例について考えてみる。次の例では、www.xyz.comのページが、以下のスクリプトを有する:
document.cookie="a=b";
var x=document.cookie;.
また、www.xyz.comサーバは、値"sam"を持つ"id1"という名前を有する仲介サーバに前もってクッキーを返しているものとする。上記コードは、
document.cookie=set cookie("www.xyz.com","a=b");
var x=get cookie("id 1=sam");
に変換されるであろう。
一行目により、「a=b−domain=www.xyz.com」といった値を有するクッキー「servercookie()」が設定される。従って、クッキー全体は以下のようになる:
servercookie()=a=b−domain=www.xyz.com。
servercookie()のドメイン部分は、どのドメインがクッキーを設定しているかが分かるように、仲介サーバによってのみ使用されることに注意されたい。二行目は、その最初の引数(スクリプトが書き換えられると同時に、仲介サーバによって書き込まれた)をとり、ブラウザで全てのservercookie()のクッキーを検査するgetcookies関数を呼び出す。それは、あらゆるservercookieXクッキーと共に最初の引数を連結し、その結果:
id 1=sam;a=b
を返す。これは、たとえ書き換えられていなかったとしても、オリジナルのページから返されるのと同様の結果であることに注意されたい。
【0104】
setURL関数およびオペレーション1318に関する第三の例を以下説明する。そのsetURL関数は、要求をさせるプロパティを修正する働きをする。この例において、スクリプトはスクリプト命令
document.location="http://www.xyz.com/foo.htmi";
を含む。これは、ブラウザを新しいページに導く。このようなスクリプト命令は、
document.location=set URL
" " ,"http://www.xyz.com/foo.html");
と置き換えられる。
setURL関数呼び出しは、2つの引数をとる。第一の引数は仲介サーバによって書き込まれる一方で、スクリプトは書き換えられ、URLに従うためにサフィックス(例えば、「danainfo:」)に通常設けられているあらゆるパラメーターを含んでいる。後で説明するように、これは必ずしも必要とは限らない。第二の引数は、URLであるが、実際には、URLを組み立てるか返信するスクリプト表現(例えば、関数呼び出し)であり得る。
【0105】
setURL関数は、設定されているURLを検査し、ブラウザを仲介サーバに導く形式になるようにそれを書き換える。上述のように、URLは様々な手法で修正することができる。
【0106】
そのページが、ホスト名修正手法を用いている場合、ホスト名が必要な情報をエンコードするため、関連URLを修正する必要はない。前記URLが、全URLである場合、setURL関数は、URLを変換するために必要とする全ての情報を有する。例えば、サフィックス(例えば、「:danalnfo:host=xxx」)をURLにアペンドすることができる。従って、スクリプトが現われるページが、ホスト名修正手法を用いている場合、setURL関数は、第一の引数を必要としない。
【0107】
また、スクリプトの存在するページが、URLサフィックス手法を用いている場合、setURL関数に渡される関連URLは、それに適用されているのと同様のサフィックスを有していなければならない。この場合、仲介サーバは、setURL関数に対する第一の引数として、サフィックスにおいて渡される必要のあるあらゆる引数を挿入するであろう。例えば、そのページのURLが、
https://secure.danastreet.com/quote/msft:danalnfo:host=www.xyz.com
であり、そのページのスクリプト命令が、
document.location="/uqote/ibm";
を含む場合、書き換えられたスクリプト命令は、
document.location=set URL("Host=www.xyz.com","/quote/ibm");
といったものになるであろう。そして、setURL関数から返された結果は、
/quote/ibm:danalnfo:host=www.xyz.com
となるであろう。これは、
https://secure.danastreet.com/quote/ibm:danalnfo:host=www.xyz.com
に対するブラウザからの要求となるであろう。
また、スクリプト命令が上記の代わりに
document.location="https://www.abc.com/info/msft";
であった場合、書き換えられたスクリプト命令は、
document.location=set URL("Host=www.xyz.com","https://www.abc.com/info/msft");
といったものになるであろう。そして、setURL関数から返された結果は、
https://secure.danastreet.com/info/msft:danalnfo:host=www.abc.com
となるであろう。
この場合、第二の引数が完全URLであり、最終URLを構築するのに必要な情報を全て含んでいるため、setURL関数に対する第一の引数は必要とされないことに注意されたい。
【0108】
書かれた時、ブラウザにURLをフェッチさせることのできる多くの関数またはプロパティがあることに注意すべきである。例としては、
window.open('url',...)
form.action='url';
document.location='url';
document.location.replace('url');
image.src='url';
などが挙げられる。
【0109】
ストリング置換およびオペレーション1322に関する第四の実施例を、以下説明する。ストリング置換は、URLを返すプロパティを修正する働きをする。ここで、URLを返すプロパティから読み取るスクリプト命令は、定数ストリングと置き換えられる。この例において、スクリプトが、
var url=document.location;
を含んでいる場合、そのようなものは、
var url="http://www.yahoo.com/foo.htmi";
によって置き換えられるであろう。
このオペレーションは、その環境を検査するいかなるスクリプトも、そのページの実際のURLが、予期するものとは異なることにより混乱することがないよう徹底する役目を果たす。修正を必要とするかもしれない二つ以上のプロパティがあることに注意されたい。そのような修正をすることのできるプロパティのいくつかの例としては、
document.location (全URLを返す)
document.domain (URLのホスト名部分のみを返す)
が挙げられる。
【0110】
図14は、本発明の一実施形態に係る、Eメール要求処理1400を示すフローチャートである。Eメール要求処理1400は、例えば、図6のブロック628で行われたEメール要求処理としての使用に適している。
【0111】
Eメール要求処理1400は、まず、メールクライアントとのセキュア接続を受け入れる1402。ここで、メールクライアントと、受け入れられている1402仲介サーバとの間のセキュア接続は、例えば、セキュア・ソケット・レイヤ(SSL)を使用することにより安全なものとすることができる。次に、リクエスタは、認証のため入力を促される1404。一般に、リクエスタは、リクエスタを認証するために使用できる少なくとも一つのパスワードを入力するように促される1404。そして、決定1406で、パスワードが受け取られたかどうか判断される。一般に、受け取られたパスワードは、なんらかの方法でエンコードされるが、必ずしもエンコードされるとは限らない。例えば、Base64エンコードがよく利用される。決定1406で、パスワードが受け取られたと判断された場合、そのパスワードは、メールサーバパスワードと認証サーバパスワードとに分けられる1408。一例として、受け取られたパスワードは、パスワードセパレータによって分離されたメールサーバパスワードおよび認証サーバパスワードの両方を含んでいてもよい。
【0112】
次に、Eメールサーバは、メールサーバパスワードの確認1410を試みる。ほぼ同時に、認証サーバパスワードは、認証サーバにより確認1412が試みられる。次に、決定1414で、ブロック1410および1412の両方の確認ができたかどうか判断される。決定1414で、両方の確認ができたと判断された場合、パスワードのハッシュされたバージョンが格納される1416。そして、Eメール要求に関連したメールオペレーション処理1418が行われる。一方、決定1414で、ブロック1410および1412の両方の確認ができないと判断された場合、Eメール要求は拒否される1420。オペレーション1418および1420をもって、Eメール要求処理1400は完了し、終了となる。
【0113】
図15は、本発明の一実施形態に係るメールオペレーション処理1500を示すフローチャートである。メールオペレーション処理1500は、例えば、図14に示したブロック1418によって行われる処理の一例である。
【0114】
メールオペレーション処理1500は、接続が時間切れあるいはクローズしたかどうかを判断する決定1502で始まる。この場合、接続とは、メールクライアントと仲介サーバとの間のセキュア接続のことを言う。決定1502で、セキュア接続が時間切れあるいはクローズしたと判断された場合、メールサーバへのEメールアクセスは拒否される1504。従って、セキュア接続が時間切れあるいはクローズした場合、ブロック1504をもって、メールオペレーション処理は完了し終了となる。しかしながら、前記処理を続け、メールサーバにアクセスするために、リクエスタがログインし認証されるようにするため、ログインページをリクエスタに返すこともできる。
【0115】
その一方で、決定1502で、既存の接続が時間切れあるいはクローズしていないと判断された場合、決定1506で、メールクライアントからのコマンドを受け取ったかどうか判断される。決定1506で、メールクライアントからのコマンドを受け取っていないと判断された場合、メールオペレーション処理1500は、決定1502に戻り、メールクライアントからのコマンドを受け取るか、接続が時間切れあるいはクローズするまで、それ以降のオペレーションを繰り返す。
【0116】
決定1506で、メールクライアントからのコマンドを受け取ったと判断されると、コマンドはメールサーバに送られる1508。次に、決定1510で、メールサーバからレスポンを受け取ったかどうか判断される。決定1510で、メールサーバからレスポンスをまだ受け取っていないと判断された場合、メールオペレーション処理1500は、そのようなレスポンスを待つ。決定1510で、レスポンスを受け取ったと判断されると、レスポンス内の一定のユニバーサル・リソース・ロケーター(URL)を修正する1512。例えば、コンテンツトランスフォーマの一部として、リンクまたはURLは、仲介サーバを介してリンクを転送するように修正することができる。次に、レスポンスは、メールクライアントに送られる1514。ここで、レスポンスは、メールクライアントと仲介サーバとの間に存在する接続を用いて、メールクライアントに送られる。ブロック1514に引き続き、メールオペレーション処理1500は、メールサーバに関して更なるコマンドを処理することができるように決定1502に戻り、それ以降のオペレーションを繰り返す。
【0117】
図16は、本発明の一実施形態に係る認証処理1600を示すフローチャートである。認証処理1600は、図14に示したブロック1412の一実施形態を表す。この実施形態では、ある条件が満たされた場合、仲介サーバは、認証サーバによるパスワードの実際の確認をバイパスまたは回避することができる。そうすることにより、認証は、多くの場合、非常に迅速、且つ、リクエスタに負担をかけたり、いらだたせたりすることなく行なうことができる。
【0118】
認証処理1600は、格納されているハッシュされたパスワードが利用可能かどうか判断する決定1602で始まる。ハッシュされたパスワードが前もって格納されている(図14のオペレーション1416)場合、そのハッシュされたパスワードは、この事項に関して後に検索され使用される。従って、決定1602で、格納されているハッシュされたパスワードが利用可能であると判断された場合、その格納されているハッシュされたパスワード、最後に許可された時間、および最後にパスワードが使用された時間が検索される1604。一般に、これらの値は、仲介サーバに関連したデータストアに格納されており、そのリクエスタに特有の保管値である。
【0119】
次に、決定1606で、受け取ったパスワードのハッシュが格納されているハッシュされたパスワードと等しいかどうか判断される。決定1606で、受け取ったパスワードのハッシュが、格納されているハッシュされたパスワードと等しいと判断された場合、リクエスタは事実上認証される。これは、セッションの初めに、適切なパスワードを入力し、そして認証されたためである。さらに、決定1610で、最後に許可されてからの時間が、セッション継続時間の上限より長いかどうか判断される。ここで、最後に許可されてから有効期限が切れていた時間の長さを示す変数を、セッション継続時間の上限と比較する。一般に、セッション継続時間の上限は、リクエスタ、あるいは仲介サーバのシステム管理者によって設定される。
【0120】
いかなる場合も、決定1610で、最後に許可されてからの時間がセッション継続時間の上限を超過していないと判断された場合、決定1612で、最後にパスワードが使用されてからの時間が、アイドルタイムの上限を超過しているかどうか判断される。ここで、最後にパスワードが使用されてから有効期限が切れていた時間の長さを示す変数を、アイドルタイムの上限と比較する。決定1612で、最後にパスワードが使用されてからの時間が、アイドルタイムの上限を超過していないと判断された場合、認証サーバと対話する必要なく、認証サーバによる認証1614が正常に得られたものとされる。従って、最後に許可されてからの時間がセッション継続時間の上限を超過しておらず、更に、最後にパスワードが使用されてからの時間がアイドルタイムの上限を超過していなければ、受け取ったパスワードのハッシュが、格納されているハッシュパスワードと等しい場合、許可サーバに関する認証はバイパスすることができる。
【0121】
一方、特別な条件が存在しない場合、パスワードは認証サーバにより確認される1608。例えば、決定1602で、格納されているハッシュパスワードが利用不可能であると判断された場合、認証サーバによる確認1608が行われる。同様に、決定1606で、受け取ったパスワードのハッシュが格納されているハッシュパスワードと等しくないと判断された場合も、認証サーバによるパスワードの確認1608が必要となる。さらにまた、決定1610で、最後に許可されてからの時間が、セッション継続時間の上限を超過していると判断された場合、または、決定1612で、最後にパスワードが使用されてからの時間がアイドルタイムの上限を超過していると判断された場合、パスワードは、認証サーバにより確認1608される必要がある。
【0122】
オペレーション1608および1614に引き続き、認証処理1600は、他の処理を行うため前のオペレーション、すなわち図14に示したオペレーション1414に戻る。従って、上記の特別な条件が存在するため確認1608がバイパスされる場合、認証処理は非常に簡素化され、多くの場合、認証サーバに関する複雑な認証処理を行なったり、リクエスタに認証情報の入力を促したりする必要がなくなる。
【0123】
図17Aと1713は、本発明のいくつかの実施形態により使用できるコンピュータシステムの一例を示す。このコンピュータシステムは、例えば、クライアントマシン、仲介サーバ、あるいはリモートまたはプライベートサーバのうちのいずれかに該当し得る。図17Aは、ディスプレイ1723、スクリーン1725、キャビネット1727、キーボード1729、およびマウス1731を備えたコンピュータシステム1721を示している。マウス1731は、グラフィカルユーザインターフェースとの対話のため一以上のボタンを備えていてもよい。キャビネット1727は、本発明のいくつかの実施形態をインプリメントするコンピュータコードを組み込むソフトウェアプログラムや、本発明のいくつかの実施形態で使用するデータ等を格納したり検索したりするのに利用できる取出し可能なメディア(例えば、CD−ROM)ドライブ1733、システムメモリ、およびハードドライブ(図1713参照)を収容している。CD−ROM1735は、典型的なコンピュータ読み取り可能記憶媒体として示しているが、フロッピー(登録商標)ディスク、テープ、DVD、フラッシュメモリ、システムメモリ、およびハードドライブを含む他のコンピュータ読み取り可能記憶媒体を利用してもよい。さらに、搬送波(例えば、インターネットを含むネットワーク)に組み込まれたデータ信号が、コンピュータ読み取り可能記憶媒体であってもよい。一インプリメンテーションにおいて、コンピュータシステム1721用のオペレーティングシステムは、システムメモリ、ハードドライブ、CD−ROM1735、または他のコンピュータ読み取り可能な記憶媒体に設けられ、本発明のいくつかの実施形態をインプリメントするコンピュータコードを組込む役目を果たす。
【0124】
図1713は、本発明の一実施形態に係る処理を行なうために使用されるコンピュータシステム1721のシステムブロック図を示す。図17Aに示すように、コンピュータシステム1721は、モニター1723、キーボード1729、およびマウス1731を備えている。コンピュータシステム1721は、更に、中央処理装置1751、システムメモリ1753、固定記憶装置1755(例えば、ハードドライブ)、取外し可能記憶装置1757(例えば、コンパクトディスク)、ディスプレイアダプタ1759、サウンドカード1761、スピーカー1763、およびネットワークインターフェイス1765等のサブシステムを備えている。中央処理装置1751は、例えば、コンピュータプログラムコード(例えば、オペレーティングシステム)を実行し、本発明のいくつかの実施形態をインプリメントすることができる。オペレーティングシステムは、通常、実行中はシステムメモリ1753内に存在するが、必ずしもそうでなくてもよい。本発明のいくつかの実施形態における使用に適した他のコンピュータシステムは、更なるサブシステムを備えていてもよいし、より少ない数のサブシステムを備えていてもよい。例えば、別のコンピュータシステムは、二以上のプロセッサ1751(すなわち、マルチプロセッサシステム)またはキャッシュメモリを備えていてもよい。
【0125】
コンピュータシステム1721のシステムバスアーキテクチャは、矢印1767で示されている。しかしながら、これらの矢印は、サブシステムをリンクする役目を果たす相互連結スキームを説明するものである。例えば、システムメモリやディスプレイアダプタに中央処理装置を接続するためにローカルバスを利用することができる。図17Aに示したコンピュータシステム1721は、単に、本発明のいくつかの実施形態での使用に適したコンピュータシステムの例に過ぎない。サブシステムの構成が異なるその他のコンピュータアーキテクチャも利用できる。
【0126】
上記実施形態では、情報検索システム内の単一仲介サーバの使用について説明したが、情報検索システムは複数の仲介サーバを備えていてもよいことに気付くべきである。様々な仲介サーバは、クライアントマシンから個々に要求を受け、適切なサーバに転送し、仲介サーバを介してクライアントマシンにレスポンスを返すことができる。複数のサーバを有することによって、更なる処理能力が得られるだけでなく、ロードバランシング、フォルトトレランス、およびローカライゼーション問題もさらに対処することができる。
【0127】
図18は、いくつかの実施形態を示すブロック図である。いくつかの実施形態は、少なくともクライアント側の部分を含み、いくつかの実施形態は、少なくともサーバ側の部分を含み、また、いくつかの実施形態は、少なくともそれぞれ一つづつを含む。図18は、この例ではクライアントマシンを含むクライアントネットワーク1810と、この例では、企業サーバを含むリモートネットワーク1840と、クライアントネットワーク1810とリモートネットワーク1840を接続するインターネット1890とを示している。クライアントマシン1810は、Win32アプリケーション等のクライアント/サーバプリケーションのクライアントアプリケーション1812と、レイヤドサービスプロバイダ(LSP)1814と、ネームスペースプロバイダ(NSP)1815と、セッションマネージャ1816と、Winsock API1818とを備えている。リモートネットワーク1840は、クライアント/サーバプリケーションのサーバプリケーション1842と、DNSサーバ1844と、中間サーバ1846とを備えている。中間サーバ1846は、デーモン1848を備えている。セッションマネージャ1816とデーモン1848は、(例えば、ポート443を介して)通信プロトコル1850によりインターネット1890上で通信する。セッションマネージャ1816は、通信プロトコルクライアントと呼ぶことができる。多くの実施形態では、中間サーバはリモートネットワークの一部と考えられる。
【0128】
いくつかの実施形態は、セキュアアプリケーションマネージャと呼ばれる。セキュアアプリケーションマネージャのいくつかの実施形態は、クライアントと企業リソース間のネットワークレベルで分離されており、したがって、より安全である。
【0129】
セキュアアプリケーションマネージャのいくつかの実施形態は、クライアントソフトウェア、例えば、Win32ベースのソフトウェアを備えており、これは、リモートアクセスセキュアネットワークコネクションを、アプリケーション毎および/またはホスト毎に、中間サーバを介して安全に、企業クライアント/サーバプリケーションリソースにトランスペアレントに転送できる。例えば、中間サーバの管理者は、特定のクライアントアプリケーションから、企業リソースへのアクセスの一部または全てを保護するよういくつかの実施形態を構成することができる。クライアント側アプリケーションのいくつかの例としては、Outlook等のEメールアプリケーション、連絡先管理アプリケーション、またはメモ帳アプリケーション;SAP R/3クライアント等のクライアント側エンタープライズリソースプランニングアプリケーション、Citrix ICA等のクライアント側アプリケーションサービスソフトウェア、インターネットエクスプローラ等のブラウザなどが挙げられる。
【0130】
いくつかの実施形態は、Windows(登録商標)(登録商標)ソケットレイヤの内でネットワーク接続要求を転送する。Windows(登録商標)(登録商標)ソケットレイヤは、Winsockダイナミックリンクライブラリ、Winsock2ダイナミックリンクライブラリ、アプリケーションプログラムインターフェイス、レイヤドサービスプロバイダ(LSP)、レイヤドサービスプロバイダのためのサービスプロバイダインターフェース、ネームスペースプロバイダ(NSP)、ネームスペースプロバイダインターフェース、トランスポートサービスプロバイダインターフェース、およびトランスポートサービスプロバイダのうち少なくとも一つを含むことができる。
【0131】
図19は、WinsockアプリケーションおよびWindows(登録商標)(登録商標)ソケットレイヤを備えた実施形態を示す。図19は、Winsockアプリケーション1910、Winsock API1915、Winsock DLL1920、Winsockトランスポート SPIおよびネームスペースSPI1930、LSP SPI 1935、LSP 1936および1938、トランスポートサービスプロバイダ1945(図示されているTCP/IPトランスポートサービスプロバイダおよびIPX/SPXトランスポートサービスプロバイダ)、およびネームスペースプロバイダ1955(図示されているDNSネームスペースプロバイダおよびIPXネームスペースプロバイダ)を示している。
【0132】
図20は、WinsockアプリケーションとWindows(登録商標)(登録商標)ソケットレイヤを含む別の実施形態を示す。図20は、Winsock2アプリケーション2010、Winsock2 API2015、Winsock2 DLL2020、Winsock2トランスポートSPI2030、Winsock2ネームスペースSPI2040、トランスポートサービスプロバイダ2050、およびネームスペースプロバイダ2060を示している。
【0133】
クライアントソフトウェアは、(例えば、中間サーバ上にあるActiveXコントロールから)ダウンロードし、起動することができる。LSPとNSPは、システムにインストールすることができる。セキュアアプリケーションマネージャプロキシは、(例えば、ActiveXコントロールにより)ダウンロードし、起動することができる。
【0134】
1990年代の初めに、いくつかのソフトウエアベンダーが協力し、Windows(登録商標)(登録商標)に初めて標準化されたTCP/IP接続が導入され、これはWinsockとしてよく知られている。この成功に伴い、ソフトウエアベンダーは、ネットワークトラフィックストリームに接続するための多くのアプリケーションを見つけ出し、WinsockDLLの接続、チェーニング、および置き換えを開始した。これにより、ネットワークトラフィックをモニター、修正、または転送するためのソリューションを提供した。しかしながら、それらを提供する上で基準となる方法がなかったため、Windows(登録商標)(登録商標)プラットフォームに多くのコンパティビリティ問題が生じた。
【0135】
1990年代中頃に、Winsockフォーラムが、Winsock2のスペックを作成した。この新しいAPIの目的の例としては、オーバーラップした、イベントベースの入出力等、より多くのWin32入出力機構のサポート、複数のベンダーが、Winsock APIにあらゆるタイプのネットワークプロトコルを接続することができるようプロトコルの独立性の確立、そして、Winsock呼び出しを接続するためのメカニズム(LSP)を標準化することが挙げられる。
【0136】
マイクロソフトは、Windows(登録商標)(登録商標)NT4.0と共に1996年に最初のWinsock2の使用を可能にしたOSの販売を開始し、後にWindows(登録商標)(登録商標)98のリリースと共に、古いシステムをWinsock2にアップグレードするためにWindows(登録商標)(登録商標)95最新版をリリースした。
【0137】
最初のWinsock2およびベンダーLSPインプリメンテーションはバグが多く、これらをベースとした製品は、限定された範囲での成功に終わった。2003年の今日、Winsock2フレームワークは安定し、LSPをベースにしたいくつかの製品により、その技術は証明されている。
【0138】
Winsock2は、アプリケーションプログラムインターフェイス(API)だけでなく、トランスポートおよびネームスペースプロバイダ双方のためのサービスプロバイダーインターフェース(SPI)も標準化している。さらに、そのフレームワークは、トランスポートプロバイダ、別名、LSPの階層化をサポートする。実際のWinsock DLLは、マイクロソフトによりインプリメントされ、あらゆるベンダーが自由にトランスポートおよびネームスペースプロバイダをインプリメントし、それらをシステムにインストールすることができる。レガシーWinsock1 API(例えば、winsock.dll、wsock32.dII; いずれもWinsockダイナミックリンクライブラリとして知られている)に書き込まれたアプリケーションは、新しいWinsock2 API(ws2 32.dII、さらに、Winsockダイナミックリンクライブラリとも呼ばれる)にサンクされている。
【0139】
レイヤドサービスプロバイダー(LSP)は、Windows(登録商標)(登録商標)で使用することができ、アプリケーションがTCP/IPスタック上でカスタムトランスポートサービスを行うことを可能にするLSPアーキテクチャを提供する。クライアントマシンにLSPサービスがインストールさている場合、クライアントマシン上で作動するWin32アプリケーションは自動的にLSPサービスを読み込むことができる。そして、LSPサービスは、Winsock呼び出しに対する呼び出しの一部または全てをインターセプトすることができ、更なるカスタムトランスポートメカニズムを付加することができる。また、ネットワークデータおよび/またはWinsock APIからのイベントを検査、修正、および/または転送することができる。このレベルでネットワークトラフィックをキャプチャすることにより、LSPは、呼び出しアプリケーションのコンテキストにおいて実行することができ、そのプロセス情報にフルにアクセスできる。アプリケーションレベルデータへのアクセスは可能であるが、TCPおよび/またはIPレベルヘッダー情報へのアクセスはできない場合もある。
【0140】
LSPサービスは、(例えば、中間サーバにおいて)アプリケーションの設定リストから送られてくるソケット接続呼び出しの一部または全てといったトラフィックをインターセプトすることができ、セッションマネージャを介して、通信プロトコル、例えば、カスタムまたは標準プロトコルを使用するHTTPSによる場合のように安全に送信できる。同様に、NSPは、(例えば、中間サーバにおいて)アプリケーションの設定リストから送られてくる宛先ホスト名に関するDNS照会を処理し、セッションマネージャを介して、通信プロトコル、例えば、カスタムまたは標準プロトコルを使用するHTTPSによる場合のように安全に送信できる。
【0141】
セッションタイムアウト処理および/または他のアクセス機構の同時処理のために、LSPサービスは、ホストを対象としたトラフィックを無視する(Winsock APIに直接渡す)ことを自動的に選択することができる。このトラフィックは、クライアント側部分がダウンロードされるホストのIPアドレスであってもよい。これは、たとえブラウザが、セキュアアプリケーションマネージャを介して保護されるアプリケーションとなるように構成されている場合でも可能である。
【0142】
いくつかの実施形態は、WSPStartup()関数をエクスポートすることができるWin32 DLLのようなダイナミックリンクライブラリを備えている。インストーラーは、他のLSP上にレイヤとなるプロトコルおよび他のLSPに関してのオーダーについて記述する一以上のプロトコルチェーンとLSPとを登録することができる。アプリケーションがWinsockライブラリーを読み込む場合、WinsockはLSPのWSPStartup()関数を呼び出すことができる。この時、LSPは、チェーン内で上に位置するLSPまたはWinsockカタログにそのSPIエントリーポイントを返すことができる。LSPは、チェーン内の次のプロバイダを読み込み、同様のエントリーポイント交換を行なうことができる。チェーンは、ベーストランスポートプロバイダと呼ばれるトランスポートサービスプロバイダで終わっていてもよい。この時点で、呼び出しは、カーネル内のTDIプロトコルドライバに、またはTDIプロトコルドライバからディスパッチすることができる。
【0143】
LSPは、マイクロソフトにより供給される参照インプリメンテーションをベースにすることができる。
【0144】
LSPプロトコルチェーンインストール/アンインストールコードは、インストーラーへの組み込みを容易にするため、自動登録機能、DIIRegisterServer()およびDIIUnregisterServer()を使用し、同じDLLにおいてインプリメントすることができる。他の実施形態は、複数のDLLにおいてインプリメントすることができる。
【0145】
ネームスペースプロバイダ(NSP)は、所定のネームスペースに対しネーム解決を行なうことができる。TCP/IPネームスペースに対して、マイクロソフト・インプリメンテーションは、DNSレゾリューションを行なうことができる。NSPは、NSPStartup()関数をエクスポートするWin32 DLLのようなダイナミックリンクライブラリを含むことができる。LSP同様、インストーラーはNSPを登録することができる。Winsockは、必要に応じてNSPを読み込んだり、エントリーポイントを交換したりすることができる。NSPが階層化されている場合、例えば、複数のNSPが同じネームスペースを共有して、インストールされている場合、その動作はWinsock2では不確定である。
【0146】
NSPは、安全なリモートネットワークにDNS要求を中継するためにDNS検索をインターセプトすることができる。LSPは、Winsock connect()呼び出しをインターセプトし、発信TCP接続の一部または全てを、セキュアアプリケーションマネージャプロキシに転送することができる。セキュアアプリケーションマネージャは、多数のオペレーションモードを有することができる。アプリケーションプロキシモードのような一モードにおいて、LSPは、管理者の選択したアプリケーションセットに読み込み、それらアプリケーション内の接続の一部または全てを中間サーバに転送する。宛先プロキシモードのような別のモードでは、LSPは、プロセスの一部または全てに読み込み、管理者の選択した宛先ホスト、アドレス、および/またはポートのリストに基づき転送する。
【0147】
NSPは、インストールすることができ、マイクロソフトDNSプロバイダと共存することができる。セキュアアプリケーションマネージャNSPは、DNS要求をリモートネットワークに安全に中継することができる。マイクロソフトWinsock2インプリメンテーションは、レジストリ内に列挙された順序で各プロバイダを呼び出す。照会において空でない結果を返す第一のプロバイダは、サイクルを終了し、それを有効なレスポンスであるとみなす。NSPは、Winsock2構成APIを用いて、指定された方法でインストールすることができ、レジストリ内に列挙されたキーの名前を交換することにより、レジストリ内で再配列することができる。
【0148】
マイクロソフトは、この動作の仕方を変更することができる。別の実施形態は、DNS要求を解析しスプーフする。しかしながら、LSPからの生のDNSトラフィックを解析しスプーフすることにより、どのアプリケーションがDNS要求を行なっているかのトラッキングが困難になり、アプリケーション単位でホスト名検索を行う性能が損なわれる。
【0149】
NSPエントリーポイントは、インストール済み環境をシンプルかつ軽量にしておくため、LSPと同じDLLにインプリメントすることができる。他の実施形態は、複数のDLLをインプリメントする。
【0150】
NSPインストール/アンインストールコードは、インストーラーへの組み込みを容易にするため、自動登録機能、DIIRegisterServer()およびDIIUnregisterServer()を使用し、同じDLLにインプリメントすることができる。他の実施形態は、複数のDLLをインプリメントする。
【0151】
セキュアアプリケーションマネージャプロキシは、下記のうち一つ以上のオペレーションを行なうことのできるウィンドウレスWin32アプリケーションであってもよい:中間サーバへの接続を管理する、NSPに対するDNS要求を行なう、LSPに関するポートマッピングを管理する、中間サーバからセキュアアプリケーションマネージャコンフィギュレーションデータを取り出す、転送テーブルを維持する。
【0152】
セッションマネージャ(通信プロトコルクライアント)は、例えば、LSPサービスからトラフィックの一部または全てを受け入れることができ、および/または通信プロトコルを用いて、トラフィックを中間サーバへ転送することができるWin32クライアント(場合によっては、ActiveXをベースとした)のようなクライアントであってもよい。セッションマネージャは、例えば、LSPサービスによって保護された一つ、一部、または全ての宛先ホストのループバックアドレス(127.0.0.1、127.0.0.2.など)をリスンする。
【0153】
セッションマネージャは、システムトレー内で実行することができ、クライアントアプリケーションに関して保護されたアプリケーションのリストを表示することができる。個々のアクティブアプリケーションに関して、このセッションマネージャは、既存のセッションマネージャと同様に、送信/受信バイト数といった、セッションのステータスを表示することもできる。
【0154】
通信プロトコルは、HTTPSセッションを用いて、TCPソケット接続をシミュレートすることができる。ソケット接続はそれぞれ、二つの半二重HTTPSセッション(上流および下流)を用いてシミュレートすることができる。通信プロトコルは、セッションマネージャが、SSLによりクライアント/サーバプリケーションから発信されるトラフィックの一部または全てを保護することを可能にすることができる。HTTPSにより送信することで、通信プロトコルは、プロキシやファイアウォールを介して作用することができる。
【0155】
単一ワーカースレッド(他の実施形態においては、複数のスレッドあるいはプロセス)は、これらのタスクを処理することができる一方で、個別の要求スレッド(他の実施形態においては、同一スレッドあるいは異なるプロセス)は、LSPおよび/またはNSPから送られてくる要求を処理することができる。要求スレッドは、応答時間を最短化することができ、要求を行なったクライアントアプリケーションにおける不必要なブロッキングを回避することができる。ワーカースレッドにより行なわれるタスクの一部または全ては非同期であってもよく、全てのタスクを一スレッドで十分にすることができる。単一スレッドがそれらのタスクを処理することにより、パフォーマンスに何らかの問題が生じた場合、異なるワーカースレッドに関するような、いくつかのタスクを、オフロードすることができる。
【0156】
セキュアアプリケーションマネージャは、例えば、中間サーバ上のウェブページに組み込まれたActiveXコントロールから起動することができる。SSLセッション認証は、インターネットエクスプローラのようなブラウザによって処理される。セキュアアプリケーションマネージャプロキシは、起動されると、中間サーバへの接続を確立しようとすることができる。これは、現行のセッションクッキーおよび中間サーバホストの名前を用いて行なうことができる。ActiveXコントロールは、例えば、メモリおよびミューテックの以下の名前を持つメモリマップファイルを用いて共用メモリ領域にホストおよびクッキーを書き込むことができる。
【0157】
<name>:<communication protocol>:Pagelnformation:SharedMemory
【0158】
<name>:<communication protocol>:Pagelnformation:Mutex
【0159】
この共用メモリ領域が得られた場合、その場所に格納されたデータは、以下のようなフォーマットになっている。
【0160】
Data Format:<session cookie>+’ ¥(但し、原文は逆スラッシュ。以下同じ)0’+<ivehostname>+’ ¥0’
【0161】
データパラメーターは、通信プロトコルセッションを確立するために通信プロトコルAPIへ渡すことができる。セッションがタイムアウトした場合、通信プロトコルAPIは、セキュアアプリケーションマネージャプロキシに通知することができる。セキュアアプリケーションマネージャプロキシは、例えば、モーダルダイアログボックスのポップアップによって、ユーザに再接続することを望むか、あるいはセキュアアプリケーションマネージャを終了することを望むかをユーザに照会することができる。ユーザが、再接続することを選択した場合、セキュアアプリケーションマネージャプロキシは、セキュアアプリケーションマネージャページに、インターネットエクスプローラウィンドウのような新しいウィンドウを開くことができる。これにより、ログインを促し、セキュアアプリケーションマネージャプロキシの別のインスタンスの再起動を促すことができる。プロキシの新しいインスタンスは、前インスタンスを検知しシグナル通知し、中間サーバに再接続するために伝えることができる。新しいインスタンスは、前インスタンスをシグナル通知した後に終了することができる。
【0162】
中間サーバセッションが確立された状態で、セキュアアプリケーションマネージャプロキシは、新しい通信プロトコルコマンドでコンフィギュレーションデータをダウンロードすることができる。データは、「;」で分離された名前=値の複数対のような形式で、セキュアアプリケーションマネージャプロキシまで降りて来ることができる。例としての構成ストリングは、以下のようなものであってもよい。
【0163】
“opmode=0;exitmode=0;apps=outlook.exe|Microsoft Outlook|28cb48bd8f,telnet.exe,netscp*;dests=10.10.3.0/8”
【0164】
セキュアアプリケーションマネージャを宛先プロキシモードで実行するように構成することができる場合、IPアドレス/マスク/ポートの組み合わせは、静的転送用の転送テーブルに配置することができる。ホスト名は、別のリストに配置することができ、DNS検索結果は、実行時、そのホスト名に関連したアドレスに基づき転送することおよび/またはIPアドレスに関連したホスト名を通信プロトコル接続呼び出しへ渡すことを目的として転送テーブルに配置することができる。
【0165】
ワーカースレッドは、共有メモリキューからDNS要求を受け取り、その要求を中間サーバへ渡すことができる。結果が届くと、要求において指定されたLSP応答キューにその結果を返すことができる。中間サーバがホスト名を解決できない場合、マイクロソフトDNSプロバイダに検索を行なわせることができるNSPから空の結果を返すことができる。
【0166】
接続を開始する前に、ポートマップ要求がLSPから届く。セキュアアプリケーションマネージャプロキシは、バインドするために利用可能なローカルアドレスとポート、例えばループバックアドレスとポートを見つけることができ、その関連を記録し、その双方をLSPに返す。そして、LSPは、このループバックアドレスとポートへの接続を開始することができる。セキュアアプリケーションマネージャプロキシが、接続指示を受け取ると、中間サーバへの接続を開始することができる。この接続がうまくいった場合、前記ループバックアドレスから入ってくる接続が受け入れられる。一旦接続がなされれば、例えば、Winsock APIおよび/または通信プロトコルAPIの非同期の10個の特性に基づいたステートマシンは、ポートマップデータを処理することができる。
【0167】
セキュアアプリケーションマネージャは、127.1.0.1で始まり、127.1.255.254で終わる、ポートマッピング用の一連のループバックアドレスを使用することができる。ループバックアドレスの選択方法は数多くある。一実施形態では、セキュアアプリケーションマネージャは、まず、開始アドレス127.1.0.1と宛先ポートをバインドすることを試みることができる。このアドレスが既に使用されている場合には、次のアドレス127.1.0.2にバインドすることを試みることができる。これは、バインドするために利用可能なアドレスを見つけるまで、続けることができる。65kのアドレス全てが所定のポートで使用されている場合、代替のポート番号へのバインドを試み、再度127.1.0.1から始めることができる。
【0168】
ユーザインターフェースは、別個のWin32として構築することができる。このインプリメンテーションは、セキュアアプリケーションマネージャプロキシから抜け出すことができ、ユーザインターフェースインプリメンテーションをウィンドウレスのセキュアアプリケーションマネージャプロキシの制約から解放することができる。マイクロソフトファンデーションクラスは、ユーザインターフェースをインプリメントすることができる。これは、システムトレーアイコンを持つ隠しアプリケーションとして起動することができる。セレクション(例えば、アイコンの右クリック)により、プルアップメニューを表示することができる。ユーザインターフェースは、セレクション(例えば、アイコンのダブルクリック、右クリックメニューから「開く」を選択する)により開くことができる。
【0169】
ユーザに、どのアプリケーションが安全でありまた安全でないかといった感覚を提供するために、DLL、例えば個別のDLLは、各プロセスに関しWM PAINTメッセージをインターセプトするためにWin32ステータスフックを使用することができる。フックは、例えば、ステータスアイコンの書き込みにより、ビジュアルキューを、例えば、各ウィンドウの上部右側に提供することができ、アプリケーションが中間サーバに安全に接続されているかどうか示すことができる。ステータス情報は、セキュアアプリケーションマネージャプロキシによって作成された共有メモリ領域を読み取ることで得られる。
【0170】
LSPは、システムに適切にインストールし、ロックされたファイル、バージョニングおよび/またはアンインストールに対処することができる。
【0171】
ActiveXコントロールは、ブラウザ内で実行することができ、中間サーバのサーバから提供されてもよい。このコントロールは、セキュアアプリケーションマネージャに関連したプログラムおよび/またはインストールを、ダウンロード、解凍、および/または実行することができる。これは、ネットワーク接続およびセキュアアプリケーションマネージャと共に使用することができる。これが起動するアプリケーションはスクリプタブルであってもよい。例えば、VBscriptは、プログラム名を、ダウンロード、解凍、および/または起動のため、コントロールへ渡すことができる。
【0172】
中間サーバデーモンは、セッションマネージャから受け取ったトラフィックの一部または全てを処理する。次に、デーモンは、企業内の宛先ホストへのソケット接続をすることができ、クライアントアプリケーションに代わってデータを送受信することができる。デーモンは、さらに、クライアント上で実行されているLSP/セッションマネージャのために最初のホスト名解決を行なうことを目的としてDNSサーバとコンタクトすることができる。
【0173】
中間サーバセキュアアプリケーションマネージャは、一以上の機能を有することができる。
【0174】
1.TCPベースのクライアント/サーバプリケーションはすべてサポートされる。例えば、サーバ開始コネクションを含んでいないもの等。
【0175】
2.いくつかの実施形態は、アウトルック(Outlook)、ロータスノーツ(Lotus Notes)、および/またはNetBIOSプロキシング(Windows(登録商標)(登録商標)マップネットワークドライブへのアクセス)等のアプリケーションをサポートすることができる。
【0176】
3.いくつかの実施形態では、Windows(登録商標)プラットフォームや、インターネットエクスプローラのようなブラウザ上でサポートされる。
【0177】
4.いくつかの実施形態は、クライアントマシンからのダイアルアップ、ブロードバンドおよび/またはLANシナリオといった、あらゆるインターネットアクセスモードで動作可能である。
【0178】
5.いくつかの実施形態は、ポート443を介したSSLトラフィックを許可するデバイスのように、クライアント側プロキシおよびファイアウォールを介して作動可能である。
【0179】
6.いくつかの実施形態は、サードパーティのエンドポイントセキュリティ製品をサポートする。アプリケーションレベルでのアクセスを有するいくつかの実施形態は、安全なクライアントマシンから使用することができる。いくつかの実施形態は、ネットワークレベルでのアクセスセッションを起動する前に、Whole Security、Sygateなどのパーソナルファイアウォールに対処する。
【0180】
前記中間サーバは、最初のリリースから「Whole Security」のベンダーとの統合をサポートすることができる。指定されたレジストリ設定は、クライアントマシン上でチェックし、セッションを起動する前に、いくつかのプロセスが実行されていることを確かめることができる。
【0181】
ここで、「Whole Security」/ZoneAlarmの統合をサポートする例を挙げる。
【0182】
1.ネットワーククライアントは、レジストリキーの既存のものをチェックする
HKEY_LOCAL_MACHINE¥SOFTWARE¥Zone Labs
または
HKEY_CURRENT USER¥Software¥Zone Labs
【0183】
2.その後、ネットワーククライアントは、ZoneAlarm exeに結合されている実行中プロセスをチェックする。
【0184】
いくつかの実施形態は、管理者が、ベンダー名および関連のレジストリキー・プロセス名を指定することができ、セキュアアプリケーションマネージャクライアントによりサポートされるよう、一般的に十分に統合をインプリメントする。
【0185】
下記の内、一またはそれ以上の項目が管理者必要条件となり得る。
【0186】
1.セキュアアプリケーションマネージャはグループレベルの機能であってもよい。管理者は、中間サーバグループをベースとしたポリシーを用いた場合のように、セキュアアプリケーションマネージャにアクセスするユーザを制限することができる。
【0187】
2.管理者は、アプリケーションレベルでのアクセス、指定された宛先ホストのみへのアクセス、および/または指定された宛先ホストおよびポートへのアクセスといったモードにセキュアアプリケーションマネージャ機能を構成することができる。
【0188】
2.A.アプリケーションレベルでのアクセスに関して、管理者は、保護する必要のあるアプリケーションのリストを指定することができる。例えば、sapR3.exe、outlook.exe、ie.exe等である。NetBIOSプロキシングは、キーワード「netbios」を用いる等、特別のアプリケーションとして処理される。
【0189】
一つまたはそれ以上のアプリケーションに関して、管理者は、実行可能なものの下記パスのうち一つ以上を指定することができる:(例えば、"%system Root¥Program Files¥SAP¥sap r3.exe”といった実行可能なものの完全パス、分かりやすい記述(例えば、SAP R/3クライアント、および/または実行可能名のデフォルト)、セキュリティ上の理由からセキュアアプリケーションマネージャLSPにより強化され得る実行可能なアプリケーションに関するMD5チェックサム値のオプションリスト、およびクライアントアプリケーションから保護できる宛先ホスト/ポートのオプションリスト。
【0190】
2.B.指定された宛先ホストのみに対するアクセスに関して、管理者は、保護される必要のある宛先ホストのリストを指定することができる。セキュアアプリケーションマネージャは、自動的にTCPポート、UDPポートおよび/またはアプリケーションバージョン番号の一部または全てに関して、宛先ホストを対象とするトラフィックの一部または全てを保護することができる。
【0191】
宛先ホストは、下記のうちの一つまたはそれ以上のもので表わすことができる:単一のIPアドレスまたはIPアドレス範囲;宛先ホスト名またはホスト名のリスト。ホスト名は、*や?のようなワイルドカード表現を使用することができる。ここで、*は、任意の数のキャラクタのパターンを表し、?は単一キャラクタのパターンを表わす。IPアドレスが指定され、アプリケーションがホスト名を照会する場合、セキュアアプリケーションマネージャは、そのIPアドレスを、IPアドレス範囲内のホストのリストに照らし合わしチェックすることができる。セキュアアプリケーションマネージャは、ホスト名に関する少なくとも単方向のDNS検索サポートをサポートすることができる。
【0192】
宛先ホストは、ホスト名またはIPアドレスであってもよい。ホスト名に関しては、ワイルドカードをサポートすることができる。宛先ホストは、フォーマット10.10.0.0/255.255.0.0でサブネットを表わすマスクを用いて指定することができる。
【0193】
2.C.指定された宛先ホストおよびポートへのアクセスに関し、管理者は、保護する必要のある宛先ホストのリストおよびポートを指定することができる。セキュアアプリケーションマネージャは、これらの宛先ホストおよびポートを対象としたトラフィックを自動的に保護することができる。
【0194】
3.管理者は、同一グループに対し、ウェブブラウジング、ファイル、telnet/ssh等のような他の中間サーバ機能へのアクセスを提供することを決めることができる。セキュアアプリケーションマネージャは、サブグループのための追加アクセス機構として構成することができる。
【0195】
4.管理者は、一グループ用にセキュアアプリケーションマネージャを構成することができる。Java(登録商標)対セキュアアプリケーションマネージャ(例えば、ActiveX)バージョンの構成は、ユーザエージェントストリングを調べることによりクライアントオペレーティングシステム(例えば、非Windows(登録商標)対Windows(登録商標))に基づいて自動的に行なうことができる。
【0196】
5.いくつかの実施形態では、管理者は、エンドユーザ(セッションマネージャ等)のための「自動起動」セキュアアプリケーションマネージャクライアントを構成することができる。
【0197】
6.管理者は、例えば、グループ単位で「セキュアアプリケーションマネージャクライアントの自動完全クリーンアップ(アンインストール)」を選択することができる。このデフォルト値は、「使用不可」とすることもでき、セキュアアプリケーションマネージャのセッションマネージャ上のコンポーネントをすべてアンインストールするオプションをエンドユーザに提供することができる。
【0198】
7.管理者は、「完全セキュリティ」といったエンドポイントセキュリティ製品との統合を指定することができる。選択された場合、セキュアアプリケーションマネージャクライアントはまず、指定されたソフトウエアパッケージの存在をチェックし、セキュアアプリケーションマネージャセッションを起動する前に、それが作動していることを確認することができる。ユーザのマシンが指定されたソフトウェアを備えていないか、あるいは作動していない場合、ユーザに対し、セッションを起動することなく、適切な記述でエラーを返すことができる。
【0199】
セキュアアプリケーションマネージャプロキシに対し、LSPの各インスタンスからDNSおよび/またはポートマップ要求するために、何らかの形のプロセス間通信が必要とされる場合もある。Windows(登録商標)には、依存性を有する多くのプロセス間通信タイプがある。ネットワークに依存するプロセス間通信は、LSPに再送信され、無限ループを作ることがある。Windows(登録商標)メッセージに依存するプロセス間通信は、それが実行されているプロセスおよびスレッドを殆どコントロールできないLSP内からエラーおよびデッドロックが生じる傾向にある。残りの選択肢は、多くのマイクロソフトプラットフォームではインプリメントされない。
【0200】
プロセス間通信機構として、メモリマップファイルは、依存性を有することはできず、多くのプラットフォームに存在することができ、尚且つ比較的効率的であり得る。
【0201】
セキュアアプリケーションマネージャプロキシに対し、LSPから複数のプロセスで同期呼び出しを行なうため、複数のキュー(例えば、二つのキュー)とWin32 Named Mutexを使用することができる。メッセージキューは、連続したメモリブロック(メモリマップファイル)によりインプリメントすることができ、各種サイズのメッセージをサポートすることができる。このキューは、最初から終わりまでラップアラウンドするデータに対処することができる。一つのキューは、一送信側と一受信側を持つことができ、このような二つのキューは、要求/応答シーケンス、例えば、既知の名前を持つシステム上の要求キューの場合や、固有の名前を持つLSPプロセスによる応答キューの場合に使用することができる。Named Mutexは、メモリへのアクセスの同期化に対処することができる。要求/応答シーケンスを同期化するため、応答データを待機させる場合、要求をしているスレッドは、応答キューミューテックからの信号を待つことができる。
【0202】
図21は複数のキューを示す。図21は、Winsockアプリケーション2110およびLSP2120、要求キュー2130、応答キュー2140、そして、セキュアアプリケーションマネージャプロキシ2150を示す。
【0203】
メモリマップファイル領域および/またはnamed mutexはそれぞれ、アクセスするために既知の名前を要求することができる。名前が知られている場合、同一アカウント(または、例えば、Win 9xにおけるシステム全体)で実行されているプロセスは、このメモリにアクセスすることができるため、このメモリへのアクセスをより困難にするため、更なるステップを設定することができる。セキュアアプリケーションマネージャが公開する既知のメモリとミューテック名は、リアルメモリとミューテック名を暗号化したフォーマットで格納するために使用することができる。リアルメモリとミューテック名は、それら各々の機能を示すためストリング「:Shared Memory」および「:Mutex」を含むような、実行時に作成されたランダムな名前をベースにしていてもよい。
【0204】
既知の共有メモリ領域名は以下のように定義することができる:
【0205】
<name>:AppProxy:StartupRequestQueue
【0206】
<name>:AppProxy:DnsRequestQueue
【0207】
<name>:AppProxy:PortmapRequestQueue
【0208】
<name>:AppProxy:Statistics
【0209】
<name>:AppProxy:AppTable
【0210】
<name>:AppProxy:FlowTable
【0211】
<name>:<communication protocol>:PageInformation
【0212】
StartupResponsetQueue、DnsResponseQueue、およびPortmapResponseQueueは、実行時に作成されるランダムなストリングであってもよく、要求と共に渡すことができる。
【0213】
一旦セキュアアプリケーションマネージャプロキシが、<communication protocol>:PageInformation領域からセッションクッキーを読み取れば、メモリに常に「ぶら下がって」いなくてもすむようクッキーを消去することができる。
【0214】
以下の疑似コードは、セキュアアプリケーションマネージャプロキシが、共有メモリからセッションクッキーを読み取る一方法を示す。
【0215】
EnterReadLock("<name>:<communication protocol>:PageInformation:Mutex″)
OpenSharedMemory("<name>:<communication protocol>:PageInformation:SharedMemory″)
EncryptedMemoryName= ReadEncryptedMemoryName()
CloseSharedMemory("<name>:<communication protocol>:PageInformation:SharedMemory″)
LeaveReadLock("<name>:<communication protocol>:PageInformation:Mutex″)
DecryptedMemoryName = Decrypt(EncryptedMemoryName)
EnterWriteLock(DecryptedMemoryName + ":Mutex″)
OpenSharedMemory(DecryptedMemoryName + ":SharedMemory″)
SessionCookie = ReadSessionCookie()
ClearSessionCookie
CloseSharedMemory(DecryptedMemoryName + ":SharedMemory″)
LeaveWriteLock(DecryptedMemoryName + ":Mutex″)
【0216】
LSPは、通常のクライアントアプリケーションのようにシステム上にインストールすることができる。LSPがActiveXダウンロードエリアからインストールされる場合、インターネットエクスプローラによってこれらのファイルを一掃することができ、故障したネットワークコンフィギュレーションを残すことができる。リブートシナリオ上のLocked FilesおよびCopy/Deleteは、他のクライアントソフトウエアインストールと同様に処理できる。一実施形態のインストールパッケージングツールは、LSP関連ファイルを自己解凍型EXEファイルに圧縮する。別の二つのファイルと共にこのEXEファイルは、Active−Xダウンローダと使用できるようキャビネットファイル化される。
【0217】
図22は、インストールパッケージの例を示している。LSP、NSPおよびsamsp.dll2210、インストールスクリプト2214、およびMS redist Sporder.dll2218は、自己解凍型.EXE samsp.exe2220に圧縮される。これは、samsp.cab2230にキャビネットファイル化される。SAMP Proxy samsvc.exe2240は、samsvc.cab2260にキャビネットファイル化される。SAM UI Samui.exe2250は、samui.cab2270にキャビネットファイル化される。タイトルバーTitlebar.exe2280は、titlebar.cab2290にキャビネットファイル化される。
【0218】
下記は、セキュアアプリケーションマネージャのオペレーションの一例である。様々な実施形態は、オペレーションの一部を追加、削除、再配置、および/または修正することができる。
【0219】
1.ユーザは、中間サーバの作成したウェブページ上のセキュアアプリケーションマネージャを選択する
a.ActiveXコントロールが、LSP、NSPをダウンロードしインストールする
b.ActiveXコントロールが,セキュアアプリケーションマネージャプロキシをダウンロードし起動する
c.セキュアアプリケーションマネージャプロキシは、中間サーバからコンフィギュレーションデータを取り出す
d.宛先モードで作動する場合、アドレス/マスク/ポートの組み合わせをリダイレクトテーブルに書き込むことができる
【0220】
2.ユーザは、以下のプロセスで読み込まれた新しいアプリケーション、LSP、NSPを起動する
a.アプリケーションは、LSPからセキュアアプリケーションマネージャプロキシにStartupRequestを送出し、オペレーティングモードおよび/またはこのアプリケーションがプロキシ化されるべきかどうか判断する
b.オペレーティングモードが、アップリケーションプロキシであり、このアプリケーションがリストにない場合、LSPはプロセスから外れ、NSPは、DNSリクエストを無視することができる
c.セキュアアプリケーションマネージャのユーザインターフェースは、アプリケーションEXEファイルからアイコンを抽出し、システムトレーのリストに加える。
【0221】
3.アプリケーションは、DNS検索を実行する
a.NSPは、セキュアアプリケーションマネージャプロキシにDNS要求を出す
b.セキュアアプリケーションマネージャプロキシは、中間サーバにDNS要求を出す
i.これが、中間サーバホスト名である場合、ローカルDNS検索を実行し、アドレスを記憶する
c.DNS応答は、もしあれば、同様のパスで返される。
【0222】
4.アプリケーションは、IPアドレスへの接続を行なう
a.LSPは、セキュアアプリケーションマネージャプロキシにポートマップ要求を出す
b.このアプリケーション、関連の宛先ホスト名、宛先アドレス/ポートが、リダイレクトテーブルにあれば、ポートマップを設定し、ローカルアドレス/ポートをLSPに返す
c.LSPは、セキュアアプリケーションマネージャプロキシにより指定されたアドレス/ポートへの接続を行なう
【0223】
5.クライアントアプリケーションは、接続をシャットダウンおよび/またはソケットをクローズする
a.セキュアアプリケーションマネージャプロキシは、Winsock終了通知を受け取る
b.セキュアアプリケーションマネージャプロキシは、通信プロトコル接続をクローズする
c.セキュアアプリケーションマネージャプロキシは、ローカルポートマップソケットをクローズする
【0224】
6.サーバは、接続をクローズする
a.セキュアアプリケーションマネージャプロキシは、通信プロトコル終了通知を受け取る
b.セキュアアプリケーションマネージャプロキシは、ローカルポートマップ接続およびソケットをクローズする
c.アプリケーションは、通常のWinsock終了通知を得る
【0225】
7.アプリケーション終了
a.LSPは、セキュアアプリケーションマネージャプロキシにApplicationCleanupメッセージを出し、現行アプリケーションをアクティブリストから削除する。
【0226】
ユーザインターフェースは、セキュアアプリケーションマネージャのステータスを表示するためのシステムトレーアイコンアプリケーションおよびWin32フック等のコンポーネントを、例えば、各アプリケーションのタイトルバーに含むことができる。
【0227】
いくつかの実施形態は、エンドユーザのユーザインターフェースにおいて、下記のうちの一以上を備えている
【0228】
1.エンドユーザは、中間サーバグループをベースとしたポリシーに基づいて、許可されている場合のみ、中間サーバに「セキュアクライアントアプリケーション(Secure Client Applications)」アクセス機構を有することができる。セキュアクライアントアプリケーションアクセス機構は、サブグループに関する管理機能構成によって、セキュアアプリケーションマネージャ(例えば、ActiveXを備えた)をベースとしたセッションまたはJava(登録商標)セッションマネージャを起動することができる。いくつかの実施形態では、エンドユーザは、例えば、Java(登録商標)対ActiveXをベースにしたセキュアアプリケーションアクセス機構の間で選択することができ、その他の実施形態では、ユーザが選択することなく、自動的に選択される。
【0229】
2.ユーザは、中間サーバにおいてユーザのサブグループに対し使用可能となっている場合、ウェブブラウジング、ファイルブラウジング、telnet/ssh等のような他の中間サーバクセス機構を、セキュアアプリケーションマネージャと共に選択することができる。セキュアアプリケーションマネージャアクセス機構は、中間サーバ上の追加アクセス機構であってもよい。
【0230】
3.セキュアアプリケーションマネージャクライアントダウンロードは、いかなるサイズのものであってもよい。いくつかの実施形態では、ダウンロードにかかる時間は、ダイヤルアップ接続(約56Kbps)で約30秒以下である。セキュアアプリケーションセッションマネージャのいくつかの実施形態は、1分以下で開始され、ユーザは企業アプリケーションにアクセスを開始できるようになる。
【0231】
4.セキュアアプリケーションマネージャクライアントのインストールは、コンポーネントをインストールするために、いくつかの管理者権限を要求することができる。ユーザが正しい権限を持っていなければ、ユーザに権限に関する問題があることを通知することができる。ユーザは、セキュアアプリケーションマネージャクライアントコンポーネントをインストールするために、正しい管理者認証情報を提供するように促される。
【0232】
5.セキュアアプリケーションマネージャのセッションマネージャは、セキュアアプリケーションマネージャによって保護されるクライアントアプリケーションのリスト等の統計情報、および/またはセキュアアプリケーションマネージャによって保護されるクライアントアプリケーションのうちの一以上のステータスを表示することができる。セキュアアプリケーションマネージャによって保護されるクライアントアプリケーションのリストは、管理者が構成した、保護される必要のあるアプリケーションリストであってもよい。これらのクライアントアプリケーションに関連したアイコンを表示することができる。これらアプリケーション/アイコンは、選択(例えば、クリック)することにより、保護されたバージョンのクライアントアプリケーションを起動することができる。セキュアアプリケーションマネージャによって保護されたクライアントアプリケーションのうち一つ以上に対し、セッションマネージャは、例えば、このアプリケーションに関する送受信バイト数がオプションとして共に提供されるアクティブ(例えば、ユーザがアプリケーションを起動した)、非アクティブ(例えば、アプリケーションがまだ起動されていない)、およびエラー(例えば、セッションのエラー)といったステータスを提供することができる。
【0233】
6.セキュアアプリケーションマネージャのセッションマネージャは、セキュアアプリケーションマネージャを起動したユーザと同じアカウント権限の下、バックグラウンドアプリケーションとして実行することができる。ユーザは、セキュアアプリケーションマネージャセッションのステータスを表示するためにシステムトレーアイコンを選択(例えば、クリック)することができる。
【0234】
7.セッションマネージャ(例えば、クライアント/サーバ、セキュアアプリケーションマネージャのセッションマネージャ、および/またはネットワーク接続)は、バックグラウンドアプリケーションとして実行することができる。
【0235】
8.クライアントにおいては、セッションマネージャによるセキュアアプリケーションマネージャセッションは、円滑に閉じる(切断および/または終了する)ことができる。セッションマネージャを閉じると、セキュアアプリケーションマネージャのセッションマネージャは、自動的にマシンを正常な状態に回復させることができる。いくつかの場合には、セッションマネージャを終了した後、マシンを正常な状態に回復させることができ、他の場合には、マシンが次回リブートされた後、正常な状態に回復させる。
【0236】
9.セッションマネージャウィンドウは、中間サーバウィンドウを開くためのオプションを有することができる。
【0237】
10.ユーザセッションがタイムアウトになった場合、中間サーバのユーザは、Java(登録商標)セッションマネージャの機能と同様の経験をすることもある。セキュアアプリケーションマネージャのセッションマネージャは、「エラー」等のステータスを表示することができる。また、セッションを再開するオプションがあってもよい。セッション再開を選択(例えば、クリック)することにより、例えば、ユーザが認証情報を再入力するために新しいブラウザを開けることもできる。一旦ユーザが中間サーバにログインすれば、セキュアアプリケーションマネージャセッションは再起動される。いくつかの実施形態では、セッションマネージャは、中間サーバへのログインウェブページを開くことにより、クライアント側で認証情報を再入力するようユーザに促すことができる。ユーザは、既存のアプリケーションセッションを閉じることなく継続することができる。
【0238】
11.セキュアアプリケーションマネージャクライアントインストールや、セッションスタートアップ/回復に際して生じたエラー、および/またはセッションの失敗は、Windows(登録商標) Event Log(ウインドウズイベントログ)(Application Log(アプリケーションログ))などのログおよび/またはセッションマネージャのカスタムユーザインターフェースログにレポートされる。
【0239】
モジュールは、LSP(例えば、%Program Files%¥name¥Application Proxy¥samlog.txt)と同じディレクトリに存在することのできるテキストファイルにメッセージを記録することができる。このログは、例えば、システムトレーアプリケーションからの要求で読まれたり表示したりすることができる。アンインストールに際して、このログファイルは削除することができる。
【0240】
LSPは、多くの方法でアップグレードすることができる。現行のLSPは、メモリへロックすることができ、また、リブートなしでは、新バージョンでそれに上書きすることはできない場合もある。このリブートを避けるために、インストーラがロックされたファイルを検出した場合、末尾に数を付加したコピーをインストールすることができる。例えば、samsp.dllがロックされていた場合、インストールでは、samsp1.dllをインストールディレクトリーに書き込み、それによってWinsockカタログを更新することができる。古いdllは、再起動の際に削除するためフラグを立てておくことができる。多数の異なったバージョンのLSPは、異なるアプリケーション内で同時に実行することができる。
【0241】
プロセス間通信メッセージ通信および共有メモリテーブルヘッダーは、モジュール間に後方互換性に関するバージョン番号を含んでいてもよい。ダウンロードされ、インストールされ、および/または実行されているモジュールは、いつアップグレードが必要であるかを判断するために、バイナリーファイルに組み込まれたバージョン番号を持っていてもよい。
【0242】
多くのWindows(登録商標)デスクトップソフトウェアは、あまり安全な環境でないことが知られている。そこで、セキュリティ強化の大部分は、中間サーバ上で行なうことができる。クライアント側では、ユーザが、認可されていないアプリケーションを安全な環境に導きいれるのを防ぐための取り組みを行なうことができる。これに関するいくつかの例としては、アプリケーションに関する、オプションとしてのチェックサムリスト、および/または悪意のあるユーザがポートマップ要求プロトコルをインターセプトしないようにするため共有メモリ名を暗号化することが挙げられる。
【0243】
標準のWin32のローカライゼーション技術は、ユーザインターフェースに使用できる(例えば、Unicode(ユニコード))。
【0244】
接続は、インターネットエクスプローラのようなブラウザを用いて開始することができるため、いくつかの実施形態では、プロキシを介して中間サーバホストに宛てられたインターネットエクスプローラのトラフィックを転送しないように注意する。セキュアアプリケーションマネージャプロキシは、起動されると、中間サーバホスト名および/またはアドレスを、例えば、ActiveXコントロールから取り出すことができる。アプリケーションが、中間サーバホスト名に対するDNS要求を出すと、ローカルDNS検索が行なわれ、その結果がアプリケーションに返される。そして、セキュアアプリケーションマネージャプロキシは、得られたアドレスを記録することができる。アプリケーションが、これらアドレスのうちの1つへの接続を実行した場合、いくつかの実施形態では、この接続は転送されない。
【0245】
LSPが、実行されプロセスに付加されるために、LSPがプロトコルカタログにインストールされた後、アプリケーションの新しいインスタンスを起動することができる。中間サーバUIは、ユーザにこれを警告することができる。ウィンドウが開かれる場合、インターネットエクスプローラのようないくつかのアプリケーションは必ずしも新しいプロセスを作成するとは限らない場合もある。アプリケーション起動アイコンは、システムトレーアプリケーションに配置することができ、インターネットエクスプローラを起動し、新しいプロセスが確実に作成されるようにする。
【0246】
LSPが前もってシステムにインストールされていた場合、アプリケーションを再始動する必要はない場合もある。
【0247】
いくつかの実施形態は、インターネットエクスプローラをベースとしたブラウザでのみ機能するであろうActiveXコントロールに依存する。他の実施形態は、例えば、独立型インストールパッケージを備えた他のブラウザをサポートする。いくつかの実施形態は、Java(登録商標)またはネットスケープ(Netscape)プラグインを用いて、モジュールを起動する。
【0248】
いくつかの実施形態は、UDPおよび/またはRAW IPトラフィックを保護する上でサポートする。セキュアアプリケーションマネージャが、アプリケーションプロキシモードで実行されている場合、非TCPトラフィックの一部または全てが、LSPにより拒絶される。
【0249】
ネットワーク化されたファイルシステムの大部分は、カーネルのファイルシステムドライバによりインプリメントされ、ファイルシステム要求をネットワークに転送するために、カーネルをベースとしたTDIインターフェースを使用している。これは、LSPはこのトラフィックを処理しない場合もあることを意味する。
【0250】
マイクロソフトは、NetBIOSのためのWinsock2トランスポートプロバイダ(Transport Provider)を提供している。もしアプリケーションが,このトランスポートプロバイダを使用したならば、LSPはNetBIOSトラフィックを処理することができるであろう。しかしながら、Windows(登録商標)エクスプローラは、このトランスポートプロバイダをそのNetBIOS処理に使用していない。
【0251】
多くの実施形態は、他のLSPをベースにした製品と相互協調処理するLSPを有する。いかなるTCPベースのクライアント/サーバプリケーションも、セキュアアプリケーションマネージャのいくつかの実施形態を用いて作動できる。
【0252】
いくつかの実施形態は、トラフィックをプロキシングするため、ループバックアドレスにより接続をポートマッピングする。ネットワークデータは、ユーザスペースからカーネルへそしてまたユーザスペースへと余分に往復する。一定のWindows(登録商標)サービスは、Winsockの知らないカーネル内のループバックアドレスおよびポートにバインドする。これを、セキュアアプリケーションマネージャプロキシは、カーネルサービスが要求をインターセプトしたことにより、いかなる接続もデータもまだ受け取ってはいないにもかかわらず、ループバックアドレスおよびポートに正常にバインドされたものとみなすことがある。この一例として、マイクロソフトリモートデスクトッププロトコルは、Winsockに通知することなく、127.0.0.1:3389を引き継ぎ、コントロールする。
【0253】
いくつかの実施形態は、ソケット入出力を行なうため、LSPとセキュアアプリケーションマネージャプロキシとの間にプロセス間通信インターフェースを設ける。これは、Winsock2トランスポートプロバイダが、プロセス間通信により、データおよびイベントを別のプロセスにコピーすることでインプリメントすることができる。こうして、LSPは、セキュアアプリケーションマネージャによって保護されたアプリケーションを、新たなトランスポートプロバイダに転送するスイッチとしての役割を果たすことができる。
【0254】
セキュアアプリケーションマネージャは、インターネットエクスプローラ、ネットスケープ、オペラ(Opera)などのウェブブラウザをサポートすることができる。いくつかの実施形態では、ウェブページからネイティブWin32アプリケーションを起動するために接続するJava(登録商標)あるいはネットスケープを使用する。
【0255】
TDIフックドライバは、NetBIOSトラフィックの一部または全てのキャプチャおよび転送を可能にすることができる。
【0256】
通信プロトコルは、UDPベースのアプリケーションをサポートすることができる。LSPおよびセキュアアプリケーションマネージャプロキシは、例えば、「UDP関連付け」コマンドを使い、その間のUDPフローをセットアップすることができる。
【0257】
通信プロトコルのプロトコルは、入ってくるTCP接続をサポートすることができる。LSPおよびセキュアアプリケーションマネージャプロキシは、「バインド」コマンドを使用し、プロキシからアプリケーションに入ってくる接続をセットアップすることができる。
【0258】
SOCKSは、UDPと、入って来るTCP接続をサポートすることができる。いくつかの実施形態において、SOCKSはサポートされている。
【0259】
一度ActiveXコントロールが、ネットワーク接続またはセキュアアプリケーションマネージャ用のシステム上にダウンロードされインストールされると、ウェブサイトは、コントロールをスクリプトすることができ、.exeのファイルをそれら独自のサーバからダウンロードし実行することができる。いくつかのコントロールは、特定のホストまたはドメインから実行されるようにそれを制限することによるなど、コントロールをロックするサイトによりこの問題に対処する。
【0260】
いくつかの実施形態は、コントロールと中間サーバの間でハンドシェークが行なわれ、これが本物の中間サーバからスクリプトされていることを確認する。
【0261】
いくつかの実施形態は、下記の一以上を行う。下記リストの要素は、修正、再配置、追加、および/または削除できる。
【0262】
1. クライアントは、ウェブブラウザから中間サーバにログインすることができる。このクライアントに対して、中間サーバ管理者は、中間サーバグループをベースとしたポリシーを使用して、例証を目的としたSAPクライアントのように、アプリケーションにアクセスするための中間サーバ機能を使用可能にすることができる。
【0263】
2.セッションを始めるクライアントが選択することにより、中間サーバメニューからセキュアアプリケーションマネージャセッションを起動することができる。
【0264】
3.クライアントマシン上にLSPサービスをインストールするセキュアアプリケーションマネージャクライアント(これは、ActiveXコントロールであってもよい)をダウンロードすることができる。クライアントマシン上で起動される新しいアプリケーションは、LSPサービスにより読み込むことができる。セキュアアプリケーションマネージャクライアントは、さらにシステムトレー内のプロセスとして実行することもできる。上記のように、セッションマネージャは、設定されたアプリケーションのためのLSPサービスによってインターセプトされたトラフィックの一部または全てを保護することができる。さらに、セッションマネージャは、アクティブなセキュアアプリケーションマネージャセッションの一部または全てのステータスを表示することができる。
【0265】
4.ユーザは、クライアントアプリケーション、例えば、SAPクライアントを起動し、企業SAPアプリケーションリソースに接続することができる。
【0266】
5.クライアントが、リソース、例えば、sapservl.mycompany.comへの接続を試みると、その呼び出しはNSPサービスによってインターセプトされる。
【0267】
6.そして、NSPサービスは、通信プロトコルにより、ホスト名を中間サーバへ転送することができる。
【0268】
7.中間サーバにおいて実行することができるセキュアアプリケーションマネージャデーモン(プロトコルコネクターサービス)は、イントラネットにおいて、ホスト名、sapsrvl.mycompany.comを解決し、応答をセキュアアプリケーションマネージャクライアントに返す。
【0269】
8.中間サーバからの正常に「解決された」応答に基づくセキュアアプリケーションマネージャクライアントは、例えば、127.0.0.9のような利用可能なループバックアドレスの自動プロビジョニングにより、ポートフォワーディングチャネルを自動的に構成することができる。
【0270】
9.その後、セキュアアプリケーションマネージャクライアントは、アプリケーションにループバックアドレスを返すことができる。
【0271】
いくつかの実施形態は、下記のうち一つ以上をサポートする:静的クライアント/サーバプリケーション;動的および/または複数ポートTCPをベースとしたクライアント/サーバプリケーション;特定クライアント/サーバプリケーションに関するクライアントポートおよび/またはサーバポート、宛先ホスト名リストのスペック;クライアント/サーバポートフォワーディング;ポート、宛先ホストアドレスなどの余分なスペックを作成するクライアントとの統合;単一ポートおよび/または複数ポートに関する宛先ホストおよび/または一以上のアプリケーション;サーバ開始接続(例えば、Active FTP)および/またはクライアント開始アプリケーションを含むクライアント/サーバプリケーション;TCPおよび/またはUDPベースのクライアント/サーバプリケーション;Windows(登録商標)メディア(Media)、リアル(Real)、クイックタイム(Quicktime)といった、ライブストリーミングを含む企業ストリーミングリソース;および、企業リアルタイムコラボレーションアプリケーションおよび/またはEラーンニングリソース(例えば、ネットミーティング(Netmeeting)、サムタイム(Sametime)オーディオ/ビデオなど)。
【0272】
セキュアアプリケーションマネージャは、例えば、少なくとも500または1000の同時ユーザを、サポートするためなどに調整することができる。
【0273】
いくつかの実施形態は、セキュアMAPIおよび/またはロータスノーツのような、セキュアメッセージング機能を有する。
【0274】
いくつかの実施形態は、静的ポートクライアント/サーバプリケーションなどのセキュアクライアント/サーバプリケーションを保護する。
【0275】
セキュアアプリケーションマネージャのいくつかの実施形態は、TCPを使用するクライアント/サーバプリケーションの一部または全てを保護し、一部または全ての接続は、クライアントから開始される。
【0276】
いくつかの実施形態は、セッションタイムアウトを処理するおよび/または同時に他の中間サーバクセス機構に対処するといった、クラスタリングサポートを有する。LSPサービスは、IEが、セキュアアプリケーションマネージャによって保護されるアプリケーションになるよう構成される場合でも、中間サーバホスト(セキュアアプリケーションマネージャがダウンロードされるホストのIPアドレス)に向けられたトラフィックを無視することを自動的に決めることができる。
【0277】
いくつかの実施形態は、UDPベースのアプリケーション、および/または、通信プロトコルの代わりに、あるいは通信プロトコルに加えてSOCKSV5のようなプロトコルの使用に対応している。
【0278】
いくつかの実施形態は、FTPのようなサーバ開始接続を含むことができるTCPベースのアプリケーションに対応している。SOCKS V5のようなプロトコルは、通信プロトコルの代わりに、あるいは通信プロトコルに加えて使用することができる。
【0279】
いくつかの実施形態は、ウィルススキャンおよび/またはエンドポイントセキュリティ製品といったサードパーティベンダーとの統合性を有する。
【0280】
入って来るTCP接続を必要とする一例は、ほとんどのインプリメンテーションにおいてデフォルトモードであってもよい、FTPnアクティブモードをサポートすることである。これはクライアントマシン上のクライアントアプリケーションを参照することができる。アプリケーションがソケットでリスンする場合、それはwinsock API関数listen()に呼び出しをする。LSP内で、この呼び出しはインターセプトされ得る。ローカルセキュアアプリケーションマネージャ(SAM)プロキシに要求をする。これは、「バインド要求」と呼ばれる。バインド要求は、クライアントマシンがバインドされているIPアドレスおよびポートを含んでいる。次に、ローカルSAMプロキシは、リモートネットワーク上のIPアドレスと、ローカルクライアントマシン上のクライアントアプリケーションにより指定されたポートとを割り当てることができる中間サーバへのバインド要求をすることができる。中間サーバは、新たに割り当てられたアドレス/ポートで、入って来る接続をリスンすることができる。接続が行なわれた場合、入って来る接続要求は、クライアントマシン上のローカルSAMプロキシに返送され、次に、前記接続要求を、クライアントアプリケーションがリスンしている実アドレスおよび実ポートに転送することができる。その後、このアドレス/ポート(ソケット)にリモートネットワークから入って来るデータは、クライアントのクライアントアプリケーションに転送することができ、また逆も同様である。ローカルクライアントマシン上のクライアントアプリケーションがTCP接続をクローズする場合、SAMプロキシは、接続を切断するために中間サーバへ接続終了メッセージを送ることができる。
【0281】
リモートネットワーク上のクライアントアプリケーションがTCP接続をクローズする場合、中間サーバはローカルマシン上のSAMプロキシに接続終了メッセージを送ることができ、そして、ローカルクライアントマシン上のサーバプリケーションへのTCP接続を切断することができる。
【0282】
クライアントマシン上のクライアントアプリケーションが、リスンしていたソケットをクローズする場合、レイヤドサービスプロバイダは、「バインドクローズ」メッセージをセキュアアプリケーションマネージャプロキシに送信することができ、次にその要求を、中間サーバに転送し、そのアドレスおよびポート上でのリスンをやめさせることができる。
【0283】
UDPアプリケーションは、IPを使用したヴォイス(Voice)、シーユーシーミー(CU−SeeMe)、リアルオーディオ(Real−Audio)等のリアルタイムマルチメディアアプリケーションであってもよい。一般的な方法でUDPをサポートするため、UDPトラフィックはクライアントから開始されるべきである。他の実施形態では、非クライアントから開始されたUDPトラフィックをサポートする。
【0284】
LSP内で、WSPSend()およびWSPSendTo()呼び出しは、UDPソケット上でインターセプトすることができる。これが、このアドレス/ポート上で検出された最初のUDPトラフィックである場合、クライアントアプリケーションからローカルセキュアアプリケーションマネージャプロキシに「UDPフロー要求」を送ることができる。ローカルセキュアアプリケーションマネージャプロキシは、、次に、中間サーバに「UDPフロー要求」をすることができる。一旦これが完了すれば、セキュアアプリケーションマネージャプロキシは、クライアントアプリケーションにローカルループバックアドレスおよびUDPポートを割り当てることができる。レイヤドサービスプロバイダー内で、前記要求が完了すると、宛先パラメーターにおいて、WSPSendTo()呼び出し(または、Winsockフックインプリメンテーションではsendto())か、あるいは、WSPConnect()呼び出しの間であれば、接続されたUDPソケットAPI使用(Winsockフックインプリメンテーションではconnect())の代わりに新たに割り当てられたアドレスを使用することができる。
【0285】
中間サーバはUDPフロータイマーをインプリメントすることができる。一定の期間の後、アドレスおよびポートにおいて、UDPトラフィックが検出されない場合、その「UDPフロー」クライアント結合を切断することができる。そして、UDPフロー切断メッセージが、ローカル結合を切断するクライアントマシン上のローカルセキュアアプリケーションマネージャプロキシに送信される。UDPのステートレスな性質により、クライアントアプリケーションに通知が送られない場合もある。タイムアウト期間が終了した後、アプリケーションがUDPアドレスおよびポートにモーレスデータ(mores data)を送る場合、新たなUDPフロー要求が開始される。データがアドレスとポートに送信されると、UDPタイムアウト期間はリセットされる
【0286】
図23は、アプリケーションの一例と、ローカルネットワーク上のクライアントコンピュータのトランスポートドライバインターフェースを示す。図23は、ソケットアプリケーション2310と、NetBIOSアプリケーション2315とを示している。トランスポートドライバインターフェースクライアントは、ソケットエミュレータ2330、NetBIOSエミュレータ2334、およびリダイレクタやサーバなど2338を備えている。ソケットインターフェース2320は、ソケットアプリケーション2310とソケットエミュレータ2330の間にある。NetBIOSインターフェース2325は、NetBIOSアプリケーション2315とNetBIOSエミュレータ2334の間にある。トランスポートドライバ(トランスポートプロバイダとも呼ばれる)は、Appletalkトランスポートドライバ2350、NetBTトランスポートドライバ2352、Nbfトランスポートドライバ2354、TCP/IPトランスポートドライバ2356、およびNWlinkトランスポートドライバ2358を備えている。トランスポートドライバインターフェース2340は、トランスポートドライバインターフェースクライアントとトランスポートプロバイダの間にある。
【0287】
カーネルベースTDIクライアントのいくつかの例としては、NetBIOS、NFS、MSリモートデスクトッププロトコルおよびマイクロソフトインターネットインフォメーションサーバが挙げられる。TDIクライアントは、Winsockをネーム解決に使用することもでき、その場合には、Winsock2ネームスペースプロバイダはリモートネームサービスを提供することができる。NetBIOSのような他のネットワークアプリケーションは、カーネルで作成された名前検索および/またはブロードキャストディスカバリなどの追加機能を実行してもよい。その場合、これらのイベントは、カーネルでトラップでき、および/またはカスタム処理を実行することができる。いくつかの実施形態は、一以上の操作モードを有することができる。一モードとしては、一般モードが挙げられ、Winsockネームスペースプロバイダにより行なわれた名前検索結果を、フィルタリングやリダイレクションのためドライバに結果を渡すことができる。別のモードでは、アプリケーションまたはプロトコルに特有のカスタムハンドラを用いることができる。
【0288】
図24は、一般的なオペレーティングモードを示す。エクスプローラやIISといったアプリケーション2410、ネームスペースプロバイダ2420、NetBIOSおよび/またはNFSのようなTCP/IP TDIクライアント2430、TDIフックドライバ2440、TCP/IPトランスポートドライバ2450、セキュアアプリケーションマネージャプロキシ2460、中間サーバへのリモート接続2470が示されている。
【0289】
図25は、カスタムハンドラを用いたモードを示し、図24と類似しているが、ネームスペースプロバイダが関与していない。
【0290】
サーバ上で、一アプリケーションに非Winsockアプリケーションのフラグを立てる場合、DNS検索を行なうことができ、および/またはその結果は、TDIフィルタドライバに渡される。ループバックアドレスおよびポートはプロキシによって開かれ、さらに、ドライバに渡されることにより、ターゲットアドレスが修正されそのトラフィックを中間サーバに転送することができる。
【0291】
NetBIOSは、DNSを使用するだけではないため、プロトコル特定のハンドラにより処理できる。それはWINSを使用して(UDP要求をサーバに送信)、ブロードキャストディスカバリおよびLAN上でUDPブロードキャストを行なうことができる。そして、それはWINSを用いたNetBIOS特定のホスト名解決および/またはUDPブロードキャストを行うこともでき、その後DNSが使用される。マイクロソフトWindows(登録商標)へのシームレス統合をサポートするために、プロトコル特定のハンドラは、リモートネットワーク上でネットワークディスカバリ要求を行なうことができる。たとえNetBIOSが、WINSおよびブロードキャスト検索の後DNSにフォールバックできるとしても、カスタム名検索処理を行なうことができる。カスタム名検索処理により、NetBIOSネーム解決が、タイムアウトおよびDNSへのフォールバックを待つ代わりとして使用されれば、より効率的であり、また、NetBIOS DNS解決は、ユーザがセキュアアプリケーションマネージャを起動する前に開始したシステムサービスによって行なうことができ、これは、SAMのモデルに反することもある。
【0292】
TDIフックドライバは、NetBIOSディスカバリ要求をキャプチャし、要求をコピーし、中間サーバに要求を転送することのできるセキュアアプリケーションマネージャプロキシに渡すことができる。中間サーバから返された結果は、クライアントが結果を発見できるようにローカルに再送信することができる。
【0293】
中間サーバは、ブロードキャストディスカバリおよび/またはNetBIOSネーム検索をサポートするために特別なプロトコルハンドラを必要とすることもある。このハンドラは、リモートクライアントの代わりに典型的なNetBIOSのタスクを行なうことができ、および/またはセキュアリンクにより結果を返すことができる。
【0294】
下記は、NetBIOSを用いた一例である。ステップは、追加、削除、再配置、および/または修正することができる。
【0295】
1.管理者は、リモートアクセスするNetBIOSホストおよび/またはアドレスを設定する
【0296】
2.ユーザがログインすると、設定がクライアントに送られる
【0297】
3.TDIフックドライバが読み込む
【0298】
4.セキュアアプリケーションマネージャプロキシが読み込み、ドライバへの入出力チャネルを開く
【0299】
5.ユーザは、NetBIOS名によりネットワーク共用回線を開く要求を出す
【0300】
6.TDIフックドライバは、既知のNetBIOSポートに関する指定WINSの照会またはブロードキャスト要求を検知する
【0301】
7.TDIフックドライバは、要求を消化し、ioctlを介してプロキシに渡す
【0302】
8.プロキシは、ホスト名をフィルタリング処理にかける。マッチングが確認された場合、NetBIOSネーム検索は中間サーバ上のNetBIOSネームサービスハンドラに転送される。マッチングが確認されなかった場合、要求は通常のオペレーションを行なうためローカルネットワーク上で再送信される
【0303】
9.中間サーバは、リモートネットワーク設定によってWINSおよび/またはブロードキャストネーム検索を行う
【0304】
10.プロキシは、NetBIOSネーム検索応答を受け取る
【0305】
a.転送のためループバックアドレスおよびポートを開く
【0306】
b.実IPアドレス、ポート+ループバックIPアドレスおよびポートをTDIフィルタドライバに渡す
【0307】
c.クライアントアプリケーションにネーム検索結果を再送信
【0308】
11.TDIフィルタは、得られた宛先IPアドレスでNetBIOSトラフィックを検出する
【0309】
12.TDIフィルタは、宛先IPアドレスを、割り当てられたループバックアドレスおよびポートと置き換え、結果として、TCP/IPスタックは、データをセキュアアプリケーションマネージャプロキシに送信する
【0310】
13.プロキシは、中間サーバへNetBIOSを転送する。
【0311】
図26は、方法の一実施形態を示す。2610において、ネットワーク接続要求が受信される。2620において、ネットワーク接続要求が転送される。2630において、データは中間サーバに向け送信される。この方法は、リモートネットワークへのセキュアリモートアクセスを可能にすることができる。
【0312】
ネットワーク接続要求は、ローカルネットワーク上のコンピュータで受信されることができる。ネットワーク接続要求は、クライアント/サーバプリケーションのクライアントアプリケーションにより開始することができる。クライアントアプリケーションはコンピュータ上にあってもよい。ネットワーク接続要求は、リモートネットワーク上の宛先を含むことができる。クライアント/サーバプリケーションのサーバプリケーションは、リモートネットワーク上にあってもよい。
【0313】
ネットワーク接続要求は、コンピュータ上のWindows(登録商標)ソケットレイヤ内に転送することができる。これには、ネームスペースプロバイダ(例えば、リモートネットワーク上のドメインネームサービス検索に利用)およびレイヤドサービスプロバイダ(例えば、ローカルネットワークからリモートネットワークへのクライアントアプリケーションのデータ転送に利用)を用いて、ネットワーク接続要求を転送することが含まれる。ネットワーク接続要求は、コンピュータのトランスポートサービスプロバイダ(例えば、TCP/IPトランスポートサービスプロバイダ)を避けて転送することができる。ネットワーク接続要求は、リモートネットワーク内の中間サーバに転送することができる。その中間物サーバは、コンピュータに代わってネットワーク接続要求を行なうことができる。転送は以下のうちの一以上に基づいて行うことができる:クライアントアプリケーションの名前、クライアントアプリケーションのチェックサム、クライアントアプリケーションのバージョン、宛先のサーバ、および宛先のポート。転送前に、ネットワーク要求は、WinsockダイナミックリンクライブラリおよびWinsock2ダイナミックリンクライブラリの少なくとも一つ通過することができる。ネットワーク接続要求は、コンピュータ上の少なくともプロキシを介して、リモートネットワーク内の中間サーバに転送することができる。
【0314】
クライアントアプリケーションのデータは、コンピュータから中間サーバに向けて送信することができる。セキュア・ソケット・レイヤ(SSL)は、コンピュータと中間サーバの間の通信を暗号化することができる。クライアントアプリケーションのデータは、中間サーバからサーバプリケーションに向けて送信することができる。様々な実施形態は、中間サーバからサーバプリケーションに向けてクライアントアプリケーションのデータを送信するか、あるいは、実施形態外部のソフトウェアまたはハードウェアによってこれを行わせる。クライアントアプリケーションのデータは、中間サーバに向けてクライアントアプリケーションのデータを送信する前に、少なくとも前記コンピュータのローカルアドレスおよびローカルポートにより送信することができる。
【0315】
いくつかの実施形態では、クライアントアプリケーションと中間サーバとの間のセキュア接続を示すためビジュアルキューが設けられる。ネームスペースプロバイダおよびレイヤドサービスプロバイダは、自動的にコンピュータにインストールおよび/またはコンピュータからアンインストールすることができる。
【0316】
図27は別の方法実施形態を示す。2710において、ネットワーク接続要求が受信される。2720において、ネットワーク接続要求が転送される。2730において、中間サーバからデータを受信する。この方法は、リモートネットワークへのセキュアリモートアクセスを可能にすることができる。
【0317】
ネットワーク接続要求は、ローカルネットワーク上のコンピュータで受信できる。ネットワーク接続要求は、リモートネットワーク上のファイルシステムに対し、開始することができる。ネットワーク接続要求は、前記ファイルシステムの名前を含んでいてもよい。
【0318】
ネットワーク接続要求は、コンピュータ上のトランスポートドライバインターフェースを用いて転送することができ、更に、ネームスペースプロバイダを使用してもよい。転送することにより、ネットワークファイルシステムトラフィックをキャプチャすることができる。ネットワーク接続要求は、コンピュータ上でトランスポートドライバ(例えば、TCP/IPトランスポートドライバ)を避けて転送することができる。ネットワーク接続要求は、リモートネットワーク内の中間サーバに転送することができる。中間サーバは、コンピュータに代わってネットワーク接続要求を行う。転送は、宛先サーバおよび宛先ポートの内の一以上に基づいて行なわれる。転送に先立ち、ネットワーク接続要求は、少なくともトランスポートドライバインターフェースフィルタを通過することができる。
【0319】
中間サーバからのファイルシステムのデータはコンピュータで受信することができる。セキュア・ソケット・レイヤ(SSL)は、コンピュータと中間サーバの間の通信を暗号化することができる。ファイルシステムのデータは、リモートネットワーク上の中間サーバとファイルシステムの間で転送することができる。様々な実施形態は、中間サーバとファイルシステムの間でファイルシステムのデータをやりとりするか、或いは、実施形態外部のハードウェアまたはソフトウェアによってこれを行わせる。
【0320】
いくつかの実施形態では、トランスポートドライバインターフェースは、自動的にコンピュータにインストールおよび/またはコンピュータからアンインストールすることができる。
【0321】
種々様々な態様、特徴、実施形態、または上述のいくつかの実施形態のインプリメンテーションは、単独であるいは様々な組み合わせで使用することができる。
【0322】
いくつかの実施形態は、ソフトウェアにおいてインプリメントすることができるが、ハードウェアまたはハードウェアとソフトウェアの組み合わせにおいてインプリメントすることもできる。本発明のいくつかの実施形態はまた、コンピュータ読み取り可能メディア上のコンピュータ読み取り可能コードとして実施することができる。コンピュータ読み取り可能メディアとは、データを格納することができ、その後コンピュータシステムにより読み取ることができる任意のデータ記憶装置である。コンピュータ読み取り可能メディアの例としては、読み取り専用メモリ、ランダムアクセスメモリ、CD−ROM、DVD、磁気テープ、光学データ記憶装置、および搬送波が挙げられる。コンピュータ読み取り可能メディアはまた、コンピュータ読み取り可能コードが分散して格納され、実行されるよう、複数のネットワーク結合コンピュータシステムに分散させることができる。
【0323】
いくつかの実施形態は、多数の利点を有する。様々な実施形態またはインプリメンテーションにより、下記利点の中から一つ以上が得られる。いくつかの実施形態の一利点は、仲介サーバをリモートサーバとクライアント間に配置し、安全なアクセスを容易にすることができる点である。いくつかの実施形態の別の利点は、クライアントが要求したコンテンツを変更し、次のクライアントの要求を仲介サーバに送信することで、仲介サーバはクライアントのために要求されたコンテンツを得ることができる点である。また、いくつかの実施形態の更に別の利点は、仲介サーバが、プライベートネットワークによって提供されるネイティブ認証の使用を通じてプライベートネットワーク上のリソースへのアクセスを求めるリクエスタを認証することができるという点である。更に、いくつかの実施形態の別の利点は、プライベートネットワークへのセキュアリモートアクセスを、許可された人にリーズナブルなコストで容易に提供することができるという点である。
【0324】
いくつかの実施形態の多くの特徴および利点は、記載された説明から明白であることから、本発明のいくつかの実施形態のそのような特徴および利点の全てが、添付クレームによってカバーされるものとする。さらに、当業者にとって、多数の修正および変更が容易に考えられるため、本発明を、例示および説明した厳密な構成およびオペレーションに限定することを意図するものではない。従って、適切な修正および等価物はすべて、本発明の範囲内にあるものとして分類される。
【図面の簡単な説明】
【0325】
【図1A】図1Aは、本発明の一実施形態に係る情報検索システムを示すブロック図である。
【図1B】図1Bは、本発明の別の実施形態に係る情報検索システムを示すブロック図である。
【図2A】図2Aは、本発明の一実施形態に係る仲介サーバを示すブロック図である。
【図2B】図2Bは、本発明の一実施形態に係るリモートアクセスシステムを示すブロック図である。
【図3】図3は、本発明の一実施形態に係る要求処理を示すフローチャートである。
【図4】図4は、本発明の一実施形態に係る認証処理を示すフローチャートである。
【図5】図5は、本発明の一実施形態に係るアクセス権処理を示すフローチャートである。
【図6】図6は、本発明の一実施形態に係る操作権限処理を示すフローチャートである。
【図7】図7は、本発明の一実施形態に係る詳細な外部認証処理を示すフローチャートである。
【図8A】図8Aは、本発明の一実施形態に係るファイルアクセス要求処理を示すフローチャートである。
【図8B】図8Bは、本発明の一実施形態に係るファイルアクセス要求処理を示すフローチャートである。
【図9A】9Aは、本発明の一実施形態に係るウェブリソース要求処理を示すフローチャートである。
【図9B】図9Bは、本発明の一実施形態に係るウェブリソース要求処理を示すフローチャートである。
【図9C】図9Cは、本発明の一実施形態に係るウェブリソース要求処理を示すフローチャートである。
【図10】図10は、本発明の一実施形態に係る情報検索システムを示す図である。
【図11】図11は、本発明の一実施形態に係るURL修正処理を示すフローチャートである。
【図12】図12は、本発明の一実施形態に係るスクリプト修正処理を示すフローチャートである。
【図13A】図13Aは、本発明の別の実施形態に係るスクリプト修正処理を示すフローチャートである。
【図13B】図13Bは、本発明の別の実施形態に係るスクリプト修正処理を示すフローチャートである。
【図14】図14は、本発明の一実施形態に係るEメール要求処理を示すフローチャートである。
【図15】図15は、本発明の一実施形態に係るメールオペレーション処理を示すフローチャートである。
【図16】図16は、本発明の一実施形態に係る認証処理を示すフローチャートである。
【図17A】図17Aは、本発明のいくつかの実施形態により使用できるコンピュータシステムの一例を示す図である。
【図17B】図17Bは、本発明のいくつかの実施形態により使用できるコンピュータシステムの一例を示す図である。
【図18】図18は、本発明の一実施形態に係るセキュアアプリケーションマネージャのいくつかの実施形態を示すブロック図である。
【図19】図19は、本発明の一実施形態に係るWinsockアプリケーションおよびWindows(登録商標)ソケットレイヤを示すブロック図である。
【図20】図20は、本発明の一実施形態に係るWinsockアプリケーションおよびWindows(登録商標)ソケットレイヤを示す別のブロック図である。
【図21】図21は、本発明の一実施形態に係るセキュアアプリケーションマネージャプロキシとWinsockアプリケーション間のキューを示すブロック図である。
【図22】図22は、本発明の一実施形態に係るインストールパッケージングを示すブロック図である。
【図23】図23は、本発明の一実施形態に係るローカルネットワーク上のクライアントコンピュータのトランスポートドライバインターフェイスおよびアプリケーションを示すブロック図である。
【図24】図24は、本発明の一実施形態に係るファイルシステムネットワーク接続要求を転送するための汎用オペレーティングモードを示すブロック図である。
【図25】図25は、本発明の一実施形態に係るファイルシステムネットワーク接続要求を転送するためのカスタムハンドラを用いたモードを示すブロック図である。
【図26】図26は、本発明の一実施形態に係るネットワーク接続要求を転送するためのフローチャートである。
【図27】図27は、本発明の別の実施形態に係るネットワーク接続要求を転送するためのフローチャートである。
【特許請求の範囲】
【請求項1】
ネットワーク通信方法であって、前記方法が、
ローカルネットワーク上のコンピュータ上でネットワーク接続要求を受信する工程と、
前記コンピュータ上のWindows(登録商標)ソケットレイヤ内に前記ネットワーク接続要求を転送する工程と、
クライアント/サーバプリケーションのクライアントアプリケーションのデータを、前記コンピュータから中間サーバに向けて送信する工程とを有し、
前記受信する工程において、前記ネットワーク接続要求は、前記クライアントアプリケーションにより開始され、前記クライアントアプリケーションは、前記コンピュータ上にあり、前記ネットワーク接続要求は、リモートネットワーク上の宛先を含み、前記クライアント/サーバプリケーションのサーバプリケーションは、前記リモートネットワーク上にあり、
前記転送する工程において、前記ネットワーク接続要求は、前記コンピュータのトランスポートサービスプロバイダを避けて転送され、前記ネットワーク接続要求は、前記リモートネットワーク内の中間サーバに転送され、
前記送信する工程において、前記クライアントアプリケーションのデータは、前記中間サーバから前記サーバプリケーションに向けて送信されるネットワーク通信方法。
【請求項2】
前記Windows(登録商標)ソケットレイヤが、Winsockダイナミックリンクライブラリ、Winsock2ダイナミックリンクライブラリ、アプリケーションプログラムインターフェイス、レイヤドサービスプロバイダ、前記レイヤドサービスプロバイダのためのサービスプロバイダインターフェース、ネームスペースプロバイダ、ネームスペースプロバイダインターフェース、トランスポートサービスプロバイダインターフェース、およびトランスポートサービスプロバイダのうち少なくとも一つを含む請求項1に記載の方法。
【請求項3】
前記Windows(登録商標)ソケットレイヤ内に前記ネットワーク接続要求を転送することが、前記Winsockダイナミックリンクライブラリおよび前記Winsock2ダイナミックリンクライブラリのうち少なくとも一方をフックすることにより、前記ネットワーク接続要求を転送することを含む請求項2に記載の方法。
【請求項4】
前記Windows(登録商標)ソケットレイヤ内に前記ネットワーク接続要求を転送することが、前記ネームスペースプロバイダおよび前記レイヤドサービスプロバイダを用いて前記ネットワーク接続要求を転送することを含む請求項2に記載の方法。
【請求項5】
前記トランスポートサービスプロバイダが、TCP/IPトランスポートサービスプロバイダを含む請求項1に記載の方法。
【請求項6】
前記方法が更に、前記クライアントアプリケーションのデータを前記中間サーバから前記サーバプリケーションに向けて送信することを含む請求項1に記載の方法。
【請求項7】
前記ネームスペースプロバイダが、前記リモートネットワーク上で、ドメインネームサービス検索に利用される請求項4に記載の方法。
【請求項8】
前記レイヤドサービスプロバイダが、前記クライアントアプリケーションのデータの前記ローカルネットワークから前記リモートネットワークへの転送に利用される請求項4に記載の方法。
【請求項9】
前記転送が、前記クライアントアプリケーションの名前、前記クライアントアプリケーションのチェックサム、前記クライアントアプリケーションのバージョン、前記宛先のサーバ、および前記宛先のポートの内の少なくとも一つに基づいて行われる請求項1に記載の方法。
【請求項10】
前記転送が、少なくとも前記クライアントアプリケーションの名前に基づいて行われる請求項9に記載の方法。
【請求項11】
前記転送が、少なくとも前記クライアントアプリケーションのチェックサムに基づいて行われる請求項9に記載の方法。
【請求項12】
前記転送が、少なくとも前記クライアントアプリケーションのバージョンに基づいて行われる請求項9に記載の方法。
【請求項13】
前記転送が、少なくとも前記宛先のサーバに基づいて行われる請求項9に記載の方法。
【請求項14】
前記転送が、少なくとも前記宛先のポートに基づいて行われる請求項9に記載の方法。
【請求項15】
前記転送に先立ち、前記ネットワーク要求は、WinsockダイナミックリンクライブラリおよびWinsock2ダイナミックリンクライブラリの少なくとも一方を介することができる請求項2に記載の方法。
【請求項16】
前記ネットワーク接続要求は、少なくとも前記コンピュータのプロシキを介し、前記リモートネットワーク内の前記中間サーバに転送される請求項1に記載の方法。
【請求項17】
前記クライアントアプリケーションのデータを前記中間サーバに向けて送信する前に、前記クライアントアプリケーションのデータが、前記コンピュータの少なくともローカルアドレスとローカルポートを介して送信される、請求項1に記載の方法。
【請求項18】
前記方法が更に、前記クライアントアプリケーションと前記中間サーバとの間のセキュア接続を示すためビジュアルキューを提供することを含む請求項1に記載の方法。
【請求項19】
前記方法が更に、前記ネームスペースプロバイダおよび前記レイヤドサービスプロバイダを前記コンピュータ上に自動的にインストールすることを含む請求項4に記載の方法。
【請求項20】
前記方法が更に、前記ネームスペースプロバイダおよび前記レイヤドサービスプロバイダを前記コンピュータからに自動的にアンインストールすることを含む請求項4に記載の方法。
【請求項21】
前記方法が、前記リモートネットワークへのセキュアリモートアクセスを可能にする請求項1に記載の方法。
【請求項22】
前記コンピュータと前記中間サーバの間の通信を、セキュア・ソケット・レイヤ(SSL)が暗号化する請求項1に記載の方法。
【請求項23】
前記中間サーバが、前記コンピュータに代わって前記ネットワーク接続要求を行なう請求項1に記載の方法。
【請求項24】
ネットワーク通信方法であって、前記方法が
ローカルネットワーク上のコンピュータ上でネットワーク接続要求を受信する工程と、
前記ネットワーク接続要求を、前記コンピュータ上のトランスポートドライバインターフェイスを用いて転送する工程と、
中間サーバからファイルシステムのデータを前記コンピュータで受信する工程とを有し、
前記受信する工程において、前記ネットワーク接続要求は、リモートネットワーク上のファイルシステムに対して開始され、前記ネットワーク接続要求は、前記ファイルシステムの名前を含んでおり、
前記転送する工程において、前記ネットワーク接続要求は、前記コンピュータ上のトランスポートドライバを避けて転送され、前記ネットワーク接続要求は、前記リモートネットワーク内の前記中間サーバに転送され、
前記受信する工程において、前記ファイルシステムのデータは、前記リモートネットワーク上の前記中間サーバと前記ファイルシステムの間でやりとりされるネットワーク通信方法。
【請求項25】
前記ネットワーク接続要求の転送には更に、ネームスペースプロバイダを使用する請求項24に記載の方法。
【請求項26】
前記トランスポートドライバが、TCP/IPトランスポートドライバを含む請求項24に記載の方法。
【請求項27】
前記転送に先立ち、前記ネットワーク接続要求は、少なくとも一つのトランスポートドライバインターフェースフィルタを通過する請求項24に記載の方法。
【請求項28】
前記方法が更に、前記ファイルシステムのデータを、前記中間サーバと前記ファイルシステムとの間でやりとりすることを含む請求項24に記載の方法。
【請求項29】
前記手転送が、宛先サーバおよび宛先ポートの少なくとも一つに基づいて行なわれる請求項24に記載の方法。
【請求項30】
前記転送が、少なくとも前記宛先サーバに基づいて行なわれる請求項29に記載の方法。
【請求項31】
前記転送が、少なくとも前記宛先ポートに基づいて行なわれる請求項29に記載の方法。
【請求項32】
前記転送することで、ネットワークファイルシステムトラフィックをキャプチャする請求項24に記載の方法。
【請求項33】
前記方法が更に、前記トランスポートドライバインターフェースを前記コンピュータ上に自動的にインストールすることを含む請求項24に記載の方法。
【請求項34】
前記方法が更に、前記トランスポートドライバインターフェースを前記コンピュータから自動的にアンインストールすることを含む請求項33に記載の方法。
【請求項35】
前記方法が、前記リモートネットワークへのセキュアリモートアクセスを可能にする請求項24に記載の方法。
【請求項36】
前記コンピュータと前記中間サーバの間の通信を、セキュア・ソケット・レイヤ(SSL)が暗号化する請求項24に記載の方法。
【請求項37】
前記中間サーバが、前記コンピュータに代わって前記ネットワーク接続要求を行なう請求項24に記載の方法。
【請求項38】
ネットワーク通信のためのコンピュータコードであって、前記コードが、
ローカルネットワーク上のコンピュータ上でのネットワーク接続要求の受信を実行するコードと、
前記コンピュータ上のWindows(登録商標)ソケットレイヤ内への前記ネットワーク接続要求の転送を実行するコードと、
前記コンピュータから中間サーバに向けてのクライアント/サーバプリケーションのクライアントアプリケーションのデータの送信を実行するコードとを含み、
前記受信を実行するコードにおいて、前記ネットワーク接続要求は、前記クライアントアプリケーションにより開始され、前記クライアントアプリケーションは、前記コンピュータ上にあり、前記ネットワーク接続要求は、リモートネットワーク上の宛先を含み、前記クライアント/サーバプリケーションのサーバプリケーションは、前記リモートネットワーク上にあり、
前記転送を実行するコードにおいて、前記ネットワーク接続要求は、前記コンピュータのトランスポートサービスプロバイダを避けて転送され、前記ネットワーク接続要求は、前記リモートネットワーク内の中間サーバに転送され、
前記送信を実行するコードにおいて、前記クライアントアプリケーションのデータは、前記中間サーバから前記サーバプリケーションに向けて送信されるネットワーク通信のためのコンピュータコード。
【請求項39】
ネットワーク通信のためのコンピュータコードであって、前記コードが、
ローカルネットワーク上のコンピュータ上でのネットワーク接続要求の受信を実行するコードと、
前記コンピュータ上のトランスポートドライバインターフェイスを用いた前記ネットワーク接続要求の転送を実行するコードと、
前記中間サーバからの前記ファイルシステムのデータの前記コンピュータでの受信を実行するコードとを含み、
前記受信を実行するコードにおいて、前記ネットワーク接続要求は、リモートネットワーク上のファイルシステムに対して開始され、前記ネットワーク接続要求は、前記ファイルシステムの名前を含んでおり、
前記転送を実行するコードにおいて、前記ネットワーク接続要求は、前記コンピュータ上のトランスポートドライバを避けて転送され、前記ネットワーク接続要求は、前記リモートネットワーク内の前記中間サーバに転送され、
前記受信を実行するコードにおいて、前記ファイルシステムのデータは、前記リモートネットワーク上の前記中間サーバと前記ファイルシステムの間でやりとりされるネットワーク通信のためのコンピュータコード。
【請求項1】
ネットワーク通信方法であって、前記方法が、
ローカルネットワーク上のコンピュータ上でネットワーク接続要求を受信する工程と、
前記コンピュータ上のWindows(登録商標)ソケットレイヤ内に前記ネットワーク接続要求を転送する工程と、
クライアント/サーバプリケーションのクライアントアプリケーションのデータを、前記コンピュータから中間サーバに向けて送信する工程とを有し、
前記受信する工程において、前記ネットワーク接続要求は、前記クライアントアプリケーションにより開始され、前記クライアントアプリケーションは、前記コンピュータ上にあり、前記ネットワーク接続要求は、リモートネットワーク上の宛先を含み、前記クライアント/サーバプリケーションのサーバプリケーションは、前記リモートネットワーク上にあり、
前記転送する工程において、前記ネットワーク接続要求は、前記コンピュータのトランスポートサービスプロバイダを避けて転送され、前記ネットワーク接続要求は、前記リモートネットワーク内の中間サーバに転送され、
前記送信する工程において、前記クライアントアプリケーションのデータは、前記中間サーバから前記サーバプリケーションに向けて送信されるネットワーク通信方法。
【請求項2】
前記Windows(登録商標)ソケットレイヤが、Winsockダイナミックリンクライブラリ、Winsock2ダイナミックリンクライブラリ、アプリケーションプログラムインターフェイス、レイヤドサービスプロバイダ、前記レイヤドサービスプロバイダのためのサービスプロバイダインターフェース、ネームスペースプロバイダ、ネームスペースプロバイダインターフェース、トランスポートサービスプロバイダインターフェース、およびトランスポートサービスプロバイダのうち少なくとも一つを含む請求項1に記載の方法。
【請求項3】
前記Windows(登録商標)ソケットレイヤ内に前記ネットワーク接続要求を転送することが、前記Winsockダイナミックリンクライブラリおよび前記Winsock2ダイナミックリンクライブラリのうち少なくとも一方をフックすることにより、前記ネットワーク接続要求を転送することを含む請求項2に記載の方法。
【請求項4】
前記Windows(登録商標)ソケットレイヤ内に前記ネットワーク接続要求を転送することが、前記ネームスペースプロバイダおよび前記レイヤドサービスプロバイダを用いて前記ネットワーク接続要求を転送することを含む請求項2に記載の方法。
【請求項5】
前記トランスポートサービスプロバイダが、TCP/IPトランスポートサービスプロバイダを含む請求項1に記載の方法。
【請求項6】
前記方法が更に、前記クライアントアプリケーションのデータを前記中間サーバから前記サーバプリケーションに向けて送信することを含む請求項1に記載の方法。
【請求項7】
前記ネームスペースプロバイダが、前記リモートネットワーク上で、ドメインネームサービス検索に利用される請求項4に記載の方法。
【請求項8】
前記レイヤドサービスプロバイダが、前記クライアントアプリケーションのデータの前記ローカルネットワークから前記リモートネットワークへの転送に利用される請求項4に記載の方法。
【請求項9】
前記転送が、前記クライアントアプリケーションの名前、前記クライアントアプリケーションのチェックサム、前記クライアントアプリケーションのバージョン、前記宛先のサーバ、および前記宛先のポートの内の少なくとも一つに基づいて行われる請求項1に記載の方法。
【請求項10】
前記転送が、少なくとも前記クライアントアプリケーションの名前に基づいて行われる請求項9に記載の方法。
【請求項11】
前記転送が、少なくとも前記クライアントアプリケーションのチェックサムに基づいて行われる請求項9に記載の方法。
【請求項12】
前記転送が、少なくとも前記クライアントアプリケーションのバージョンに基づいて行われる請求項9に記載の方法。
【請求項13】
前記転送が、少なくとも前記宛先のサーバに基づいて行われる請求項9に記載の方法。
【請求項14】
前記転送が、少なくとも前記宛先のポートに基づいて行われる請求項9に記載の方法。
【請求項15】
前記転送に先立ち、前記ネットワーク要求は、WinsockダイナミックリンクライブラリおよびWinsock2ダイナミックリンクライブラリの少なくとも一方を介することができる請求項2に記載の方法。
【請求項16】
前記ネットワーク接続要求は、少なくとも前記コンピュータのプロシキを介し、前記リモートネットワーク内の前記中間サーバに転送される請求項1に記載の方法。
【請求項17】
前記クライアントアプリケーションのデータを前記中間サーバに向けて送信する前に、前記クライアントアプリケーションのデータが、前記コンピュータの少なくともローカルアドレスとローカルポートを介して送信される、請求項1に記載の方法。
【請求項18】
前記方法が更に、前記クライアントアプリケーションと前記中間サーバとの間のセキュア接続を示すためビジュアルキューを提供することを含む請求項1に記載の方法。
【請求項19】
前記方法が更に、前記ネームスペースプロバイダおよび前記レイヤドサービスプロバイダを前記コンピュータ上に自動的にインストールすることを含む請求項4に記載の方法。
【請求項20】
前記方法が更に、前記ネームスペースプロバイダおよび前記レイヤドサービスプロバイダを前記コンピュータからに自動的にアンインストールすることを含む請求項4に記載の方法。
【請求項21】
前記方法が、前記リモートネットワークへのセキュアリモートアクセスを可能にする請求項1に記載の方法。
【請求項22】
前記コンピュータと前記中間サーバの間の通信を、セキュア・ソケット・レイヤ(SSL)が暗号化する請求項1に記載の方法。
【請求項23】
前記中間サーバが、前記コンピュータに代わって前記ネットワーク接続要求を行なう請求項1に記載の方法。
【請求項24】
ネットワーク通信方法であって、前記方法が
ローカルネットワーク上のコンピュータ上でネットワーク接続要求を受信する工程と、
前記ネットワーク接続要求を、前記コンピュータ上のトランスポートドライバインターフェイスを用いて転送する工程と、
中間サーバからファイルシステムのデータを前記コンピュータで受信する工程とを有し、
前記受信する工程において、前記ネットワーク接続要求は、リモートネットワーク上のファイルシステムに対して開始され、前記ネットワーク接続要求は、前記ファイルシステムの名前を含んでおり、
前記転送する工程において、前記ネットワーク接続要求は、前記コンピュータ上のトランスポートドライバを避けて転送され、前記ネットワーク接続要求は、前記リモートネットワーク内の前記中間サーバに転送され、
前記受信する工程において、前記ファイルシステムのデータは、前記リモートネットワーク上の前記中間サーバと前記ファイルシステムの間でやりとりされるネットワーク通信方法。
【請求項25】
前記ネットワーク接続要求の転送には更に、ネームスペースプロバイダを使用する請求項24に記載の方法。
【請求項26】
前記トランスポートドライバが、TCP/IPトランスポートドライバを含む請求項24に記載の方法。
【請求項27】
前記転送に先立ち、前記ネットワーク接続要求は、少なくとも一つのトランスポートドライバインターフェースフィルタを通過する請求項24に記載の方法。
【請求項28】
前記方法が更に、前記ファイルシステムのデータを、前記中間サーバと前記ファイルシステムとの間でやりとりすることを含む請求項24に記載の方法。
【請求項29】
前記手転送が、宛先サーバおよび宛先ポートの少なくとも一つに基づいて行なわれる請求項24に記載の方法。
【請求項30】
前記転送が、少なくとも前記宛先サーバに基づいて行なわれる請求項29に記載の方法。
【請求項31】
前記転送が、少なくとも前記宛先ポートに基づいて行なわれる請求項29に記載の方法。
【請求項32】
前記転送することで、ネットワークファイルシステムトラフィックをキャプチャする請求項24に記載の方法。
【請求項33】
前記方法が更に、前記トランスポートドライバインターフェースを前記コンピュータ上に自動的にインストールすることを含む請求項24に記載の方法。
【請求項34】
前記方法が更に、前記トランスポートドライバインターフェースを前記コンピュータから自動的にアンインストールすることを含む請求項33に記載の方法。
【請求項35】
前記方法が、前記リモートネットワークへのセキュアリモートアクセスを可能にする請求項24に記載の方法。
【請求項36】
前記コンピュータと前記中間サーバの間の通信を、セキュア・ソケット・レイヤ(SSL)が暗号化する請求項24に記載の方法。
【請求項37】
前記中間サーバが、前記コンピュータに代わって前記ネットワーク接続要求を行なう請求項24に記載の方法。
【請求項38】
ネットワーク通信のためのコンピュータコードであって、前記コードが、
ローカルネットワーク上のコンピュータ上でのネットワーク接続要求の受信を実行するコードと、
前記コンピュータ上のWindows(登録商標)ソケットレイヤ内への前記ネットワーク接続要求の転送を実行するコードと、
前記コンピュータから中間サーバに向けてのクライアント/サーバプリケーションのクライアントアプリケーションのデータの送信を実行するコードとを含み、
前記受信を実行するコードにおいて、前記ネットワーク接続要求は、前記クライアントアプリケーションにより開始され、前記クライアントアプリケーションは、前記コンピュータ上にあり、前記ネットワーク接続要求は、リモートネットワーク上の宛先を含み、前記クライアント/サーバプリケーションのサーバプリケーションは、前記リモートネットワーク上にあり、
前記転送を実行するコードにおいて、前記ネットワーク接続要求は、前記コンピュータのトランスポートサービスプロバイダを避けて転送され、前記ネットワーク接続要求は、前記リモートネットワーク内の中間サーバに転送され、
前記送信を実行するコードにおいて、前記クライアントアプリケーションのデータは、前記中間サーバから前記サーバプリケーションに向けて送信されるネットワーク通信のためのコンピュータコード。
【請求項39】
ネットワーク通信のためのコンピュータコードであって、前記コードが、
ローカルネットワーク上のコンピュータ上でのネットワーク接続要求の受信を実行するコードと、
前記コンピュータ上のトランスポートドライバインターフェイスを用いた前記ネットワーク接続要求の転送を実行するコードと、
前記中間サーバからの前記ファイルシステムのデータの前記コンピュータでの受信を実行するコードとを含み、
前記受信を実行するコードにおいて、前記ネットワーク接続要求は、リモートネットワーク上のファイルシステムに対して開始され、前記ネットワーク接続要求は、前記ファイルシステムの名前を含んでおり、
前記転送を実行するコードにおいて、前記ネットワーク接続要求は、前記コンピュータ上のトランスポートドライバを避けて転送され、前記ネットワーク接続要求は、前記リモートネットワーク内の前記中間サーバに転送され、
前記受信を実行するコードにおいて、前記ファイルシステムのデータは、前記リモートネットワーク上の前記中間サーバと前記ファイルシステムの間でやりとりされるネットワーク通信のためのコンピュータコード。
【図1A】
【図1B】
【図2A】
【図2B】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9A】
【図9B】
【図9C】
【図10】
【図11】
【図12】
【図13A】
【図13B】
【図14】
【図15】
【図16】
【図17A】
【図17B】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図1B】
【図2A】
【図2B】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9A】
【図9B】
【図9C】
【図10】
【図11】
【図12】
【図13A】
【図13B】
【図14】
【図15】
【図16】
【図17A】
【図17B】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【公表番号】特表2006−526843(P2006−526843A)
【公表日】平成18年11月24日(2006.11.24)
【国際特許分類】
【出願番号】特願2006−509966(P2006−509966)
【出願日】平成16年4月8日(2004.4.8)
【国際出願番号】PCT/US2004/011339
【国際公開番号】WO2004/092905
【国際公開日】平成16年10月28日(2004.10.28)
【出願人】(505350846)ジュニパー ネットワークス, インコーポレイテッド (5)
【Fターム(参考)】
【公表日】平成18年11月24日(2006.11.24)
【国際特許分類】
【出願日】平成16年4月8日(2004.4.8)
【国際出願番号】PCT/US2004/011339
【国際公開番号】WO2004/092905
【国際公開日】平成16年10月28日(2004.10.28)
【出願人】(505350846)ジュニパー ネットワークス, インコーポレイテッド (5)
【Fターム(参考)】
[ Back to top ]