カプセル化通信プロトコルを使用してネットワークコンポーネントをセキュアに横断する持続性および信頼性のあるセッション
本発明は、セッションの持続化および信頼性を提供するため、カプセル化通信プロトコルを使用してネットワークコンポーネントをセキュアに横断することにより、クライアント通信を再確立するシステムおよび方法に関する。複数の第2のプロトコルをカプセル化する第1のプロトコルは、クライアントおよびホストサービス間のセッションの持続化および信頼できる接続を提供するため、第1のプロトコルサービスを介し、ネットワークでの通信に使用される。チケットオーソリティはクライアントに関連する第1および第2のチケットを生成する。第1のチケットはクライアントに提供され、クラインアントはその第1のチケットを、第1のプロトコルサービスとの通信セッションを確立するために使用する。第2のチケットは第1のプロトコルサービスに提供され、第1のプロトコルサービスは第2のチケットを、ホストサービスとの通信セッションを確立するために使用する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概してネットワーク通信に関する。より具体的には、本発明は、セッションの持続化および信頼性を提供するため、カプセル化通信プロトコルを使用してネットワークコンポーネントをセキュアに横断することにより、クライアント通信を再確立するシステムおよび方法に関する。
【背景技術】
【0002】
2台のコンピュータ、例えばクライアントおよびサーバの間のネットワーク上における通信は、様々な周知の通信プロトコルを使用して実施されうる。概して、クライアントはサーバからネットワーク上でコンテンツをダウンロードするためにサーバと通信を行う。例えば、サーバはクライアントによりアクセス可能な1つ以上のアプリケーションをホスティングすることがある。さらに、クライアントは、概してルータまたはファイアウォール等の、サーバからのコンテンツが通過するセキュリティゲートウェイであるプロキシを介してサーバと通信を行うことがある。また、サーバは、そのサーバとの未許可の通信のやりとりを禁止するためファイアウォールを含むことがある。クライアントは、プロキシのセキュリティおよびサーバのファイアウォールを経由してサーバおよびサーバのコンテンツにアクセスする。しかしながら、多くの場合、プロキシを介してサーバまで行き着くネットワーク接続は断絶しやすい。例えば、クライアントとプロキシの間の無線接続は、多くの場合信頼できない。その他、ネットワーク接続が断続的となる場合がある。そのため、エレベーターまたはトンネルに入ると接続が失われ、そのエレベーターまたはトンネルから出ないかぎり回復できない場合がある。
【0003】
クライアントおよびサーバコンピュータの間に確立された通信セッションが異常終了すると、クライアントは概して新しい通信セッションを開始することにより接続を再確立しなければならない。新しい通信セッションを始めるためには、ユーザーが新しい通信セッションに許可されるよう、ユーザーは概して、ログイン/パスワードのペア等の認証証明書をプロキシおよびサーバコンピュータへ再伝送しなければならない。この多数の通信セッションにわたるユーザーの認証証明書の再伝送は、そのユーザーの認証証明書を潜在的攻撃者に対し繰り返し露呈し、それによって認証証明書のセキュリティレベルを低下させる。さらに、攻撃者がプロキシのセキュリティまたはサーバのファイアウォールをバイパスした場合、その攻撃者は追加セキュリティに遭遇することなしにサーバのコンテンツにアクセスすることができる。また、ユーザーに認証証明書を再入力させることは、多くの場合、ユーザーにフラストレーションおよび不便さをもたらす時間のかかるプロセスである。
【0004】
現在の多くのプロトコルを使用してネットワーク接続で通信を行う際、ネットワーク接続が中断した場合にはデータパケットが失われる。例えば、標準的なTCPネットワーク接続を介して通信を行う場合、データバッファは概して接続の中断とともに消去される。そのため、ネットワーク接続が回復すると、サーバ上のユーザーセッションのようなネットワーク化アプリケーションは中断前の状態から再開することができない。概してエラーメッセージが表示され、ユーザーに不便さに対するフラストレーションを与えることになる。さらに、多くのプロトコルを使用するネットワーク上での通信では、トランスポート接続の再確立を必要とすることが多い。例えば、HTTPを単独でまたはプロキシプロトコルと併せて使用し、標準的なTCP接続でウェブサイトを閲覧するには、各リソースに対する新しいHTTP接続に加えて、以前のTCP/プロキシプロトコル接続を閉じて、各リソースに対する新しいTCP/プロキシプロトコル接続を開く必要がある。
【0005】
従って、クライアントの認証証明書の再伝送を繰り返す必要がなく、また未許可のユーザーからのサーバ保護を高めながら、クライアントコンピュータとサーバコンピュータの間に通信セッションを再確立するための技術を提供することが望ましい。多数のネットワークコンポーネントをセキュアに横断するため、認証証明書の再伝送を繰り返す必要なくクライアントコンピュータとサーバコンピュータの間に通信セッションを再確立する、より高度なシステムおよび方法が必要とされる。
【発明の開示】
【課題を解決するための手段】
【0006】
本発明は、クライアントをホストサービスとの持続的で信頼できる接続に再接続するためのシステムおよび方法に関し、その接続はネットワークコンポーネントをセキュアに横断する。クライアントの再接続は、クライアントのホストサービスへの接続の再確立と、クライアントとホストサービスの間にある1つ以上の接続の再認証を含む、クライアントのユーザーのホストサービスに対する再認証を含む。ホストサービスへの持続的で信頼できる接続は、クライアントを代表する1つ以上の第1のプロトコルサービスにより維持される。第1のプロトコルサービスは、クライアントとホストサービスの間で通信されるデータがバッファリングされ、クライアントとホストサービスの間にあるネットワーク接続におけるいかなる中断の間も維持されることを確実にする。ネットワーク接続における一時的な中断は、例えば、モバイルクライアント等のクライアントが同じネットワーク内の異なるアクセスポイント間でローミングを行う際、またはクライアントがネットワークを(例えば、有線ネットワークから無線ネットワークへ)切り替える際に起こりうる。
【0007】
ネットワーク中断の間バッファリングされたデータを維持することに加え、第1のプロトコルサービスは、クライアントの第1のプロトコルサービスへの接続を再確立する際に、ホストサービスに対しクライアントを再認証する。これはクライアントのユーザーがそのホストサービスとの接続を再確立するために認証証明書を再入力するのを防止する。さらに、クライアントとホストサービスの間にある多数の接続のそれぞれは、ホストサービスへのアクセスにおいて追加セキュリティ保護を提供するために、例えばプロキシとして作用する第1のプロトコルサービスを介して再認証される。再認証後、第1のプロトコルサービスはクライアントの接続ホストサービスに再度リンクする。要約すると、本発明は、サーバに対するネットワークコンポーネントをセキュアに横断するため、またユーザーが認証証明書を再入力することなく、クライアントとホストサービスの間にあるネットワーク接続の再確立を提供するものである。
【0008】
一局面において、本発明はクライアントとホストサービスを再接続するための方法に関する。前記方法は、クライアントと第1のプロトコルサービスの間にある第1の接続および第1のプロトコルサービスとホストサービスの間にある第2の接続を介し、クライアントおよびホストサービスの間に通信セッションを提供するステップを含む。前記方法は、第1の接続および第2の接続のうち一方における中断を検出し、第1の接続および第2の接続のうちもう一方を維持するステップをさらに含む。前記方法の別のステップにおいて、第1のプロトコルサービスは第1のチケットおよび第2のチケットを得て、中断した接続を再確立するために第1のチケットを有効にする。第1のプロトコルサービスは維持された接続の使用を継続するために第2のチケットを有効にし、再確立された接続を維持された接続にリンクする。
【0009】
一実施態様において、前記方法は中断した接続において、中断の間、通信セッションを維持するステップを含む。別の実施態様において、前記方法は前記第1のプロトコルサービスおよびチケットオーソリティのうち少なくとも1つによって、前記第1のチケットおよび前記第2のチケットのうちいずれか1つを生成するステップをさらに含む。前記方法は、前記チケットオーソリティによって、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを有効にするステップを含んでよい。
【0010】
別の実施態様において、前記方法は、ウェブサーバに対しクライアントを認証するステップと、ウェブサーバによって、前記第1のチケットを前記クライアントへ伝送するステップとをさらに含む。前記方法は、前記ホストサービスによって、通信セッションの確立時に前記クライアントを認証するステップをさらに含んでよい。一実施態様において、前記方法は、前記クライアントによって、前記第1のチケットを前記第1のプロトコルサービスへ伝送するステップを含む。
【0011】
さらなる実施態様において、前記第1のプロトコルサービスはプロキシサーバを含む。別の実施態様において、前記第1のプロトコルサービスはセキュリティゲートウェイを含む。前記方法は、第2のプロトコルをカプセル化する第1のプロトコルを使用して通信を行う前記クライアントおよび前記第1のプロトコルサービスと、前記第2のプロトコルを使用して通信を行う前記第1のプロトコルサービスおよび前記ホストサービスとをさらに含んでよい。
【0012】
別の実施態様において、前記第1のチケットは前記第1の接続に有効であり、前記第2のチケットは前記第2の接続に有効である。任意で、前記第2のチケットは、前記第1のチケットが有効にされるまで使用不可能であってよい。一実施態様において、前記再確立された接続は、前記第1のチケットおよび前記第2のチケットが有効にされた後、前記維持された接続にリンクされる。
【0013】
さらなる実施態様において、前記第1の接続および前記第2の接続のうちいずれかまたは両方が、中間ノードおよび1つ以上の第1のプロトコルサービスのうちいずれか1つを介して接続された複数の接続を含んでよい。前記方法は、前記複数の接続のうち少なくとも1つのために第3のチケットを生成するステップをさらに含んでよい。前記第3のチケットは、前記複数の接続のうち少なくとも1つに有効であってよい
別の局面において、本発明はクライアントをホストサービスに再接続するためのシステムに関する。前記システムは、クライアントおよび第1のプロトコルサービスを含む。前記クライアントは、第1の接続を介しホストサービスとの通信セッションを確立する。前記第1のプロトコルサービスは、前記クライアントとの前記第1の接続および前記ホストサービスとの第2の接続を確立する。前記第1のプロトコルサービスは、前記第1の接続および前記第2の接続のうち少なくとも1つを含む接続を維持する。さらに、前記第1のプロトコルサービスは、前記第1の接続および前記第2の接続のうち一方において中断した接続を再確立するために第1のチケットを有効にし、前記第1の接続および前記第2の接続のうちもう一方を使用するために第2のチケットを有効にする。前記システムは、前記再確立された接続を前記維持された接続にリンクする前記第1のプロトコルサービスをさらに含む。
【0014】
一実施態様において、前記システムは前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを生成するチケットオーソリティをさらに含む。別の実施態様において、前記第1のプロトコルサービスは、前記中断した接続において、中断の間、前記通信セッションを維持する。さらなる実施態様において、前記第1のプロトコルサービスは、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを生成する。前記システムは、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを有効にする前記チケットオーソリティを含んでよい。
【0015】
別の実施態様において、前記システムはウェブサーバをさらに含む。前記ウェブサーバは前記クライアントを認証し、一実施態様において、前記第1のチケットを前記クライアントに伝送する。さらなる実施態様において、前記クライアントは前記第1のチケットを前記第1のプロトコルサービスに伝送する。さらに別の実施態様において、前記ホストサービスは前記通信セッションの確立時に前記クライアントを認証する。
【0016】
一実施態様において、前記第1のプロトコルサービスはプロキシサーバを含み、別の実施態様において、前記第1のプロトコルサービスはセキュリティゲートウェイを含む。前記システムは、第2のプロトコルをカプセル化する第1のプロトコルを使用して通信を行う前記クライアントおよび前記第1のプロトコルサービスと、前記第2のプロトコルを使用して通信を行う前記第1のプロトコルサービスおよび前記ホストサービスとを含んでよい。
【0017】
さらなる実施態様において、前記第1のチケットは前記第1の接続に有効であり、前記第2のチケットは前記第2の接続に有効である。また、前記第2のチケットは、前記第1のチケットが有効にされるまで使用不可能であってよい。一実施態様において、前記第1のプロトコルサービスは、前記第1のチケットおよび前記第2のチケットが有効にされた後、前記再確立された接続を前記維持された接続にリンクする。
【0018】
さらなる実施態様において、前記第1の接続および前記第2の接続のうちいずれか1つは、中間ノードおよび1つ以上の第1のプロトコルサービスのうちいずれか1つを介して接続された複数の接続を含む。前記システムは、前記複数の接続のうち少なくとも1つのために第3のチケットの生成をさらに含み、一実施態様において、前記第3のチケットは、前記複数の接続のうち少なくとも1つに対し有効である。
【0019】
付随する図面および以下の説明において、本発明の様々な実施態様を詳しく説明する。
【発明を実施するための最良の形態】
【0020】
以下、本発明の特定の実施態様について説明する。しかし、本発明は、これらの実施態様に限定されるものではなく、本願明細書に明白に開示した内容への追加および変更が本発明の範囲に明白に含まれることを意図していることに留意されたい。さらに、本願明細書に開示される種々の実施態様の特徴は排他的でなく、本願明細書に組み合わせまたは置き換えが明示されていなくても、本発明の精神と範囲から逸脱することなくそのような組み合わせおよび置き換えが存在しうると理解されたい。
【0021】
本発明の具体例は、クライアントとホストサービスの間に確実で持続的な接続を確立し、接続において中断がある場合に接続を再接続するシステムおよび方法を提供する。クライアントはクライアントと第1のプロトコルサービスの間の第1の接続および第1のプロトコルサービスとホストサービスの間の第2の接続を介してホストサービスと通信セッションを確立する。クライアントは第1のプロトコルを使用して第1のプロトコルサービスと通信を行い、第1のプロトコルサービスは第2のプロトコルを使用してホストサービスと通信を行う。第2のプロトコルはクライアントから第1のプロトコル通信内でカプセル化された第1のプロトコルへの通信を行う。第1の接続または第2の接続いずれかにおいて中断が検出された場合、第1のプロトコルサービスは、中断されていない接続を維持しながら、中断された接続を再確立する。中断された接続は、クライアントをホストサービスに再接続するため、維持された接続とリンクされる。
【0022】
さらに、本発明の具体例は、クライアントのホストサービスへの接続確立および再接続においてネットワークコンポーネントをセキュアに横断するシステムおよび方法を提供する。第1のプロトコルサービスはクライアントとホストサービスの間のプロキシとして作用することができ、セキュリティゲートウェイを含んでもよい。第1のプロトコルサービスはチケットオーソリティより第1のチケットおよび第2のチケットを得る。第1のチケットはクライアントと第1のプロトコルサービスの間の接続を有効にするために使用され、第2のチケットは第1のプロトコルサービスとホストサービスの間の接続を有効にするために使用される。第2のチケットは、第1のチケットが有効にされるまで使用不可能であってよい。第1のプロトコルサービスは第1のチケットを、第1の接続の使用の再確立または維持において有効にし、第2のチケットを、第2の接続の使用の再確立および維持において有効にする。第1および第2のチケットが有効にされ接続が再確立されると、第1のプロトコルサービスは、クライアントのホストサービスとの通信セッションを維持するため、第1の接続を第2の接続にリンクする。追加のチケットが生成され、ユーザーの追加通信、またはクライアントとホストサービスの間の「ホップ」を再確立または維持してもよい。このようにして、クライアントとホストサービスの間の各通信または「ホップ」は有効にされる。
【0023】
図1Aを参照すると、概して本発明は、ネットワーク通信に関し、特にクライアントへのホストサービスとの信頼できる接続の提供に有用となりうる。概観すると、ネットワーク通信のシステム100は、ネットワーク104上で第1のプロトコルサービス112(例えば、第2のコンピュータ)と通信を行うクライアント108(例えば、第1のコンピュータ)を含む。またシステム100は、ホストノード188上にあり、第1のプロトコルサービス112と通信を行い、第1のプロトコル112を経由してネットワーク104上でクライアント108と通信を行う複数のホストサービス116a乃至116n(例えば、第3のコンピュータ)も含む。あるいは、本発明の別の実施態様では、図1Bを参照すると、第1のプロトコルサービス112およびホストサービス116a乃至116nは、独立したコンピュータとして使用されるのではなく、むしろ図1Aのように、例えばホストノード118aのような同じコンピュータに組み込まれる。図1Bにおいて、ホストサービス116a乃至116nは、ネットワーク104’上で第1のプロトコルサービス112と通信を行う。システム100は、1つ、2つ、または多数のホストノード118a乃至118nを含むことができる。
【0024】
一実施態様において、図1Bに示すように、ネットワーク104および104’は独立したネットワークである。図1Aに示すように、ネットワーク104および104’は同じネットワーク104とすることができる。一実施態様では、ネットワーク104および/またはネットワーク104’は、例えば、会社のイントラネットのようなローカルエリアネットワーク(LAN)または、例えば、インターネットまたはワールドワイドウェブのようなワイドエリアネットワーク(WAN)である。クライアント108、第1のプロトコルサービス112、ホストサービス116a乃至116n、および/またはホストノード118a乃至118nは、これらに限定されないが、標準電話回線、LANまたはWANのリンク(例えば、802.11、T1、T3、56kb、X.25)、ブロードバンド接続(例えば、ISDN、Frame Relay、ATM)、無線接続、あるいはこれらのいずれかまたはすべてを組み合わせたものなど、様々な接続を介してネットワーク104および/またはネットワーク104’に接続することができる。
【0025】
クライアント108は第1のプロトコルサービス112とクライアント‐第1のプロトコルサービス間通信チャネル135上で通信を行っており、またクライアント‐ウェブサーバ間通信チャネル140上でウェブサーバ120とも通信を行っている。第1のプロトコルサービス112は第1のプロトコルサービス‐オーソリティ間通信チャネル145でチケットオーソリティ136と通信を行っており、ウェブサーバ120はウェブサーバ‐オーソリティ間通信チャネル150上でチケットオーソリティ136と通信を行っている。第1のプロトコルサービス112は第1のプロトコルサービス‐サーバ間通信チャネル124a乃至124n上でホストノード118とも通信を行っている。別の実施態様において、ウェブサーバ120はエージェント‐サーバ間通信チャネル155上でホストノード118と通信を行うことができる。同様に、ホストノード118はチケット‐サーバ間通信チャネル157上でチケットオーソリティ136と通信を行うことができる。一実施態様において、それぞれの通信チャネル124a乃至124n、135、140、144、150、155、157は、ネットワーク104上に確立される。
【0026】
通信チャネル124a乃至124n、135、140、144、150、155、157の実施例は、標準電話回線、LANまたはWANのリンク(例えば、T1、T3、56kb、X.25)、ブロードバンド接続(ISDN、Frame Relay、ATM)、および無線接続を含む。通信チャネル124a乃至124n、135、140、144、150、155、157上での接続は、様々な通信プロトコル(例えば、HTTP、HTTPS、TCP/IP、IPX、SPX、NetBIOS、イーサネット(登録商標)、RS232、メッセージングアプリケーションプログラミングインターフェイス(MAPI)プロトコル、リアルタイムストリーミングプロトコル(RTSP)、ユーザーデータグラムプロトコルスキーム用リアルタイムストリーミングプロトコル(RTSPU)、RealNetworks社(Seattle、WA)製のProgressive Networks Multimedia(PNM)プロトコル、マニュファクチャリングメッセージスペシフィケーション(manufacturing message specification、MMS)プロトコル、および直接非同期接続等)を使用して確立される。
【0027】
別の局面において、図1Aはコンテンツを渡してもらうための通信システム100の実施態様のブロック図を示す。一実施態様において、第1のプロトコルサービス112はプロキシ115を備え、システム100はウェブサーバ120およびチケットオーソリティ136を含む。システム100は、ホストノード118へ/からの未許可の通信を禁止する2つのファイアウォール160、161も含む。ファイアウォール160、161の間のネットワークは多くの場合「非武装地帯」(DMZ)130と称される。一実施態様において、DMZ130はプロキシ115およびウェブサーバ120を備えるチケットプロトコルサービス112を含む。
【0028】
DMZ130はホストサービス116a乃至116nを未許可の個人によりアクセス可能なシステム100の構成要素(例えば、第1のプロトコルサービス112)から分離する。上述のように、DMZ130は未許可の通信を禁止する2つのファイアウォール160、161で線引きされている。第1のファイアウォール160および第2のファイアウォール161はそれぞれポリシールール一式を適用し、どのメッセージがDMZ130を横断しうるか判断する。一実施態様において、第1のファイアウォール160および第2のファイアウォール161は同じポリシールール一式を適用する。あるいは、第1のファイアウォール160および第2のファイアウォール161は、異なるポリシールール一式を適用してもよい。各ファイアウォール160、161は、ルータ、コンピュータ、またはその他任意のネットワーク制御装置であってよい。別の実施態様において、システム100はファイアウォール160、161のいずれか1つを含むか、またはファイアウォール160、161いずれも含まない。別の実施態様において、ファイアウォール160、161のうちいずれかがホストノード118上に配置されている。別の実施態様(図示なし)において、ファイアウォール160、161のうち1つ以上が中間ノードに配置されている。
【0029】
一実施態様において、第1のプロトコルサービス112は、メッセージがクライアント‐第1のプロトコルサービス間通信チャネル135上で通過すべきセキュリティゲートウェイを備えるプロキシ115を含む。一実施態様において、ネットワークファイアウォール160は、クライアント‐第1のプロトコルサービス間通信チャネル135からの、その宛先として第1のプロトコルサービス112を持たないいかなる着信メッセージも拒否する。同様に、ネットワークファイアウォール160は、その発信元が第1のプロトコルサービス112でない限り、クライアント‐第1のプロトコルサービス間通信チャネル135へのいかなる送信メッセージも拒否する。第1のプロトコルサービス112のプロキシ115として図示されているが、セキュリティゲートウェイは代替としてルータ、ファイアウォール、中継器、または必要なセキュア性を提供できる任意のネットワークコンポーネントであってよい。別の実施態様において、プロキシ115は第1のプロトコルサービス112の同じコンピュータまたは異なるコンピュータ上で動作できる第1のプロトコルサービス112から分離したネットワークコンポーネントである。例えば、図1Bにおいて、プロキシ115は第1のプロトコルサービス112から分離されている。プロキシ115はウェブサーバ120とともにDMZ130内にある。第1のプロトコルサービス112の多数の例がホストノード118a乃至118nのそれぞれにおいて動作している。各第1のプロトコルサービス112は通信チャネル135上でプロキシ115と通信を行い、これがクライアント‐第1のプロトコルサービス間通信チャネル135である。この場合、プロキシ115の要素はセキュアにクライアント108と第1のプロトコルサービス112の間の通信を通過するための中間段階である。
【0030】
ネットワーク104は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、またはインターネットやワールドワイドウェブ(すなわちウェブ)等のネットワークのネットワークであってよい。各通信チャネル124a乃至124n、135、140、145、150、155、157は、それぞれ異なるネットワークの一部であってよい。例えば、クライアント‐第1プロトコルサービス間通信チャネル135は第1のネットワーク(例えば、ワールドワイドウェブ)に属してよく、クライアント‐ウェブサーバ間通信チャネル140は第2のネットワーク(例えば、保護されたエクストラネットまたは仮想プライベートネットワーク(VPN))に属してよい。別の実施態様において、ネットワーク104はサーバファーム169と同様にDMZ230におよび、全体にわたり同じ通信プロトコルが使用される。同じ実施態様において、ファイアウォール160が第1のプロトコルサービス112およびウェブサーバ120をホストノード118およびチケットオーソリティ136から分離しない。
【0031】
通信チャネル124a乃至124n、135、140、144、150、155、157の実施例は、標準電話回線、LANまたはWANのリンク(例えば、T1、T3、56kb、X.25)、ブロードバンド接続(ISDN、Frame Relay、ATM)、および無線接続を含む。通信チャネル124a乃至124n、135、140、144、150、155、157上での接続は、様々な通信プロトコル(例えば、HTTP、HTTPS、TCP/IP、IPX、SPX、NetBIOS、イーサネット(登録商標)、RS232、メッセージングアプリケーションプログラミングインターフェイス(MAPI)プロトコル、リアルタイムストリーミングプロトコル(RTSP)、ユーザーデータグラムプロトコルスキーム用リアルタイムストリーミングプロトコル(RTSPU)、RealNetworks社(Seattle、WA)製のProgressive Networks Multimedia(PNM)プロトコル、マニュファクチャリングメッセージスペシフィケーション(manufacturing message specification、MMS)プロトコル、および直接非同期接続等)を使用して確立されることができる。
【0032】
クライアント108は、任意のワークステーション、デスクトップコンピュータ、ラップトップ、ハンドヘルドコンピュータ、携帯電話、スマート端末またはダム端末、ネットワークコンピュータ、無線機器、情報家電、ミニコンピュータ、大型汎用コンピュータ、または通信が可能で、本願明細書に開示した動作を行うには十分なプロセッサ能力とメモリ容量を有する他の形態のコンピュータまたはテレコミュニケーション装置とすることができる。さらに、クライアント108は、ローカルネットワーク104上のローカルデスクトップクライアントであってよく、または分離したネットワーク104’であってもよい。クライアント108は、例えば視覚的表示装置(例えば、コンピュータ用モニタ)、データ入力装置(例えば、キーボード)、持続的および/または揮発性記憶装置(例えば、コンピュータメモリ)、プロセッサ、およびマウスを含むことができる。クライアント108にサポートされるオペレーティングシステムは、Microsoft社(Redmond、Washington)のオペレーティングシステムであるWINDOWS(登録商標)シリーズのいずれか、Macintoshオペレーティングシステム、Java(登録商標)OS、および多種にわたるUNIX(登録商標)(例えばSolaris、SunOS、Linux、HP−UX、A/IYおよびBSDベースのディストリビューション)、または本願明細書に記載の動作の実行においてクライアント108をサポート可能なその他任意のオペレーティングシステムを含むことができる。
【0033】
一実施態様において、クライアント108は、ウェブに接続するためにMicrosoft社(Redmond、Washington)製のINTERNET EXPLORERのようなウェブブラウザ162を含む。さらなる実施態様において、ウェブブラウザ162はウェブサーバ120に対するセキュアなクライアント‐ウェブサーバ間通信チャネル140を確立するため、既存のセキュアソケットレイヤー(SSL)サポートを使用する。SSLは、Netscape Communication社(Mountain View、California)が開発し、インターネット技術特別調査委員会(IETF)が広めた現在の標準である。
【0034】
一部の実施態様においては、図1Aおよび1Bに示すように、クライアントエージェント128がクライアント108内に含まれる。クライアントエージェント128は、クライアント‐第1のプロトコルサービス通信チャネル135上でホストサービス116a乃至116nとの通信を確立し交信を行うために使用されてよい。クライアントエージェント128は、例えばソフトウェアプログラムおよび/または例えば、ASICまたはFPGAなどのようなハードウェア装置として使用することができる。クライアントエージェント128は、あらゆるタイプのプロトコルを使用することができ、それには、例えば、HTTPクライアントエージェント、FTPクライアントエージェント、Oscarクライアントエージェント、Telnetクライアントエージェントが挙げられる。一実施態様において、クライアントエージェント128はCitirix Systems社(Fort Lauderdale、Florida)製のICAクライアントであり、これを以下ICAクライアント128と称する。クライアントエージェント128の他の実施態様は、Microsoft社(Redmond、Washingotn)製のRDPクライアント、従来型のクライアントサーバアプリケーションにおけるデータ入力クライアント、Active XコントロールまたはJava(登録商標)アプレットを含む。一部の実施態様において、クライアントエージェント128は、それ自体が第1のプロトコルを使用して通信を行うよう構成される。一部の実施態様では(図示せず)、クライアント108は、複数のクライアントエージェント128a乃至128nを含み、それぞれがホストサービス116a乃至116nとそれぞれ通信を行う。さらに、ホストサービス116a乃至116n上で実行するアプリケーションのアウトプットは、例えばクライアントエージェント128またはウェブブラウザ162を介してクライアント108に表示される。
【0035】
別の実施態様において、スタンドアロンのクライアントエージェントは、第1のプロトコルを使用してクライアント108が通信できるように構成される。スタンドアロンのクライアントエージェントは、クライアント108内に組み込むか、または代わりに、スタンドアロンのクライアントエージェントをクライアント108から独立させることができる。スタンドアロンのクライアントエージェントは、例えば、ローカルホストのプロキシである。一般に、スタンドアロンのクライアントエージェントは、クライアントエージェント128に関する本願明細書に開示された機能のいずれかを実行することができる。
【0036】
同様に、図1Aを参照して、第1のプロトコルサービス112とホストサービス116a乃至116nのそれぞれは、通信が可能で本願明細書に開示した動作を行うのに十分なプロセッサ能力とメモリ容量を有する、任意のコンピュータ上で提供されることができる。あるいは、例えば図1Bのようにホストノード118a乃至118nのいずれかのような、第1のプロトコルサービス112およびホストサービス116a乃至116nの機能性が同じコンピュータに組み込まれている場合、第1のプロトコルサービス112および/またはホストサービス116a乃至116nは汎用コンピュータおよび/または、例えば、ASICまたはFPGAのような特殊用途向けハードウェア装置上で実行されるソフトウェアプログラムとしてとして使用することができる。
【0037】
クライアント108と同様に、ホストノード118a乃至118nのそれぞれは上述した通信が可能で本願明細書に開示した動作を行うのに十分なプロセッサ能力とメモリ容量を有する任意のコンピュータ(例えばパーソナルコンピュータ)であってよい。ホストノード118a乃至118nのそれぞれは、様々な通信プロトコル(例えばICA、HTTP、TCP/IPおよびIPX)、SPX、NetBIOS、イーサネット(登録商標)、RS232、直接非同期接続を使用して通信チャネル124a乃至124n上に通信を確立することができる。
【0038】
一実施態様において、ホストサービス116a乃至116nのそれぞれは、クライアント108に対して遠隔で利用可能な1つ以上のアプリケーションプログラムをホストする。クライアント108に対して利用可能にされたアプリケーションを、公開されたアプリケーションと称する。1つまたは複数のホストサービス116a乃至116nが同じアプリケーションプログラムをホストすることができる。このようなアプリケーションの例には、MICROSOFT WORDなどのワード処理プログラム、およびMICROSOFT EXCELなどの表計算プログラムなどが挙げられ、そのどちらもMicrosoft社(Redmond、Washingotn)から入手可能である。一部またはすべてのホストサービス116a乃至116nがホスト可能な他のアプリケーションプログラムの例には、財務報告プログラム、顧客登録プログラム、技術的なサポート情報を提供するプログラム、顧客データベースアプリケーション、およびアプリケーションの設定マネージャが挙げられる。さらに、一実施態様では、ホストサービス116a乃至116nのうち1つ以上は、ストリーミングオーディオおよび/またはストリーミングビデオをクライアント108に提供するオーディオ/ビデオストリーミングサーバである。別の実施態様では、ホストサービス116a乃至116nは、一部/すべてのファイルタイプをクライアント108に提供するファイルサーバを備える。一実施態様では、ホストサービス116a乃至116nは、Citrix Systems社(Fort Lauderale、Florida)製のICAまたはMicrosoft社(Redmond、Washington)製のRDPのようなプレゼンテーションプロトコルを使用して、クライアント108と通信を行うことができる。
【0039】
さらなる実施態様において、ホストノード118はサーバファーム169または単一エンティティとして管理される1つ以上のサーバの論理グループであるサーバネットワークの一部である。一実施態様において、サーバファーム169は多数のホストノード118a乃至118n(概して118)を含む。図1Bに示される形態は3つのホストノード118a乃至118nを有しているが、サーバファーム169はホストノード118またはサーバをいくつでも有することができる。他の実施態様において、サーバファーム169は、企業イントラネット、仮想プライベートネットワーク(VPN)、またはセキュアなエクストラネット等、未許可の個人によるアクセス不可能な、保護されたネットワークである。また、サーバファーム169を構成するサーバは、上記プロトコルのいずれかを使用して、上述したネットワーク(例えばWAN、LAN)のいずれかで通信を行うことができる。
【0040】
図1Aに示されるチケットオーソリティ136は、サーバファーム169の一部であり、クライアント108に対して認証を行うために1つ以上のチケットを発行する。特に、チケットオーソリティ136は、認証証明書に基づき、1つの通信チャネル(すなわち、クライアント‐ウェブサーバ間通信チャネル140)上でクライアント108の認証を可能にする。チケットオーソリティ136はさらに、その他の通信チャネルにおいて繰り返し認証証明書を提供することなく、クライアント108が別の通信チャネル(すなわち、クライアント‐第1のプロトコルサービス通信チャネル135)上で認証されることを可能にする。
【0041】
一実施態様において、チケットオーソリティ136はスタンドアロンのネットワークコンポーネントである。他の実施態様において、モジュールチケットオーソリティ136は1つ以上のホストノード118にあるソフトウェアモジュールである。例えば、図1Bに示されるように、ホストノード118a乃至118nのそれぞれに対しチケットオーソリティ136があってよい。この実施態様において、ウェブサーバ120は、エージェント‐サーバ間通信チャネル155上でチケットオーソリティ136および/またはホストノード118と通信を行うことができる。別の実施態様において、チケットオーソリティ136はホストノード118a乃至118nのいずれからも分離された中間ノードにあってよい。
【0042】
一実施態様において、チケットオーソリティ136は第1のチケットおよび第2のチケットを生成する。一部の実施態様において、チケットはいずれもその場限りのものである。さらなる実施態様において、チケットは適切に乱数度をシードされた暗号化乱数発生器を使用して生成される。第1のチケットはクライアント108に伝送され、クライアント108と第1のプロトコルサービス112の間に第1の通信セッションを確立するために使用される。第2のチケットは第1のプロトコルサービス112に伝送され、第1のプロトコルサービス112とホストノード118の間に第2の通信セッションを確立するために使用される。
【0043】
一実施態様において、ウェブサーバ120はウェブページをクライアント108に配信する。ウェブサーバ120は、任意のパーソナルコンピュータ(例えば、Macintoshコンピュータ、Intel社(Santa Clara、California)製のIntelマイクロプロセッサを搭載したパーソナルコンピュータ、Advanced Micro Devices社(Sunnyvale、California)製のAMDを搭載したパーソナルコンピュータ等)、Windows(登録商標)ベースの端末、ネットワークコンピュータ、ワイヤレス機器(例えば携帯電話)、情報家電、RISC Power PC、X−device、ワークステーション、ミニコンピュータ、大型汎用コンピュータ、携帯情報端末、またはクライアント108とのセキュアなクライアント‐ウェブサーバ間通信チャネル140を確立できるその他の通信機器であってよい。
【0044】
別の実施態様において、ウェブサーバ120は企業情報ポータル(Enterprise Information Portal)とも称される企業内ポータルをクライアント108に提供する。企業内ポータルは、情報を組織化しより効率的に使用するための管理ツールを提供しながら、ユーザーにアプリケーション、データおよびコンテンツを情報集約し、個人化し、供給する、会社のウェブサイトである。他の実施態様において、ウェブサーバ120は、ウェブポータルまたはインターネットポータルをクライアント108に提供する。ウェブポータルは、企業ポータルと同様であるが、概して業務用の情報は含まない。
【0045】
一実施態様において、クライアント108のユーザーは、ウェブサーバ120に対しユーザーを認証するためにウェブブラウザ162を使用する。一実施態様において、クライアント108はログインおよびパスワード情報等のユーザー認証証明書をウェブサーバ120へ伝送する。ウェブサーバ120は、ユーザーがサーバネットワーク169にアクセスできることを検証する。
【0046】
さらなる実施態様において、ウェブブラウザ162は、セキュアなクライアント‐ウェブサーバ間通信チャネル140を確立するためにSSLを使用する。ウェブブラウザ162は、Terisa Systems社(Los Altos、CA)製のセキュアハイパーテキスト転送プロトコル(SHTTP)、SSL上のHTTP(HTTPS)、Microsoft社(Redmond、Washington)製のプライベートコミュニケーションテクノロジー(PCT)、およびインターネット技術特別調査委員会(IETF)が広めたトランスポートレベルセキュリティ(TLS)標準等であるがこれらに限定されないその他のセキュリティプロトコルを使用し、クライアント‐ウェブサーバ通信間チャネル140上で代替的にウェブサーバ120に接続することができる。一実施態様において、ウェブサーバ120は、上述のように、クライアント108がアプリケーションまたはサーバデスクトップを、例えば遠隔でクライアント108上に表示されるよう要求できるようにする、ユーザーの検証時にウェブポータルまたは企業ポータルをクライアント108へ伝送する。
【0047】
クライアント‐ウェブサーバ間通信チャネル140は、任意のセキュアな通信チャネルである。一部の実施態様において、チャネル140上での通信は暗号化される。これらの実施態様のいくつかにおいて、クライアント108とウェブサーバ120は、ハイパーテキスト転送プロトコル(HTTPS)のセキュアソケットレイヤー(SSL)を使用して通信を行うことができる。あるいは、クライアント108とウェブサーバ120は、通信を保護するため、対称的暗号化技術等、その他の暗号化技術を使用してもよい。
【0048】
さらに、一実施態様において、クライアント‐第1のプロトコルサービス間通信チャネル135は、例えば、Citrix Systems社(Fort Lauderdale、Florida)製インディペンデントコンピューティングアーキテクチャ(ICA)プロトコル等のプレゼンテーションサービスプロトコルを使用することによって確立できる。ICAは、TCP/IP、IPX/SPX、NetBEUI等の業界標準ネットワークプロトコル上で、ISDN、Frame Relay、および非同期転送モード(ATM)等の業界標準トランスポートプロトコルを使用して実行するために設計された汎用プレゼンテーションサービスプロトコルである。ICAプロトコルは、データを交換するためのコマンドを発行するためにアプリケーション層コードが使用するセッション指向の伝送接続である仮想チャネルを提供する。別の実施態様において、クライアント‐第1のプロトコルサービス間通信チャネル135は、Microsoft社(Redmond、Washington)製のThin Xプロトコルまたはリモートディスプレイプロトコル(RDP)を使用して確立できる。
【0049】
クライアント108と第1のプロトコルサービス112の間の第1の通信セッション、および第1のプロトコルサービス112とホストノード118の間の第2の通信セッションとして説明したが、通信セッションは、クライアント108とホストサービス116の間の単一で論理的な通信セッションとみなされる場合もある。
【0050】
引き続き図1Aおよび図1Bを参照して、クライアント108は、第1のプロトコルを使用してネットワーク104を通じてクライアント108と第1のプロトコルサービス112との間の接続135を確立するように構成される。第1のプロトコルサービス112は、その役割として、接続135を受け入れるように構成される。従って、クライアント108および第1のプロトコルサービス112は、図2A乃至2Bおよび図3を参照して以下に説明するように、第1のプロトコルを使用して互いに通信を行うことができる。
【0051】
また以下でさらに説明するように、第1のプロトコルサービス112は、一実施態様において、それ自体が第1のプロトコルを使用して通信を行うよう構成される。第1のプロトコルサービス112は、第1のプロトコルサービス112とホストサービス116a乃至116nの間にそれぞれ接続124a乃至124nを確立するよう構成されている。例えば、第1のプロトコルサービス112は、第1のプロトコルサービス112と1つのホストサービス116aの間に接続124aを、また第1のプロトコルサービス112と別のホストサービス116bの間に接続124bを確立することができる。一実施態様において、第1のプロトコルサービス108はそのような接続124a乃至124nを個別に確立することができる(すなわち、第1のプロトコルサービス112は1回に1つの接続を確立する)。別の実施態様において、第1のプロトコルサービス112は、そのような接続124a乃至124nを2つ以上同時に確立する。
【0052】
さらに別の実施態様において、第1のプロトコルサービス112は、複数の接続124a乃至124nを同時に確立および維持することができる。第1のプロトコルサービス112は、接続135を中断せずに2つ以上の接続124a乃至124nをクライアント108に提供するよう構成される。例えば、第1のプロトコルサービス112は、クライアント108のユーザーがホストサービスに116aに存在する第1のアプリケーションプログラムの実行を要求した場合、第1のプロトコルサービス112とホストサービス116aとの間の接続124aを確立するように構成することができる。ユーザーが第1のアプリケーションプログラムの実行を終了し、例えばホストサービス116bに存在する第1のアプリケーションプログラムの実行を終了し、第2のアプリケーションプログラムの実行を開始する場合、一実施態様では、第1のプロトコルサービス112は、接続124aを中断して、第1のプロトコルサービス112とクライアント108との間の接続135を中断させずに第1のプロトコルサービス112とホストサービス116bとの間の接続124bを確立するように構成される。
【0053】
第1のプロトコルサービス112およびホストサービス116a乃至116nは、HTTP、FTP、Oscar、Telnet、Citrix Systems社(Fort Lauderale、Florida)製のICAリモートディスプレイプロトコルおよび/またはMicrosoft社(Redmond、Washington)製のRDPリモートディスプレイプロトコルを含むがこれらに限定されない、様々な第2のプロトコルのうちのいずれか1つを使用して、接続124a乃至124nを通じて通信を行うことができる。例えば、第1のプロトコルサービス112およびホストサービス116aは、ICAリモートディスプレイプロトコルを使用して接続124aを通じて通信を行いながら、第1のプロトコルサービス112およびホストサービス116bは、RDPリモートディスプレイプロトコルを使用して接続124bを通じて通信を行うことができる。
【0054】
一実施態様において、第1のプロトコルサービス112とホストサービス116との間の通信を行うために使用する、例えばICAリモートディスプレイプロトコルのような第2のプロトコルは、複数の仮想チャネルを含む。仮想チャネルは、データを交換するためのコマンドを発行するためにアプリケーション層コードが使用するセッション指向の伝送接続である。例えば、複数の仮想チャネルのそれぞれは、リモートクライアント108での機能を可能にする複数のプロトコルパケットを含むことができる。一実施態様において、複数の仮想チャネルのうちの1つが、クライアント108にグラフィカルユーザーインターフェイスを表示させるために、第1のプロトコルサービス112を介して、グラフィックスクリーンコマンドをホストサービス116からクライアント108に伝送するためのプロトコルパケットを含む。別の実施態様において、複数の仮想チャネルのうちの1つが、クライアント108で文書を印刷させるために、第1のプロトコルサービス112を介して、プリンタコマンドをホストサービス116からクライアント108に伝送するためのプロトコルパケットを含む。
【0055】
一実施態様において、第1のプロトコルは、トンネリングプロトコルである。第1のプロトコルサービス112は、それぞれがホストサービス116a乃至116nの1つと第1のプロトコルサービス112との間の通信に使用する、複数の第2のプロトコルを第1のプロトコル内にカプセル化する。このように、ホストサービス116a乃至116nと第1のプロトコルサービス112は、複数の第2のプロトコルを介してクライアント108と通信を行う。一実施態様において、第1のプロトコルは、例えば、TCP/IP接続を通じて複数の第2のプロトコルのトンネリングが可能な、アプリケーションレベルのトランスポートプロトコルである。
【0056】
図2Aを参照すると、接続135を介したクライアント108と第1のプロトコルサービス112との間の通信は、第1のプロトコル204内にカプセル化された複数の第2のプロトコル200a乃至200n(例えば、HTTP、FTP、Oscar、Telnet、ICA、および/またはRDP)の形をとる。これは、第1のプロトコル204の中の第2のプロトコル200a乃至200nの位置によって示される。セキュアな通信が要求されない場合は、図2Aに示すように、第1のプロトコル204は、セキュアでないTCP/IP接続208を通じて通信を行うことができる。
【0057】
ここで図2Bを参照すると、セキュアな通信を使用する場合、第1のプロトコル204は、例えば、セキュアソケットレイヤー(SSL)のようなセキュアプロトコル216を使用して保護されるTCP/IP接続212などのような暗号化された接続を通じて通信を行う。SSLは、Netscape Communication社(Mountain View、California)が開発し、トランスポートレイヤセキュリティ(TSL)プロトコルとしてインターネット技術特別調査委員会(IETF)が広め、IETF RFC−2246に記載された、現在の標準である。
【0058】
従って、複数の第2のプロトコル200a乃至200nは、接続135を通じてセキュリティ有り(図2B)またはセキュアプロトコル216なし(図2A)で第1のプロトコル204内で通信を行う。接続124a乃至124nを通じて通信を行うために使用できる第2のプロトコルには、HTTP、FTP、Oscar、Telnet、ICA、および、RDPを含むが、これらに限定されない。さらに、一実施態様において、上述のように、少なくとも1つの第2のプロトコルは、複数の仮想チャネルを含むが、それぞれリモートクライアント108での機能を可能にする複数のプロトコルパケットを含むことができる。例えば、一実施態様において、一方のホストサービス116aはウェブサーバであり、HTTPプロトコルを使用して接続124aを通じて第1のプロトコルサービス112と通信を行い、他方のホストサービス116bはアプリケーションサーバであり、ICAプロトコルを使用して接続124bを通じて第1のプロトコルサービス112と通信を行う。ホストサービス116bは、クライアント108にグラフィカルユーザーインターフェイスを表示させるグラフィックスクリーンコマンドをクライアント108に伝送するためのプロトコルパケット、およびクライアント108で印刷する文書を生じさせるプリンタコマンドをクライアント108に伝送するためのプロトコルパケットの両方を生成する。
【0059】
本発明の別の局面は、本願明細書に記載されている、ネットワーク接続の開閉回数を減らす方法およびシステムである。一実施態様において、第1のプロトコル204はその中にトンネリングした、例えば、HTTP接続200nなどのような第2のプロトコル接続200a乃至200nが、第1のプロトコル204がそれを通じて通信を行うトランスポート接続(例えば、TCP接続208および/または212)、セキュアプロトコル接続216、または第1のプロトコル接続204自身をも同様に繰り返して開くおよび/または閉じることを必要とせずに、開くおよび/または閉じるようにする。第1のプロトコル204のカプセル化なしに、第2のプロトコル200a乃至200nはTCP接続のようなネットワーク接続を頻繁に開閉できる。これは大きな遅延および間接費をシステムに追加するであろう。このような遅延および間接費は、ネットワーク接続の確立において大きな間接費のかかるSSL等のセキュアなカプセル化プロトコル214の使用によってさらに増加するであろう。第1のプロトコル204内において第2のプロトコル200a乃至200nをカプセル化し、トランスポート接続(208、212)の接続を維持することによって、第2のプロトコル200a乃至200nは、第1のプロトコル204のペイロードの一部として、頻繁で費用のかかるネットワーク接続135の開閉を行う必要がない。さらに、第2のプロトコル200a乃至200nは第1のプロトコル204内でセキュアプロトコル216と通信を行えるため、第2のプロトコル200a乃至200nはSSL等とのセキュアな接続を開閉する必要もない。トランスポート接続(208、212)は、カプセル化された第2のプロトコル200a乃至200nがセキュアなまたはセキュアでないネットワーク接続135を繰り返し開閉することなく通信を行えるよう、ネットワーク接続135を確立し維持する。これは第2のプロトコル200a乃至200nの通信における動作速度を大幅に上げる。
【0060】
上述のように、第2のプロトコル200a乃至200nはアプリケーションに関連するプロトコルパケットを、HTTP、FTP、Oscar、Telnet、RDAまたはICA等のプロトコルを使用して運搬する。第2のプロトコルパケット304a乃至304nは、クライアント108とホストサービス116a乃至116nの間でやりとりされるアプリケーション機能に関連するデータをトランスポートする。例えば、クライアント108上のユーザーは、ホストサービス116a乃至116nによって提供されるウェブページと情報のやりとりを行うことができる。クライアント108とホストサービス116a乃至116nの間のトランザクションにおいて、第1のプロトコル204内でカプセル化された第2のプロトコル200a乃至200nは、ホストサービス116a乃至116nと通信を行うため、ウェブページの表示および任意のユーザー対話の受信に関連するhttpプロトコルパケットを有することができる。トランスポート接続(208、212)は第2のプロトコル200a乃至200nによって維持されないため、第2のプロトコル200a乃至200nは任意のネットワーク接続中断に対処する必要がない。そのため、第2のプロトコル200a乃至200nは、そのペイロードにおいていずれのネットワーク接続中断情報も提供しなくてよい。上記の例において、クライアント108へ伝送される第2のプロトコル200a乃至200nの第2のプロトコルパケット304a乃至304nに関連するhttpは、例えばウェブページ上でのエラーメッセージ等、ネットワーク中断が発生したという通知を提供しないであろう。従って、クライアント108上のユーザーは、いかなるネットワークレベル接続が中断しても第2のプロトコル200a乃至200nを介して通知されることはない。これは、第2のプロトコル200a乃至200nに関連するアプリケーションの使用中、ネットワーク接続中断をユーザーから効果的に隠す。
【0061】
図3を参照すると、第1のプロトコルサービス112およびクライアント108のクライアントエージェント128が使用するプロセス例300は、接続135を介して通信を行うために、複数の第2のプロトコル200(例えば、HTTP、FTP、Oscar、Telnet、ICAおよび/またはRDP)を第1のプロトコル204内にカプセル化する。任意で、下記のように、第1のプロトコルサービス112およびクライアント108のクライアントエージェント128が使用するプロセス例300はまた、接続135を介した通信の前に、第1のプロトコルのレベルで通信を圧縮および/または暗号化する。第1のプロトコルサービス112の観点から、第2のプロトコルパケット304a乃至304nは、接続124a乃至124nを介して第1のプロトコルサービス112で受信する。例えば、2つの第2のプロトコルパケット304aおよび304bは、第1のプロトコルサービス112によって受信する。1つ、2つ、または任意の第2のプロトコルパケット304a乃至304nを受信することができる。一実施態様において、第2のプロトコルパケット304a乃至304nは、ホストサービス116によって接続124を通じて第1のプロトコルサービス112に伝送される。第2のプロトコルパケット304a乃至304nは、ヘッダ308およびデータペイロードとも呼ばれるデータパケット312を含む。
【0062】
第2のプロトコルパケット304a乃至304nの受信の後に、第1のプロトコルサービス112は、1つ以上の第2のプロトコルパケット304を第1のプロトコルパケット316内にカプセル化する。一実施態様において、第1のプロトコルサービス112は、第1のプロトコルパケットヘッダ320を生成し、例えば、2つの第2のプロトコルパケット304aおよび304bなどのような、1つ以上の第2のプロトコルパケット304a乃至304nを第1のプロトコルパケット316のデータペイロード324内にカプセル化する。別の実施態様において、1つの第2のプロトコルパケット304aだけが、各第1のプロトコルパケット316内にカプセル化される。
【0063】
一実施態様において、第1のプロトコルパケット316は、次いで接続135、例えば図2Aを参照して説明される接続208を通じて、クライアント108のクライアントエージェント128に伝送される。あるいは、別の実施態様では、第1のプロトコルサービス112は、いずれの第1のプロトコルパケット316の伝送の前に、第1のプロトコル204のレベルでの通信を暗号化するようにさらに構成される。このような一実施態様において、第1のプロトコルパケット316は、例えば、図2Bを参照して説明されるSSLプロトコルを使用して暗号化される。その結果、ヘッダ332と、データペイロード336としての暗号化された第1のプロトコルパケット316’を含むセキュアなパケット328が生成される。セキュアなパケット328は、次いで接続135、例えば図2Bを参照して説明されるセキュアなTCP/IP接続212を通じて、クライアント108のクライアントエージェント128に伝送される。
【0064】
別の実施態様において、第1のプロトコルサービス112は、任意の第1のプロトコルパケット316の伝送の前に、第1のプロトコル204のレベルでの通信を暗号化するようにさらに構成される。一実施態様において、第1のプロトコルサービス112は、第1のプロトコルパケット316を暗号化する前に、標準的な圧縮技術を使用して第1のプロトコルパケット316を圧縮する。このように、システム100の効率が改善される。
【0065】
図1Aおよび図1Bを再び参照すると、本発明のシステム100は、一実施態様において、例えばホストサービス116aのようなホストサービス116への持続的な接続を有するリモートクライアント108を提供する。例えば、クライアント108がクライアント108と第1のプロトコルサービス112との間の接続135を確立し、第1のプロトコルサービス112が第1のプロトコルサービス112とホストサービス116aとの間の接続124aを確立する場合は、次いでクライアントエージェント128または第1のプロトコルサービス112のいずれか、またはその両方が、接続135を介して直近に伝送された第1のプロトコルデータパケットのキューを維持するように構成される。例えば、キューに入れたデータパケットは、接続135の前でも失敗時でもクライアントエージェント128および/または第1のプロトコルサービス112によって維持されることができる。さらに、接続135の失敗時には、第1のプロトコルサービス112、および同様にホストサービス116aは、接続124aを維持するように構成される。
【0066】
接続135の失敗を受けて、クライアント108は、いずれのデータも失わずに第1のプロトコルサービス112による新しい接続135を確立する。より具体的には、接続135の失敗時に接続124aが維持されるので、新しく確立された接続135は、維持された接続124aにリンクされることができる。さらに、直近に伝送された第1のプロトコルデータパケットがキューに入っているので、クライアント108によってそれらを第1のプロトコルサービス112に再び伝送することができ、および/または第1のプロトコルサービス112によって新しく確立された接続135を通じてクライアント108に再び伝送することができる。このように、ホストサービス116aとクライアント108との間の通信セッションは、第1のプロトコルサービス112を介して、いずれのデータも失われずに持続的に進められる。
【0067】
一実施態様において、クライアント108のクライアントエージェント128および/または第1のプロトコルサービス112は、それらが接続135を通じて伝送するデータパケットに番号を付ける。例えば、クライアントエージェント128および第1のプロトコルサービス112それぞれに、他のものがそのデータパケットにどのように番号を付けたかに関係なく、それ自身の伝送データパケットに別々に番号を付ける。さらに、データパケットの番号付けは、データパケットの番号を付け直さずに絶対的なものとすることができる。すなわち、クライアントエージェント128および/または第1のプロトコルサービス112により伝送された最初のデータパケットには、番号1を付けることができ、接続135を通じてクライアントエージェント128および/または第1のプロトコルサービス112により伝送された各データパケットには、その後にそれぞれ連続した番号が付けられる。
【0068】
このような一実施態様において、クライアントエージェント128および/または第1のプロトコルサービス112は、接続135の中断および再確立を受けて、一方にそれが要求する次のデータパケットを通知する。例えば、クライアントエージェント128が、接続135の中断の前に番号1乃至10のデータパケットを受信した場合、接続135の再確立時に、クライアントエージェント128は第1のプロトコルサービス112に現在データパケット番号11を要求していることを通知する。同様に、第1のプロトコルサービス112も、このように機能することができる。あるいは、別のこのような実施態様において、クライアントエージェント128および/または第1のプロトコルサービス112は、受信した最後のパケットデータを一方に通知する。例えば、クライアントエージェント128が、接続135の中断の前に番号1乃至10のデータパケットを受信した場合、接続135の再確立時に、クライアントエージェント128は第1のプロトコルサービス112に最後に受信したデータパケット番号10を通知する。第1のプロトコルサービス112も同様に機能することができる。さらに別の実施態様において、クライアントエージェント128および/または第1のプロトコルサービスは112、接続135の再確立時に、受信した最後のデータパケットおよび要求する次のデータパケットの両方を一方に通知する。
【0069】
このような実施態様において、接続135の再確立時に、クライアントエージェント128および/または第1のプロトコルサービス112は、他のものが受信していないバッファリングされたデータパケットを再伝送することができ、第1のプロトコルサービス112を介して、ホストサービス116とクライアント108との間の通信セッションをいかなるデータも失わずに進めることができる。さらに、接続135の再確立時に、クライアントエージェント128および/または第1のプロトコルサービス112は、現在一方が受信したことがわかっているバッファリングされたデータパケットをそれぞれのバッファから消去することができる。
【0070】
概して、持続的な接続のためのバッファリングデータは単独の第1のプロトコルサービス112の観点で議論されるが、上述のデータバッファリングおよび再接続も、同様の方式で、複数の第1のプロトコルサービス112を横断するクライアントのホストサービス116との通信セッションに適用する。1つ以上の追加の第1のプロトコルサービス112は、クライアント108とホストサービス116との間のデータトラフィックの一部または全部をバッファリングする場合がある。別の実施態様において、クライアントとホストサービス116間の「ホップ」の1つを管理する第1のプロトコルサービス112は、当該「ホップ」と送受信されるデータをバッファリングする場合がある。このように、1つ以上の第1のプロトコルサービス112は、クライアント108とホストサービス116の間の中断した接続の確立時に、データパケットを再伝送するために使用される場合がある。
【0071】
クライアント108にホストサービス116a乃至116nとの信頼できる持続的な接続を提供することにより、本発明は、ネットワーク接続中断を通じてユーザーセッションを維持することでホストサービス116a乃至116nとの新しいユーザーセッションを開くプロセスを回避する。ホストサービス116a乃至116nとの各ユーザーセッションのため、クライアント108およびホストサービス116a乃至116は、セッション固有のコンテキストおよびキャッシュ、ならびに本例のユーザーセッションに関連するその他のアプリケーション固有のメカニズムを維持する場合がある。確立した新しい各ユーザーセッションのために、これらのセッション固有のコンテキストおよびキャッシュを、新しいユーザーセッションを反映するため再配置および再確立する必要がある。例えば、クライアント108上のユーザーはホストサービス116a乃至116nとのhttpセッションを有する場合がある。ホストサービス116a乃至116nは、本例のクライアント108とのhttpセッションを提供するためのコンテキストを維持することができる。コンテキストはサーバのメモリ内、サーバのファイル内、データベースまたはホストサービス116a乃至116nの機能性の提供に関連するその他のコンポーネントに格納される。また、クライアント108は、ホストサービス116a乃至116nに対する未処理の要求のトラックを維持するためのメカニズム等、httpセッションの例に特有のローカルコンテキストを有する場合がある。このコンテキストは、クライアント108のメモリ内、クライアント108のファイル内、またはクライアント108と適合するその他のソフトウェアコンポーネントに格納される場合がある。クライアント108とホストサービス116a乃至116nの間の接続が持続的でない場合、ホストサービス116a乃至116nおよびクライアント108の新しいセッション特有コンテキストによって新しいユーザーセッションを確立する必要がある。本発明は、新しいセッション、また従って新しい特有のセッションコンテキストが再確立される必要のないよう、セッションを維持する。
【0072】
本発明は、ネットワークレベル接続中断を通じて、クライアントのユーザーにセッションが中断されたことを通知することなく、ユーザーセッションを維持する。本発明の本局面の動作において、第1のプロトコルサービス112は、クライアント108との第1の接続およびホストサービス116a乃至116nとの第2の接続を確立および維持する。第1の接続および第2の接続を経由して、クライアント108とホストサービス116a乃至116nの間のセッションは確立される。第1のプロトコルサービス112は、認証証明書のような任意のセッション関連情報ならびに確立されたセッションのためのクライアント108およびホストサービス116a乃至116nのコンテキストを格納および維持することができる。クライアント108上のユーザーは、確立されたセッションを通じて、ホストサービス116a乃至116nによって提供される機能性を行使するであろう。このように、関連する第2のプロトコルパケット304a乃至304nは、そのような機能性のトランザクションに関連するデータを含むであろう。これらの第2のプロトコルパケット304a乃至304nは、第2のプロトコル200a乃至200nの一部として、第1のプロトコル204内でカプセル化され、通信が行われる。第1の接続または第2の接続いずれかにおける中断検出時、第1のプロトコルサービス112は、中断されていないと思われるその他の接続を維持しながら、中断された接続を再確立することができる。ネットワーク接続中断は、クライアント108とホストサービス116a乃至116nの間のセッションを中断する場合がある。しかしながら、トランスポートメカニズムは第2のプロトコル200a乃至200nによって維持されていないため、クライアント108上のユーザーにセッションが中断されたという通知を与えることなく、ネットワーク接続が再確立された後にセッションを再確立することができる。第2のプロトコル200a乃至200nは、クライアント108に伝送するための情報に関連するいかなる中断も含む必要がない。従って、ネットワーク接続中断によって生じるセッションの中断は、第1のプロトコル204のカプセル化によって、効果的にユーザーから隠される。
【0073】
セッション関連情報を維持する第1のプロトコルサービス112は、クライアント108とホストサービス116a乃至116nの間のセッションを再確立することができる。例えば、クライアント108と第1のプロトコルサービス116の間のセッションが中断した場合、第1のプロトコル112はクライアントの108セッションを第1のプロトコルサービス112とホストサービス116a乃至116bの間でアクティブまたはオープンに保つことができる。第1の接続が再確立した後、第1のプロトコルサービス112はクライアント108のセッションを第1のプロトコルサービス112とホストサービス116の間で維持されているセッションとリンクされることができる。第1のプロトコルサービス112は、クライアント108に第1の接続における中断の前にキューに入っていた任意のデータを送信することができる。このように、クライアント108は中断前と同じセッションを使用しているだろうし、ホストサービス116a乃至116nおよびクライアント108はメモリ内またはほかの場所に格納されていると思われる任意のセッション固有コンテキストの使用を継続できる。さらに、第1のプロトコルサービス112の仲介により、ホストサービス116a乃至116nは、第1のプロトコルサービス112とクライアント108の間のネットワーク中断に気づかない場合がある。
【0074】
別の実施態様において、第1のプロトコルサービス112のホストサービス116a乃至116nの間の第2の接続が中断した場合、第1のプロトコルサービスは、ホストサービス116a乃至116nとの第2の接続を再確立しながら、クライアント108との第1の接続を維持することができる。第2の接続を再確立した後、第1のプロトコルサービス112は、クライアントを代表し、ホストサービス116a乃至116nとのクライアントセッションを再確立することができる。第1のプロトコルサービス112が任意のセッション関連情報を維持していたため、第1のプロトコルサービスは、クライアント108が、第2の接続における中断およびその結果生じた第1のプロトコルサービス112とホストサービス116a乃至116nの間のセッションへの中断に気づかないよう、同じセッションまたは同様のセッションを再確立することができる。第2のネットワーク接続およびセッションを再確立する間、第1のプロトコルサービス112は、クライアント108から中断中に送信されてきた任意のセッショントランザクションをキューに入れることができる。次いで、ホストサービス116a乃至116nとのセッションを再確立後、第1のプロトコルサービス112はそのキューに入れたトランザクションをホストサービス116a乃至116nへ伝送することができ、セッションは正常に継続できる。このような方法で、クライアント108はあたかもセッションの中断などなかったかのように動作を継続する。
【0075】
また、信頼できる持続的な接続を提供することにより、本発明は、クライアント108とホストノード118またはホストサービス116a乃至116nの間で行使される機能性の一部として、トランザクション、コマンドまたは動作への中断を回避することもできる。例えば、Windows(登録商標) Explorerを使用するファイルコピー動作は、ネットワーク接続において中断があった後も動作継続するように設計されていない。クライアント108上のユーザーは、クライアント108のファイルをホストノード118へコピーするために、Windows(登録商標) Explorerのファイルコピー機能を使用することができる。ファイルのサイズにより、この動作が完了するまでには比較的長い時間がかかる。ホストノード118へのファイルコピー動作の途中にクライアント108とホストノード118の間のネットワーク接続に中断があった場合、ファイルコピーは失敗するであろう。クライアント108のファイルをホストノード118へコピーするため、ネットワーク接続が再確立されてすぐに、ユーザーはもう一度Windows(登録商標) Explorerのファイルコピー動作を開始する必要がある。本発明の下では、ユーザーはもう一度ファイルコピー動作を開始する必要がないであろう。ネットワーク接続は第1のプロトコル204接続の一部として再確立されるであろう。ファイルコピー動作は第2のプロトコル200a乃至200nのペイロードにおいてカプセル化されるであろう。このように、Windows(登録商標) Explorerのファイルコピーは、ネットワーク接続における中断の通知を受けることなく、従って失敗することがないであろう。第1のプロトコルサービス112は、動作が失敗なく継続できるよう、任意の接続を再確立し、キューに入れた任意のデータを伝送する。第1のプロトコル112は、ネットワーク接続の中断によりホストノード118に転送されなかったファイルコピー動作に関連するデータのキューを維持するであろう。ネットワーク接続が再確立されるとすぐに、第1のプロトコルサービス112はキューに入れたデータを伝送し、やがてファイルコピー操作に関連するデータの転送を継続することができる。
【0076】
本発明の本局面は、ファイルコピー動作例の観点で説明されているが、通常当業者には、クライアント108とホストノード118またはホストサービス116a乃至116n間でやりとりされるいかなる操作、トランザクション、コマンド、ファンクションコール等も、ネットワーク接続中断による失敗なく、またさらに、クライアント108が、中断があったことを認識したり中断の通知を受けたりすることなく、維持および継続できることが認識されるであろう。
【0077】
さらに、信頼できる持続的な接続を提供することにより、本発明は、クライアント108に、クライアント108上でセッションまたはアプリケーションを再開することなく、異なるネットワークトポロジーを通じて横断させることもできる。例えば、クライアント108は無線ネットワーク接続を持つノート型パソコンであってよい。クライアント108が第1の無線ネットワークから第2の無線ネットワークへ移動する場合、クライアントのネットワーク接続135は、第2の無線ネットワークによってネットワーク接続が確立される際に第1の無線ネットワークから一時的に中断される場合がある。第2の無線ネットワークは、クライアント108に、ホスト名またはインターネットプロトコルアドレスのような新しいネットワーク識別子を割り当ててよい。この新しいネットワーク識別子は、第1の無線ネットワークによってクライアント108の割り当てられたネットワーク識別子と異なる場合がある。別の実施態様において、クライアント108は、イーサネット(登録商標)ケーブルを介してネットワーク上のポートに物理的に接続される場合がある。物理的な接続はプラグを抜かれる場合があり、クライアント108はネットワーク上の異なるポートに接続するため別の場所に移動する場合がある。これは、ネットワーク接続135への中断および割り当てられたネットワーク識別子における潜在的な変化を引き起こすであろう。本発明がなければ、クライアント108におけるホストサービス116a乃至116nとのいかなるセッションまたはネットワークにアクセスするクライアント108上のアプリケーションも、ネットワークトポロジーの変化、ネットワーク接続135への中断、および/または割り当てられたネットワーク識別子の変化によって再開される必要があるかもしれない。本願明細書に記載の方法およびシステムによって、本発明はクライアントのためのネットワーク接続ならびに、ネットワークトポロジーおよびネットワーク識別子における変化の処理も含む自動的に再確立されたクライアント108のネットワーク接続を維持する。クライアント108またはクライアント108上の任意のアプリケーションまたはセッションは、あたかもネットワーク接続中断もネットワーク識別子における変化もなかったかのように動作を継続することができる。さらに、クライアント108上のユーザーは、いかなる中断や変化があったことも認識しない場合があり、クライアント108はそのような中断のいかなる通知も受信しない場合がある。
【0078】
別の局面において、本発明は、クライアント108とホストサービス116の間の通信セッションを、プロキシ、セキュリティゲートウェイ、ファイアウォール、またはルータ等、複数のネットワークコンポーネントを横断する複数の接続または「ホップ」を経由して確実に確立することに関する。複数ホップのセキュアな通信セッションの確立はさらに、セキュアなクライアント‐ウェブサーバ間通信チャネル140を経由して、例えばウェブブラウザ162とウェブサーバ120の間でSSLを使用して開始される場合がある。チケットオーソリティ136は、クライアント‐第1のプロトコルサービス間接続135および第1のプロトコルサービスとホストサービスの接続124a乃至124n等、各ホップにチケットを提供することができる。このように、クライアント108とホストサービス116a乃至116nの間の接続をすべて経由して、クライアント108は認証される。
【0079】
動作においては、図4も参照すると、クライアントユーザーは、クライアント108(すなわち、ICAクライアント128)上に遠隔で表示されるコンテンツ(例えば、アプリケーション、サーバデスクトップ)を要求する(ステップ400)。別の実施態様において、クライアント108はウェブブラウザ162を使用してアプリケーションを要求し、次いでウェブサーバ120がユーザーを認証する。要求を受信後、ウェブサーバ120はチケットオーソリティ136によってその要求を有効にする(ステップ405)。次いでチケットオーソリティ136が、第1のチケットまたはクライアントチケット、および第2のチケットまたは第1のプロトコルサービスチケットを含むチケットを生成する(ステップ410)。第1および第2のチケットは、1度使用した後は価値のなくなる「1回限り」のチケットである。さらなる実施態様において、第1および第2のチケットは所定の期間内に使用しなければならない。
【0080】
一実施態様において、チケットオーソリティ136は、第1および第2のチケットをそのチケットが使用されるまでメモリ(例えば、RAM)内に格納する。あるいは、チケットオーソリティ136は、第1および第2のチケットをそのチケットが使用されるまで記憶装置(図示なし)内に格納する。記憶装置は、例えばデータベースまたは持続的メモリ(例えば、フロッピー(登録商標)ディスクまたはハードディスクドライブ上の)を含んでよい。チケットオーソリティ136は、その後クライアントチケットをウェブサーバ120へ伝送し(ステップ415)、次いでウェブサーバ120はそのクライアントチケットをクライアント108へ転送する(ステップ420)。
【0081】
その後クライアント108は、プロキシ接続要求をクライアント‐第1のプロトコルサービス間通信チャネル135上に伝送することにより、第1のプロトコルサービス112との通信セッションを開始する(ステップ425)。プロキシ接続要求は、クライアントチケットを含む。一実施態様において、プロキシ接続要求は、ホストノード118との通信セッション確立時に第1のプロトコルサービス112に置き換え可能なダミーパスワードも含む。さらなる実施態様において、ウェブサーバ120は、第1のプロトコルサービス112にアクセス可能なフォーマットを有するプロキシ接続要求を未来に生成するため、ダミーパスワードをクライアント108に伝送する。第1のプロトコルサービス112はその後、プロキシ接続要求からクライアントチケットを開放し(ステップ430)、そのクライアントチケットを有効化するためチケットオーソリティ136へ転送する。チケットオーソリティ136はその後第1のチケットを有効にする(ステップ435)。一実施態様において、チケットオーソリティ136は、第1の予期されるチケットを求めてその記憶装置(例えば、データベース)を検索することにより、第1のチケットを検証する。
【0082】
チケットオーソリティ136が記憶装置の中で第1のチケットを発見しない場合(例えば第1のチケットが既に使用されていた場合など)、チケットオーソリティ136は通信セッションを終了する。受信したチケットがチケットオーソリティ136の予期しているチケットと一致する場合、そのクライアントチケットは有効にされる。チケットオーソリティ136はその後、第2のまたは第1のプロトコルサービスチケットを第1のプロトコルサービス112へ伝送する(ステップ440)。また、クライアントチケットが1度使用されると、チケットオーソリティ136はそのクライアントチケットを記憶装置から削除する。別の実施態様において、チケットオーソリティ136は、ホストノード118のインターネットプロトコル(IP)アドレスも第1のプロトコルサービス112へ伝送する。さらに別の実施態様において、チケットオーソリティ136は、その後IPアドレスに変換するため、ホストノード118のドメイン名を第1のプロトコルサービス112へ伝送する。
【0083】
第1のプロトコルサービス112は、第2のチケットまたは第1のプロトコルサービスチケットを受信し、その後、第2のチケットをホストノード118へ伝送(ステップ145)することにより、プロキシ‐サーバ間通信チャネル145を通して通信を始める。ホストノード118は、第1のプロトコルサービスチケットを受信し、その後そのチケットを有効にするためチケット‐サーバ間通信チャネル157上でチケットオーソリティ136に伝送する(ステップ447)。一実施態様において、チケットオーソリティ136が、ホストノード118から受信した第1のプロトコルサービスが以前に使用されたことがあり、正当な価値(すなわち、関連する記憶装置内に格納されているのと同じ価値)がないと判断した場合、チケットオーソリティ136は、クライアント108との確立した通信セッションを終了させるため、第1のプロトコルサービス112(またはウェブサーバ120)にエラーメッセージを伝送する。チケットオーソリティ136が第1のプロトコルチケットを有効にする(ステップ448)と、ホストノード118はICA公開アプリケーションを起動する(ステップ450)。ホストノード118は次いでアプリケーション情報を、クライアント108におけるアプリケーションの遠隔表示(ステップ455)のため、ICAクライアント128を使用して第1のプロトコルサービス112へ伝送する(ステップ453)。
【0084】
さらなる実施態様において、クライアント108は、ステップ425における第1のプロトコルサービス112との通信開始時にICAクライアント128を起動する。その他の実施態様において、クライアント108は、クライアント108がステップ453において第1のプロトコルサービス112からアプリケーション情報を受信した際にICAクライアント128を起動する。
【0085】
従って、クライアント108は、クライアントチケット以外、第1のプロトコルサービスチケットには気づかない。さらに、ICAクライアント128は、第1のプロトコルサービス112と通信を行い、クライアントチケットを提示することなしにはホストノード118にアクセスできない。.
チケットオーソリティ136は、第1のプロトコルサービスチケットを、クライアント108のユーザーのためのユーザーパスワードとして、ステップ440において第1のプロトコルサービス112に伝送する可能性もある。これは、第1のプロトコルサービス112が、第1のプロトコルサービスチケットを、ユーザーのログインパスワードをウェブの信用できない部分(すなわち、ステップ425中のセキュアでないクライアント‐プロトコルサービス間通信チャネル135)上にさらすことなくホストノード118にアクセスするためのログインパスワードとして使用できるようにする。従って、一実施態様において、通信システム100は、チケットオーソリティ136により管理され、ユーザーのパスワードで第1のプロトコルサービスチケットをマップするためにホストノード118と同一場所に配置される、集中パスワードマッピングデータベースを含む可能性がある。
【0086】
従って、パスワードは両方のチケット(すなわち、第1のプロトコルサービスチケットおよびクライアントチケット)を伴うことができるか、またはパスワードは2つのチケットのうち1つを伴うことができる。上述のように、パスワードが2つのチケットのうち1つ、例えばクライアントチケットを伴っていれば、第1のプロトコルサービスチケットがパスワードである。一実施態様において、パスワードは、価値が変わらないシステムパスワード、または、RSA Security社(Bedford、 Massachusetts)製のセキュアIDトークンによって生成されたパスワード等の、1回限りのパスワードであってよい。
【0087】
また、本発明は、ホストノード118との通信セッションを確立する前にクライアント108が通信を行わなければならない第1のプロトコルサービス112または「ホップ」をいくつでも有する通信システムまで拡張することができる。第1のプロトコルサービス112に関連して説明したが、ホップは、プロキシ115、ファイアウォール、ルータ、リレー等、任意のネットワークコンポーネントを備えることができる。
【0088】
例えば、また図5Aを参照して、4つのホップの例は、プロキシ115’を持つ第1のプロトコルサービス112’、プロキシ115’’を持つ2番目の第1のプロトコルサービス112’’、およびプロキシ115’’’(概して115)を持つ3番目の第1のプロトコルサービス112’’’を有する通信システム505である。プロキシ115を持つ第1のプロトコルサービス112は、第1のプロキシ‐プロキシ間通信チャネル510’および第2のプロキシ‐プロキシ間通信チャネル510’’(概してプロキシ‐プロキシ間通信チャネル510)のようなプロキシ‐プロキシ間通信チャネル上で通信を行う。クライアント108は、2番目の第1のプロトコルサービス112’’と通信を行う第1のプロトコルサービス112’と通信を行う。同様に、2番目の第1のプロトコルサービス112’’は3番目の第1のプロトコルサービス112’’’と通信を行い、次いで3番目の第1のプロトコルサービス112’’’は、ホストノード118との通信セッションを確立するため、プロキシ‐サーバ間通信チャネル145上でホストノード118と通信を行う。さらに、上述の実施態様はクライアントチケットおよび第1のプロトコルチケットを有するチケットを含むが、別の実施態様は、多数のチケットを備えるチケットを含む。
【0089】
さらに明確に、また図5Bも参照すると、ウェブサーバ120はクライアント108からアプリケーションの要求を受信し、ウェブサーバ120はその要求をチケットオーソリティ136で有効にする(ステップ405)。チケットオーソリティ136は、次いでステップ410においてN部のチケット(例えばT1乃至TN)を生成する。一実施態様において、チケットオーソリティ136はその後N部のチケットの一部Ti(例えば、チケットの第1部、または第1のチケットT1)をウェブサーバ120へ伝送する(ステップ415)。ウェブサーバ120はその後チケットT1をクライアント108に伝送する(ステップ420)。一実施態様において、チケットオーソリティ136は次の「ホップ」(例えば、第1のプロトコルサービス112’)のアドレスをウェブサーバ120へ伝送し、ウェブサーバ120はその後そのアドレスをクライアント108へ伝送する。このアドレスは、クライアント108が最終的にホストノード118に対して認証されるために、現在のホップ(例えば、クライアント108)が通信を行う必要がある次のホップ(例えば、第1のプロトコルサービス112)のアドレスである。
【0090】
クライアント108は、次の「ホップ」(例えば、第1のプロトコルサービス112’)と接触するためのアドレスを使用し、プロキシ接続要求をクライアント‐第1のプロトコルサービス間チャネル135上に伝送することにより、1番目の第1の通信セッション112’との通信セッションを開始する。第1のプロトコルサービス112’’は、次いで第1のチケットT1をプロキシ接続要求から抽出し(ステップ530)、このチケットを有効にするためチケットオーソリティ136へ転送する。チケットオーソリティ136はその後、第1のチケットT1を有効にする(ステップ535)。
【0091】
第1のチケットT1の適切な有効化時、チケットオーソリティ136は次のチケットTiをN部のチケット(例えば、T2)から次の第1のプロトコルsサービス112(例えば、第1のプロトコルサービス112’)へ伝送する(ステップ540)。一部の実施態様において、チケットオーソリティ136は、次のホップ(例えば、2番目の第1のプロトコルサービス112’’)のアドレスも現在のホップ(例えば第1のプロトコルサービス112’)へ伝送する。第1のプロトコルサービス112’は、このチケットを次のホップ(例えば、2番目の第1のプロトコルサービス112’’)へ伝送する(ステップ545)。一実施態様において、2番目の第1のプロトコルサービス112’’は、このチケットをチケットオーソリティ136へ伝送することによりT2を検証する(ステップ550)。チケットオーソリティ136は第2のチケットTを有効にし(ステップ555)、ステップ560から575に示されるようなプロセスが続く。N部のチケットの最後の部分が有効になると、図4に示すように、クライアント108上のアプリケーションを起動するために、ステップ450から455が発生する。
【0092】
一実施態様において、各第1のプロトコルサービス112(すなわち、各ホップ)はTi(例えば、T2)を第1のプロトコルサービス112(すなわち、ホップ)に関連するチケットオーソリティ136によって有効にする。この実施態様において、各第1のプロトコルサービス112がチケットTi(例えば、T2)をチケットオーソリティ136によって有効にした後、有効化が行われるチケットオーソリティ136は、次のチケットTi+1(例えば、T3)および次の第1のプロトコルサービス112(すなわち、次の「ホップ」あて先)を、チケットTiを有効にした第1のプロトコルサービス112に伝送する。従って、各第1のプロトコルサービス112は、現在および次のホップチケットが組み込まれた(すなわち、Tiを有効にしTi+1を伝送している)チケットオーソリティ136に関連している。その結果、次の第1のプロトコルサービス112は、当該ホップのためのクライアントとして作用する。このプロセスは、通信システム505においてホストノード118に届くまで繰り返される。従って、各ホップは、いずれのホップに対してもすべてのチケットをさらけ出すことなく、個別に有効にされる。
【0093】
一実施態様において、チケットオーソリティ136は、多くの部分を持つ1つのチケットを発行するのではなく1つを超えるチケットを発行する。例えば、チケットオーソリティ136は、第1のホップチケットが第2のホップチケットと関連を持たないステップ510において、第1のホップチケットおよび第2のホップチケットを生成する。チケットオーソリティ136はその後、第1のホップチケットをウェブサーバ120へ伝送し、ウェブサーバ120は第1のホップチケットをクライアント108へ伝送する。クライアント108は、チケットオーソリティ136によってこの第1のホップチケットを有効にするため第1のプロトコルサービス112(例えば、第1のプロトコルサービス112’)へ伝送する。ステップ535における有効化時、チケットオーソリティ136は、第1のホップチケットが第2のホップチケットから独立している間に、ステップ540において第2のホップチケットを次の第1のプロトコルサービス112(例えば、2番目の第1のプロトコルサービス112’’)へ伝送する。
【0094】
さらなる実施態様において、1つ以上のチケットオーソリティ136は、第1のプロトコルサービス112の一部として、または第1のプロトコルサービス112とは別で、SOCKSサーバ(例えば、NEC社(東京、日本)製のSOCKS5サーバ)に接続するための暗号キー、SSL方法設定情報、および認証情報等であるがこれらに限定されない、次のホップに接続するために必要な任意の必要情報とともに、プロキシ115を提供する。
【0095】
さらに別の実施態様において、チケットオーソリティ136は単一のチケットのみを生成する。チケットオーソリティ136は単一のチケットをウェブサーバ120へ伝送する。ウェブサーバ120は単一のチケットをクライアント108へ転送する。第1のプロトコルサービス112はその後そのチケットをクライアント108から受信し、有効化時にその単一のチケットを「消費」する。結果として、通信システム100は単一のチケットを、クライアント‐プロキシ間通信チャネル135およびクライアント‐ウェブサーバ間通信チャネル140上で任意の通信プロトコルを使用する能力を提供するために使用する。また、ホストノード118は単一のチケットを受信も検証もしないため、チケットはホストノード118に対して透過的であり、その結果、ホストノード118はチケットの使用に「気づく」ことがない。
【0096】
セキュアなクライアント‐ウェブサーバ通信チャネル140上のクライアント108とウェブサーバ120の間のセキュアな通信のセキュリティを利用することにより、通信システム505はセキュアでないクライアント‐プロキシ通信チャネル135上に、クライアント108にデスクトップアプリケーションをセキュアに遠隔表示するためのセキュアな通信リンクを確立する。
【0097】
さらに別の実施態様において、また図4を再度参照して、チケットオーソリティ136はステップ415において第1のプロトコルサービスの使用不可能なバージョンを、クライアント108への伝送のため、クライアントチケットとともにウェブサーバ120へ伝送する。クライアント108はその後第1のプロトコルサービスチケットを、プロキシ接続要求の一部として、クライアントチケットとともに第1のプロトコルサービス112へ伝送する(ステップ425)。第1のプロトコルサービス112は、次いで両方のチケットをチケットオーソリティ136へ転送する。使用不可能な第1のプロトコルサービスチケットを受信すると、チケットオーソリティ136はクライアントチケットを有効にした後、第1のプロトコルサービスチケットを使用可能にする。チケットオーソリティ136は次いで使用可能な第1のプロトコルサービスチケットを、ホストノード118に対する認証のために第1のプロトコルサービス112へ伝送する。
【0098】
あるいは、別の実施態様において、ウェブサーバ120は使用不可能な第1のプロトコルサービスチケットおよび使用可能なクライアントチケットをチケットオーソリティ136から受信し、クライアントチケットのクライアント108への伝送のみ行う。クライアント108は、そのクライアントチケットをプロキシ接続要求の一部として第1のプロトコルサービス112へ伝送する(ステップ425)。第1のプロトコルサービス112は次いでクライアントチケットをチケットオーソリティ136へ転送する。チケットオーソリティ136はクライアントチケットを有効にし、有効化時に、以前ウェブサーバ120へ伝送された第1のプロトコルサービスチケットを使用可能にする。さらに別の実施態様において、チケットオーソリティ136は、使用可能な第1のプロトコルサービスチケットを、ホストノード118に対する認証のためのクライアントチケット有効化時に、ウェブサーバ120へ伝送する。
【0099】
従って、常に、チケットオーソリティ136は、チケットオーソリティ136が有効にできる、クライアント108または第1のプロトコルサービス112に対して使用可能な1つのチケットのみを提供する。チケットオーソリティ136は、使用可能なチケットが有効になるまで、有効にできない別のチケット(例えば、使用不可能なチケット)を提供する。あるいは、チケットオーソリティ136は、チケットオーソリティ136が使用可能なチケットを有効にするまで、第1のプロトコルサービスチケットを第1のプロトコルサービス112へ伝送しない場合がある。以下でさらに詳しく説明するように、クライアント108は、チケットオーソリティ136に使用可能なチケットを有効にさせ、ホストノード118と通信を行うために必要なチケットを伝送させることなくウェブサーバ120または第1のプロトコルサービス112を横断することができないため、これは、通信システム505を使用して通信のネットワークルーティングを強制する。
【0100】
別の実施態様において、ステップ440のように第1のプロトコルサービスチケットを第1のプロトコルサービス112へ伝送する代わりに、チケットオーソリティ136はウェブサーバ‐オーソリティ間通信チャネル250上で第1のプロトコルサービスチケットを直接ウェブサーバ120へ伝送する。ウェブサーバ120はその後自動的に第1のプロトコルサービスチケットをホストノード118へ伝送する。すなわち、ウェブサーバ120は第1のプロトコルサービスチケットをホストノード118へ「プッシュ」する。チケットオーソリティ136は、第1のプロトコルサービスチケットを第1のプロトコルサービス112へもウェブサーバ120へも伝送せずに、第1のプロトコルサービスチケットをホストノード118へプッシュすることもできる。
【0101】
さらに別の実施態様において、ホストノード118は、チケット‐コンテンツサーバ間通信チャネル157上で、チケットオーソリティ136から第1のプロトコルサービスチケットを回収する。すなわち、ホストノード118はチケットオーソリティ136から第1のプロトコルサービスチケットを「プル」する。上記の例は、ステップ345を(ステップ440における伝送あて先を変更しながら)排除するための技術の説明である。
【0102】
さらに、本発明は、第1のプロトコルサービス112を通じてクライアント108のルーティングを強制する。上述のように、クライアント108は、ホストノード118との通信セッションを確立するため、第1のプロトコルサービスチケットを所有しなければならない。より具体的には、ホストノード118との通信セッションを確立するために、ウェブサーバ120はまずチケットオーソリティ136でクライアント108の要求を有効にしなければならない。有効化されると、クライアント108は第1のチケットを得てこの第1のチケットを有効化のためチケットオーソリティ136へ伝送する。しかしながら、有効化時に、チケットオーソリティ136は、第1のプロトコルサービスチケットをクライアント108ではなく第1のプロトコルサービス112へ送り返す。クライアント108とホストサービス116の間の通信セッションは、ホストサービス116が第1のプロトコルサービスチケットを受信した際に確立される。従って、クライアント108は、第1のプロトコルサービスチケットをホストサービス116へ伝送させ、それによって第1のプロトコルサービス112によってクライアント108のルーティングを強制するため、第1のプロトコルサービス112と通信を行わなければならない。従って、本発明は、ホストノード118へのアクセスを許可する前に、セキュリティ装置(例えば、第1のプロトコルサービス112)を適切に横断することを確実に行える。
【0103】
例えば、ホストノード118は、ともにMicrosoft社(Redmond、Washington)製のMICROSOFT WORDおよびMICROSOFT EXCEL等、いくつかのアプリケーションを実行する。一実施態様において、クライアント108は、クライアント108がアプリケーションにアクセスするサーバファーム169から情報を得るために、Citrix Systems社(Fort Lauderdale、Florida)製NFUSEを使用する。クライアントユーザーがMICROSOFT WORDにアクセスし使用したい場合、クライアント108はウェブサーバ120からアプリケーションを要求する。しかしながら、MICROSOFT WORDに対するアプリケーション料を支払っているユーザーのみがこのアプリケーションへのアクセスを認可されることができる。
【0104】
アプリケーション料の支払いを確認するため、通信システム505は、第1のプロトコルサービス112を介してクライアント108のルーティングを強制するための第1のプロトコルサービス112およびチケットオーソリティ136を含む。第1のプロトコルサービス112がアプリケーション料の徴収およびアプリケーションにアクセスするためのユーザー認可に使用される場合、第1のプロトコルサービス112を介するクライアント108のルーティングは、アプリケーションプロバイダにとって価値がある。
【0105】
チケットオーソリティ136は、その後アプリケーションの要求に関連するチケットを生成する。次いで使用可能な第1のチケットがクライアント108へ伝送される。クライアント108はホストノード118のアドレスを持たないため、クライアント108はアプリケーションにアクセスできない。さらに、クライアント108は第1のプロトコルサービス112によってまだ認可されていない(すなわち、まだ支払っていない)。従って、クライアント108は認可を受けるために第1のプロトコルサービス112と通信を行わなければならない。第1のプロトコルサービス112はその後、アプリケーション料の支払い時に、使用可能な第1のチケットをチケットオーソリティ136へ伝送する。
【0106】
チケットオーソリティは次いでクライアントチケットを有効にし、その後第1のプロトコルサービスチケットをプロキシ115へ伝送(または使用可能に)する。第1のプロトコルサービス112は次いで第1のプロトコルサービスチケットをホストノード118へ伝送し(例えば、クライアントユーザーがアプリケーション料を支払ったと想定して)、それによりホストノード118にアプリケーションをクライアント108へ伝送可能にさせる。通信システム505は、クライアント108に配信するHTMLページから、またはHTMLページへの埋め込みからアプリケーションの起動を可能にするために、Citrix Systems社製のApplication Launching And Embedding(ALE)技術を使用してもよい。
【0107】
別の実施態様において、本発明はクライアント108のホストサービス116への再接続およびクライアント108とホストサービス116の間の接続または「ホップ」の再認証を対象とする。図6Aは、クライアント108をホストサービス116へできるシステム600の別の実施例を示す。上述したネットワーク104および104’、クライアント108、第1のプロトコルサービス112、およびホストサービス116に加えて、システム600は、中間ノード632およびチケットオーソリティ136をさらに含む。一実施態様において、中間ノード632は、ネットワーク104の構成上クライアント108と第1のプロトコルサービス112との間のメッセージが通過すべき、例えばファイアウォールおよび/またはルータのようなセキュリティゲートウェイである。また、中間ノード632は、第1のプロトコルサービス112とともに、またはこれを伴わずに、第1のプロトコルサービス112のプロキシ115を備えてもよい。図示するように、チケットオーソリティ136は、通信が可能で本願明細書に開示した動作を行うには十分なプロセッサ能力とメモリ容量を有する、スタンドアロンのネットワークコンポーネントとすることができる。
【0108】
図6Aの実施態様に示すように、中間ノード632は、クライアント108によって開始される接続135aを受け入れ、第1のプロトコルサービス112による第2の接続135bを確立するように構成される。併せて、接続135aおよび第2の接続135bは、上述のように接続135を構成し、それらを通じて第1のプロトコルを使用してクライアント108および第1のプロトコルサービス112が通信を行う。
【0109】
図に示すように、中間ノード632はまた、チケットオーソリティ136と通信を行うように構成される。一実施態様では、チケットオーソリティ136は、中間ノード632からの第1の再接続チケットに対する要求を受信し、その後に第1の再構成チケットを生成するように構成される。第1の再接続チケットは、例えば、大きな乱数を含むことができる。別の実施態様において、チケットオーソリティ136は、クライアントとホストサービス116の間の各「ホップ」に対する第1の再接続チケットの要求を受信するように構成される。例えば、中間ノード632は、クライアント108と中間ノード632の間、中間ノード632と第1のプロトコルサービス112の間、および第1のプロトコルサービス112とホストサービス116の間の接続のための再接続チケットを要求してよい。これらの再接続チケットは、各「ホップ」に対してのみ有効となることができる。例えば、ホストサービス116への第1のプロトコルサービス112の第1の再接続チケットは、クライアント108を代表してホストサービス116に対し第1のプロトコルサービス112を認証するためにのみ有効である。
【0110】
別の実施態様において、チケットオーソリティ136は、ハンドルを生成するように構成される。ハンドルは、例えば、第1の再接続チケットと関連する(例えば、マップする)乱数とすることができる。一実施態様では、ハンドルは、第1の再接続チケットを形成している乱数よりも小さな乱数である。例えば、ハンドルは、32ビット乱数としてよい。さらなる実施態様において、ティッカーまたは再接続チケットに関連するチケットは、クライアント108とホストサービス116の間の複数のホップ接続における次の「ホップ」のアドレスまたはそれを指すポインタである。この場合、チケットまたは再接続チケットは、次の「ホップ」へのポインタを持つ単独の「ホップ」に対して有効となる。次の「ホップ」は、1つ前の「ホップ」が有効となり、クライアント108を代表してホストサービス116に接続されるまで、異なるチケットまたは再接続チケット等を得る必要があるであろう。
【0111】
チケットオーソリティ136は、第1の再接続チケットおよびハンドルを中間ノード632に伝送しながら、第1の再接続チケットのコピーおよびハンドルのコピーを維持する。第1の再接続チケットのコピーは、後にチケットオーソリティ136が使用することができ、クライアント108の再接続プロセス中に、後にチケットオーソリティ136にそのコピーを示す際に、元々はクライアント108に伝送された第1の再接続チケットを検証する。一実施態様では、チケットオーソリティ136は、第1のプロトコルサービス112に対するアドレスも維持するが、そのアドレスは、後述するように、第1の接続チケットに関連し、第1の再接続チケットの検証時に、中間ノード632に伝送される。
【0112】
一実施態様では、中間ノード632は、チケットオーソリティ136がそこに伝送したハンドルを使用して、チケットオーソリティ136で維持された第1の再接続チケットを削除するようにさらに構成される。別の実施態様では、下記のように、チケットオーソリティ136は、クライアント108のホストサービス116への再接続プロセス中に、第1の再接続チケットを削除し、その後代替の第1の再接続チケットを生成するようにさらに構成される。加えて、別の実施態様では、第1の再接続チケットは、所定の時間の経過後に自動的に削除するように構成される。クライアントとホストサービス116の間の各「ホップ」のための再接続チケットの実施態様において、再接続チケットのうち1つ、一部、またはすべてが所定の時間の経過後に削除されるよう構成されてよい。その他の実施態様において、チケットオーソリティ136または中間ノード632は、複数のホップチケットのそれぞれを削除し代替のチケットを生成するように構成される。
【0113】
別の実施態様では、第1のプロトコルサービス112は、第1の再接続チケットなどの場合、例えば、大きな乱数を含むことができる第2の再接続チケットを生成するように構成される。一実施態様では、第1のプロトコルサービス112は、クライアント108とホストサービス116間の各「ホップ」に対して第2の再接続チケットを生成する。第1のプロトコルサービス112は、第2の接続チケットをクライアント108に伝送しながら、第2の再接続チケットのコピーおよびセッション番号を維持するようにも構成することができる。第2の再接続チケットのコピーは、後に第1のプロトコルサービス112が使用することができ、クライアント108の再接続プロセス中に、後に第1のプロトコルサービス112にそのコピーを示す際に、元々はクライアント108に伝送された第2の再接続チケットを検証する。一実施態様では、第1のプロトコルサービス112は、中間ノード632を介して第2の再接続チケットをクライアント108に伝送する。別の実施態様では、第1のプロトコルサービス112は、第2の再接続チケットをクライアント108に直接伝送する。さらなる実施態様では、第1のプロトコルサービス112は、第2の再接続チケットをその他の第1のプロトコルサービス112またはクライアント108とホストサービス116の間に複数のホップ接続を含む場合がある中間ノード632へ伝送してよい。
【0114】
さらに、下記にさらに詳しく説明するように、第1のプロトコルサービス112は、クライアント108のホストサービス116への再接続プロセス中に、第2の再接続チケットを削除し、その後代替の第2の再接続チケットを生成するようにさらに構成される。加えて、別の実施態様では、第2の再接続チケットは、所定の時間の経過後に自動的に削除するように構成される。さらなる実施態様では、複数のホップ接続における1つ以上の第1のプロトコルサービス112の第1のプロトコルサービス112は、各「ホップ」のための第2の再接続チケットを削除し、その後「ホップ」の1つ、一部またはすべてに対する代替の再接続チケットを生成するよう構成される。
【0115】
一実施態様では、中間ノード632は、第1および第2の再接続チケットに対する中間物としての機能を果たす。中間ノード632は、例えば、チケットオーソリティ136が生成する第1の再接続チケット、および第1のプロトコルサービス112が生成する第2の再接続チケットを受信する。中間ノード632は、次いで第1の再接続チケットおよび第2の再接続チケットをクライアント108に伝送することができる。さらに、クライアント108のホストサービス116への再接続プロセス中、中間ノード632は、クライアント108から第1の再接続チケットおよび第2の再接続チケットを受け入れることができ、その後第1の再接続チケットをチケットオーソリティ136に伝送することができ、適切な場合、第2の再接続チケットを第1のプロトコルサービス112に伝送することができる。
【0116】
別の実施態様において、中間ノード632は、再接続チケットの、クライアント108とホストサービス116との間の複数のホップへの仲介としての役割を果たす。中間ノード632は、例えば、クライアント108の第1のプロトコルサービス112への接続のための第1の再接続チケット、および第1のプロトコルサービス112のホストサービス116への第1の再接続チケットを受信する。さらなる実施態様では、中間ノード632は、中間ノード632と第1のプロトコルサービス112との間の接続のための第1の再接続チケットを受信する。中間ノード632は、次いでクライアントのための第1の再接続チケットをクライアント108へ、また第1のプロトコルサービス112のための第1の再接続チケットを第1のプロトコルサービス112へ伝送することができる。さらに、クライアント108のホストサービス116への再接続プロセス中、中間ノード632は、中間ノード632または第1のプロトコルサービス112に対するクライアントの接続を再確立するチケットを有効にするため、クライアント108から第1の再接続チケットを受け入れることができる。
【0117】
図6Bを参照して、ネットワーク通信のためのシステム602の別の実施態様は、上述のように、ネットワーク104および104’と、クライアント108と、第1のプロトコルサービス112と、ホストサービス116a乃至116nと、中間ノード632と、チケットオーソリティ136とを含み、さらに、一実施態様においてクライアント108をホストサービス116に最初に接続するためにどちらも使用する、第1の計算コード640および第2の計算ノード644を示す。さらに、図6Aの実施態様では、クライアント108は、例えば、Microsoft社(Redmond、WA)製のINTERNET EXPLORERなどのような、ワールドワイドウェブに接続するためのウェブブラウザ162をさらに含む。
【0118】
一実施態様では(図示せず)、システム602は、2つ以上の中間ノード632および/または2つ以上の第1のプロトコルサービス112を含む。それを介してクライアント108と第1のプロトコルサービス112との間のメッセージが通過すべき中間ノード632および/または第1のプロトコルサービス112は、例えばロードバランシング式に基づいてそれぞれ選択することができる。
【0119】
第1の計算ノード640および第2の計算ノード644のそれぞれは、通信が可能で本願明細書に開示した動作を行うには十分なプロセッサ能力とメモリ容量を有する、任意のコンピュータとすることができる。例えば、一実施態様では、第1の計算ノード640は、1つ以上のウェブサイトを提供するウェブサーバ120を含む。別の実施態様では、第2の計算ノード644は、XMLサービスを提供する。
【0120】
一実施態様では、クライアント108およびネットワーク104は、外部ネットワーク652を形成するが、破線で示される第1のファイアウォール160によってシステム602の他の部分から切り離される。中間ノード632および第1の計算ノード640は、同様に破線で示される第1のファイアウォール160および第2のファイアウォール161によってシステム602の他の部分から切り離されるDMZ130内に置くことができる。次いで、図に示すように、ネットワーク104’、第1のプロトコルサービス112、ホストサービス116a乃至116n、チケットオーソリティ136、および、第2の計算ノード644は、内部ネットワーク668を形成するが、第2のファイアウォール161によってシステム602の他の部分から切り離される。
【0121】
あるいは、別の実施態様では、図6Cを参照して、システム604は、DMZ130内でネットワーク104と中間ノード632との間に配置される第3の計算ノード646をさらに含む。第3の計算ノード646は、ネットワーク化された通信が可能で本願明細書に開示した動作を行うには十分なプロセッサ能力とメモリ容量を有する、任意のコンピュータとすることができる。下記のように、第3の計算ノード646は、一部の実施態様では、クライアント108のホストサービス116への最初の接続プロセス中、および/またはクライアント108のホストサービス116への再接続プロセス中に使用する。より具体的には、下記のように、システム604が2つ以上の中間ノード632を含む際には、第3の計算ノード646は、例えばロードバランシング式に基づいて、それを介してクライアント108のクライアントエージェント128と第1のプロトコルサービス112との間の通信が通過すべき中間ノード632を選択することができる。
【0122】
さらに、図6Dを参照して、図6Cの中間ノード632は、別の実施態様では、2つ以上のレベル「a」乃至「n」の中間ノード632に置換することができる。図示するように、各レベル「a」乃至「n」は、2つ以上の中間ノード632a乃至632nを含むことができる。下記のように、クライアント108のクライアントエージェント128は、例えばロードバランシング式に基づいて、中間ノード632の任意の組み合わせを介して送ることができる。例えば、図示するように、クライアントエージェント128は、接続622を介して中間ノード632を介して送ることができる。追加のセキュリティのため、各「ホップ」は接続622を介して、クライアント108とホストサービス116との間の複数のホップ接続を有効にし認証するためのチケットまたは再接続チケットを要求することができる。当業者にとって容易に明らかなように、他の構成のシステム600、602および604も可能である。
【0123】
再び図6Bを参照すると、一実施態様では、ウェブブラウザ162は、第1の計算ノード640によるネットワーク104を通じて通信を行うが、それ自身が第2の計算ノード644およびチケットオーソリティ136と接続する。より具体的には、第1の計算ノード640は、第2の計算ノード644およびチケットオーソリティ136のアドレスによって構成される。一実施態様において、下記にさらに説明するように、第1の計算ノード640は、クライアント108のウェブブラウザ162と、第2の計算ノード644と、チケットオーソリティ136との間の情報を中継し、それによってそれらの直接的な通信を防ぐように構成される。このような直接的な通信を防ぐことによって、第1の計算ノード640は、システム602にさらなるレベルのセキュリティを付加する。第1の計算ノード640は、中間ノード632のアドレス、または代わりに、2つ以上の中間ノード632のアドレスによって構成することもできる。
【0124】
第2の計算ノード644は、その役割として、ホストサービス116上で実行するどのアプリケーションプログラムをクライアント108のユーザーが利用できるかを判断するように構成される。すなわち、第2の計算ノード644は、ユーザーがアクセスを許可されたのはどのアプリケーションプログラムなのかを判断する。一実施態様では、ユーザーが自身の所望するアプリケーションプログラムを選択した後、さらに下記のように、第2の計算ノード644は、ロードバランシングのためにユーザーの所望のアプリケーションを実行するため、どのホストサービス116を使用するかを判断するように構成される。第2の計算ノード644は、そのホストサービス116のアドレスを第1の計算ノード640に返す。第2の計算ノード644は、ロードバランシング式を使用して複数の第1のプロトコルサービス112の中からも選択される、第1のプロトコルサービス112のアドレスも第1の計算ノード640に返す。次に、第1の計算ノード640は、選択した第1のプロトコルサービス112および選択したホストサービス116のアドレスをチケットオーソリティ136に伝送する。
【0125】
チケットオーソリティ136は、その役割として、接続チケットを生成する。一実施態様では、チケットオーソリティ136は、クライアント108への伝送に対する最初の接続チケットを第1の計算ノード640に伝送する。別の実施態様では、チケットオーソリティ136は、最初の接続チケットを、クライアント108およびホストサービス116との間の1つ以上の「ホップ」のための第1の計算ノード640へ伝送する。
【0126】
図7を参照して、図6A乃至図6Dの例示的実施態様を使用したネットワーク通信のための方法600の一実施態様を示す。ステップ604で、クライアント108は、例えば下記に示す方法700を用いて、クライアント108を複数のホストサービス116に接続する。クライアント108の複数のホストサービス116への接続後、クライアント108およびホストサービス116は、第1のプロトコルサービス112を介して、およびステップ608で、第1のプロトコル内にカプセル化された複数の第2のプロトコルを介して通信を行う。一実施態様では、第1のプロトコルサービス112は、いずれの第1のプロトコルパケットの伝送前に、通信を第1のプロトコル204のレベルで暗号化し、それによって通信を保護する。別の実施態様では、第1のプロトコルサービス112は、任意の第1のプロトコルパケットの伝送前に、通信を第1のプロトコルのレベルで圧縮し、それによって通信効率を改善する。
【0127】
ステップ612で、クライアントエージェント128は、クライアントエージェント128と第1のプロトコルサービス112との間の接続135が失敗したかどうかを判断する。例えば、クライアントエージェント128と中間ノード632との間の接続135aが失敗した可能性があり、または中間ノード632と第1のプロトコルサービス112との間の接続135bが失敗した可能性があり、あるいは接続135aおよび135bの両方が失敗した可能性がある。別の実施態様では、第1のプロトコルサービス112とホストサービス116との間の接続が失敗した可能性がある。クライアントエージェント128が、接続135は失敗しなかったと判断した場合は、方法600はステップ620へ進む。一方で、クライアントエージェント128が、接続135は失敗したと判断した場合は、ステップ616で、クライアント108にホストサービス116への信頼できる接続を提供し、ホストサービス116に再接続する。
【0128】
ステップ620では、クライアント108がプロトコルサービス112との接続135を、そして結果的にホストサービス116との接続124a乃至124nを完全に完了することを望んでいるかどうかを判断する。望んでいない場合には、ステップ608で、第1のプロトコル内にカプセル化された複数の第2のプロトコルを介して、クライアント108と第1のプロトコルサービス112との間の通信を継続する。望んでいる場合は、次いでステップ624で、すべての接続135a、135b、および124a乃至124nを中断し、すべての再接続チケットを削除する。一実施態様では、中間ノード632は、チケットオーソリティ136から受信したハンドルを使用して、チケットオーソリティ136に保存された第1の再接続チケットのコピーを削除する。別の実施態様では、第1のプロトコルサービス112は、第1のプロトコルサービス112に保存された第2の再接続チケットのコピーを削除する。さらなる実施態様では、何らかの理由で第2のプロトコル接続124が失敗した場合、関連する第1のプロトコルサービス112で保存された第2の再接続チケットのコピーを第1のプロトコルサービス112によって削除する。さらに別の実施態様では、第1の再接続チケットおよび/または第2の再接続チケットは、ステップ612でのように、接続135における失敗に続いて、および/またはステップ620でのように、接続135の完全な終了に続いて、所定の時間の経過後に自動的に削除される。一実施態様では、第1のプロトコルサービス112またはチケットオーソリティ136のいずれかが、クライアント108とホストサービス116との間の1つ以上の「ホップ」のための1つ以上の再接続チケットを削除する。
【0129】
図8A乃至8Cを参照して、図6A乃至図6Dの例示的実施態様を使用してクライアント108のホストサービス116への最初の接続(例えば、図7のステップ604で)のための方法700の一実施態様を示す。ステップ704で、クライアント108は、ブラウザ162を使用して、例えばHTTPリクエストなどのような、リクエストを第1の計算ノード640に送信する。第1の計算ノード640は、認証情報(例えば、ユーザー名およびパスワード)を要求する、例えばHTMLフォームなどのようなウェブページを返す。クライアント108のユーザーは、自分の認証を入力して完了したフォームを第1の計算ノード640に伝送する。
【0130】
ステップ708で、第1の計算ノード640は、次いでクライアント108のユーザーに実行可能なアプリケーションを通知する。一実施態様では、第1の計算ノード640は、ユーザーの認証をログインページから取り出し、第2の計算ノード644に対しユーザーが利用可能なアプリケーションを列挙するよう求める要求とともに、その認証を第2の計算ノード644に伝送する。ユーザーの認証に基づいて、第2の計算ノード644は、ユーザーが利用可能な特定のアプリケーションのリストを第1の計算ノード640に返し、次いでそのリストは、例えばウェブページの形態で、クライアント108のユーザーに転送される。
【0131】
ステップ712で、ユーザーは、所望のアプリケーションと、そのアプリケーションを第1の計算ノード640に送信する要求を選択する。例えば、一実施態様では、ユーザーは、第1の計算ノード640がユーザーに示すウェブページにリストされた所望のアプリケーションと、そのアプリケーションを第1の計算ノード640に転送するHTTP要求をクリックする。その要求は、第1の計算ノード640によって処理され、第2の計算ノード644に転送される。
【0132】
ステップ716で、第2の計算ノード644は、要求したアプリケーションを実行するホストサービス116を判断する。第2の計算ノード644は、例えば、ロードバランシング式に基づいてその決定を行うことができる。一実施態様では、第2の計算ノード644は、接続124を介してホストサービス116と通信を行うために使用する複数の第1のプロトコルサービス112の中から第1のプロトコルサービス112も判断する。また、第2の計算ノード644は、例えば、ロードバランシング式に基づいてその決定を行うことができる。第2の計算ノード644は、選択したホストサービス116および選択した第1のプロトコルサービス112のアドレスを第1の計算ノード640に返す。
【0133】
ステップ720で、クライアント108には、次いで最初の接続チケットと、中間ノード632(下記のように、その実際のアドレスか、またはその仮想アドレスである)のためのアドレスが提供される。一実施態様では、第1の計算ノード640は、最初の接続チケットの要求とともに、選択したホストサービス116および選択した第1のプロトコルサービス112のアドレスをチケットオーソリティ136に提供する。チケットオーソリティ136は、選択したホストサービス116および選択した第1のプロトコルサービス112のアドレスを保存し、最初の接続チケットを生成し、この最初の接続チケットを第1の計算ノード640に伝送しながら、自身のためのコピーを保存する。一実施態様において、チケットオーソリティ136は、第1の計算ノード640による最初の接続チケットを受けて、クライアント108とホストサービス116との間の各「ホップ」のための接続チケットを生成する。別の実施態様では、第1の計算ノード640は、単独要求または複数の要求における各「ホップ」のための最初の接続チケットを要求する。例えば、チケットオーソリティ126は、図5Bと併せて上述した複数部のチケットを生成する。
【0134】
一実施態様において中間ノード632の実際のアドレスによって構成される第1の計算ノード640は、次いで中間ノード632の実際のアドレスおよび最初の接続チケットをクライアント108のブラウザ162に伝送する。第1の計算ノード640は、例えば、中間ノード632の実際のアドレスおよび最初の接続チケットを含むファイルをまず作成し、次いでそのファイルをクライアント108のブラウザ162に伝送することができる。任意で、別の実施態様では、第1の計算ノード640は、2つ以上の中間ノード632の実際のアドレスによって構成される。このような実施態様では、第1の計算ノード640は、先ずそれを介してクライアント108と第1のプロトコルサービス112との間のメッセージが通過すべき中間ノード632を判断する。第1の計算ノード640は、次いでその選択した中間ノード132の実際のアドレスおよび最初の接続チケットを、例えば、上述のファイルを使用して、クライアント108のブラウザ162に伝送する。一実施態様では、第1の計算ノード640は、ロードバランシング式を使用して中間ノード632を選択する。次いでクライアント108のクライアントエージェント128が起動され、中間ノード632のアドレスを使用して、ステップ724で、クライアント108のクライアントエージェント128と中間ノード632との間の第1のプロトコル接続135aを確立する。一実施態様では、第1の計算ノード640は、各々の接続を有効にするためにチケットオーソリティ136から得られた1つ以上の第1のプロトコルサービス112および/または中間ノード632への最初の接続チケットを提供してよい。
【0135】
あるいは、別の実施態様では、第1の計算ノード640は、中間ノード132の仮想アドレスとしての機能を果たす第3の計算ノード646の実際のアドレスによって構成される。このような実施態様では、ステップ720で、第1の計算ノード640は、第3の計算ノード646の実際のアドレスおよび最初の接続チケットを、例えば、上述のファイルを使用して、クライアント108のブラウザ162に伝送する。次いでクライアント108のクライアントエージェント128が起動され、第3の計算ノード646の実際のアドレスを使用して、ステップ724で、クライアント108のクライアントエージェント128と第3の計算ノード646との間の第1のプロトコル接続を確立する。第3の計算ノード646は、次いで、それを介してクライアント108と第1のプロトコルサービス112との間のメッセージが通過すべき中間ノード632を判断する。一実施態様では、第3の計算ノード646は、ロードバランシング式を使用して中間ノード632を選択する。中間ノード632を選択すると、第3の計算ノード646は、中間ノード632に対する第1のプロトコル接続を確立する。その結果、第3の計算ノード646を介して、第1のプロトコル接続135aが、クライアント108のクライアントエージェント128と中間ノード632との間に存在する。従って、第3の計算ノード646の実際のアドレスは、中間ノード632の実際のアドレスにマップされる。クライアント108のクライアントエージェント128に対して、第3の計算ノード646の実際のアドレスが中間ノード632の仮想アドレスとしての機能を果たす。
【0136】
一実施態様では、複数のレベルの中間ノード632が存在する際には、上述のように、第1の計算ノード640または第3の計算ノード646はそれぞれ、クライアントエージェント128がレベル「a」で接続する中間ノード632だけを選択する。このような実施態様では、各々のレベル「a」乃至「n−1」で、クライアントエージェント128がレベルで送られる中間ノード632は、その後、例えばロードバランシング式に基づいて、次のレベルで接続する中間ノード632を判断する。あるいは、他の実施態様では、第1の計算ノード640または第3の計算ノード646はそれぞれ、複数またはすべてのレベル「a」乃至「n」に対して、クライアントエージェント128が送られる中間ノード632を選択する。
【0137】
クライアント108のクライアントエージェント128と中間ノード632との間の第1のプロトコル接続135a、例えば、レベル「n」の中間ノード132(以下、方法700において中間ノード632と称する)を確立すると、次いでクライアントエージェント128は、最初の接続チケットを中間ノード632に伝送する。
【0138】
次いで、ステップ728で、最初の接続チケットが有効かどうかを判断する。一実施態様では、中間ノード632は、検証のために最初の接続チケットをチケットオーソリティ136に伝送する。一実施態様では、チケットオーソリティ136は、ステップ720で保存した最初の接続チケットのコピーと比較することによって、最初の接続チケットの有効性を判断する。チケットオーソリティ136が最初の接続チケットを有効であると判断した場合、ステップ732で、チケットオーソリティ136は、第1のプロトコルサービス112のアドレスおよび選択したホストサービス116のアドレスを中間ノード632に伝送する。チケットオーソリティ136は、クライアント108がホストサービス116に接続するのに通過する第1のプロトコルサービス112および中間ノード632のための追加の接続チケットを伝送してもよい。第1のプロトコルサービス112は、最初の接続チケットおよびそのコピーを削除することもできる。一方で、チケットオーソリティ136が最初の接続チケットを無効であると判断した場合、ステップ730で、クライアント108は、第1のプロトコルサービス112への接続を拒否し、結果的に、ホストサービス116に接続する。
【0139】
ステップ732に続いて、中間ノード632は、選択した第1のプロトコルサービス112のアドレスを使用して、ステップ736で、中間ノード632と第1のプロトコルサービス112との間の第1のプロトコル接続135bを確立する。一実施態様では、中間ノード632は最初の接続チケットを使用して、中間ノード632と第1のプロトコルサービス112との間の第1のプロトコル接続135bを確立する。ある場合には、中間ノード632はクライアント108から受信した同じ最初の接続チケットを使用して、接続135bを有効にする。別の場合には、中間ノード632は、第1のプロトコル接続135bのために生成され有効にされた最初の接続チケットを使用する。したがってここでは、中間ノード632を介して、クライアント108のクライアントエージェント128と第1のプロトコルサービス112との間に、第1のプロトコル接続135が存在する。中間ノード632は、選択したホストサービス116のアドレスを第1のプロトコルサービス112に渡すこともできる。
【0140】
一実施態様では、ステップ740で、第1のプロトコルサービス112は、選択したホストサービス116のアドレスを使用して、第1のプロトコルサービス112と選択したホストサービス116との間の第2のプロトコル接続124を確立する。例えば、選択したホストサービス116は実際にホストサービス116aであり、第2のプロトコル接続124aが第1のプロトコルサービス112とホストサービス116aとの間に確立される。
【0141】
一実施態様では、ステップ740に続いてステップ744で、ユーザーは実行する第2のアプリケーションを選択し、ステップ748で、第2の計算ノード644は第2のアプリケーションが実行されるホストサービス116を判断する。例えば、ロードバランシング式を計算することによって、第2の計算ノード644は、第2のアプリケーションプログラムを実行するためにホストサービス116bを選択することが可能である。第2の計算ノード644は、次いで選択したホストサービス116bのアドレスを第1のプロトコルサービス112に伝送する。一実施態様では、第2の計算ノード644は、第1のプロトコルサービス112による直接的な通信にあり、そこにアドレスを直接伝送する。別の実施態様では、選択したホストサービス116bのアドレスは、第1のプロトコルサービス112に間接的に伝送される。例えば、第1の計算ノード640、チケットオーソリティ136、中間ノード632、および第1のプロトコルサービス112の任意の組み合わせを介して第1のプロトコルサービス112にアドレスを伝送することができる。選択したホストサービス116bのアドレスを受信すると、第1のプロトコルサービス112は、ステップ752で、第1のプロトコルサービス112と選択したホストサービス116bとの間の第2のプロトコル接続124bを確立する。第2のプロトコル接続124bの確立において、第1のプロトコルサービス112は最初の接続チケットを有効にしてホストサービス116への接続を認証することができる。最初の接続チケットは、中間ノード632へのクライアント108の接続または中間ノード632の第1のプロトコルサービス112への接続いずれかのための最初の接続チケットと同じであってよい。別の実施態様では、チケットオーソリティ136または中間ノード632のいずれかが、第2のプロトコル接続124bにのみ有効なチケットを生成した。第1のプロトコルサービス112および/またはホストサービス116はこのチケットを使用して第2のプロトコル接続124bを有効にする。
【0142】
接続124aおよび124bを通じて通信を行うために使用できる第2のプロトコルは、HTTP、FTP、Oscar、Telnet、ICA、および、RDPを含むがこれらに限定されない。さらに、一実施態様では、上述のように、少なくとも1つの第2のプロトコルは、複数の仮想チャネルを含むが、それぞれリモートクライアント108での機能を可能にする複数のプロトコルパケットを含むことができる。例えば、一実施態様では、一方のホストサービス116aはウェブサーバであり、HTTPプロトコルを使用して接続124aを通じて第1のプロトコルサービス112と通信を行い、他方のホストサービス116bはアプリケーションサーバであり、ICAプロトコルを使用して接続124bを通じて第1のプロトコルサービス112と通信を行う。ホストサービス116bは、クライアント108にグラフィカルユーザーインターフェイスを表示させるグラフィックスクリーンコマンドをクライアント108に伝送するためのプロトコルパケット、およびクライアント108で文書を印刷させるプリンタコマンドをクライアント108に伝送するためのプロトコルパケットの両方を生成する。
【0143】
ステップ744、748、および752は、複数回繰り返すことができる。このように、任意数のアプリケーションプログラムを任意数のホストサービス116a乃至116n上で実行することができ、その出力は、任意数の第2のプロトコルを使用して接続124a乃至124nを通じて第1のプロトコルサービス112へ通信を行うことができる。
【0144】
ステップ756では、第1のプロトコルサービス112は、上述のように、第1のプロトコル内に複数の第2のプロトコルをカプセル化することができる。このように、クライアント108は、複数のホストサービス116に接続され、同時にそれらと通信を行う。
【0145】
別の実施態様では、ステップ744、748、および752を行う前に、例えば、ホストサービス116bなどのようなホストサービス116上で新しいアプリケーションプログラムを実行するために、クライアント108のユーザーは、例えば、ホストサービス116a上で実行しているアプリケーションプログラムなどのような、別のアプリケーションプログラムの実行を終了する。そのような場合、第1のプロトコルサービス112は、第1のプロトコルサービス112とホストサービス116aとの間の接続124aを中断させる。次いで第1のプロトコルサービス112は、ステップ744、748、および752を実行して、クライアント108と第1のプロトコルサービス112との間の接続135を中断せずに、第1のプロトコルサービス112とホストサービス116bとの間の接続124bを確立する。
【0146】
一実施態様では、第1の再接続チケットは、ステップ760で生成される。例えば、中間ノード632は、チケットオーソリティ136から第1の再接続チケットを要求するか、またはクライアント108とホストサービス116との間の各「ホップ」のための第1の再接続チケットを要求する。その要求を受信すると、チケットオーソリティ136は、1つ以上の第1の再接続チケットを生成する。再接続チケットは、例えば大きな乱数であり、例えばより小さな乱数であるハンドルも生成することができる。次いでチケットオーソリティ136は、ステップ764で、第1の再接続チケットおよびハンドルを中間ノード632に伝送することができ、一方で第1の再接続チケットのコピーおよびハンドルのコピーを保存する。チケットオーソリティ136は、ステップ720で第1の計算ノード640によってそこに伝送された第1のプロトコルサービス112のアドレスの維持を継続する。次いで中間ノード632は、ステップ768で、クライアントの第1の再接続チケットをクライアント108に伝送する。
【0147】
ステップ772では、次いで1つ以上の第2の再接続チケットを生成する。一実施態様では、第1のプロトコルサービス112は、例えば大きな乱数となりうるクライアント108のための第2の再接続チケットを生成する。別の実施態様では、第1のプロトコルサービス112は、クライアント108とホストサービス116との間の1つ以上の「ホップ」のための第2の再接続チケットを生成する。次いで第1のプロトコルサービス112は、ステップ776で、中間ノード632を介してクライアントの第2の再接続チケットをクライアント108に伝送する。この際、第1のプロトコルサービス112は、接続135の中断に続いて再接続されるセッションを識別するために、第2の再接続チケットのコピーおよびそれらに関連するセッション番号を保存する。一実施態様では、例えば、第1のプロトコルサービス112は、特定のセッション番号に対して、そのセッション番号に関連する第2のプロトコル接続124a乃至124nをリストしたテーブルを維持する。同様に、第1のプロトコルサービス112は、クライアント108をホストサービス116に再接続するよう有効にされた各「ホップ」のための第1および/または第2の再接続チケットを維持することができる。
【0148】
従って、第1のプロトコルサービス112、および/またはそれに続く任意の第1のプロトコルサービス112および/または中間ノード632における第1のプロトコル接続135の再確立および第2の再接続チケットの検証に続けて、第1のプロトコルサービス112は、クライアント108への通信のために、再確立された第1のプロトコル接続135内にカプセル化された第2のプロトコル接続124を識別することができる。あるいは、別の実施態様では、再度図1Aを参照すると、本発明のシステム100は、中間ノード132、チケットオーソリティ136、第3の計算ノード646のいずれも含まない。
【0149】
このような実施態様では、ステップ760乃至776では、第1および第2の再接続チケットの両方を生成および伝送するのではなく、システム100および方法700は、クライアント108のための、またはクライアント108とホストサービス116との間の1つ以上の「ホップ」のための、単一の再接続チケットだけを提供する。このような一実施態様では、第1のプロトコルサービス112は、例えば大きな乱数となりうる単一の再接続チケットを生成する。第1のプロトコルサービス112は、次いでクライアントの再接続チケットを接続135を通じてクライアント108に直接伝送する。この際、第1のプロトコルサービス112は、接続135の中断に続いて再接続されるセッションを識別するために、単一の再接続チケットのコピーおよびそれらに関連するセッション番号を保存する。別の実施態様では、第1のプロトコルサービス112はそのホストサービス116への接続のための再接続チケットおよびその再接続チケットの回収に関連するセッション番号を保存する。
【0150】
以下、図9を参照して、図6A乃至6Dの例示的実施態様を使用した(例えば、図7のステップ616で)クライアント108に1つ以上のホストサービス116への信頼できる接続を提供し、クライアント108をホストサービス116へ再接続する方法800の一実施態様を示す。特に、ステップ804で、第1のプロトコルサービス112と1つ以上のホストサービス116のそれぞれとの間の第2のプロトコル接続124を維持する。さらに、ステップ808で、例えば、図7のステップ616で中断していると判断された接続135を介して、クライアント108のクライアントエージェント128と第1のプロトコルサービス112との間の直近に伝送されたデータパケットのキューを維持する。一実施態様では、データパケットは、接続135の前でも失敗時でもキューに入れられ維持される。キューに入れたデータパケットは、例えば、クライアントエージェント128によってバッファ内に維持することができる。あるいは、第1のプロトコルサービス112は、キューに入れたデータパケットをバッファ内に維持することができる。さらに別の実施態様では、クライアントエージェント128および第1のプロトコルサービス112のどちらも、キューに入れたデータパケットをバッファ内に維持する。
【0151】
ステップ812で、新しい第1のプロトコル接続135が、クライアント108のクライアントエージェント128と第1のプロトコルサービス112との間に確立され、第1のプロトコルサービス112と1つ以上のホストサービス116のそれぞれとの間で維持された第2のプロトコル接続124にリンクされ、それによって、クライアント108をホストサービス116に再接続する。クライアント108の再接続後、ステップ808で維持されたキューに入れたデータパケットは、ステップ816で、新しく確立された第1のプロトコル接続135を介して伝送することができる。このように、ホストサービス116とクライアント108との間の通信セッションは、第1のプロトコルサービス112を介して、いずれのデータも失わずに持続的に進められる。
【0152】
ステップ808において、第1のプロトコルサービス112を横断する複数の「ホップ」を伴う実施態様では、データパケットの一部またはすべてが1つ以上の第1のプロトコルサービス112において維持されることができる。ステップ812において、各「ホップ」が再確立されることができる。上述のように、クライアント108が1つ以上の第1のプロトコルサービス112に再接続および再リンクされた後、残っている接続のそれぞれは、ホストサービス116への最後の「ホップ」が再確立されるまで、以前再接続した「ホップ」に再接続および再リンクされることができる。最後の「ホップ」が再確立または再リンクされた後、または各「ホップ」が再確立または際リンクされた際のいずれかに、ステップ808で維持されたキューに入れたデータパケットは、ステップ816で伝送されることができる。
【0153】
以下、図10Aおよび10Bを参照して、図6A乃至6Dの例示的実施態様を使用した、(例えば、図9のステップ812で)クライアント108を1つ以上のホストサービス116へ再接続する方法900の一実施態様を示す。ステップ904で、クライアント108と第1のプロトコルサービス112との間のうちの残りの接続を中断する。例えば、接続135aは失敗したが、接続135bは失敗していない場合、接続135bを中断する。あるいは、接続135bは失敗したが、接続135aは失敗していない場合、接続135aを中断する。
【0154】
一実施態様では、例えば、図8のステップ720で、クライアント108に提供した中間ノード632の実際のアドレスを使用して、ステップ908で、クライアント108のクライアントエージェント128は、次いでクライアントエージェント128と中間ノード632との間の第1のプロトコル接続135aを再確立する。あるいは、別の実施態様では、例えば、図8のステップ720で、クライアント108に提供した第3の計算ノード646の実際のアドレスを使用して、ステップ908で、クライアント108のクライアントエージェント128は、次いでクライアントエージェント128と第3の計算ノード646との間の第1のプロトコル接続を再確立する。第3の計算ノード646は、クライアント108と第1のプロトコルサービス112との間のメッセージが通過すべき中間ノード632を判断する。一実施態様では、第3の計算ノード646は、ロードバランシング式を使用して中間ノード632を選択する。クライアント108の1つ以上のホストサービス116への再接続において、第3の計算ノード646によって選択された中間ノード632は、例えば、図8のステップ720で、クライアント108を1つ以上のホストサービス116に最初に接続するために、その選択とは異なることができる。一実施態様では、選択した中間ノード632のための最初の接続チケットは、クライアント108をホストサービス116へ再接続する際に生成される。
【0155】
中間ノード632を選択すると、第3の計算ノード646は、中間ノード632への第1のプロトコル接続135aを再確立する。従って、第1のプロトコル接続135aは、第3の計算ノード646を介して、クライアント108のクライアントエージェント128と中間ノード632との間に再確立される。一実施態様では、中間ノード632への第1のプロトコル接続135aが再確立されると、第1のプロトコル接続135aはこの「ホップ」のための第1または第2の再接続チケットをチケットオーソリティ136で有効にすることにより、有効化される。
【0156】
一実施態様では、1つより多いレベルの中間ノード632が存在する場合、クライアントエージェント128がレベル「a」乃至「n−1」で送られる中間ノード632は、例えばロードバランシング式に基づいて、次のレベルで接続される中間ノード632を判断する。あるいは、別の実施態様では、第3の計算ノード646は、複数またはすべてのレベル「a」乃至「n」に対して、それを介してクライアントエージェント128が送られる中間ノード632を判断する。その他の実施態様では、中間ノード632または計算ノードの1つ(例えば、第3の計算ノード646)のいずれかが、1つ以上の接続またはクライアントエージェント128が送られる「ホップ」のための第1または第2の再接続チケットを生成する。
【0157】
クライアント108のクライアントエージェント128と中間ノード632との間の第1のプロトコル接続135a、例えば、レベル「n」の中間ノード132(以下、方法900において中間ノード632と称する)を確立すると、次いでクライアントエージェント128は、ステップ912で、クライアント108のための第1の再接続チケットおよび第2の再接続チケットを中間ノード632に伝送する。
【0158】
次いで、ステップ916で、第1の再接続チケットが有効かどうかを判断する。一実施態様では、第1の再接続チケットの有効性は、チケットオーソリティ136を使用することによって判断される。例えば、中間ノード632は、第1の再接続チケットをチケットオーソリティ136に伝送する。一実施態様では、チケットオーソリティ136は、第1の再接続チケットの有効性を、以前に保存した第1の再接続チケットのコピーと比較することによって判断する。チケットオーソリティ136が第1の再接続チケットを有効であると判断した場合、ステップ920で、チケットオーソリティ136は、第1のプロトコルサービス112のアドレスを中間ノード632に伝送する。あるいは、チケットオーソリティ136が第1の再接続チケットを無効であると判断した場合、ステップ924で、クライアント108は、第1のプロトコルサービス112への再接続を拒否し、結果的に、ホストサービス116に接続する。
【0159】
ステップ928で、第1の再接続チケットは、例えばチケットオーソリティ136によって削除され、代替の第1の再接続チケットが、例えばチケットオーソリティ136により生成される。さらに、代替のハンドルが、例えばチケットオーソリティ136により生成されることができる。一部のこのような実施態様では、チケットオーソリティ136は、代替の第1の再接続チケットおよび代替のハンドルを中間ノード632に伝送する。さらに、一部のこのような実施態様では、チケットオーソリティ136は、代替の第1の再接続チケットのコピーを保存する。一部の実施態様では、チケットオーソリティ136は、クライアント108が第1の再接続チケットの削除に進む前に代替の第1の再接続を受信したことを認識するまで待つ。
【0160】
第1の再接続チケットの検証後、中間ノード632は、第1のプロトコルサービス112のアドレスを使用して、ステップ932で、中間ノード632と第1のプロトコルサービス112との間の第1のプロトコル接続135bを再確立する。中間ノード632と第1のプロトコルサービス112との間の第1のプロトコル接続135bを再確立すると、次いでステップ936で、第2の再接続チケットが有効かどうかを判断する。一実施態様では、第2の再接続チケットの有効性は、第1のプロトコルサービス112を使用することによって判断する。例えば、中間ノード632は、第2の再接続チケットを第1のプロトコルサービス112に伝送する。一実施態様では、第1のプロトコルサービス112は、第2の再接続チケットの有効性を、以前に保存した第2の再接続チケットのコピーと比較することによって判断する。ステップ936の別の実施態様では、第1のプロトコルサービス112は、第1のプロトコルサービス112とホストサービス116との間、または別の実施態様において、第1のプロトコルサービス112と別の第1のプロトコルサービス112または中間ノード632と間の接続のための第1の再接続チケットを有効にする。従って、同様に、第1のプロトコルサービス112とホストサービス116との間の各「ホップ」は、クライアント108を代表する「ホップ」の継続使用を有効にするための最初のまたは再接続チケットいずれかの1つ以上のチケットによって有効にされる。
【0161】
第1のプロトコルサービス112が第2の再接続チケットを有効であると判断した場合、第1の中間ノード132と第1のプロトコルサービス112との間で再確立された第1のプロトコル接続135bは、ステップ940で、第1のプロトコルサービス112と1つ以上のホストサービス116のそれぞれとの間で維持された第2のプロトコル接続124にリンクされる。さもなければ、第1のプロトコルサービス112が第2の再接続チケットを無効であると判断した場合、再確立された第1のプロトコル接続135bは、1つ以上の維持された第2のプロトコル接続124にはリンクされず、クライアント108は、ステップ944で、1つ以上のホストサービス116への再接続を拒否する。第1のプロトコルサービス112とホストサービス116との間の多数ホップ接続の場合、各「ホップ」は、再接続を有効にされ、ステップ940において、ホストサービス116への最後の「ホップ」が有効にされるまで、または「ホップ」の1つが再接続を拒否されるまで」、前の「ホップ」にリンクされる。
【0162】
ステップ948で、第2の再接続チケットは、例えば第1のプロトコルサービス112によって削除され、代替の第2の再接続チケットが、クライアント108への伝送のために、例えば第1のプロトコルサービス112により生成される。このような実施態様では、第1のプロトコルサービス112は、代替の第2の再接続チケットのコピーを保存する。一部の実施態様では、第1のプロトコルサービス112は、クライアント108が第2の再接続チケットの削除に進む前に代替の第2の再接続を受信したことを認識するまで待つ。クライアント108を再接続するための1つ以上の「ホップ」を有効にする場合、ステップ948において、チケットオーソリティ136、中間ノード632、計算ノードのいずれか、または1つ以上の第1のプロトコルサービス112によって、1つ以上の代替の再接続チケットが生成される、および/またはコピーが保存されることができる。
【0163】
ステップ952で、代替の第1の再接続チケットおよび代替の第2の再接続チケットは、クライアントに伝送される。例えば、チケットオーソリティ136は、中間ノード632を介して、代替の第1の再接続チケットをクライアント108に伝送することができる。さらに、一実施態様では、第1のプロトコルサービス112は、中間ノード632を介して、代替の第2の再接続チケットをクライアント108に伝送する。別の実施態様では、1つ以上の「ホップ」のための代替の再接続チケットを1つ以上の中間ノード632、計算ノードのいずれか、または1つ以上の第1のプロトコルサービス112に伝送することができる。
【0164】
あるいは、他の実施態様では、上述のように、本発明のシステム100および方法は、クライアント108のための単一の再接続チケットおよび/またはクライアント108とホストサービス116との間の各「ホップ」のための単一の再接続だけを提供する。このように、第1および第2の再接続チケットの両方を使用するのではなく、例示的方法900は、上述の単一の再接続チケットだけを使用する。このような一実施態様では、クライアント108のクライアントエージェント128には、第1のプロトコルサービス112のアドレスも提供される。ホストサービス116に再接続するために、クライアントエージェント128は、単一の再接続チケットを第1のプロトコルサービス112に直接伝送する。第1のプロトコルサービス112は、次いで単一の再接続チケットが有効であるかどうかを判断する。一実施態様では、第1のプロトコルサービス112は、単一の再接続チケットの有効性を、以前に保存した単一の再接続チケットのコピーと比較することによって判断する。第1のプロトコルサービス112が単一の再接続チケットを有効であると判断した場合、クライアント108と第1のプロトコルサービス112との間で再確立された第1のプロトコル接続135は、第1のプロトコルサービス112と1つ以上のホストサービス116のそれぞれとの間で維持された第2のプロトコル接続124にリンクする。さもなければ、第1のプロトコルサービス112が単一の再接続チケットを無効であると判断した場合、再確立された第1のプロトコル接続135は、1つ以上の維持された第2のプロトコル接続124にはリンクされず、クライアント108は、1つ以上のホストサービス116への再接続を拒否する。
【0165】
単一の再接続チケットの検証後、単一の再接続チケットは、例えば、第1のプロトコルサービス112によって削除され、代替の単一の再接続チケットが、クライアント108への伝送のために、例えば第1のプロトコルサービス112により生成される。代替の単一の再接続チケットのクライアント108への伝送では、第1のプロトコルサービス112は、代替の単一の再接続チケットのコピーを保存する。一部の実施態様では、第1のプロトコルサービス112は、クライアント108が単一の再接続チケットの削除に進む前に代替の単一の再接続を受信したことを認識するまで待つ。
【0166】
さらに別の実施態様では、第1および第2の再接続チケットと同様に、単一の再接続チケットは、ステップ612でのように、接続135における失敗に続いて、および/またはステップ620でのように、接続135の完全な終了に続いて、所定の時間の経過後に自動的に削除されるように構成される。
【0167】
本発明の趣旨および範囲から逸脱することなく、多くの修正および改良が当業者によってなされる場合がある。従って、例示的実施態様は例としての目的のみのために示されたものであり、以下の特許請求の範囲によって定義される本発明を限定するものと考えられるべきでないことは、明確に理解されなければならない。これらの特許請求の範囲は、上記の図に示し説明したものとその他の点で同一でないとしても、逐語的に説明するものおよび非現実的に異なる同等の要素を含むものとして解釈されたい。
【図面の簡単な説明】
【0168】
上述の本発明の他の目的、局面、特徴、および利点は、添付図面とともに以下の説明を参照することによって、より明らかになり、よりよく理解されるであろう。
【図1A】図1Aは、本発明の実施態様による、クライアントにホストサービスへの信頼できる接続を提供するシステムのブロック図である。
【図1B】図1Bは、本発明の実施態様による、クライアントにホストサービスへの信頼できる接続を提供するシステムのブロック図である。
【図2A】図2Aは、本発明の実施態様による、ネットワーク上で行われる通信を示す。
【図2B】図2Bは、本発明の別の実施態様による、ネットワーク上で行われる通信を示す。
【図3】図3は、本発明の実施態様による、ネットワーク上での通信のための第1のプロトコル内において複数の第2のプロトコルをカプセル化する過程を示す。
【図4】図4は、本発明による図1A〜1Bの通信システムの動作の実施態様を図解する流れ図である。
【図5A】図5Aは、本発明により構成される通信システムの別の実施態様を示すブロック図である。
【図5B】図5Bは、本発明による図5Aの通信システムの動作の実施態様を図解する流れ図である。
【図6A】図6Aは、本発明の実施態様によるクライアントをホストサービスに再接続するための構成要素をさらに含む、図1Aの例示的システムのブロック図である。
【図6B】図6Bは、本発明の別の実施態様によるクライアントをホストサービスに初期に接続するための構成要素をさらに含む、図6Aの例示的システムのブロック図である。
【図6C】図6Cは、本発明の別の実施態様によるクライアントをホストサービスに初期に接続し、クライアントをホストサービスに再接続するための構成要素をさらに含む、図6Bの例示的システムのブロック図である。
【図6D】図6Dは、図6Cのシステムの代替となる実施態様を示すブロック図である。
【図7】図7は、本発明の実施態様によるネットワーク通信のための方法を示す流れ図である。
【図8A】図8Aは、本発明の実施態様によるクライアントを複数のホストサービスに接続するための方法を示す流れ図である。
【図8B】図8Bは、本発明の実施態様によるクライアントを複数のホストサービスに接続するための方法を示す流れ図である。
【図8C】図8Cは、本発明の実施態様によるクライアントを複数のホストサービスに接続するための方法を示す流れ図である。
【図9】図9は、本発明の実施態様によるクライアントにホストサービスへの信頼できる接続を提供し、クライアントをホストサービスに再接続するための方法を示す流れ図である。
【図10A】図10Aは、本発明の実施態様によるクライアントをホストサービスに再接続するための方法を示す流れ図である。
【図10B】図10Bは、本発明の実施態様によるクライアントをホストサービスに再接続するための方法を示す流れ図である。
【技術分野】
【0001】
本発明は、概してネットワーク通信に関する。より具体的には、本発明は、セッションの持続化および信頼性を提供するため、カプセル化通信プロトコルを使用してネットワークコンポーネントをセキュアに横断することにより、クライアント通信を再確立するシステムおよび方法に関する。
【背景技術】
【0002】
2台のコンピュータ、例えばクライアントおよびサーバの間のネットワーク上における通信は、様々な周知の通信プロトコルを使用して実施されうる。概して、クライアントはサーバからネットワーク上でコンテンツをダウンロードするためにサーバと通信を行う。例えば、サーバはクライアントによりアクセス可能な1つ以上のアプリケーションをホスティングすることがある。さらに、クライアントは、概してルータまたはファイアウォール等の、サーバからのコンテンツが通過するセキュリティゲートウェイであるプロキシを介してサーバと通信を行うことがある。また、サーバは、そのサーバとの未許可の通信のやりとりを禁止するためファイアウォールを含むことがある。クライアントは、プロキシのセキュリティおよびサーバのファイアウォールを経由してサーバおよびサーバのコンテンツにアクセスする。しかしながら、多くの場合、プロキシを介してサーバまで行き着くネットワーク接続は断絶しやすい。例えば、クライアントとプロキシの間の無線接続は、多くの場合信頼できない。その他、ネットワーク接続が断続的となる場合がある。そのため、エレベーターまたはトンネルに入ると接続が失われ、そのエレベーターまたはトンネルから出ないかぎり回復できない場合がある。
【0003】
クライアントおよびサーバコンピュータの間に確立された通信セッションが異常終了すると、クライアントは概して新しい通信セッションを開始することにより接続を再確立しなければならない。新しい通信セッションを始めるためには、ユーザーが新しい通信セッションに許可されるよう、ユーザーは概して、ログイン/パスワードのペア等の認証証明書をプロキシおよびサーバコンピュータへ再伝送しなければならない。この多数の通信セッションにわたるユーザーの認証証明書の再伝送は、そのユーザーの認証証明書を潜在的攻撃者に対し繰り返し露呈し、それによって認証証明書のセキュリティレベルを低下させる。さらに、攻撃者がプロキシのセキュリティまたはサーバのファイアウォールをバイパスした場合、その攻撃者は追加セキュリティに遭遇することなしにサーバのコンテンツにアクセスすることができる。また、ユーザーに認証証明書を再入力させることは、多くの場合、ユーザーにフラストレーションおよび不便さをもたらす時間のかかるプロセスである。
【0004】
現在の多くのプロトコルを使用してネットワーク接続で通信を行う際、ネットワーク接続が中断した場合にはデータパケットが失われる。例えば、標準的なTCPネットワーク接続を介して通信を行う場合、データバッファは概して接続の中断とともに消去される。そのため、ネットワーク接続が回復すると、サーバ上のユーザーセッションのようなネットワーク化アプリケーションは中断前の状態から再開することができない。概してエラーメッセージが表示され、ユーザーに不便さに対するフラストレーションを与えることになる。さらに、多くのプロトコルを使用するネットワーク上での通信では、トランスポート接続の再確立を必要とすることが多い。例えば、HTTPを単独でまたはプロキシプロトコルと併せて使用し、標準的なTCP接続でウェブサイトを閲覧するには、各リソースに対する新しいHTTP接続に加えて、以前のTCP/プロキシプロトコル接続を閉じて、各リソースに対する新しいTCP/プロキシプロトコル接続を開く必要がある。
【0005】
従って、クライアントの認証証明書の再伝送を繰り返す必要がなく、また未許可のユーザーからのサーバ保護を高めながら、クライアントコンピュータとサーバコンピュータの間に通信セッションを再確立するための技術を提供することが望ましい。多数のネットワークコンポーネントをセキュアに横断するため、認証証明書の再伝送を繰り返す必要なくクライアントコンピュータとサーバコンピュータの間に通信セッションを再確立する、より高度なシステムおよび方法が必要とされる。
【発明の開示】
【課題を解決するための手段】
【0006】
本発明は、クライアントをホストサービスとの持続的で信頼できる接続に再接続するためのシステムおよび方法に関し、その接続はネットワークコンポーネントをセキュアに横断する。クライアントの再接続は、クライアントのホストサービスへの接続の再確立と、クライアントとホストサービスの間にある1つ以上の接続の再認証を含む、クライアントのユーザーのホストサービスに対する再認証を含む。ホストサービスへの持続的で信頼できる接続は、クライアントを代表する1つ以上の第1のプロトコルサービスにより維持される。第1のプロトコルサービスは、クライアントとホストサービスの間で通信されるデータがバッファリングされ、クライアントとホストサービスの間にあるネットワーク接続におけるいかなる中断の間も維持されることを確実にする。ネットワーク接続における一時的な中断は、例えば、モバイルクライアント等のクライアントが同じネットワーク内の異なるアクセスポイント間でローミングを行う際、またはクライアントがネットワークを(例えば、有線ネットワークから無線ネットワークへ)切り替える際に起こりうる。
【0007】
ネットワーク中断の間バッファリングされたデータを維持することに加え、第1のプロトコルサービスは、クライアントの第1のプロトコルサービスへの接続を再確立する際に、ホストサービスに対しクライアントを再認証する。これはクライアントのユーザーがそのホストサービスとの接続を再確立するために認証証明書を再入力するのを防止する。さらに、クライアントとホストサービスの間にある多数の接続のそれぞれは、ホストサービスへのアクセスにおいて追加セキュリティ保護を提供するために、例えばプロキシとして作用する第1のプロトコルサービスを介して再認証される。再認証後、第1のプロトコルサービスはクライアントの接続ホストサービスに再度リンクする。要約すると、本発明は、サーバに対するネットワークコンポーネントをセキュアに横断するため、またユーザーが認証証明書を再入力することなく、クライアントとホストサービスの間にあるネットワーク接続の再確立を提供するものである。
【0008】
一局面において、本発明はクライアントとホストサービスを再接続するための方法に関する。前記方法は、クライアントと第1のプロトコルサービスの間にある第1の接続および第1のプロトコルサービスとホストサービスの間にある第2の接続を介し、クライアントおよびホストサービスの間に通信セッションを提供するステップを含む。前記方法は、第1の接続および第2の接続のうち一方における中断を検出し、第1の接続および第2の接続のうちもう一方を維持するステップをさらに含む。前記方法の別のステップにおいて、第1のプロトコルサービスは第1のチケットおよび第2のチケットを得て、中断した接続を再確立するために第1のチケットを有効にする。第1のプロトコルサービスは維持された接続の使用を継続するために第2のチケットを有効にし、再確立された接続を維持された接続にリンクする。
【0009】
一実施態様において、前記方法は中断した接続において、中断の間、通信セッションを維持するステップを含む。別の実施態様において、前記方法は前記第1のプロトコルサービスおよびチケットオーソリティのうち少なくとも1つによって、前記第1のチケットおよび前記第2のチケットのうちいずれか1つを生成するステップをさらに含む。前記方法は、前記チケットオーソリティによって、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを有効にするステップを含んでよい。
【0010】
別の実施態様において、前記方法は、ウェブサーバに対しクライアントを認証するステップと、ウェブサーバによって、前記第1のチケットを前記クライアントへ伝送するステップとをさらに含む。前記方法は、前記ホストサービスによって、通信セッションの確立時に前記クライアントを認証するステップをさらに含んでよい。一実施態様において、前記方法は、前記クライアントによって、前記第1のチケットを前記第1のプロトコルサービスへ伝送するステップを含む。
【0011】
さらなる実施態様において、前記第1のプロトコルサービスはプロキシサーバを含む。別の実施態様において、前記第1のプロトコルサービスはセキュリティゲートウェイを含む。前記方法は、第2のプロトコルをカプセル化する第1のプロトコルを使用して通信を行う前記クライアントおよび前記第1のプロトコルサービスと、前記第2のプロトコルを使用して通信を行う前記第1のプロトコルサービスおよび前記ホストサービスとをさらに含んでよい。
【0012】
別の実施態様において、前記第1のチケットは前記第1の接続に有効であり、前記第2のチケットは前記第2の接続に有効である。任意で、前記第2のチケットは、前記第1のチケットが有効にされるまで使用不可能であってよい。一実施態様において、前記再確立された接続は、前記第1のチケットおよび前記第2のチケットが有効にされた後、前記維持された接続にリンクされる。
【0013】
さらなる実施態様において、前記第1の接続および前記第2の接続のうちいずれかまたは両方が、中間ノードおよび1つ以上の第1のプロトコルサービスのうちいずれか1つを介して接続された複数の接続を含んでよい。前記方法は、前記複数の接続のうち少なくとも1つのために第3のチケットを生成するステップをさらに含んでよい。前記第3のチケットは、前記複数の接続のうち少なくとも1つに有効であってよい
別の局面において、本発明はクライアントをホストサービスに再接続するためのシステムに関する。前記システムは、クライアントおよび第1のプロトコルサービスを含む。前記クライアントは、第1の接続を介しホストサービスとの通信セッションを確立する。前記第1のプロトコルサービスは、前記クライアントとの前記第1の接続および前記ホストサービスとの第2の接続を確立する。前記第1のプロトコルサービスは、前記第1の接続および前記第2の接続のうち少なくとも1つを含む接続を維持する。さらに、前記第1のプロトコルサービスは、前記第1の接続および前記第2の接続のうち一方において中断した接続を再確立するために第1のチケットを有効にし、前記第1の接続および前記第2の接続のうちもう一方を使用するために第2のチケットを有効にする。前記システムは、前記再確立された接続を前記維持された接続にリンクする前記第1のプロトコルサービスをさらに含む。
【0014】
一実施態様において、前記システムは前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを生成するチケットオーソリティをさらに含む。別の実施態様において、前記第1のプロトコルサービスは、前記中断した接続において、中断の間、前記通信セッションを維持する。さらなる実施態様において、前記第1のプロトコルサービスは、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを生成する。前記システムは、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを有効にする前記チケットオーソリティを含んでよい。
【0015】
別の実施態様において、前記システムはウェブサーバをさらに含む。前記ウェブサーバは前記クライアントを認証し、一実施態様において、前記第1のチケットを前記クライアントに伝送する。さらなる実施態様において、前記クライアントは前記第1のチケットを前記第1のプロトコルサービスに伝送する。さらに別の実施態様において、前記ホストサービスは前記通信セッションの確立時に前記クライアントを認証する。
【0016】
一実施態様において、前記第1のプロトコルサービスはプロキシサーバを含み、別の実施態様において、前記第1のプロトコルサービスはセキュリティゲートウェイを含む。前記システムは、第2のプロトコルをカプセル化する第1のプロトコルを使用して通信を行う前記クライアントおよび前記第1のプロトコルサービスと、前記第2のプロトコルを使用して通信を行う前記第1のプロトコルサービスおよび前記ホストサービスとを含んでよい。
【0017】
さらなる実施態様において、前記第1のチケットは前記第1の接続に有効であり、前記第2のチケットは前記第2の接続に有効である。また、前記第2のチケットは、前記第1のチケットが有効にされるまで使用不可能であってよい。一実施態様において、前記第1のプロトコルサービスは、前記第1のチケットおよび前記第2のチケットが有効にされた後、前記再確立された接続を前記維持された接続にリンクする。
【0018】
さらなる実施態様において、前記第1の接続および前記第2の接続のうちいずれか1つは、中間ノードおよび1つ以上の第1のプロトコルサービスのうちいずれか1つを介して接続された複数の接続を含む。前記システムは、前記複数の接続のうち少なくとも1つのために第3のチケットの生成をさらに含み、一実施態様において、前記第3のチケットは、前記複数の接続のうち少なくとも1つに対し有効である。
【0019】
付随する図面および以下の説明において、本発明の様々な実施態様を詳しく説明する。
【発明を実施するための最良の形態】
【0020】
以下、本発明の特定の実施態様について説明する。しかし、本発明は、これらの実施態様に限定されるものではなく、本願明細書に明白に開示した内容への追加および変更が本発明の範囲に明白に含まれることを意図していることに留意されたい。さらに、本願明細書に開示される種々の実施態様の特徴は排他的でなく、本願明細書に組み合わせまたは置き換えが明示されていなくても、本発明の精神と範囲から逸脱することなくそのような組み合わせおよび置き換えが存在しうると理解されたい。
【0021】
本発明の具体例は、クライアントとホストサービスの間に確実で持続的な接続を確立し、接続において中断がある場合に接続を再接続するシステムおよび方法を提供する。クライアントはクライアントと第1のプロトコルサービスの間の第1の接続および第1のプロトコルサービスとホストサービスの間の第2の接続を介してホストサービスと通信セッションを確立する。クライアントは第1のプロトコルを使用して第1のプロトコルサービスと通信を行い、第1のプロトコルサービスは第2のプロトコルを使用してホストサービスと通信を行う。第2のプロトコルはクライアントから第1のプロトコル通信内でカプセル化された第1のプロトコルへの通信を行う。第1の接続または第2の接続いずれかにおいて中断が検出された場合、第1のプロトコルサービスは、中断されていない接続を維持しながら、中断された接続を再確立する。中断された接続は、クライアントをホストサービスに再接続するため、維持された接続とリンクされる。
【0022】
さらに、本発明の具体例は、クライアントのホストサービスへの接続確立および再接続においてネットワークコンポーネントをセキュアに横断するシステムおよび方法を提供する。第1のプロトコルサービスはクライアントとホストサービスの間のプロキシとして作用することができ、セキュリティゲートウェイを含んでもよい。第1のプロトコルサービスはチケットオーソリティより第1のチケットおよび第2のチケットを得る。第1のチケットはクライアントと第1のプロトコルサービスの間の接続を有効にするために使用され、第2のチケットは第1のプロトコルサービスとホストサービスの間の接続を有効にするために使用される。第2のチケットは、第1のチケットが有効にされるまで使用不可能であってよい。第1のプロトコルサービスは第1のチケットを、第1の接続の使用の再確立または維持において有効にし、第2のチケットを、第2の接続の使用の再確立および維持において有効にする。第1および第2のチケットが有効にされ接続が再確立されると、第1のプロトコルサービスは、クライアントのホストサービスとの通信セッションを維持するため、第1の接続を第2の接続にリンクする。追加のチケットが生成され、ユーザーの追加通信、またはクライアントとホストサービスの間の「ホップ」を再確立または維持してもよい。このようにして、クライアントとホストサービスの間の各通信または「ホップ」は有効にされる。
【0023】
図1Aを参照すると、概して本発明は、ネットワーク通信に関し、特にクライアントへのホストサービスとの信頼できる接続の提供に有用となりうる。概観すると、ネットワーク通信のシステム100は、ネットワーク104上で第1のプロトコルサービス112(例えば、第2のコンピュータ)と通信を行うクライアント108(例えば、第1のコンピュータ)を含む。またシステム100は、ホストノード188上にあり、第1のプロトコルサービス112と通信を行い、第1のプロトコル112を経由してネットワーク104上でクライアント108と通信を行う複数のホストサービス116a乃至116n(例えば、第3のコンピュータ)も含む。あるいは、本発明の別の実施態様では、図1Bを参照すると、第1のプロトコルサービス112およびホストサービス116a乃至116nは、独立したコンピュータとして使用されるのではなく、むしろ図1Aのように、例えばホストノード118aのような同じコンピュータに組み込まれる。図1Bにおいて、ホストサービス116a乃至116nは、ネットワーク104’上で第1のプロトコルサービス112と通信を行う。システム100は、1つ、2つ、または多数のホストノード118a乃至118nを含むことができる。
【0024】
一実施態様において、図1Bに示すように、ネットワーク104および104’は独立したネットワークである。図1Aに示すように、ネットワーク104および104’は同じネットワーク104とすることができる。一実施態様では、ネットワーク104および/またはネットワーク104’は、例えば、会社のイントラネットのようなローカルエリアネットワーク(LAN)または、例えば、インターネットまたはワールドワイドウェブのようなワイドエリアネットワーク(WAN)である。クライアント108、第1のプロトコルサービス112、ホストサービス116a乃至116n、および/またはホストノード118a乃至118nは、これらに限定されないが、標準電話回線、LANまたはWANのリンク(例えば、802.11、T1、T3、56kb、X.25)、ブロードバンド接続(例えば、ISDN、Frame Relay、ATM)、無線接続、あるいはこれらのいずれかまたはすべてを組み合わせたものなど、様々な接続を介してネットワーク104および/またはネットワーク104’に接続することができる。
【0025】
クライアント108は第1のプロトコルサービス112とクライアント‐第1のプロトコルサービス間通信チャネル135上で通信を行っており、またクライアント‐ウェブサーバ間通信チャネル140上でウェブサーバ120とも通信を行っている。第1のプロトコルサービス112は第1のプロトコルサービス‐オーソリティ間通信チャネル145でチケットオーソリティ136と通信を行っており、ウェブサーバ120はウェブサーバ‐オーソリティ間通信チャネル150上でチケットオーソリティ136と通信を行っている。第1のプロトコルサービス112は第1のプロトコルサービス‐サーバ間通信チャネル124a乃至124n上でホストノード118とも通信を行っている。別の実施態様において、ウェブサーバ120はエージェント‐サーバ間通信チャネル155上でホストノード118と通信を行うことができる。同様に、ホストノード118はチケット‐サーバ間通信チャネル157上でチケットオーソリティ136と通信を行うことができる。一実施態様において、それぞれの通信チャネル124a乃至124n、135、140、144、150、155、157は、ネットワーク104上に確立される。
【0026】
通信チャネル124a乃至124n、135、140、144、150、155、157の実施例は、標準電話回線、LANまたはWANのリンク(例えば、T1、T3、56kb、X.25)、ブロードバンド接続(ISDN、Frame Relay、ATM)、および無線接続を含む。通信チャネル124a乃至124n、135、140、144、150、155、157上での接続は、様々な通信プロトコル(例えば、HTTP、HTTPS、TCP/IP、IPX、SPX、NetBIOS、イーサネット(登録商標)、RS232、メッセージングアプリケーションプログラミングインターフェイス(MAPI)プロトコル、リアルタイムストリーミングプロトコル(RTSP)、ユーザーデータグラムプロトコルスキーム用リアルタイムストリーミングプロトコル(RTSPU)、RealNetworks社(Seattle、WA)製のProgressive Networks Multimedia(PNM)プロトコル、マニュファクチャリングメッセージスペシフィケーション(manufacturing message specification、MMS)プロトコル、および直接非同期接続等)を使用して確立される。
【0027】
別の局面において、図1Aはコンテンツを渡してもらうための通信システム100の実施態様のブロック図を示す。一実施態様において、第1のプロトコルサービス112はプロキシ115を備え、システム100はウェブサーバ120およびチケットオーソリティ136を含む。システム100は、ホストノード118へ/からの未許可の通信を禁止する2つのファイアウォール160、161も含む。ファイアウォール160、161の間のネットワークは多くの場合「非武装地帯」(DMZ)130と称される。一実施態様において、DMZ130はプロキシ115およびウェブサーバ120を備えるチケットプロトコルサービス112を含む。
【0028】
DMZ130はホストサービス116a乃至116nを未許可の個人によりアクセス可能なシステム100の構成要素(例えば、第1のプロトコルサービス112)から分離する。上述のように、DMZ130は未許可の通信を禁止する2つのファイアウォール160、161で線引きされている。第1のファイアウォール160および第2のファイアウォール161はそれぞれポリシールール一式を適用し、どのメッセージがDMZ130を横断しうるか判断する。一実施態様において、第1のファイアウォール160および第2のファイアウォール161は同じポリシールール一式を適用する。あるいは、第1のファイアウォール160および第2のファイアウォール161は、異なるポリシールール一式を適用してもよい。各ファイアウォール160、161は、ルータ、コンピュータ、またはその他任意のネットワーク制御装置であってよい。別の実施態様において、システム100はファイアウォール160、161のいずれか1つを含むか、またはファイアウォール160、161いずれも含まない。別の実施態様において、ファイアウォール160、161のうちいずれかがホストノード118上に配置されている。別の実施態様(図示なし)において、ファイアウォール160、161のうち1つ以上が中間ノードに配置されている。
【0029】
一実施態様において、第1のプロトコルサービス112は、メッセージがクライアント‐第1のプロトコルサービス間通信チャネル135上で通過すべきセキュリティゲートウェイを備えるプロキシ115を含む。一実施態様において、ネットワークファイアウォール160は、クライアント‐第1のプロトコルサービス間通信チャネル135からの、その宛先として第1のプロトコルサービス112を持たないいかなる着信メッセージも拒否する。同様に、ネットワークファイアウォール160は、その発信元が第1のプロトコルサービス112でない限り、クライアント‐第1のプロトコルサービス間通信チャネル135へのいかなる送信メッセージも拒否する。第1のプロトコルサービス112のプロキシ115として図示されているが、セキュリティゲートウェイは代替としてルータ、ファイアウォール、中継器、または必要なセキュア性を提供できる任意のネットワークコンポーネントであってよい。別の実施態様において、プロキシ115は第1のプロトコルサービス112の同じコンピュータまたは異なるコンピュータ上で動作できる第1のプロトコルサービス112から分離したネットワークコンポーネントである。例えば、図1Bにおいて、プロキシ115は第1のプロトコルサービス112から分離されている。プロキシ115はウェブサーバ120とともにDMZ130内にある。第1のプロトコルサービス112の多数の例がホストノード118a乃至118nのそれぞれにおいて動作している。各第1のプロトコルサービス112は通信チャネル135上でプロキシ115と通信を行い、これがクライアント‐第1のプロトコルサービス間通信チャネル135である。この場合、プロキシ115の要素はセキュアにクライアント108と第1のプロトコルサービス112の間の通信を通過するための中間段階である。
【0030】
ネットワーク104は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、またはインターネットやワールドワイドウェブ(すなわちウェブ)等のネットワークのネットワークであってよい。各通信チャネル124a乃至124n、135、140、145、150、155、157は、それぞれ異なるネットワークの一部であってよい。例えば、クライアント‐第1プロトコルサービス間通信チャネル135は第1のネットワーク(例えば、ワールドワイドウェブ)に属してよく、クライアント‐ウェブサーバ間通信チャネル140は第2のネットワーク(例えば、保護されたエクストラネットまたは仮想プライベートネットワーク(VPN))に属してよい。別の実施態様において、ネットワーク104はサーバファーム169と同様にDMZ230におよび、全体にわたり同じ通信プロトコルが使用される。同じ実施態様において、ファイアウォール160が第1のプロトコルサービス112およびウェブサーバ120をホストノード118およびチケットオーソリティ136から分離しない。
【0031】
通信チャネル124a乃至124n、135、140、144、150、155、157の実施例は、標準電話回線、LANまたはWANのリンク(例えば、T1、T3、56kb、X.25)、ブロードバンド接続(ISDN、Frame Relay、ATM)、および無線接続を含む。通信チャネル124a乃至124n、135、140、144、150、155、157上での接続は、様々な通信プロトコル(例えば、HTTP、HTTPS、TCP/IP、IPX、SPX、NetBIOS、イーサネット(登録商標)、RS232、メッセージングアプリケーションプログラミングインターフェイス(MAPI)プロトコル、リアルタイムストリーミングプロトコル(RTSP)、ユーザーデータグラムプロトコルスキーム用リアルタイムストリーミングプロトコル(RTSPU)、RealNetworks社(Seattle、WA)製のProgressive Networks Multimedia(PNM)プロトコル、マニュファクチャリングメッセージスペシフィケーション(manufacturing message specification、MMS)プロトコル、および直接非同期接続等)を使用して確立されることができる。
【0032】
クライアント108は、任意のワークステーション、デスクトップコンピュータ、ラップトップ、ハンドヘルドコンピュータ、携帯電話、スマート端末またはダム端末、ネットワークコンピュータ、無線機器、情報家電、ミニコンピュータ、大型汎用コンピュータ、または通信が可能で、本願明細書に開示した動作を行うには十分なプロセッサ能力とメモリ容量を有する他の形態のコンピュータまたはテレコミュニケーション装置とすることができる。さらに、クライアント108は、ローカルネットワーク104上のローカルデスクトップクライアントであってよく、または分離したネットワーク104’であってもよい。クライアント108は、例えば視覚的表示装置(例えば、コンピュータ用モニタ)、データ入力装置(例えば、キーボード)、持続的および/または揮発性記憶装置(例えば、コンピュータメモリ)、プロセッサ、およびマウスを含むことができる。クライアント108にサポートされるオペレーティングシステムは、Microsoft社(Redmond、Washington)のオペレーティングシステムであるWINDOWS(登録商標)シリーズのいずれか、Macintoshオペレーティングシステム、Java(登録商標)OS、および多種にわたるUNIX(登録商標)(例えばSolaris、SunOS、Linux、HP−UX、A/IYおよびBSDベースのディストリビューション)、または本願明細書に記載の動作の実行においてクライアント108をサポート可能なその他任意のオペレーティングシステムを含むことができる。
【0033】
一実施態様において、クライアント108は、ウェブに接続するためにMicrosoft社(Redmond、Washington)製のINTERNET EXPLORERのようなウェブブラウザ162を含む。さらなる実施態様において、ウェブブラウザ162はウェブサーバ120に対するセキュアなクライアント‐ウェブサーバ間通信チャネル140を確立するため、既存のセキュアソケットレイヤー(SSL)サポートを使用する。SSLは、Netscape Communication社(Mountain View、California)が開発し、インターネット技術特別調査委員会(IETF)が広めた現在の標準である。
【0034】
一部の実施態様においては、図1Aおよび1Bに示すように、クライアントエージェント128がクライアント108内に含まれる。クライアントエージェント128は、クライアント‐第1のプロトコルサービス通信チャネル135上でホストサービス116a乃至116nとの通信を確立し交信を行うために使用されてよい。クライアントエージェント128は、例えばソフトウェアプログラムおよび/または例えば、ASICまたはFPGAなどのようなハードウェア装置として使用することができる。クライアントエージェント128は、あらゆるタイプのプロトコルを使用することができ、それには、例えば、HTTPクライアントエージェント、FTPクライアントエージェント、Oscarクライアントエージェント、Telnetクライアントエージェントが挙げられる。一実施態様において、クライアントエージェント128はCitirix Systems社(Fort Lauderdale、Florida)製のICAクライアントであり、これを以下ICAクライアント128と称する。クライアントエージェント128の他の実施態様は、Microsoft社(Redmond、Washingotn)製のRDPクライアント、従来型のクライアントサーバアプリケーションにおけるデータ入力クライアント、Active XコントロールまたはJava(登録商標)アプレットを含む。一部の実施態様において、クライアントエージェント128は、それ自体が第1のプロトコルを使用して通信を行うよう構成される。一部の実施態様では(図示せず)、クライアント108は、複数のクライアントエージェント128a乃至128nを含み、それぞれがホストサービス116a乃至116nとそれぞれ通信を行う。さらに、ホストサービス116a乃至116n上で実行するアプリケーションのアウトプットは、例えばクライアントエージェント128またはウェブブラウザ162を介してクライアント108に表示される。
【0035】
別の実施態様において、スタンドアロンのクライアントエージェントは、第1のプロトコルを使用してクライアント108が通信できるように構成される。スタンドアロンのクライアントエージェントは、クライアント108内に組み込むか、または代わりに、スタンドアロンのクライアントエージェントをクライアント108から独立させることができる。スタンドアロンのクライアントエージェントは、例えば、ローカルホストのプロキシである。一般に、スタンドアロンのクライアントエージェントは、クライアントエージェント128に関する本願明細書に開示された機能のいずれかを実行することができる。
【0036】
同様に、図1Aを参照して、第1のプロトコルサービス112とホストサービス116a乃至116nのそれぞれは、通信が可能で本願明細書に開示した動作を行うのに十分なプロセッサ能力とメモリ容量を有する、任意のコンピュータ上で提供されることができる。あるいは、例えば図1Bのようにホストノード118a乃至118nのいずれかのような、第1のプロトコルサービス112およびホストサービス116a乃至116nの機能性が同じコンピュータに組み込まれている場合、第1のプロトコルサービス112および/またはホストサービス116a乃至116nは汎用コンピュータおよび/または、例えば、ASICまたはFPGAのような特殊用途向けハードウェア装置上で実行されるソフトウェアプログラムとしてとして使用することができる。
【0037】
クライアント108と同様に、ホストノード118a乃至118nのそれぞれは上述した通信が可能で本願明細書に開示した動作を行うのに十分なプロセッサ能力とメモリ容量を有する任意のコンピュータ(例えばパーソナルコンピュータ)であってよい。ホストノード118a乃至118nのそれぞれは、様々な通信プロトコル(例えばICA、HTTP、TCP/IPおよびIPX)、SPX、NetBIOS、イーサネット(登録商標)、RS232、直接非同期接続を使用して通信チャネル124a乃至124n上に通信を確立することができる。
【0038】
一実施態様において、ホストサービス116a乃至116nのそれぞれは、クライアント108に対して遠隔で利用可能な1つ以上のアプリケーションプログラムをホストする。クライアント108に対して利用可能にされたアプリケーションを、公開されたアプリケーションと称する。1つまたは複数のホストサービス116a乃至116nが同じアプリケーションプログラムをホストすることができる。このようなアプリケーションの例には、MICROSOFT WORDなどのワード処理プログラム、およびMICROSOFT EXCELなどの表計算プログラムなどが挙げられ、そのどちらもMicrosoft社(Redmond、Washingotn)から入手可能である。一部またはすべてのホストサービス116a乃至116nがホスト可能な他のアプリケーションプログラムの例には、財務報告プログラム、顧客登録プログラム、技術的なサポート情報を提供するプログラム、顧客データベースアプリケーション、およびアプリケーションの設定マネージャが挙げられる。さらに、一実施態様では、ホストサービス116a乃至116nのうち1つ以上は、ストリーミングオーディオおよび/またはストリーミングビデオをクライアント108に提供するオーディオ/ビデオストリーミングサーバである。別の実施態様では、ホストサービス116a乃至116nは、一部/すべてのファイルタイプをクライアント108に提供するファイルサーバを備える。一実施態様では、ホストサービス116a乃至116nは、Citrix Systems社(Fort Lauderale、Florida)製のICAまたはMicrosoft社(Redmond、Washington)製のRDPのようなプレゼンテーションプロトコルを使用して、クライアント108と通信を行うことができる。
【0039】
さらなる実施態様において、ホストノード118はサーバファーム169または単一エンティティとして管理される1つ以上のサーバの論理グループであるサーバネットワークの一部である。一実施態様において、サーバファーム169は多数のホストノード118a乃至118n(概して118)を含む。図1Bに示される形態は3つのホストノード118a乃至118nを有しているが、サーバファーム169はホストノード118またはサーバをいくつでも有することができる。他の実施態様において、サーバファーム169は、企業イントラネット、仮想プライベートネットワーク(VPN)、またはセキュアなエクストラネット等、未許可の個人によるアクセス不可能な、保護されたネットワークである。また、サーバファーム169を構成するサーバは、上記プロトコルのいずれかを使用して、上述したネットワーク(例えばWAN、LAN)のいずれかで通信を行うことができる。
【0040】
図1Aに示されるチケットオーソリティ136は、サーバファーム169の一部であり、クライアント108に対して認証を行うために1つ以上のチケットを発行する。特に、チケットオーソリティ136は、認証証明書に基づき、1つの通信チャネル(すなわち、クライアント‐ウェブサーバ間通信チャネル140)上でクライアント108の認証を可能にする。チケットオーソリティ136はさらに、その他の通信チャネルにおいて繰り返し認証証明書を提供することなく、クライアント108が別の通信チャネル(すなわち、クライアント‐第1のプロトコルサービス通信チャネル135)上で認証されることを可能にする。
【0041】
一実施態様において、チケットオーソリティ136はスタンドアロンのネットワークコンポーネントである。他の実施態様において、モジュールチケットオーソリティ136は1つ以上のホストノード118にあるソフトウェアモジュールである。例えば、図1Bに示されるように、ホストノード118a乃至118nのそれぞれに対しチケットオーソリティ136があってよい。この実施態様において、ウェブサーバ120は、エージェント‐サーバ間通信チャネル155上でチケットオーソリティ136および/またはホストノード118と通信を行うことができる。別の実施態様において、チケットオーソリティ136はホストノード118a乃至118nのいずれからも分離された中間ノードにあってよい。
【0042】
一実施態様において、チケットオーソリティ136は第1のチケットおよび第2のチケットを生成する。一部の実施態様において、チケットはいずれもその場限りのものである。さらなる実施態様において、チケットは適切に乱数度をシードされた暗号化乱数発生器を使用して生成される。第1のチケットはクライアント108に伝送され、クライアント108と第1のプロトコルサービス112の間に第1の通信セッションを確立するために使用される。第2のチケットは第1のプロトコルサービス112に伝送され、第1のプロトコルサービス112とホストノード118の間に第2の通信セッションを確立するために使用される。
【0043】
一実施態様において、ウェブサーバ120はウェブページをクライアント108に配信する。ウェブサーバ120は、任意のパーソナルコンピュータ(例えば、Macintoshコンピュータ、Intel社(Santa Clara、California)製のIntelマイクロプロセッサを搭載したパーソナルコンピュータ、Advanced Micro Devices社(Sunnyvale、California)製のAMDを搭載したパーソナルコンピュータ等)、Windows(登録商標)ベースの端末、ネットワークコンピュータ、ワイヤレス機器(例えば携帯電話)、情報家電、RISC Power PC、X−device、ワークステーション、ミニコンピュータ、大型汎用コンピュータ、携帯情報端末、またはクライアント108とのセキュアなクライアント‐ウェブサーバ間通信チャネル140を確立できるその他の通信機器であってよい。
【0044】
別の実施態様において、ウェブサーバ120は企業情報ポータル(Enterprise Information Portal)とも称される企業内ポータルをクライアント108に提供する。企業内ポータルは、情報を組織化しより効率的に使用するための管理ツールを提供しながら、ユーザーにアプリケーション、データおよびコンテンツを情報集約し、個人化し、供給する、会社のウェブサイトである。他の実施態様において、ウェブサーバ120は、ウェブポータルまたはインターネットポータルをクライアント108に提供する。ウェブポータルは、企業ポータルと同様であるが、概して業務用の情報は含まない。
【0045】
一実施態様において、クライアント108のユーザーは、ウェブサーバ120に対しユーザーを認証するためにウェブブラウザ162を使用する。一実施態様において、クライアント108はログインおよびパスワード情報等のユーザー認証証明書をウェブサーバ120へ伝送する。ウェブサーバ120は、ユーザーがサーバネットワーク169にアクセスできることを検証する。
【0046】
さらなる実施態様において、ウェブブラウザ162は、セキュアなクライアント‐ウェブサーバ間通信チャネル140を確立するためにSSLを使用する。ウェブブラウザ162は、Terisa Systems社(Los Altos、CA)製のセキュアハイパーテキスト転送プロトコル(SHTTP)、SSL上のHTTP(HTTPS)、Microsoft社(Redmond、Washington)製のプライベートコミュニケーションテクノロジー(PCT)、およびインターネット技術特別調査委員会(IETF)が広めたトランスポートレベルセキュリティ(TLS)標準等であるがこれらに限定されないその他のセキュリティプロトコルを使用し、クライアント‐ウェブサーバ通信間チャネル140上で代替的にウェブサーバ120に接続することができる。一実施態様において、ウェブサーバ120は、上述のように、クライアント108がアプリケーションまたはサーバデスクトップを、例えば遠隔でクライアント108上に表示されるよう要求できるようにする、ユーザーの検証時にウェブポータルまたは企業ポータルをクライアント108へ伝送する。
【0047】
クライアント‐ウェブサーバ間通信チャネル140は、任意のセキュアな通信チャネルである。一部の実施態様において、チャネル140上での通信は暗号化される。これらの実施態様のいくつかにおいて、クライアント108とウェブサーバ120は、ハイパーテキスト転送プロトコル(HTTPS)のセキュアソケットレイヤー(SSL)を使用して通信を行うことができる。あるいは、クライアント108とウェブサーバ120は、通信を保護するため、対称的暗号化技術等、その他の暗号化技術を使用してもよい。
【0048】
さらに、一実施態様において、クライアント‐第1のプロトコルサービス間通信チャネル135は、例えば、Citrix Systems社(Fort Lauderdale、Florida)製インディペンデントコンピューティングアーキテクチャ(ICA)プロトコル等のプレゼンテーションサービスプロトコルを使用することによって確立できる。ICAは、TCP/IP、IPX/SPX、NetBEUI等の業界標準ネットワークプロトコル上で、ISDN、Frame Relay、および非同期転送モード(ATM)等の業界標準トランスポートプロトコルを使用して実行するために設計された汎用プレゼンテーションサービスプロトコルである。ICAプロトコルは、データを交換するためのコマンドを発行するためにアプリケーション層コードが使用するセッション指向の伝送接続である仮想チャネルを提供する。別の実施態様において、クライアント‐第1のプロトコルサービス間通信チャネル135は、Microsoft社(Redmond、Washington)製のThin Xプロトコルまたはリモートディスプレイプロトコル(RDP)を使用して確立できる。
【0049】
クライアント108と第1のプロトコルサービス112の間の第1の通信セッション、および第1のプロトコルサービス112とホストノード118の間の第2の通信セッションとして説明したが、通信セッションは、クライアント108とホストサービス116の間の単一で論理的な通信セッションとみなされる場合もある。
【0050】
引き続き図1Aおよび図1Bを参照して、クライアント108は、第1のプロトコルを使用してネットワーク104を通じてクライアント108と第1のプロトコルサービス112との間の接続135を確立するように構成される。第1のプロトコルサービス112は、その役割として、接続135を受け入れるように構成される。従って、クライアント108および第1のプロトコルサービス112は、図2A乃至2Bおよび図3を参照して以下に説明するように、第1のプロトコルを使用して互いに通信を行うことができる。
【0051】
また以下でさらに説明するように、第1のプロトコルサービス112は、一実施態様において、それ自体が第1のプロトコルを使用して通信を行うよう構成される。第1のプロトコルサービス112は、第1のプロトコルサービス112とホストサービス116a乃至116nの間にそれぞれ接続124a乃至124nを確立するよう構成されている。例えば、第1のプロトコルサービス112は、第1のプロトコルサービス112と1つのホストサービス116aの間に接続124aを、また第1のプロトコルサービス112と別のホストサービス116bの間に接続124bを確立することができる。一実施態様において、第1のプロトコルサービス108はそのような接続124a乃至124nを個別に確立することができる(すなわち、第1のプロトコルサービス112は1回に1つの接続を確立する)。別の実施態様において、第1のプロトコルサービス112は、そのような接続124a乃至124nを2つ以上同時に確立する。
【0052】
さらに別の実施態様において、第1のプロトコルサービス112は、複数の接続124a乃至124nを同時に確立および維持することができる。第1のプロトコルサービス112は、接続135を中断せずに2つ以上の接続124a乃至124nをクライアント108に提供するよう構成される。例えば、第1のプロトコルサービス112は、クライアント108のユーザーがホストサービスに116aに存在する第1のアプリケーションプログラムの実行を要求した場合、第1のプロトコルサービス112とホストサービス116aとの間の接続124aを確立するように構成することができる。ユーザーが第1のアプリケーションプログラムの実行を終了し、例えばホストサービス116bに存在する第1のアプリケーションプログラムの実行を終了し、第2のアプリケーションプログラムの実行を開始する場合、一実施態様では、第1のプロトコルサービス112は、接続124aを中断して、第1のプロトコルサービス112とクライアント108との間の接続135を中断させずに第1のプロトコルサービス112とホストサービス116bとの間の接続124bを確立するように構成される。
【0053】
第1のプロトコルサービス112およびホストサービス116a乃至116nは、HTTP、FTP、Oscar、Telnet、Citrix Systems社(Fort Lauderale、Florida)製のICAリモートディスプレイプロトコルおよび/またはMicrosoft社(Redmond、Washington)製のRDPリモートディスプレイプロトコルを含むがこれらに限定されない、様々な第2のプロトコルのうちのいずれか1つを使用して、接続124a乃至124nを通じて通信を行うことができる。例えば、第1のプロトコルサービス112およびホストサービス116aは、ICAリモートディスプレイプロトコルを使用して接続124aを通じて通信を行いながら、第1のプロトコルサービス112およびホストサービス116bは、RDPリモートディスプレイプロトコルを使用して接続124bを通じて通信を行うことができる。
【0054】
一実施態様において、第1のプロトコルサービス112とホストサービス116との間の通信を行うために使用する、例えばICAリモートディスプレイプロトコルのような第2のプロトコルは、複数の仮想チャネルを含む。仮想チャネルは、データを交換するためのコマンドを発行するためにアプリケーション層コードが使用するセッション指向の伝送接続である。例えば、複数の仮想チャネルのそれぞれは、リモートクライアント108での機能を可能にする複数のプロトコルパケットを含むことができる。一実施態様において、複数の仮想チャネルのうちの1つが、クライアント108にグラフィカルユーザーインターフェイスを表示させるために、第1のプロトコルサービス112を介して、グラフィックスクリーンコマンドをホストサービス116からクライアント108に伝送するためのプロトコルパケットを含む。別の実施態様において、複数の仮想チャネルのうちの1つが、クライアント108で文書を印刷させるために、第1のプロトコルサービス112を介して、プリンタコマンドをホストサービス116からクライアント108に伝送するためのプロトコルパケットを含む。
【0055】
一実施態様において、第1のプロトコルは、トンネリングプロトコルである。第1のプロトコルサービス112は、それぞれがホストサービス116a乃至116nの1つと第1のプロトコルサービス112との間の通信に使用する、複数の第2のプロトコルを第1のプロトコル内にカプセル化する。このように、ホストサービス116a乃至116nと第1のプロトコルサービス112は、複数の第2のプロトコルを介してクライアント108と通信を行う。一実施態様において、第1のプロトコルは、例えば、TCP/IP接続を通じて複数の第2のプロトコルのトンネリングが可能な、アプリケーションレベルのトランスポートプロトコルである。
【0056】
図2Aを参照すると、接続135を介したクライアント108と第1のプロトコルサービス112との間の通信は、第1のプロトコル204内にカプセル化された複数の第2のプロトコル200a乃至200n(例えば、HTTP、FTP、Oscar、Telnet、ICA、および/またはRDP)の形をとる。これは、第1のプロトコル204の中の第2のプロトコル200a乃至200nの位置によって示される。セキュアな通信が要求されない場合は、図2Aに示すように、第1のプロトコル204は、セキュアでないTCP/IP接続208を通じて通信を行うことができる。
【0057】
ここで図2Bを参照すると、セキュアな通信を使用する場合、第1のプロトコル204は、例えば、セキュアソケットレイヤー(SSL)のようなセキュアプロトコル216を使用して保護されるTCP/IP接続212などのような暗号化された接続を通じて通信を行う。SSLは、Netscape Communication社(Mountain View、California)が開発し、トランスポートレイヤセキュリティ(TSL)プロトコルとしてインターネット技術特別調査委員会(IETF)が広め、IETF RFC−2246に記載された、現在の標準である。
【0058】
従って、複数の第2のプロトコル200a乃至200nは、接続135を通じてセキュリティ有り(図2B)またはセキュアプロトコル216なし(図2A)で第1のプロトコル204内で通信を行う。接続124a乃至124nを通じて通信を行うために使用できる第2のプロトコルには、HTTP、FTP、Oscar、Telnet、ICA、および、RDPを含むが、これらに限定されない。さらに、一実施態様において、上述のように、少なくとも1つの第2のプロトコルは、複数の仮想チャネルを含むが、それぞれリモートクライアント108での機能を可能にする複数のプロトコルパケットを含むことができる。例えば、一実施態様において、一方のホストサービス116aはウェブサーバであり、HTTPプロトコルを使用して接続124aを通じて第1のプロトコルサービス112と通信を行い、他方のホストサービス116bはアプリケーションサーバであり、ICAプロトコルを使用して接続124bを通じて第1のプロトコルサービス112と通信を行う。ホストサービス116bは、クライアント108にグラフィカルユーザーインターフェイスを表示させるグラフィックスクリーンコマンドをクライアント108に伝送するためのプロトコルパケット、およびクライアント108で印刷する文書を生じさせるプリンタコマンドをクライアント108に伝送するためのプロトコルパケットの両方を生成する。
【0059】
本発明の別の局面は、本願明細書に記載されている、ネットワーク接続の開閉回数を減らす方法およびシステムである。一実施態様において、第1のプロトコル204はその中にトンネリングした、例えば、HTTP接続200nなどのような第2のプロトコル接続200a乃至200nが、第1のプロトコル204がそれを通じて通信を行うトランスポート接続(例えば、TCP接続208および/または212)、セキュアプロトコル接続216、または第1のプロトコル接続204自身をも同様に繰り返して開くおよび/または閉じることを必要とせずに、開くおよび/または閉じるようにする。第1のプロトコル204のカプセル化なしに、第2のプロトコル200a乃至200nはTCP接続のようなネットワーク接続を頻繁に開閉できる。これは大きな遅延および間接費をシステムに追加するであろう。このような遅延および間接費は、ネットワーク接続の確立において大きな間接費のかかるSSL等のセキュアなカプセル化プロトコル214の使用によってさらに増加するであろう。第1のプロトコル204内において第2のプロトコル200a乃至200nをカプセル化し、トランスポート接続(208、212)の接続を維持することによって、第2のプロトコル200a乃至200nは、第1のプロトコル204のペイロードの一部として、頻繁で費用のかかるネットワーク接続135の開閉を行う必要がない。さらに、第2のプロトコル200a乃至200nは第1のプロトコル204内でセキュアプロトコル216と通信を行えるため、第2のプロトコル200a乃至200nはSSL等とのセキュアな接続を開閉する必要もない。トランスポート接続(208、212)は、カプセル化された第2のプロトコル200a乃至200nがセキュアなまたはセキュアでないネットワーク接続135を繰り返し開閉することなく通信を行えるよう、ネットワーク接続135を確立し維持する。これは第2のプロトコル200a乃至200nの通信における動作速度を大幅に上げる。
【0060】
上述のように、第2のプロトコル200a乃至200nはアプリケーションに関連するプロトコルパケットを、HTTP、FTP、Oscar、Telnet、RDAまたはICA等のプロトコルを使用して運搬する。第2のプロトコルパケット304a乃至304nは、クライアント108とホストサービス116a乃至116nの間でやりとりされるアプリケーション機能に関連するデータをトランスポートする。例えば、クライアント108上のユーザーは、ホストサービス116a乃至116nによって提供されるウェブページと情報のやりとりを行うことができる。クライアント108とホストサービス116a乃至116nの間のトランザクションにおいて、第1のプロトコル204内でカプセル化された第2のプロトコル200a乃至200nは、ホストサービス116a乃至116nと通信を行うため、ウェブページの表示および任意のユーザー対話の受信に関連するhttpプロトコルパケットを有することができる。トランスポート接続(208、212)は第2のプロトコル200a乃至200nによって維持されないため、第2のプロトコル200a乃至200nは任意のネットワーク接続中断に対処する必要がない。そのため、第2のプロトコル200a乃至200nは、そのペイロードにおいていずれのネットワーク接続中断情報も提供しなくてよい。上記の例において、クライアント108へ伝送される第2のプロトコル200a乃至200nの第2のプロトコルパケット304a乃至304nに関連するhttpは、例えばウェブページ上でのエラーメッセージ等、ネットワーク中断が発生したという通知を提供しないであろう。従って、クライアント108上のユーザーは、いかなるネットワークレベル接続が中断しても第2のプロトコル200a乃至200nを介して通知されることはない。これは、第2のプロトコル200a乃至200nに関連するアプリケーションの使用中、ネットワーク接続中断をユーザーから効果的に隠す。
【0061】
図3を参照すると、第1のプロトコルサービス112およびクライアント108のクライアントエージェント128が使用するプロセス例300は、接続135を介して通信を行うために、複数の第2のプロトコル200(例えば、HTTP、FTP、Oscar、Telnet、ICAおよび/またはRDP)を第1のプロトコル204内にカプセル化する。任意で、下記のように、第1のプロトコルサービス112およびクライアント108のクライアントエージェント128が使用するプロセス例300はまた、接続135を介した通信の前に、第1のプロトコルのレベルで通信を圧縮および/または暗号化する。第1のプロトコルサービス112の観点から、第2のプロトコルパケット304a乃至304nは、接続124a乃至124nを介して第1のプロトコルサービス112で受信する。例えば、2つの第2のプロトコルパケット304aおよび304bは、第1のプロトコルサービス112によって受信する。1つ、2つ、または任意の第2のプロトコルパケット304a乃至304nを受信することができる。一実施態様において、第2のプロトコルパケット304a乃至304nは、ホストサービス116によって接続124を通じて第1のプロトコルサービス112に伝送される。第2のプロトコルパケット304a乃至304nは、ヘッダ308およびデータペイロードとも呼ばれるデータパケット312を含む。
【0062】
第2のプロトコルパケット304a乃至304nの受信の後に、第1のプロトコルサービス112は、1つ以上の第2のプロトコルパケット304を第1のプロトコルパケット316内にカプセル化する。一実施態様において、第1のプロトコルサービス112は、第1のプロトコルパケットヘッダ320を生成し、例えば、2つの第2のプロトコルパケット304aおよび304bなどのような、1つ以上の第2のプロトコルパケット304a乃至304nを第1のプロトコルパケット316のデータペイロード324内にカプセル化する。別の実施態様において、1つの第2のプロトコルパケット304aだけが、各第1のプロトコルパケット316内にカプセル化される。
【0063】
一実施態様において、第1のプロトコルパケット316は、次いで接続135、例えば図2Aを参照して説明される接続208を通じて、クライアント108のクライアントエージェント128に伝送される。あるいは、別の実施態様では、第1のプロトコルサービス112は、いずれの第1のプロトコルパケット316の伝送の前に、第1のプロトコル204のレベルでの通信を暗号化するようにさらに構成される。このような一実施態様において、第1のプロトコルパケット316は、例えば、図2Bを参照して説明されるSSLプロトコルを使用して暗号化される。その結果、ヘッダ332と、データペイロード336としての暗号化された第1のプロトコルパケット316’を含むセキュアなパケット328が生成される。セキュアなパケット328は、次いで接続135、例えば図2Bを参照して説明されるセキュアなTCP/IP接続212を通じて、クライアント108のクライアントエージェント128に伝送される。
【0064】
別の実施態様において、第1のプロトコルサービス112は、任意の第1のプロトコルパケット316の伝送の前に、第1のプロトコル204のレベルでの通信を暗号化するようにさらに構成される。一実施態様において、第1のプロトコルサービス112は、第1のプロトコルパケット316を暗号化する前に、標準的な圧縮技術を使用して第1のプロトコルパケット316を圧縮する。このように、システム100の効率が改善される。
【0065】
図1Aおよび図1Bを再び参照すると、本発明のシステム100は、一実施態様において、例えばホストサービス116aのようなホストサービス116への持続的な接続を有するリモートクライアント108を提供する。例えば、クライアント108がクライアント108と第1のプロトコルサービス112との間の接続135を確立し、第1のプロトコルサービス112が第1のプロトコルサービス112とホストサービス116aとの間の接続124aを確立する場合は、次いでクライアントエージェント128または第1のプロトコルサービス112のいずれか、またはその両方が、接続135を介して直近に伝送された第1のプロトコルデータパケットのキューを維持するように構成される。例えば、キューに入れたデータパケットは、接続135の前でも失敗時でもクライアントエージェント128および/または第1のプロトコルサービス112によって維持されることができる。さらに、接続135の失敗時には、第1のプロトコルサービス112、および同様にホストサービス116aは、接続124aを維持するように構成される。
【0066】
接続135の失敗を受けて、クライアント108は、いずれのデータも失わずに第1のプロトコルサービス112による新しい接続135を確立する。より具体的には、接続135の失敗時に接続124aが維持されるので、新しく確立された接続135は、維持された接続124aにリンクされることができる。さらに、直近に伝送された第1のプロトコルデータパケットがキューに入っているので、クライアント108によってそれらを第1のプロトコルサービス112に再び伝送することができ、および/または第1のプロトコルサービス112によって新しく確立された接続135を通じてクライアント108に再び伝送することができる。このように、ホストサービス116aとクライアント108との間の通信セッションは、第1のプロトコルサービス112を介して、いずれのデータも失われずに持続的に進められる。
【0067】
一実施態様において、クライアント108のクライアントエージェント128および/または第1のプロトコルサービス112は、それらが接続135を通じて伝送するデータパケットに番号を付ける。例えば、クライアントエージェント128および第1のプロトコルサービス112それぞれに、他のものがそのデータパケットにどのように番号を付けたかに関係なく、それ自身の伝送データパケットに別々に番号を付ける。さらに、データパケットの番号付けは、データパケットの番号を付け直さずに絶対的なものとすることができる。すなわち、クライアントエージェント128および/または第1のプロトコルサービス112により伝送された最初のデータパケットには、番号1を付けることができ、接続135を通じてクライアントエージェント128および/または第1のプロトコルサービス112により伝送された各データパケットには、その後にそれぞれ連続した番号が付けられる。
【0068】
このような一実施態様において、クライアントエージェント128および/または第1のプロトコルサービス112は、接続135の中断および再確立を受けて、一方にそれが要求する次のデータパケットを通知する。例えば、クライアントエージェント128が、接続135の中断の前に番号1乃至10のデータパケットを受信した場合、接続135の再確立時に、クライアントエージェント128は第1のプロトコルサービス112に現在データパケット番号11を要求していることを通知する。同様に、第1のプロトコルサービス112も、このように機能することができる。あるいは、別のこのような実施態様において、クライアントエージェント128および/または第1のプロトコルサービス112は、受信した最後のパケットデータを一方に通知する。例えば、クライアントエージェント128が、接続135の中断の前に番号1乃至10のデータパケットを受信した場合、接続135の再確立時に、クライアントエージェント128は第1のプロトコルサービス112に最後に受信したデータパケット番号10を通知する。第1のプロトコルサービス112も同様に機能することができる。さらに別の実施態様において、クライアントエージェント128および/または第1のプロトコルサービスは112、接続135の再確立時に、受信した最後のデータパケットおよび要求する次のデータパケットの両方を一方に通知する。
【0069】
このような実施態様において、接続135の再確立時に、クライアントエージェント128および/または第1のプロトコルサービス112は、他のものが受信していないバッファリングされたデータパケットを再伝送することができ、第1のプロトコルサービス112を介して、ホストサービス116とクライアント108との間の通信セッションをいかなるデータも失わずに進めることができる。さらに、接続135の再確立時に、クライアントエージェント128および/または第1のプロトコルサービス112は、現在一方が受信したことがわかっているバッファリングされたデータパケットをそれぞれのバッファから消去することができる。
【0070】
概して、持続的な接続のためのバッファリングデータは単独の第1のプロトコルサービス112の観点で議論されるが、上述のデータバッファリングおよび再接続も、同様の方式で、複数の第1のプロトコルサービス112を横断するクライアントのホストサービス116との通信セッションに適用する。1つ以上の追加の第1のプロトコルサービス112は、クライアント108とホストサービス116との間のデータトラフィックの一部または全部をバッファリングする場合がある。別の実施態様において、クライアントとホストサービス116間の「ホップ」の1つを管理する第1のプロトコルサービス112は、当該「ホップ」と送受信されるデータをバッファリングする場合がある。このように、1つ以上の第1のプロトコルサービス112は、クライアント108とホストサービス116の間の中断した接続の確立時に、データパケットを再伝送するために使用される場合がある。
【0071】
クライアント108にホストサービス116a乃至116nとの信頼できる持続的な接続を提供することにより、本発明は、ネットワーク接続中断を通じてユーザーセッションを維持することでホストサービス116a乃至116nとの新しいユーザーセッションを開くプロセスを回避する。ホストサービス116a乃至116nとの各ユーザーセッションのため、クライアント108およびホストサービス116a乃至116は、セッション固有のコンテキストおよびキャッシュ、ならびに本例のユーザーセッションに関連するその他のアプリケーション固有のメカニズムを維持する場合がある。確立した新しい各ユーザーセッションのために、これらのセッション固有のコンテキストおよびキャッシュを、新しいユーザーセッションを反映するため再配置および再確立する必要がある。例えば、クライアント108上のユーザーはホストサービス116a乃至116nとのhttpセッションを有する場合がある。ホストサービス116a乃至116nは、本例のクライアント108とのhttpセッションを提供するためのコンテキストを維持することができる。コンテキストはサーバのメモリ内、サーバのファイル内、データベースまたはホストサービス116a乃至116nの機能性の提供に関連するその他のコンポーネントに格納される。また、クライアント108は、ホストサービス116a乃至116nに対する未処理の要求のトラックを維持するためのメカニズム等、httpセッションの例に特有のローカルコンテキストを有する場合がある。このコンテキストは、クライアント108のメモリ内、クライアント108のファイル内、またはクライアント108と適合するその他のソフトウェアコンポーネントに格納される場合がある。クライアント108とホストサービス116a乃至116nの間の接続が持続的でない場合、ホストサービス116a乃至116nおよびクライアント108の新しいセッション特有コンテキストによって新しいユーザーセッションを確立する必要がある。本発明は、新しいセッション、また従って新しい特有のセッションコンテキストが再確立される必要のないよう、セッションを維持する。
【0072】
本発明は、ネットワークレベル接続中断を通じて、クライアントのユーザーにセッションが中断されたことを通知することなく、ユーザーセッションを維持する。本発明の本局面の動作において、第1のプロトコルサービス112は、クライアント108との第1の接続およびホストサービス116a乃至116nとの第2の接続を確立および維持する。第1の接続および第2の接続を経由して、クライアント108とホストサービス116a乃至116nの間のセッションは確立される。第1のプロトコルサービス112は、認証証明書のような任意のセッション関連情報ならびに確立されたセッションのためのクライアント108およびホストサービス116a乃至116nのコンテキストを格納および維持することができる。クライアント108上のユーザーは、確立されたセッションを通じて、ホストサービス116a乃至116nによって提供される機能性を行使するであろう。このように、関連する第2のプロトコルパケット304a乃至304nは、そのような機能性のトランザクションに関連するデータを含むであろう。これらの第2のプロトコルパケット304a乃至304nは、第2のプロトコル200a乃至200nの一部として、第1のプロトコル204内でカプセル化され、通信が行われる。第1の接続または第2の接続いずれかにおける中断検出時、第1のプロトコルサービス112は、中断されていないと思われるその他の接続を維持しながら、中断された接続を再確立することができる。ネットワーク接続中断は、クライアント108とホストサービス116a乃至116nの間のセッションを中断する場合がある。しかしながら、トランスポートメカニズムは第2のプロトコル200a乃至200nによって維持されていないため、クライアント108上のユーザーにセッションが中断されたという通知を与えることなく、ネットワーク接続が再確立された後にセッションを再確立することができる。第2のプロトコル200a乃至200nは、クライアント108に伝送するための情報に関連するいかなる中断も含む必要がない。従って、ネットワーク接続中断によって生じるセッションの中断は、第1のプロトコル204のカプセル化によって、効果的にユーザーから隠される。
【0073】
セッション関連情報を維持する第1のプロトコルサービス112は、クライアント108とホストサービス116a乃至116nの間のセッションを再確立することができる。例えば、クライアント108と第1のプロトコルサービス116の間のセッションが中断した場合、第1のプロトコル112はクライアントの108セッションを第1のプロトコルサービス112とホストサービス116a乃至116bの間でアクティブまたはオープンに保つことができる。第1の接続が再確立した後、第1のプロトコルサービス112はクライアント108のセッションを第1のプロトコルサービス112とホストサービス116の間で維持されているセッションとリンクされることができる。第1のプロトコルサービス112は、クライアント108に第1の接続における中断の前にキューに入っていた任意のデータを送信することができる。このように、クライアント108は中断前と同じセッションを使用しているだろうし、ホストサービス116a乃至116nおよびクライアント108はメモリ内またはほかの場所に格納されていると思われる任意のセッション固有コンテキストの使用を継続できる。さらに、第1のプロトコルサービス112の仲介により、ホストサービス116a乃至116nは、第1のプロトコルサービス112とクライアント108の間のネットワーク中断に気づかない場合がある。
【0074】
別の実施態様において、第1のプロトコルサービス112のホストサービス116a乃至116nの間の第2の接続が中断した場合、第1のプロトコルサービスは、ホストサービス116a乃至116nとの第2の接続を再確立しながら、クライアント108との第1の接続を維持することができる。第2の接続を再確立した後、第1のプロトコルサービス112は、クライアントを代表し、ホストサービス116a乃至116nとのクライアントセッションを再確立することができる。第1のプロトコルサービス112が任意のセッション関連情報を維持していたため、第1のプロトコルサービスは、クライアント108が、第2の接続における中断およびその結果生じた第1のプロトコルサービス112とホストサービス116a乃至116nの間のセッションへの中断に気づかないよう、同じセッションまたは同様のセッションを再確立することができる。第2のネットワーク接続およびセッションを再確立する間、第1のプロトコルサービス112は、クライアント108から中断中に送信されてきた任意のセッショントランザクションをキューに入れることができる。次いで、ホストサービス116a乃至116nとのセッションを再確立後、第1のプロトコルサービス112はそのキューに入れたトランザクションをホストサービス116a乃至116nへ伝送することができ、セッションは正常に継続できる。このような方法で、クライアント108はあたかもセッションの中断などなかったかのように動作を継続する。
【0075】
また、信頼できる持続的な接続を提供することにより、本発明は、クライアント108とホストノード118またはホストサービス116a乃至116nの間で行使される機能性の一部として、トランザクション、コマンドまたは動作への中断を回避することもできる。例えば、Windows(登録商標) Explorerを使用するファイルコピー動作は、ネットワーク接続において中断があった後も動作継続するように設計されていない。クライアント108上のユーザーは、クライアント108のファイルをホストノード118へコピーするために、Windows(登録商標) Explorerのファイルコピー機能を使用することができる。ファイルのサイズにより、この動作が完了するまでには比較的長い時間がかかる。ホストノード118へのファイルコピー動作の途中にクライアント108とホストノード118の間のネットワーク接続に中断があった場合、ファイルコピーは失敗するであろう。クライアント108のファイルをホストノード118へコピーするため、ネットワーク接続が再確立されてすぐに、ユーザーはもう一度Windows(登録商標) Explorerのファイルコピー動作を開始する必要がある。本発明の下では、ユーザーはもう一度ファイルコピー動作を開始する必要がないであろう。ネットワーク接続は第1のプロトコル204接続の一部として再確立されるであろう。ファイルコピー動作は第2のプロトコル200a乃至200nのペイロードにおいてカプセル化されるであろう。このように、Windows(登録商標) Explorerのファイルコピーは、ネットワーク接続における中断の通知を受けることなく、従って失敗することがないであろう。第1のプロトコルサービス112は、動作が失敗なく継続できるよう、任意の接続を再確立し、キューに入れた任意のデータを伝送する。第1のプロトコル112は、ネットワーク接続の中断によりホストノード118に転送されなかったファイルコピー動作に関連するデータのキューを維持するであろう。ネットワーク接続が再確立されるとすぐに、第1のプロトコルサービス112はキューに入れたデータを伝送し、やがてファイルコピー操作に関連するデータの転送を継続することができる。
【0076】
本発明の本局面は、ファイルコピー動作例の観点で説明されているが、通常当業者には、クライアント108とホストノード118またはホストサービス116a乃至116n間でやりとりされるいかなる操作、トランザクション、コマンド、ファンクションコール等も、ネットワーク接続中断による失敗なく、またさらに、クライアント108が、中断があったことを認識したり中断の通知を受けたりすることなく、維持および継続できることが認識されるであろう。
【0077】
さらに、信頼できる持続的な接続を提供することにより、本発明は、クライアント108に、クライアント108上でセッションまたはアプリケーションを再開することなく、異なるネットワークトポロジーを通じて横断させることもできる。例えば、クライアント108は無線ネットワーク接続を持つノート型パソコンであってよい。クライアント108が第1の無線ネットワークから第2の無線ネットワークへ移動する場合、クライアントのネットワーク接続135は、第2の無線ネットワークによってネットワーク接続が確立される際に第1の無線ネットワークから一時的に中断される場合がある。第2の無線ネットワークは、クライアント108に、ホスト名またはインターネットプロトコルアドレスのような新しいネットワーク識別子を割り当ててよい。この新しいネットワーク識別子は、第1の無線ネットワークによってクライアント108の割り当てられたネットワーク識別子と異なる場合がある。別の実施態様において、クライアント108は、イーサネット(登録商標)ケーブルを介してネットワーク上のポートに物理的に接続される場合がある。物理的な接続はプラグを抜かれる場合があり、クライアント108はネットワーク上の異なるポートに接続するため別の場所に移動する場合がある。これは、ネットワーク接続135への中断および割り当てられたネットワーク識別子における潜在的な変化を引き起こすであろう。本発明がなければ、クライアント108におけるホストサービス116a乃至116nとのいかなるセッションまたはネットワークにアクセスするクライアント108上のアプリケーションも、ネットワークトポロジーの変化、ネットワーク接続135への中断、および/または割り当てられたネットワーク識別子の変化によって再開される必要があるかもしれない。本願明細書に記載の方法およびシステムによって、本発明はクライアントのためのネットワーク接続ならびに、ネットワークトポロジーおよびネットワーク識別子における変化の処理も含む自動的に再確立されたクライアント108のネットワーク接続を維持する。クライアント108またはクライアント108上の任意のアプリケーションまたはセッションは、あたかもネットワーク接続中断もネットワーク識別子における変化もなかったかのように動作を継続することができる。さらに、クライアント108上のユーザーは、いかなる中断や変化があったことも認識しない場合があり、クライアント108はそのような中断のいかなる通知も受信しない場合がある。
【0078】
別の局面において、本発明は、クライアント108とホストサービス116の間の通信セッションを、プロキシ、セキュリティゲートウェイ、ファイアウォール、またはルータ等、複数のネットワークコンポーネントを横断する複数の接続または「ホップ」を経由して確実に確立することに関する。複数ホップのセキュアな通信セッションの確立はさらに、セキュアなクライアント‐ウェブサーバ間通信チャネル140を経由して、例えばウェブブラウザ162とウェブサーバ120の間でSSLを使用して開始される場合がある。チケットオーソリティ136は、クライアント‐第1のプロトコルサービス間接続135および第1のプロトコルサービスとホストサービスの接続124a乃至124n等、各ホップにチケットを提供することができる。このように、クライアント108とホストサービス116a乃至116nの間の接続をすべて経由して、クライアント108は認証される。
【0079】
動作においては、図4も参照すると、クライアントユーザーは、クライアント108(すなわち、ICAクライアント128)上に遠隔で表示されるコンテンツ(例えば、アプリケーション、サーバデスクトップ)を要求する(ステップ400)。別の実施態様において、クライアント108はウェブブラウザ162を使用してアプリケーションを要求し、次いでウェブサーバ120がユーザーを認証する。要求を受信後、ウェブサーバ120はチケットオーソリティ136によってその要求を有効にする(ステップ405)。次いでチケットオーソリティ136が、第1のチケットまたはクライアントチケット、および第2のチケットまたは第1のプロトコルサービスチケットを含むチケットを生成する(ステップ410)。第1および第2のチケットは、1度使用した後は価値のなくなる「1回限り」のチケットである。さらなる実施態様において、第1および第2のチケットは所定の期間内に使用しなければならない。
【0080】
一実施態様において、チケットオーソリティ136は、第1および第2のチケットをそのチケットが使用されるまでメモリ(例えば、RAM)内に格納する。あるいは、チケットオーソリティ136は、第1および第2のチケットをそのチケットが使用されるまで記憶装置(図示なし)内に格納する。記憶装置は、例えばデータベースまたは持続的メモリ(例えば、フロッピー(登録商標)ディスクまたはハードディスクドライブ上の)を含んでよい。チケットオーソリティ136は、その後クライアントチケットをウェブサーバ120へ伝送し(ステップ415)、次いでウェブサーバ120はそのクライアントチケットをクライアント108へ転送する(ステップ420)。
【0081】
その後クライアント108は、プロキシ接続要求をクライアント‐第1のプロトコルサービス間通信チャネル135上に伝送することにより、第1のプロトコルサービス112との通信セッションを開始する(ステップ425)。プロキシ接続要求は、クライアントチケットを含む。一実施態様において、プロキシ接続要求は、ホストノード118との通信セッション確立時に第1のプロトコルサービス112に置き換え可能なダミーパスワードも含む。さらなる実施態様において、ウェブサーバ120は、第1のプロトコルサービス112にアクセス可能なフォーマットを有するプロキシ接続要求を未来に生成するため、ダミーパスワードをクライアント108に伝送する。第1のプロトコルサービス112はその後、プロキシ接続要求からクライアントチケットを開放し(ステップ430)、そのクライアントチケットを有効化するためチケットオーソリティ136へ転送する。チケットオーソリティ136はその後第1のチケットを有効にする(ステップ435)。一実施態様において、チケットオーソリティ136は、第1の予期されるチケットを求めてその記憶装置(例えば、データベース)を検索することにより、第1のチケットを検証する。
【0082】
チケットオーソリティ136が記憶装置の中で第1のチケットを発見しない場合(例えば第1のチケットが既に使用されていた場合など)、チケットオーソリティ136は通信セッションを終了する。受信したチケットがチケットオーソリティ136の予期しているチケットと一致する場合、そのクライアントチケットは有効にされる。チケットオーソリティ136はその後、第2のまたは第1のプロトコルサービスチケットを第1のプロトコルサービス112へ伝送する(ステップ440)。また、クライアントチケットが1度使用されると、チケットオーソリティ136はそのクライアントチケットを記憶装置から削除する。別の実施態様において、チケットオーソリティ136は、ホストノード118のインターネットプロトコル(IP)アドレスも第1のプロトコルサービス112へ伝送する。さらに別の実施態様において、チケットオーソリティ136は、その後IPアドレスに変換するため、ホストノード118のドメイン名を第1のプロトコルサービス112へ伝送する。
【0083】
第1のプロトコルサービス112は、第2のチケットまたは第1のプロトコルサービスチケットを受信し、その後、第2のチケットをホストノード118へ伝送(ステップ145)することにより、プロキシ‐サーバ間通信チャネル145を通して通信を始める。ホストノード118は、第1のプロトコルサービスチケットを受信し、その後そのチケットを有効にするためチケット‐サーバ間通信チャネル157上でチケットオーソリティ136に伝送する(ステップ447)。一実施態様において、チケットオーソリティ136が、ホストノード118から受信した第1のプロトコルサービスが以前に使用されたことがあり、正当な価値(すなわち、関連する記憶装置内に格納されているのと同じ価値)がないと判断した場合、チケットオーソリティ136は、クライアント108との確立した通信セッションを終了させるため、第1のプロトコルサービス112(またはウェブサーバ120)にエラーメッセージを伝送する。チケットオーソリティ136が第1のプロトコルチケットを有効にする(ステップ448)と、ホストノード118はICA公開アプリケーションを起動する(ステップ450)。ホストノード118は次いでアプリケーション情報を、クライアント108におけるアプリケーションの遠隔表示(ステップ455)のため、ICAクライアント128を使用して第1のプロトコルサービス112へ伝送する(ステップ453)。
【0084】
さらなる実施態様において、クライアント108は、ステップ425における第1のプロトコルサービス112との通信開始時にICAクライアント128を起動する。その他の実施態様において、クライアント108は、クライアント108がステップ453において第1のプロトコルサービス112からアプリケーション情報を受信した際にICAクライアント128を起動する。
【0085】
従って、クライアント108は、クライアントチケット以外、第1のプロトコルサービスチケットには気づかない。さらに、ICAクライアント128は、第1のプロトコルサービス112と通信を行い、クライアントチケットを提示することなしにはホストノード118にアクセスできない。.
チケットオーソリティ136は、第1のプロトコルサービスチケットを、クライアント108のユーザーのためのユーザーパスワードとして、ステップ440において第1のプロトコルサービス112に伝送する可能性もある。これは、第1のプロトコルサービス112が、第1のプロトコルサービスチケットを、ユーザーのログインパスワードをウェブの信用できない部分(すなわち、ステップ425中のセキュアでないクライアント‐プロトコルサービス間通信チャネル135)上にさらすことなくホストノード118にアクセスするためのログインパスワードとして使用できるようにする。従って、一実施態様において、通信システム100は、チケットオーソリティ136により管理され、ユーザーのパスワードで第1のプロトコルサービスチケットをマップするためにホストノード118と同一場所に配置される、集中パスワードマッピングデータベースを含む可能性がある。
【0086】
従って、パスワードは両方のチケット(すなわち、第1のプロトコルサービスチケットおよびクライアントチケット)を伴うことができるか、またはパスワードは2つのチケットのうち1つを伴うことができる。上述のように、パスワードが2つのチケットのうち1つ、例えばクライアントチケットを伴っていれば、第1のプロトコルサービスチケットがパスワードである。一実施態様において、パスワードは、価値が変わらないシステムパスワード、または、RSA Security社(Bedford、 Massachusetts)製のセキュアIDトークンによって生成されたパスワード等の、1回限りのパスワードであってよい。
【0087】
また、本発明は、ホストノード118との通信セッションを確立する前にクライアント108が通信を行わなければならない第1のプロトコルサービス112または「ホップ」をいくつでも有する通信システムまで拡張することができる。第1のプロトコルサービス112に関連して説明したが、ホップは、プロキシ115、ファイアウォール、ルータ、リレー等、任意のネットワークコンポーネントを備えることができる。
【0088】
例えば、また図5Aを参照して、4つのホップの例は、プロキシ115’を持つ第1のプロトコルサービス112’、プロキシ115’’を持つ2番目の第1のプロトコルサービス112’’、およびプロキシ115’’’(概して115)を持つ3番目の第1のプロトコルサービス112’’’を有する通信システム505である。プロキシ115を持つ第1のプロトコルサービス112は、第1のプロキシ‐プロキシ間通信チャネル510’および第2のプロキシ‐プロキシ間通信チャネル510’’(概してプロキシ‐プロキシ間通信チャネル510)のようなプロキシ‐プロキシ間通信チャネル上で通信を行う。クライアント108は、2番目の第1のプロトコルサービス112’’と通信を行う第1のプロトコルサービス112’と通信を行う。同様に、2番目の第1のプロトコルサービス112’’は3番目の第1のプロトコルサービス112’’’と通信を行い、次いで3番目の第1のプロトコルサービス112’’’は、ホストノード118との通信セッションを確立するため、プロキシ‐サーバ間通信チャネル145上でホストノード118と通信を行う。さらに、上述の実施態様はクライアントチケットおよび第1のプロトコルチケットを有するチケットを含むが、別の実施態様は、多数のチケットを備えるチケットを含む。
【0089】
さらに明確に、また図5Bも参照すると、ウェブサーバ120はクライアント108からアプリケーションの要求を受信し、ウェブサーバ120はその要求をチケットオーソリティ136で有効にする(ステップ405)。チケットオーソリティ136は、次いでステップ410においてN部のチケット(例えばT1乃至TN)を生成する。一実施態様において、チケットオーソリティ136はその後N部のチケットの一部Ti(例えば、チケットの第1部、または第1のチケットT1)をウェブサーバ120へ伝送する(ステップ415)。ウェブサーバ120はその後チケットT1をクライアント108に伝送する(ステップ420)。一実施態様において、チケットオーソリティ136は次の「ホップ」(例えば、第1のプロトコルサービス112’)のアドレスをウェブサーバ120へ伝送し、ウェブサーバ120はその後そのアドレスをクライアント108へ伝送する。このアドレスは、クライアント108が最終的にホストノード118に対して認証されるために、現在のホップ(例えば、クライアント108)が通信を行う必要がある次のホップ(例えば、第1のプロトコルサービス112)のアドレスである。
【0090】
クライアント108は、次の「ホップ」(例えば、第1のプロトコルサービス112’)と接触するためのアドレスを使用し、プロキシ接続要求をクライアント‐第1のプロトコルサービス間チャネル135上に伝送することにより、1番目の第1の通信セッション112’との通信セッションを開始する。第1のプロトコルサービス112’’は、次いで第1のチケットT1をプロキシ接続要求から抽出し(ステップ530)、このチケットを有効にするためチケットオーソリティ136へ転送する。チケットオーソリティ136はその後、第1のチケットT1を有効にする(ステップ535)。
【0091】
第1のチケットT1の適切な有効化時、チケットオーソリティ136は次のチケットTiをN部のチケット(例えば、T2)から次の第1のプロトコルsサービス112(例えば、第1のプロトコルサービス112’)へ伝送する(ステップ540)。一部の実施態様において、チケットオーソリティ136は、次のホップ(例えば、2番目の第1のプロトコルサービス112’’)のアドレスも現在のホップ(例えば第1のプロトコルサービス112’)へ伝送する。第1のプロトコルサービス112’は、このチケットを次のホップ(例えば、2番目の第1のプロトコルサービス112’’)へ伝送する(ステップ545)。一実施態様において、2番目の第1のプロトコルサービス112’’は、このチケットをチケットオーソリティ136へ伝送することによりT2を検証する(ステップ550)。チケットオーソリティ136は第2のチケットTを有効にし(ステップ555)、ステップ560から575に示されるようなプロセスが続く。N部のチケットの最後の部分が有効になると、図4に示すように、クライアント108上のアプリケーションを起動するために、ステップ450から455が発生する。
【0092】
一実施態様において、各第1のプロトコルサービス112(すなわち、各ホップ)はTi(例えば、T2)を第1のプロトコルサービス112(すなわち、ホップ)に関連するチケットオーソリティ136によって有効にする。この実施態様において、各第1のプロトコルサービス112がチケットTi(例えば、T2)をチケットオーソリティ136によって有効にした後、有効化が行われるチケットオーソリティ136は、次のチケットTi+1(例えば、T3)および次の第1のプロトコルサービス112(すなわち、次の「ホップ」あて先)を、チケットTiを有効にした第1のプロトコルサービス112に伝送する。従って、各第1のプロトコルサービス112は、現在および次のホップチケットが組み込まれた(すなわち、Tiを有効にしTi+1を伝送している)チケットオーソリティ136に関連している。その結果、次の第1のプロトコルサービス112は、当該ホップのためのクライアントとして作用する。このプロセスは、通信システム505においてホストノード118に届くまで繰り返される。従って、各ホップは、いずれのホップに対してもすべてのチケットをさらけ出すことなく、個別に有効にされる。
【0093】
一実施態様において、チケットオーソリティ136は、多くの部分を持つ1つのチケットを発行するのではなく1つを超えるチケットを発行する。例えば、チケットオーソリティ136は、第1のホップチケットが第2のホップチケットと関連を持たないステップ510において、第1のホップチケットおよび第2のホップチケットを生成する。チケットオーソリティ136はその後、第1のホップチケットをウェブサーバ120へ伝送し、ウェブサーバ120は第1のホップチケットをクライアント108へ伝送する。クライアント108は、チケットオーソリティ136によってこの第1のホップチケットを有効にするため第1のプロトコルサービス112(例えば、第1のプロトコルサービス112’)へ伝送する。ステップ535における有効化時、チケットオーソリティ136は、第1のホップチケットが第2のホップチケットから独立している間に、ステップ540において第2のホップチケットを次の第1のプロトコルサービス112(例えば、2番目の第1のプロトコルサービス112’’)へ伝送する。
【0094】
さらなる実施態様において、1つ以上のチケットオーソリティ136は、第1のプロトコルサービス112の一部として、または第1のプロトコルサービス112とは別で、SOCKSサーバ(例えば、NEC社(東京、日本)製のSOCKS5サーバ)に接続するための暗号キー、SSL方法設定情報、および認証情報等であるがこれらに限定されない、次のホップに接続するために必要な任意の必要情報とともに、プロキシ115を提供する。
【0095】
さらに別の実施態様において、チケットオーソリティ136は単一のチケットのみを生成する。チケットオーソリティ136は単一のチケットをウェブサーバ120へ伝送する。ウェブサーバ120は単一のチケットをクライアント108へ転送する。第1のプロトコルサービス112はその後そのチケットをクライアント108から受信し、有効化時にその単一のチケットを「消費」する。結果として、通信システム100は単一のチケットを、クライアント‐プロキシ間通信チャネル135およびクライアント‐ウェブサーバ間通信チャネル140上で任意の通信プロトコルを使用する能力を提供するために使用する。また、ホストノード118は単一のチケットを受信も検証もしないため、チケットはホストノード118に対して透過的であり、その結果、ホストノード118はチケットの使用に「気づく」ことがない。
【0096】
セキュアなクライアント‐ウェブサーバ通信チャネル140上のクライアント108とウェブサーバ120の間のセキュアな通信のセキュリティを利用することにより、通信システム505はセキュアでないクライアント‐プロキシ通信チャネル135上に、クライアント108にデスクトップアプリケーションをセキュアに遠隔表示するためのセキュアな通信リンクを確立する。
【0097】
さらに別の実施態様において、また図4を再度参照して、チケットオーソリティ136はステップ415において第1のプロトコルサービスの使用不可能なバージョンを、クライアント108への伝送のため、クライアントチケットとともにウェブサーバ120へ伝送する。クライアント108はその後第1のプロトコルサービスチケットを、プロキシ接続要求の一部として、クライアントチケットとともに第1のプロトコルサービス112へ伝送する(ステップ425)。第1のプロトコルサービス112は、次いで両方のチケットをチケットオーソリティ136へ転送する。使用不可能な第1のプロトコルサービスチケットを受信すると、チケットオーソリティ136はクライアントチケットを有効にした後、第1のプロトコルサービスチケットを使用可能にする。チケットオーソリティ136は次いで使用可能な第1のプロトコルサービスチケットを、ホストノード118に対する認証のために第1のプロトコルサービス112へ伝送する。
【0098】
あるいは、別の実施態様において、ウェブサーバ120は使用不可能な第1のプロトコルサービスチケットおよび使用可能なクライアントチケットをチケットオーソリティ136から受信し、クライアントチケットのクライアント108への伝送のみ行う。クライアント108は、そのクライアントチケットをプロキシ接続要求の一部として第1のプロトコルサービス112へ伝送する(ステップ425)。第1のプロトコルサービス112は次いでクライアントチケットをチケットオーソリティ136へ転送する。チケットオーソリティ136はクライアントチケットを有効にし、有効化時に、以前ウェブサーバ120へ伝送された第1のプロトコルサービスチケットを使用可能にする。さらに別の実施態様において、チケットオーソリティ136は、使用可能な第1のプロトコルサービスチケットを、ホストノード118に対する認証のためのクライアントチケット有効化時に、ウェブサーバ120へ伝送する。
【0099】
従って、常に、チケットオーソリティ136は、チケットオーソリティ136が有効にできる、クライアント108または第1のプロトコルサービス112に対して使用可能な1つのチケットのみを提供する。チケットオーソリティ136は、使用可能なチケットが有効になるまで、有効にできない別のチケット(例えば、使用不可能なチケット)を提供する。あるいは、チケットオーソリティ136は、チケットオーソリティ136が使用可能なチケットを有効にするまで、第1のプロトコルサービスチケットを第1のプロトコルサービス112へ伝送しない場合がある。以下でさらに詳しく説明するように、クライアント108は、チケットオーソリティ136に使用可能なチケットを有効にさせ、ホストノード118と通信を行うために必要なチケットを伝送させることなくウェブサーバ120または第1のプロトコルサービス112を横断することができないため、これは、通信システム505を使用して通信のネットワークルーティングを強制する。
【0100】
別の実施態様において、ステップ440のように第1のプロトコルサービスチケットを第1のプロトコルサービス112へ伝送する代わりに、チケットオーソリティ136はウェブサーバ‐オーソリティ間通信チャネル250上で第1のプロトコルサービスチケットを直接ウェブサーバ120へ伝送する。ウェブサーバ120はその後自動的に第1のプロトコルサービスチケットをホストノード118へ伝送する。すなわち、ウェブサーバ120は第1のプロトコルサービスチケットをホストノード118へ「プッシュ」する。チケットオーソリティ136は、第1のプロトコルサービスチケットを第1のプロトコルサービス112へもウェブサーバ120へも伝送せずに、第1のプロトコルサービスチケットをホストノード118へプッシュすることもできる。
【0101】
さらに別の実施態様において、ホストノード118は、チケット‐コンテンツサーバ間通信チャネル157上で、チケットオーソリティ136から第1のプロトコルサービスチケットを回収する。すなわち、ホストノード118はチケットオーソリティ136から第1のプロトコルサービスチケットを「プル」する。上記の例は、ステップ345を(ステップ440における伝送あて先を変更しながら)排除するための技術の説明である。
【0102】
さらに、本発明は、第1のプロトコルサービス112を通じてクライアント108のルーティングを強制する。上述のように、クライアント108は、ホストノード118との通信セッションを確立するため、第1のプロトコルサービスチケットを所有しなければならない。より具体的には、ホストノード118との通信セッションを確立するために、ウェブサーバ120はまずチケットオーソリティ136でクライアント108の要求を有効にしなければならない。有効化されると、クライアント108は第1のチケットを得てこの第1のチケットを有効化のためチケットオーソリティ136へ伝送する。しかしながら、有効化時に、チケットオーソリティ136は、第1のプロトコルサービスチケットをクライアント108ではなく第1のプロトコルサービス112へ送り返す。クライアント108とホストサービス116の間の通信セッションは、ホストサービス116が第1のプロトコルサービスチケットを受信した際に確立される。従って、クライアント108は、第1のプロトコルサービスチケットをホストサービス116へ伝送させ、それによって第1のプロトコルサービス112によってクライアント108のルーティングを強制するため、第1のプロトコルサービス112と通信を行わなければならない。従って、本発明は、ホストノード118へのアクセスを許可する前に、セキュリティ装置(例えば、第1のプロトコルサービス112)を適切に横断することを確実に行える。
【0103】
例えば、ホストノード118は、ともにMicrosoft社(Redmond、Washington)製のMICROSOFT WORDおよびMICROSOFT EXCEL等、いくつかのアプリケーションを実行する。一実施態様において、クライアント108は、クライアント108がアプリケーションにアクセスするサーバファーム169から情報を得るために、Citrix Systems社(Fort Lauderdale、Florida)製NFUSEを使用する。クライアントユーザーがMICROSOFT WORDにアクセスし使用したい場合、クライアント108はウェブサーバ120からアプリケーションを要求する。しかしながら、MICROSOFT WORDに対するアプリケーション料を支払っているユーザーのみがこのアプリケーションへのアクセスを認可されることができる。
【0104】
アプリケーション料の支払いを確認するため、通信システム505は、第1のプロトコルサービス112を介してクライアント108のルーティングを強制するための第1のプロトコルサービス112およびチケットオーソリティ136を含む。第1のプロトコルサービス112がアプリケーション料の徴収およびアプリケーションにアクセスするためのユーザー認可に使用される場合、第1のプロトコルサービス112を介するクライアント108のルーティングは、アプリケーションプロバイダにとって価値がある。
【0105】
チケットオーソリティ136は、その後アプリケーションの要求に関連するチケットを生成する。次いで使用可能な第1のチケットがクライアント108へ伝送される。クライアント108はホストノード118のアドレスを持たないため、クライアント108はアプリケーションにアクセスできない。さらに、クライアント108は第1のプロトコルサービス112によってまだ認可されていない(すなわち、まだ支払っていない)。従って、クライアント108は認可を受けるために第1のプロトコルサービス112と通信を行わなければならない。第1のプロトコルサービス112はその後、アプリケーション料の支払い時に、使用可能な第1のチケットをチケットオーソリティ136へ伝送する。
【0106】
チケットオーソリティは次いでクライアントチケットを有効にし、その後第1のプロトコルサービスチケットをプロキシ115へ伝送(または使用可能に)する。第1のプロトコルサービス112は次いで第1のプロトコルサービスチケットをホストノード118へ伝送し(例えば、クライアントユーザーがアプリケーション料を支払ったと想定して)、それによりホストノード118にアプリケーションをクライアント108へ伝送可能にさせる。通信システム505は、クライアント108に配信するHTMLページから、またはHTMLページへの埋め込みからアプリケーションの起動を可能にするために、Citrix Systems社製のApplication Launching And Embedding(ALE)技術を使用してもよい。
【0107】
別の実施態様において、本発明はクライアント108のホストサービス116への再接続およびクライアント108とホストサービス116の間の接続または「ホップ」の再認証を対象とする。図6Aは、クライアント108をホストサービス116へできるシステム600の別の実施例を示す。上述したネットワーク104および104’、クライアント108、第1のプロトコルサービス112、およびホストサービス116に加えて、システム600は、中間ノード632およびチケットオーソリティ136をさらに含む。一実施態様において、中間ノード632は、ネットワーク104の構成上クライアント108と第1のプロトコルサービス112との間のメッセージが通過すべき、例えばファイアウォールおよび/またはルータのようなセキュリティゲートウェイである。また、中間ノード632は、第1のプロトコルサービス112とともに、またはこれを伴わずに、第1のプロトコルサービス112のプロキシ115を備えてもよい。図示するように、チケットオーソリティ136は、通信が可能で本願明細書に開示した動作を行うには十分なプロセッサ能力とメモリ容量を有する、スタンドアロンのネットワークコンポーネントとすることができる。
【0108】
図6Aの実施態様に示すように、中間ノード632は、クライアント108によって開始される接続135aを受け入れ、第1のプロトコルサービス112による第2の接続135bを確立するように構成される。併せて、接続135aおよび第2の接続135bは、上述のように接続135を構成し、それらを通じて第1のプロトコルを使用してクライアント108および第1のプロトコルサービス112が通信を行う。
【0109】
図に示すように、中間ノード632はまた、チケットオーソリティ136と通信を行うように構成される。一実施態様では、チケットオーソリティ136は、中間ノード632からの第1の再接続チケットに対する要求を受信し、その後に第1の再構成チケットを生成するように構成される。第1の再接続チケットは、例えば、大きな乱数を含むことができる。別の実施態様において、チケットオーソリティ136は、クライアントとホストサービス116の間の各「ホップ」に対する第1の再接続チケットの要求を受信するように構成される。例えば、中間ノード632は、クライアント108と中間ノード632の間、中間ノード632と第1のプロトコルサービス112の間、および第1のプロトコルサービス112とホストサービス116の間の接続のための再接続チケットを要求してよい。これらの再接続チケットは、各「ホップ」に対してのみ有効となることができる。例えば、ホストサービス116への第1のプロトコルサービス112の第1の再接続チケットは、クライアント108を代表してホストサービス116に対し第1のプロトコルサービス112を認証するためにのみ有効である。
【0110】
別の実施態様において、チケットオーソリティ136は、ハンドルを生成するように構成される。ハンドルは、例えば、第1の再接続チケットと関連する(例えば、マップする)乱数とすることができる。一実施態様では、ハンドルは、第1の再接続チケットを形成している乱数よりも小さな乱数である。例えば、ハンドルは、32ビット乱数としてよい。さらなる実施態様において、ティッカーまたは再接続チケットに関連するチケットは、クライアント108とホストサービス116の間の複数のホップ接続における次の「ホップ」のアドレスまたはそれを指すポインタである。この場合、チケットまたは再接続チケットは、次の「ホップ」へのポインタを持つ単独の「ホップ」に対して有効となる。次の「ホップ」は、1つ前の「ホップ」が有効となり、クライアント108を代表してホストサービス116に接続されるまで、異なるチケットまたは再接続チケット等を得る必要があるであろう。
【0111】
チケットオーソリティ136は、第1の再接続チケットおよびハンドルを中間ノード632に伝送しながら、第1の再接続チケットのコピーおよびハンドルのコピーを維持する。第1の再接続チケットのコピーは、後にチケットオーソリティ136が使用することができ、クライアント108の再接続プロセス中に、後にチケットオーソリティ136にそのコピーを示す際に、元々はクライアント108に伝送された第1の再接続チケットを検証する。一実施態様では、チケットオーソリティ136は、第1のプロトコルサービス112に対するアドレスも維持するが、そのアドレスは、後述するように、第1の接続チケットに関連し、第1の再接続チケットの検証時に、中間ノード632に伝送される。
【0112】
一実施態様では、中間ノード632は、チケットオーソリティ136がそこに伝送したハンドルを使用して、チケットオーソリティ136で維持された第1の再接続チケットを削除するようにさらに構成される。別の実施態様では、下記のように、チケットオーソリティ136は、クライアント108のホストサービス116への再接続プロセス中に、第1の再接続チケットを削除し、その後代替の第1の再接続チケットを生成するようにさらに構成される。加えて、別の実施態様では、第1の再接続チケットは、所定の時間の経過後に自動的に削除するように構成される。クライアントとホストサービス116の間の各「ホップ」のための再接続チケットの実施態様において、再接続チケットのうち1つ、一部、またはすべてが所定の時間の経過後に削除されるよう構成されてよい。その他の実施態様において、チケットオーソリティ136または中間ノード632は、複数のホップチケットのそれぞれを削除し代替のチケットを生成するように構成される。
【0113】
別の実施態様では、第1のプロトコルサービス112は、第1の再接続チケットなどの場合、例えば、大きな乱数を含むことができる第2の再接続チケットを生成するように構成される。一実施態様では、第1のプロトコルサービス112は、クライアント108とホストサービス116間の各「ホップ」に対して第2の再接続チケットを生成する。第1のプロトコルサービス112は、第2の接続チケットをクライアント108に伝送しながら、第2の再接続チケットのコピーおよびセッション番号を維持するようにも構成することができる。第2の再接続チケットのコピーは、後に第1のプロトコルサービス112が使用することができ、クライアント108の再接続プロセス中に、後に第1のプロトコルサービス112にそのコピーを示す際に、元々はクライアント108に伝送された第2の再接続チケットを検証する。一実施態様では、第1のプロトコルサービス112は、中間ノード632を介して第2の再接続チケットをクライアント108に伝送する。別の実施態様では、第1のプロトコルサービス112は、第2の再接続チケットをクライアント108に直接伝送する。さらなる実施態様では、第1のプロトコルサービス112は、第2の再接続チケットをその他の第1のプロトコルサービス112またはクライアント108とホストサービス116の間に複数のホップ接続を含む場合がある中間ノード632へ伝送してよい。
【0114】
さらに、下記にさらに詳しく説明するように、第1のプロトコルサービス112は、クライアント108のホストサービス116への再接続プロセス中に、第2の再接続チケットを削除し、その後代替の第2の再接続チケットを生成するようにさらに構成される。加えて、別の実施態様では、第2の再接続チケットは、所定の時間の経過後に自動的に削除するように構成される。さらなる実施態様では、複数のホップ接続における1つ以上の第1のプロトコルサービス112の第1のプロトコルサービス112は、各「ホップ」のための第2の再接続チケットを削除し、その後「ホップ」の1つ、一部またはすべてに対する代替の再接続チケットを生成するよう構成される。
【0115】
一実施態様では、中間ノード632は、第1および第2の再接続チケットに対する中間物としての機能を果たす。中間ノード632は、例えば、チケットオーソリティ136が生成する第1の再接続チケット、および第1のプロトコルサービス112が生成する第2の再接続チケットを受信する。中間ノード632は、次いで第1の再接続チケットおよび第2の再接続チケットをクライアント108に伝送することができる。さらに、クライアント108のホストサービス116への再接続プロセス中、中間ノード632は、クライアント108から第1の再接続チケットおよび第2の再接続チケットを受け入れることができ、その後第1の再接続チケットをチケットオーソリティ136に伝送することができ、適切な場合、第2の再接続チケットを第1のプロトコルサービス112に伝送することができる。
【0116】
別の実施態様において、中間ノード632は、再接続チケットの、クライアント108とホストサービス116との間の複数のホップへの仲介としての役割を果たす。中間ノード632は、例えば、クライアント108の第1のプロトコルサービス112への接続のための第1の再接続チケット、および第1のプロトコルサービス112のホストサービス116への第1の再接続チケットを受信する。さらなる実施態様では、中間ノード632は、中間ノード632と第1のプロトコルサービス112との間の接続のための第1の再接続チケットを受信する。中間ノード632は、次いでクライアントのための第1の再接続チケットをクライアント108へ、また第1のプロトコルサービス112のための第1の再接続チケットを第1のプロトコルサービス112へ伝送することができる。さらに、クライアント108のホストサービス116への再接続プロセス中、中間ノード632は、中間ノード632または第1のプロトコルサービス112に対するクライアントの接続を再確立するチケットを有効にするため、クライアント108から第1の再接続チケットを受け入れることができる。
【0117】
図6Bを参照して、ネットワーク通信のためのシステム602の別の実施態様は、上述のように、ネットワーク104および104’と、クライアント108と、第1のプロトコルサービス112と、ホストサービス116a乃至116nと、中間ノード632と、チケットオーソリティ136とを含み、さらに、一実施態様においてクライアント108をホストサービス116に最初に接続するためにどちらも使用する、第1の計算コード640および第2の計算ノード644を示す。さらに、図6Aの実施態様では、クライアント108は、例えば、Microsoft社(Redmond、WA)製のINTERNET EXPLORERなどのような、ワールドワイドウェブに接続するためのウェブブラウザ162をさらに含む。
【0118】
一実施態様では(図示せず)、システム602は、2つ以上の中間ノード632および/または2つ以上の第1のプロトコルサービス112を含む。それを介してクライアント108と第1のプロトコルサービス112との間のメッセージが通過すべき中間ノード632および/または第1のプロトコルサービス112は、例えばロードバランシング式に基づいてそれぞれ選択することができる。
【0119】
第1の計算ノード640および第2の計算ノード644のそれぞれは、通信が可能で本願明細書に開示した動作を行うには十分なプロセッサ能力とメモリ容量を有する、任意のコンピュータとすることができる。例えば、一実施態様では、第1の計算ノード640は、1つ以上のウェブサイトを提供するウェブサーバ120を含む。別の実施態様では、第2の計算ノード644は、XMLサービスを提供する。
【0120】
一実施態様では、クライアント108およびネットワーク104は、外部ネットワーク652を形成するが、破線で示される第1のファイアウォール160によってシステム602の他の部分から切り離される。中間ノード632および第1の計算ノード640は、同様に破線で示される第1のファイアウォール160および第2のファイアウォール161によってシステム602の他の部分から切り離されるDMZ130内に置くことができる。次いで、図に示すように、ネットワーク104’、第1のプロトコルサービス112、ホストサービス116a乃至116n、チケットオーソリティ136、および、第2の計算ノード644は、内部ネットワーク668を形成するが、第2のファイアウォール161によってシステム602の他の部分から切り離される。
【0121】
あるいは、別の実施態様では、図6Cを参照して、システム604は、DMZ130内でネットワーク104と中間ノード632との間に配置される第3の計算ノード646をさらに含む。第3の計算ノード646は、ネットワーク化された通信が可能で本願明細書に開示した動作を行うには十分なプロセッサ能力とメモリ容量を有する、任意のコンピュータとすることができる。下記のように、第3の計算ノード646は、一部の実施態様では、クライアント108のホストサービス116への最初の接続プロセス中、および/またはクライアント108のホストサービス116への再接続プロセス中に使用する。より具体的には、下記のように、システム604が2つ以上の中間ノード632を含む際には、第3の計算ノード646は、例えばロードバランシング式に基づいて、それを介してクライアント108のクライアントエージェント128と第1のプロトコルサービス112との間の通信が通過すべき中間ノード632を選択することができる。
【0122】
さらに、図6Dを参照して、図6Cの中間ノード632は、別の実施態様では、2つ以上のレベル「a」乃至「n」の中間ノード632に置換することができる。図示するように、各レベル「a」乃至「n」は、2つ以上の中間ノード632a乃至632nを含むことができる。下記のように、クライアント108のクライアントエージェント128は、例えばロードバランシング式に基づいて、中間ノード632の任意の組み合わせを介して送ることができる。例えば、図示するように、クライアントエージェント128は、接続622を介して中間ノード632を介して送ることができる。追加のセキュリティのため、各「ホップ」は接続622を介して、クライアント108とホストサービス116との間の複数のホップ接続を有効にし認証するためのチケットまたは再接続チケットを要求することができる。当業者にとって容易に明らかなように、他の構成のシステム600、602および604も可能である。
【0123】
再び図6Bを参照すると、一実施態様では、ウェブブラウザ162は、第1の計算ノード640によるネットワーク104を通じて通信を行うが、それ自身が第2の計算ノード644およびチケットオーソリティ136と接続する。より具体的には、第1の計算ノード640は、第2の計算ノード644およびチケットオーソリティ136のアドレスによって構成される。一実施態様において、下記にさらに説明するように、第1の計算ノード640は、クライアント108のウェブブラウザ162と、第2の計算ノード644と、チケットオーソリティ136との間の情報を中継し、それによってそれらの直接的な通信を防ぐように構成される。このような直接的な通信を防ぐことによって、第1の計算ノード640は、システム602にさらなるレベルのセキュリティを付加する。第1の計算ノード640は、中間ノード632のアドレス、または代わりに、2つ以上の中間ノード632のアドレスによって構成することもできる。
【0124】
第2の計算ノード644は、その役割として、ホストサービス116上で実行するどのアプリケーションプログラムをクライアント108のユーザーが利用できるかを判断するように構成される。すなわち、第2の計算ノード644は、ユーザーがアクセスを許可されたのはどのアプリケーションプログラムなのかを判断する。一実施態様では、ユーザーが自身の所望するアプリケーションプログラムを選択した後、さらに下記のように、第2の計算ノード644は、ロードバランシングのためにユーザーの所望のアプリケーションを実行するため、どのホストサービス116を使用するかを判断するように構成される。第2の計算ノード644は、そのホストサービス116のアドレスを第1の計算ノード640に返す。第2の計算ノード644は、ロードバランシング式を使用して複数の第1のプロトコルサービス112の中からも選択される、第1のプロトコルサービス112のアドレスも第1の計算ノード640に返す。次に、第1の計算ノード640は、選択した第1のプロトコルサービス112および選択したホストサービス116のアドレスをチケットオーソリティ136に伝送する。
【0125】
チケットオーソリティ136は、その役割として、接続チケットを生成する。一実施態様では、チケットオーソリティ136は、クライアント108への伝送に対する最初の接続チケットを第1の計算ノード640に伝送する。別の実施態様では、チケットオーソリティ136は、最初の接続チケットを、クライアント108およびホストサービス116との間の1つ以上の「ホップ」のための第1の計算ノード640へ伝送する。
【0126】
図7を参照して、図6A乃至図6Dの例示的実施態様を使用したネットワーク通信のための方法600の一実施態様を示す。ステップ604で、クライアント108は、例えば下記に示す方法700を用いて、クライアント108を複数のホストサービス116に接続する。クライアント108の複数のホストサービス116への接続後、クライアント108およびホストサービス116は、第1のプロトコルサービス112を介して、およびステップ608で、第1のプロトコル内にカプセル化された複数の第2のプロトコルを介して通信を行う。一実施態様では、第1のプロトコルサービス112は、いずれの第1のプロトコルパケットの伝送前に、通信を第1のプロトコル204のレベルで暗号化し、それによって通信を保護する。別の実施態様では、第1のプロトコルサービス112は、任意の第1のプロトコルパケットの伝送前に、通信を第1のプロトコルのレベルで圧縮し、それによって通信効率を改善する。
【0127】
ステップ612で、クライアントエージェント128は、クライアントエージェント128と第1のプロトコルサービス112との間の接続135が失敗したかどうかを判断する。例えば、クライアントエージェント128と中間ノード632との間の接続135aが失敗した可能性があり、または中間ノード632と第1のプロトコルサービス112との間の接続135bが失敗した可能性があり、あるいは接続135aおよび135bの両方が失敗した可能性がある。別の実施態様では、第1のプロトコルサービス112とホストサービス116との間の接続が失敗した可能性がある。クライアントエージェント128が、接続135は失敗しなかったと判断した場合は、方法600はステップ620へ進む。一方で、クライアントエージェント128が、接続135は失敗したと判断した場合は、ステップ616で、クライアント108にホストサービス116への信頼できる接続を提供し、ホストサービス116に再接続する。
【0128】
ステップ620では、クライアント108がプロトコルサービス112との接続135を、そして結果的にホストサービス116との接続124a乃至124nを完全に完了することを望んでいるかどうかを判断する。望んでいない場合には、ステップ608で、第1のプロトコル内にカプセル化された複数の第2のプロトコルを介して、クライアント108と第1のプロトコルサービス112との間の通信を継続する。望んでいる場合は、次いでステップ624で、すべての接続135a、135b、および124a乃至124nを中断し、すべての再接続チケットを削除する。一実施態様では、中間ノード632は、チケットオーソリティ136から受信したハンドルを使用して、チケットオーソリティ136に保存された第1の再接続チケットのコピーを削除する。別の実施態様では、第1のプロトコルサービス112は、第1のプロトコルサービス112に保存された第2の再接続チケットのコピーを削除する。さらなる実施態様では、何らかの理由で第2のプロトコル接続124が失敗した場合、関連する第1のプロトコルサービス112で保存された第2の再接続チケットのコピーを第1のプロトコルサービス112によって削除する。さらに別の実施態様では、第1の再接続チケットおよび/または第2の再接続チケットは、ステップ612でのように、接続135における失敗に続いて、および/またはステップ620でのように、接続135の完全な終了に続いて、所定の時間の経過後に自動的に削除される。一実施態様では、第1のプロトコルサービス112またはチケットオーソリティ136のいずれかが、クライアント108とホストサービス116との間の1つ以上の「ホップ」のための1つ以上の再接続チケットを削除する。
【0129】
図8A乃至8Cを参照して、図6A乃至図6Dの例示的実施態様を使用してクライアント108のホストサービス116への最初の接続(例えば、図7のステップ604で)のための方法700の一実施態様を示す。ステップ704で、クライアント108は、ブラウザ162を使用して、例えばHTTPリクエストなどのような、リクエストを第1の計算ノード640に送信する。第1の計算ノード640は、認証情報(例えば、ユーザー名およびパスワード)を要求する、例えばHTMLフォームなどのようなウェブページを返す。クライアント108のユーザーは、自分の認証を入力して完了したフォームを第1の計算ノード640に伝送する。
【0130】
ステップ708で、第1の計算ノード640は、次いでクライアント108のユーザーに実行可能なアプリケーションを通知する。一実施態様では、第1の計算ノード640は、ユーザーの認証をログインページから取り出し、第2の計算ノード644に対しユーザーが利用可能なアプリケーションを列挙するよう求める要求とともに、その認証を第2の計算ノード644に伝送する。ユーザーの認証に基づいて、第2の計算ノード644は、ユーザーが利用可能な特定のアプリケーションのリストを第1の計算ノード640に返し、次いでそのリストは、例えばウェブページの形態で、クライアント108のユーザーに転送される。
【0131】
ステップ712で、ユーザーは、所望のアプリケーションと、そのアプリケーションを第1の計算ノード640に送信する要求を選択する。例えば、一実施態様では、ユーザーは、第1の計算ノード640がユーザーに示すウェブページにリストされた所望のアプリケーションと、そのアプリケーションを第1の計算ノード640に転送するHTTP要求をクリックする。その要求は、第1の計算ノード640によって処理され、第2の計算ノード644に転送される。
【0132】
ステップ716で、第2の計算ノード644は、要求したアプリケーションを実行するホストサービス116を判断する。第2の計算ノード644は、例えば、ロードバランシング式に基づいてその決定を行うことができる。一実施態様では、第2の計算ノード644は、接続124を介してホストサービス116と通信を行うために使用する複数の第1のプロトコルサービス112の中から第1のプロトコルサービス112も判断する。また、第2の計算ノード644は、例えば、ロードバランシング式に基づいてその決定を行うことができる。第2の計算ノード644は、選択したホストサービス116および選択した第1のプロトコルサービス112のアドレスを第1の計算ノード640に返す。
【0133】
ステップ720で、クライアント108には、次いで最初の接続チケットと、中間ノード632(下記のように、その実際のアドレスか、またはその仮想アドレスである)のためのアドレスが提供される。一実施態様では、第1の計算ノード640は、最初の接続チケットの要求とともに、選択したホストサービス116および選択した第1のプロトコルサービス112のアドレスをチケットオーソリティ136に提供する。チケットオーソリティ136は、選択したホストサービス116および選択した第1のプロトコルサービス112のアドレスを保存し、最初の接続チケットを生成し、この最初の接続チケットを第1の計算ノード640に伝送しながら、自身のためのコピーを保存する。一実施態様において、チケットオーソリティ136は、第1の計算ノード640による最初の接続チケットを受けて、クライアント108とホストサービス116との間の各「ホップ」のための接続チケットを生成する。別の実施態様では、第1の計算ノード640は、単独要求または複数の要求における各「ホップ」のための最初の接続チケットを要求する。例えば、チケットオーソリティ126は、図5Bと併せて上述した複数部のチケットを生成する。
【0134】
一実施態様において中間ノード632の実際のアドレスによって構成される第1の計算ノード640は、次いで中間ノード632の実際のアドレスおよび最初の接続チケットをクライアント108のブラウザ162に伝送する。第1の計算ノード640は、例えば、中間ノード632の実際のアドレスおよび最初の接続チケットを含むファイルをまず作成し、次いでそのファイルをクライアント108のブラウザ162に伝送することができる。任意で、別の実施態様では、第1の計算ノード640は、2つ以上の中間ノード632の実際のアドレスによって構成される。このような実施態様では、第1の計算ノード640は、先ずそれを介してクライアント108と第1のプロトコルサービス112との間のメッセージが通過すべき中間ノード632を判断する。第1の計算ノード640は、次いでその選択した中間ノード132の実際のアドレスおよび最初の接続チケットを、例えば、上述のファイルを使用して、クライアント108のブラウザ162に伝送する。一実施態様では、第1の計算ノード640は、ロードバランシング式を使用して中間ノード632を選択する。次いでクライアント108のクライアントエージェント128が起動され、中間ノード632のアドレスを使用して、ステップ724で、クライアント108のクライアントエージェント128と中間ノード632との間の第1のプロトコル接続135aを確立する。一実施態様では、第1の計算ノード640は、各々の接続を有効にするためにチケットオーソリティ136から得られた1つ以上の第1のプロトコルサービス112および/または中間ノード632への最初の接続チケットを提供してよい。
【0135】
あるいは、別の実施態様では、第1の計算ノード640は、中間ノード132の仮想アドレスとしての機能を果たす第3の計算ノード646の実際のアドレスによって構成される。このような実施態様では、ステップ720で、第1の計算ノード640は、第3の計算ノード646の実際のアドレスおよび最初の接続チケットを、例えば、上述のファイルを使用して、クライアント108のブラウザ162に伝送する。次いでクライアント108のクライアントエージェント128が起動され、第3の計算ノード646の実際のアドレスを使用して、ステップ724で、クライアント108のクライアントエージェント128と第3の計算ノード646との間の第1のプロトコル接続を確立する。第3の計算ノード646は、次いで、それを介してクライアント108と第1のプロトコルサービス112との間のメッセージが通過すべき中間ノード632を判断する。一実施態様では、第3の計算ノード646は、ロードバランシング式を使用して中間ノード632を選択する。中間ノード632を選択すると、第3の計算ノード646は、中間ノード632に対する第1のプロトコル接続を確立する。その結果、第3の計算ノード646を介して、第1のプロトコル接続135aが、クライアント108のクライアントエージェント128と中間ノード632との間に存在する。従って、第3の計算ノード646の実際のアドレスは、中間ノード632の実際のアドレスにマップされる。クライアント108のクライアントエージェント128に対して、第3の計算ノード646の実際のアドレスが中間ノード632の仮想アドレスとしての機能を果たす。
【0136】
一実施態様では、複数のレベルの中間ノード632が存在する際には、上述のように、第1の計算ノード640または第3の計算ノード646はそれぞれ、クライアントエージェント128がレベル「a」で接続する中間ノード632だけを選択する。このような実施態様では、各々のレベル「a」乃至「n−1」で、クライアントエージェント128がレベルで送られる中間ノード632は、その後、例えばロードバランシング式に基づいて、次のレベルで接続する中間ノード632を判断する。あるいは、他の実施態様では、第1の計算ノード640または第3の計算ノード646はそれぞれ、複数またはすべてのレベル「a」乃至「n」に対して、クライアントエージェント128が送られる中間ノード632を選択する。
【0137】
クライアント108のクライアントエージェント128と中間ノード632との間の第1のプロトコル接続135a、例えば、レベル「n」の中間ノード132(以下、方法700において中間ノード632と称する)を確立すると、次いでクライアントエージェント128は、最初の接続チケットを中間ノード632に伝送する。
【0138】
次いで、ステップ728で、最初の接続チケットが有効かどうかを判断する。一実施態様では、中間ノード632は、検証のために最初の接続チケットをチケットオーソリティ136に伝送する。一実施態様では、チケットオーソリティ136は、ステップ720で保存した最初の接続チケットのコピーと比較することによって、最初の接続チケットの有効性を判断する。チケットオーソリティ136が最初の接続チケットを有効であると判断した場合、ステップ732で、チケットオーソリティ136は、第1のプロトコルサービス112のアドレスおよび選択したホストサービス116のアドレスを中間ノード632に伝送する。チケットオーソリティ136は、クライアント108がホストサービス116に接続するのに通過する第1のプロトコルサービス112および中間ノード632のための追加の接続チケットを伝送してもよい。第1のプロトコルサービス112は、最初の接続チケットおよびそのコピーを削除することもできる。一方で、チケットオーソリティ136が最初の接続チケットを無効であると判断した場合、ステップ730で、クライアント108は、第1のプロトコルサービス112への接続を拒否し、結果的に、ホストサービス116に接続する。
【0139】
ステップ732に続いて、中間ノード632は、選択した第1のプロトコルサービス112のアドレスを使用して、ステップ736で、中間ノード632と第1のプロトコルサービス112との間の第1のプロトコル接続135bを確立する。一実施態様では、中間ノード632は最初の接続チケットを使用して、中間ノード632と第1のプロトコルサービス112との間の第1のプロトコル接続135bを確立する。ある場合には、中間ノード632はクライアント108から受信した同じ最初の接続チケットを使用して、接続135bを有効にする。別の場合には、中間ノード632は、第1のプロトコル接続135bのために生成され有効にされた最初の接続チケットを使用する。したがってここでは、中間ノード632を介して、クライアント108のクライアントエージェント128と第1のプロトコルサービス112との間に、第1のプロトコル接続135が存在する。中間ノード632は、選択したホストサービス116のアドレスを第1のプロトコルサービス112に渡すこともできる。
【0140】
一実施態様では、ステップ740で、第1のプロトコルサービス112は、選択したホストサービス116のアドレスを使用して、第1のプロトコルサービス112と選択したホストサービス116との間の第2のプロトコル接続124を確立する。例えば、選択したホストサービス116は実際にホストサービス116aであり、第2のプロトコル接続124aが第1のプロトコルサービス112とホストサービス116aとの間に確立される。
【0141】
一実施態様では、ステップ740に続いてステップ744で、ユーザーは実行する第2のアプリケーションを選択し、ステップ748で、第2の計算ノード644は第2のアプリケーションが実行されるホストサービス116を判断する。例えば、ロードバランシング式を計算することによって、第2の計算ノード644は、第2のアプリケーションプログラムを実行するためにホストサービス116bを選択することが可能である。第2の計算ノード644は、次いで選択したホストサービス116bのアドレスを第1のプロトコルサービス112に伝送する。一実施態様では、第2の計算ノード644は、第1のプロトコルサービス112による直接的な通信にあり、そこにアドレスを直接伝送する。別の実施態様では、選択したホストサービス116bのアドレスは、第1のプロトコルサービス112に間接的に伝送される。例えば、第1の計算ノード640、チケットオーソリティ136、中間ノード632、および第1のプロトコルサービス112の任意の組み合わせを介して第1のプロトコルサービス112にアドレスを伝送することができる。選択したホストサービス116bのアドレスを受信すると、第1のプロトコルサービス112は、ステップ752で、第1のプロトコルサービス112と選択したホストサービス116bとの間の第2のプロトコル接続124bを確立する。第2のプロトコル接続124bの確立において、第1のプロトコルサービス112は最初の接続チケットを有効にしてホストサービス116への接続を認証することができる。最初の接続チケットは、中間ノード632へのクライアント108の接続または中間ノード632の第1のプロトコルサービス112への接続いずれかのための最初の接続チケットと同じであってよい。別の実施態様では、チケットオーソリティ136または中間ノード632のいずれかが、第2のプロトコル接続124bにのみ有効なチケットを生成した。第1のプロトコルサービス112および/またはホストサービス116はこのチケットを使用して第2のプロトコル接続124bを有効にする。
【0142】
接続124aおよび124bを通じて通信を行うために使用できる第2のプロトコルは、HTTP、FTP、Oscar、Telnet、ICA、および、RDPを含むがこれらに限定されない。さらに、一実施態様では、上述のように、少なくとも1つの第2のプロトコルは、複数の仮想チャネルを含むが、それぞれリモートクライアント108での機能を可能にする複数のプロトコルパケットを含むことができる。例えば、一実施態様では、一方のホストサービス116aはウェブサーバであり、HTTPプロトコルを使用して接続124aを通じて第1のプロトコルサービス112と通信を行い、他方のホストサービス116bはアプリケーションサーバであり、ICAプロトコルを使用して接続124bを通じて第1のプロトコルサービス112と通信を行う。ホストサービス116bは、クライアント108にグラフィカルユーザーインターフェイスを表示させるグラフィックスクリーンコマンドをクライアント108に伝送するためのプロトコルパケット、およびクライアント108で文書を印刷させるプリンタコマンドをクライアント108に伝送するためのプロトコルパケットの両方を生成する。
【0143】
ステップ744、748、および752は、複数回繰り返すことができる。このように、任意数のアプリケーションプログラムを任意数のホストサービス116a乃至116n上で実行することができ、その出力は、任意数の第2のプロトコルを使用して接続124a乃至124nを通じて第1のプロトコルサービス112へ通信を行うことができる。
【0144】
ステップ756では、第1のプロトコルサービス112は、上述のように、第1のプロトコル内に複数の第2のプロトコルをカプセル化することができる。このように、クライアント108は、複数のホストサービス116に接続され、同時にそれらと通信を行う。
【0145】
別の実施態様では、ステップ744、748、および752を行う前に、例えば、ホストサービス116bなどのようなホストサービス116上で新しいアプリケーションプログラムを実行するために、クライアント108のユーザーは、例えば、ホストサービス116a上で実行しているアプリケーションプログラムなどのような、別のアプリケーションプログラムの実行を終了する。そのような場合、第1のプロトコルサービス112は、第1のプロトコルサービス112とホストサービス116aとの間の接続124aを中断させる。次いで第1のプロトコルサービス112は、ステップ744、748、および752を実行して、クライアント108と第1のプロトコルサービス112との間の接続135を中断せずに、第1のプロトコルサービス112とホストサービス116bとの間の接続124bを確立する。
【0146】
一実施態様では、第1の再接続チケットは、ステップ760で生成される。例えば、中間ノード632は、チケットオーソリティ136から第1の再接続チケットを要求するか、またはクライアント108とホストサービス116との間の各「ホップ」のための第1の再接続チケットを要求する。その要求を受信すると、チケットオーソリティ136は、1つ以上の第1の再接続チケットを生成する。再接続チケットは、例えば大きな乱数であり、例えばより小さな乱数であるハンドルも生成することができる。次いでチケットオーソリティ136は、ステップ764で、第1の再接続チケットおよびハンドルを中間ノード632に伝送することができ、一方で第1の再接続チケットのコピーおよびハンドルのコピーを保存する。チケットオーソリティ136は、ステップ720で第1の計算ノード640によってそこに伝送された第1のプロトコルサービス112のアドレスの維持を継続する。次いで中間ノード632は、ステップ768で、クライアントの第1の再接続チケットをクライアント108に伝送する。
【0147】
ステップ772では、次いで1つ以上の第2の再接続チケットを生成する。一実施態様では、第1のプロトコルサービス112は、例えば大きな乱数となりうるクライアント108のための第2の再接続チケットを生成する。別の実施態様では、第1のプロトコルサービス112は、クライアント108とホストサービス116との間の1つ以上の「ホップ」のための第2の再接続チケットを生成する。次いで第1のプロトコルサービス112は、ステップ776で、中間ノード632を介してクライアントの第2の再接続チケットをクライアント108に伝送する。この際、第1のプロトコルサービス112は、接続135の中断に続いて再接続されるセッションを識別するために、第2の再接続チケットのコピーおよびそれらに関連するセッション番号を保存する。一実施態様では、例えば、第1のプロトコルサービス112は、特定のセッション番号に対して、そのセッション番号に関連する第2のプロトコル接続124a乃至124nをリストしたテーブルを維持する。同様に、第1のプロトコルサービス112は、クライアント108をホストサービス116に再接続するよう有効にされた各「ホップ」のための第1および/または第2の再接続チケットを維持することができる。
【0148】
従って、第1のプロトコルサービス112、および/またはそれに続く任意の第1のプロトコルサービス112および/または中間ノード632における第1のプロトコル接続135の再確立および第2の再接続チケットの検証に続けて、第1のプロトコルサービス112は、クライアント108への通信のために、再確立された第1のプロトコル接続135内にカプセル化された第2のプロトコル接続124を識別することができる。あるいは、別の実施態様では、再度図1Aを参照すると、本発明のシステム100は、中間ノード132、チケットオーソリティ136、第3の計算ノード646のいずれも含まない。
【0149】
このような実施態様では、ステップ760乃至776では、第1および第2の再接続チケットの両方を生成および伝送するのではなく、システム100および方法700は、クライアント108のための、またはクライアント108とホストサービス116との間の1つ以上の「ホップ」のための、単一の再接続チケットだけを提供する。このような一実施態様では、第1のプロトコルサービス112は、例えば大きな乱数となりうる単一の再接続チケットを生成する。第1のプロトコルサービス112は、次いでクライアントの再接続チケットを接続135を通じてクライアント108に直接伝送する。この際、第1のプロトコルサービス112は、接続135の中断に続いて再接続されるセッションを識別するために、単一の再接続チケットのコピーおよびそれらに関連するセッション番号を保存する。別の実施態様では、第1のプロトコルサービス112はそのホストサービス116への接続のための再接続チケットおよびその再接続チケットの回収に関連するセッション番号を保存する。
【0150】
以下、図9を参照して、図6A乃至6Dの例示的実施態様を使用した(例えば、図7のステップ616で)クライアント108に1つ以上のホストサービス116への信頼できる接続を提供し、クライアント108をホストサービス116へ再接続する方法800の一実施態様を示す。特に、ステップ804で、第1のプロトコルサービス112と1つ以上のホストサービス116のそれぞれとの間の第2のプロトコル接続124を維持する。さらに、ステップ808で、例えば、図7のステップ616で中断していると判断された接続135を介して、クライアント108のクライアントエージェント128と第1のプロトコルサービス112との間の直近に伝送されたデータパケットのキューを維持する。一実施態様では、データパケットは、接続135の前でも失敗時でもキューに入れられ維持される。キューに入れたデータパケットは、例えば、クライアントエージェント128によってバッファ内に維持することができる。あるいは、第1のプロトコルサービス112は、キューに入れたデータパケットをバッファ内に維持することができる。さらに別の実施態様では、クライアントエージェント128および第1のプロトコルサービス112のどちらも、キューに入れたデータパケットをバッファ内に維持する。
【0151】
ステップ812で、新しい第1のプロトコル接続135が、クライアント108のクライアントエージェント128と第1のプロトコルサービス112との間に確立され、第1のプロトコルサービス112と1つ以上のホストサービス116のそれぞれとの間で維持された第2のプロトコル接続124にリンクされ、それによって、クライアント108をホストサービス116に再接続する。クライアント108の再接続後、ステップ808で維持されたキューに入れたデータパケットは、ステップ816で、新しく確立された第1のプロトコル接続135を介して伝送することができる。このように、ホストサービス116とクライアント108との間の通信セッションは、第1のプロトコルサービス112を介して、いずれのデータも失わずに持続的に進められる。
【0152】
ステップ808において、第1のプロトコルサービス112を横断する複数の「ホップ」を伴う実施態様では、データパケットの一部またはすべてが1つ以上の第1のプロトコルサービス112において維持されることができる。ステップ812において、各「ホップ」が再確立されることができる。上述のように、クライアント108が1つ以上の第1のプロトコルサービス112に再接続および再リンクされた後、残っている接続のそれぞれは、ホストサービス116への最後の「ホップ」が再確立されるまで、以前再接続した「ホップ」に再接続および再リンクされることができる。最後の「ホップ」が再確立または再リンクされた後、または各「ホップ」が再確立または際リンクされた際のいずれかに、ステップ808で維持されたキューに入れたデータパケットは、ステップ816で伝送されることができる。
【0153】
以下、図10Aおよび10Bを参照して、図6A乃至6Dの例示的実施態様を使用した、(例えば、図9のステップ812で)クライアント108を1つ以上のホストサービス116へ再接続する方法900の一実施態様を示す。ステップ904で、クライアント108と第1のプロトコルサービス112との間のうちの残りの接続を中断する。例えば、接続135aは失敗したが、接続135bは失敗していない場合、接続135bを中断する。あるいは、接続135bは失敗したが、接続135aは失敗していない場合、接続135aを中断する。
【0154】
一実施態様では、例えば、図8のステップ720で、クライアント108に提供した中間ノード632の実際のアドレスを使用して、ステップ908で、クライアント108のクライアントエージェント128は、次いでクライアントエージェント128と中間ノード632との間の第1のプロトコル接続135aを再確立する。あるいは、別の実施態様では、例えば、図8のステップ720で、クライアント108に提供した第3の計算ノード646の実際のアドレスを使用して、ステップ908で、クライアント108のクライアントエージェント128は、次いでクライアントエージェント128と第3の計算ノード646との間の第1のプロトコル接続を再確立する。第3の計算ノード646は、クライアント108と第1のプロトコルサービス112との間のメッセージが通過すべき中間ノード632を判断する。一実施態様では、第3の計算ノード646は、ロードバランシング式を使用して中間ノード632を選択する。クライアント108の1つ以上のホストサービス116への再接続において、第3の計算ノード646によって選択された中間ノード632は、例えば、図8のステップ720で、クライアント108を1つ以上のホストサービス116に最初に接続するために、その選択とは異なることができる。一実施態様では、選択した中間ノード632のための最初の接続チケットは、クライアント108をホストサービス116へ再接続する際に生成される。
【0155】
中間ノード632を選択すると、第3の計算ノード646は、中間ノード632への第1のプロトコル接続135aを再確立する。従って、第1のプロトコル接続135aは、第3の計算ノード646を介して、クライアント108のクライアントエージェント128と中間ノード632との間に再確立される。一実施態様では、中間ノード632への第1のプロトコル接続135aが再確立されると、第1のプロトコル接続135aはこの「ホップ」のための第1または第2の再接続チケットをチケットオーソリティ136で有効にすることにより、有効化される。
【0156】
一実施態様では、1つより多いレベルの中間ノード632が存在する場合、クライアントエージェント128がレベル「a」乃至「n−1」で送られる中間ノード632は、例えばロードバランシング式に基づいて、次のレベルで接続される中間ノード632を判断する。あるいは、別の実施態様では、第3の計算ノード646は、複数またはすべてのレベル「a」乃至「n」に対して、それを介してクライアントエージェント128が送られる中間ノード632を判断する。その他の実施態様では、中間ノード632または計算ノードの1つ(例えば、第3の計算ノード646)のいずれかが、1つ以上の接続またはクライアントエージェント128が送られる「ホップ」のための第1または第2の再接続チケットを生成する。
【0157】
クライアント108のクライアントエージェント128と中間ノード632との間の第1のプロトコル接続135a、例えば、レベル「n」の中間ノード132(以下、方法900において中間ノード632と称する)を確立すると、次いでクライアントエージェント128は、ステップ912で、クライアント108のための第1の再接続チケットおよび第2の再接続チケットを中間ノード632に伝送する。
【0158】
次いで、ステップ916で、第1の再接続チケットが有効かどうかを判断する。一実施態様では、第1の再接続チケットの有効性は、チケットオーソリティ136を使用することによって判断される。例えば、中間ノード632は、第1の再接続チケットをチケットオーソリティ136に伝送する。一実施態様では、チケットオーソリティ136は、第1の再接続チケットの有効性を、以前に保存した第1の再接続チケットのコピーと比較することによって判断する。チケットオーソリティ136が第1の再接続チケットを有効であると判断した場合、ステップ920で、チケットオーソリティ136は、第1のプロトコルサービス112のアドレスを中間ノード632に伝送する。あるいは、チケットオーソリティ136が第1の再接続チケットを無効であると判断した場合、ステップ924で、クライアント108は、第1のプロトコルサービス112への再接続を拒否し、結果的に、ホストサービス116に接続する。
【0159】
ステップ928で、第1の再接続チケットは、例えばチケットオーソリティ136によって削除され、代替の第1の再接続チケットが、例えばチケットオーソリティ136により生成される。さらに、代替のハンドルが、例えばチケットオーソリティ136により生成されることができる。一部のこのような実施態様では、チケットオーソリティ136は、代替の第1の再接続チケットおよび代替のハンドルを中間ノード632に伝送する。さらに、一部のこのような実施態様では、チケットオーソリティ136は、代替の第1の再接続チケットのコピーを保存する。一部の実施態様では、チケットオーソリティ136は、クライアント108が第1の再接続チケットの削除に進む前に代替の第1の再接続を受信したことを認識するまで待つ。
【0160】
第1の再接続チケットの検証後、中間ノード632は、第1のプロトコルサービス112のアドレスを使用して、ステップ932で、中間ノード632と第1のプロトコルサービス112との間の第1のプロトコル接続135bを再確立する。中間ノード632と第1のプロトコルサービス112との間の第1のプロトコル接続135bを再確立すると、次いでステップ936で、第2の再接続チケットが有効かどうかを判断する。一実施態様では、第2の再接続チケットの有効性は、第1のプロトコルサービス112を使用することによって判断する。例えば、中間ノード632は、第2の再接続チケットを第1のプロトコルサービス112に伝送する。一実施態様では、第1のプロトコルサービス112は、第2の再接続チケットの有効性を、以前に保存した第2の再接続チケットのコピーと比較することによって判断する。ステップ936の別の実施態様では、第1のプロトコルサービス112は、第1のプロトコルサービス112とホストサービス116との間、または別の実施態様において、第1のプロトコルサービス112と別の第1のプロトコルサービス112または中間ノード632と間の接続のための第1の再接続チケットを有効にする。従って、同様に、第1のプロトコルサービス112とホストサービス116との間の各「ホップ」は、クライアント108を代表する「ホップ」の継続使用を有効にするための最初のまたは再接続チケットいずれかの1つ以上のチケットによって有効にされる。
【0161】
第1のプロトコルサービス112が第2の再接続チケットを有効であると判断した場合、第1の中間ノード132と第1のプロトコルサービス112との間で再確立された第1のプロトコル接続135bは、ステップ940で、第1のプロトコルサービス112と1つ以上のホストサービス116のそれぞれとの間で維持された第2のプロトコル接続124にリンクされる。さもなければ、第1のプロトコルサービス112が第2の再接続チケットを無効であると判断した場合、再確立された第1のプロトコル接続135bは、1つ以上の維持された第2のプロトコル接続124にはリンクされず、クライアント108は、ステップ944で、1つ以上のホストサービス116への再接続を拒否する。第1のプロトコルサービス112とホストサービス116との間の多数ホップ接続の場合、各「ホップ」は、再接続を有効にされ、ステップ940において、ホストサービス116への最後の「ホップ」が有効にされるまで、または「ホップ」の1つが再接続を拒否されるまで」、前の「ホップ」にリンクされる。
【0162】
ステップ948で、第2の再接続チケットは、例えば第1のプロトコルサービス112によって削除され、代替の第2の再接続チケットが、クライアント108への伝送のために、例えば第1のプロトコルサービス112により生成される。このような実施態様では、第1のプロトコルサービス112は、代替の第2の再接続チケットのコピーを保存する。一部の実施態様では、第1のプロトコルサービス112は、クライアント108が第2の再接続チケットの削除に進む前に代替の第2の再接続を受信したことを認識するまで待つ。クライアント108を再接続するための1つ以上の「ホップ」を有効にする場合、ステップ948において、チケットオーソリティ136、中間ノード632、計算ノードのいずれか、または1つ以上の第1のプロトコルサービス112によって、1つ以上の代替の再接続チケットが生成される、および/またはコピーが保存されることができる。
【0163】
ステップ952で、代替の第1の再接続チケットおよび代替の第2の再接続チケットは、クライアントに伝送される。例えば、チケットオーソリティ136は、中間ノード632を介して、代替の第1の再接続チケットをクライアント108に伝送することができる。さらに、一実施態様では、第1のプロトコルサービス112は、中間ノード632を介して、代替の第2の再接続チケットをクライアント108に伝送する。別の実施態様では、1つ以上の「ホップ」のための代替の再接続チケットを1つ以上の中間ノード632、計算ノードのいずれか、または1つ以上の第1のプロトコルサービス112に伝送することができる。
【0164】
あるいは、他の実施態様では、上述のように、本発明のシステム100および方法は、クライアント108のための単一の再接続チケットおよび/またはクライアント108とホストサービス116との間の各「ホップ」のための単一の再接続だけを提供する。このように、第1および第2の再接続チケットの両方を使用するのではなく、例示的方法900は、上述の単一の再接続チケットだけを使用する。このような一実施態様では、クライアント108のクライアントエージェント128には、第1のプロトコルサービス112のアドレスも提供される。ホストサービス116に再接続するために、クライアントエージェント128は、単一の再接続チケットを第1のプロトコルサービス112に直接伝送する。第1のプロトコルサービス112は、次いで単一の再接続チケットが有効であるかどうかを判断する。一実施態様では、第1のプロトコルサービス112は、単一の再接続チケットの有効性を、以前に保存した単一の再接続チケットのコピーと比較することによって判断する。第1のプロトコルサービス112が単一の再接続チケットを有効であると判断した場合、クライアント108と第1のプロトコルサービス112との間で再確立された第1のプロトコル接続135は、第1のプロトコルサービス112と1つ以上のホストサービス116のそれぞれとの間で維持された第2のプロトコル接続124にリンクする。さもなければ、第1のプロトコルサービス112が単一の再接続チケットを無効であると判断した場合、再確立された第1のプロトコル接続135は、1つ以上の維持された第2のプロトコル接続124にはリンクされず、クライアント108は、1つ以上のホストサービス116への再接続を拒否する。
【0165】
単一の再接続チケットの検証後、単一の再接続チケットは、例えば、第1のプロトコルサービス112によって削除され、代替の単一の再接続チケットが、クライアント108への伝送のために、例えば第1のプロトコルサービス112により生成される。代替の単一の再接続チケットのクライアント108への伝送では、第1のプロトコルサービス112は、代替の単一の再接続チケットのコピーを保存する。一部の実施態様では、第1のプロトコルサービス112は、クライアント108が単一の再接続チケットの削除に進む前に代替の単一の再接続を受信したことを認識するまで待つ。
【0166】
さらに別の実施態様では、第1および第2の再接続チケットと同様に、単一の再接続チケットは、ステップ612でのように、接続135における失敗に続いて、および/またはステップ620でのように、接続135の完全な終了に続いて、所定の時間の経過後に自動的に削除されるように構成される。
【0167】
本発明の趣旨および範囲から逸脱することなく、多くの修正および改良が当業者によってなされる場合がある。従って、例示的実施態様は例としての目的のみのために示されたものであり、以下の特許請求の範囲によって定義される本発明を限定するものと考えられるべきでないことは、明確に理解されなければならない。これらの特許請求の範囲は、上記の図に示し説明したものとその他の点で同一でないとしても、逐語的に説明するものおよび非現実的に異なる同等の要素を含むものとして解釈されたい。
【図面の簡単な説明】
【0168】
上述の本発明の他の目的、局面、特徴、および利点は、添付図面とともに以下の説明を参照することによって、より明らかになり、よりよく理解されるであろう。
【図1A】図1Aは、本発明の実施態様による、クライアントにホストサービスへの信頼できる接続を提供するシステムのブロック図である。
【図1B】図1Bは、本発明の実施態様による、クライアントにホストサービスへの信頼できる接続を提供するシステムのブロック図である。
【図2A】図2Aは、本発明の実施態様による、ネットワーク上で行われる通信を示す。
【図2B】図2Bは、本発明の別の実施態様による、ネットワーク上で行われる通信を示す。
【図3】図3は、本発明の実施態様による、ネットワーク上での通信のための第1のプロトコル内において複数の第2のプロトコルをカプセル化する過程を示す。
【図4】図4は、本発明による図1A〜1Bの通信システムの動作の実施態様を図解する流れ図である。
【図5A】図5Aは、本発明により構成される通信システムの別の実施態様を示すブロック図である。
【図5B】図5Bは、本発明による図5Aの通信システムの動作の実施態様を図解する流れ図である。
【図6A】図6Aは、本発明の実施態様によるクライアントをホストサービスに再接続するための構成要素をさらに含む、図1Aの例示的システムのブロック図である。
【図6B】図6Bは、本発明の別の実施態様によるクライアントをホストサービスに初期に接続するための構成要素をさらに含む、図6Aの例示的システムのブロック図である。
【図6C】図6Cは、本発明の別の実施態様によるクライアントをホストサービスに初期に接続し、クライアントをホストサービスに再接続するための構成要素をさらに含む、図6Bの例示的システムのブロック図である。
【図6D】図6Dは、図6Cのシステムの代替となる実施態様を示すブロック図である。
【図7】図7は、本発明の実施態様によるネットワーク通信のための方法を示す流れ図である。
【図8A】図8Aは、本発明の実施態様によるクライアントを複数のホストサービスに接続するための方法を示す流れ図である。
【図8B】図8Bは、本発明の実施態様によるクライアントを複数のホストサービスに接続するための方法を示す流れ図である。
【図8C】図8Cは、本発明の実施態様によるクライアントを複数のホストサービスに接続するための方法を示す流れ図である。
【図9】図9は、本発明の実施態様によるクライアントにホストサービスへの信頼できる接続を提供し、クライアントをホストサービスに再接続するための方法を示す流れ図である。
【図10A】図10Aは、本発明の実施態様によるクライアントをホストサービスに再接続するための方法を示す流れ図である。
【図10B】図10Bは、本発明の実施態様によるクライアントをホストサービスに再接続するための方法を示す流れ図である。
【特許請求の範囲】
【請求項1】
クライアントをホストサービスに再接続するための方法であって、
クライアントと第1のプロトコルサービスの間にある第1の接続および前記第1のプロトコルサービスとホストサービスの間にある第2の接続を介し、クライアントおよびホストサービスの間に通信セッションを提供するステップと、
前記第1の接続および前記第2の接続のうち一方における中断を検出し、前記第1の接続および前記第2の接続のうちもう一方を維持するステップと、
前記第1のプロトコルサービスにおいて第1のチケットと第2のチケットを得るステップと、
中断した接続を再確立するために前記第1のチケットを有効にするステップと、
維持された接続の使用を継続するために前記第2のチケットを有効にするステップと、
再確立された接続を維持された接続にリンクするステップと、
を含む、方法。
【請求項2】
前記中断した接続において、中断の間、前記通信セッションを維持するステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のプロトコルサービスおよびチケットオーソリティのうち少なくとも1つによって、前記第1のチケットおよび前記第2のチケットのうちいずれか1つを生成するステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記チケットオーソリティによって、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを有効にするステップをさらに含む、請求項1に記載の方法。
【請求項5】
ウェブサーバに対し前記クライアントを認証するステップをさらに含む、請求項1に記載の方法。
【請求項6】
ウェブサーバによって、前記第1のチケットを前記クライアントへ伝送するステップをさらに含む、請求項1に記載の方法。
【請求項7】
前記クライアントによって、前記第1のチケットを前記第1のプロトコルサービスへ伝送するステップをさらに含む、請求項1に記載の方法。
【請求項8】
前記ホストサービスによって、前記通信セッションの確立時に前記クライアントを認証するステップをさらに含む、請求項1に記載の方法。
【請求項9】
前記第1のプロトコルサービスがプロキシサーバを含む、請求項1に記載の方法。
【請求項10】
前記第1のプロトコルサービスがセキュリティゲートウェイを含む、請求項1に記載の方法。
【請求項11】
前記クライアントおよび前記第1のプロトコルサービスが第2のプロトコルをカプセル化する第1のプロトコルを使用して通信を行い、前記第1のプロトコルサービスおよび前記ホストサービスが前記第2のプロトコルを使用して通信を行う、請求項1に記載の方法。
【請求項12】
前記第1のチケットが前記第1の接続に有効であり、前記第2のチケットが前記第2の接続に有効である、請求項1に記載の方法。
【請求項13】
前記第2のチケットが、前記第1のチケットが有効にされるまで使用不可能である、請求項1に記載の方法。
【請求項14】
前記再確立された接続が、前記第1のチケットおよび前記第2のチケットが有効にされた後、前記維持された接続にリンクされる、請求項1に記載の方法。
【請求項15】
前記第1の接続および前記第2の接続のうちいずれか1つが、中間ノードおよび1つ以上の第1のプロトコルサービスのうちいずれか1つを介して接続された複数の接続を含む、請求項1に記載の方法。
【請求項16】
前記複数の接続のうち少なくとも1つのために第3のチケットが生成される、請求項15に記載の方法。
【請求項17】
前記第3のチケットが、前記複数の接続のうち少なくとも1つに対し有効にされる、請求項16に記載の方法。
【請求項18】
クライアントをホストサービスに再接続するためのシステムであって、
第1の接続を介しホストサービスとの通信セッションを確立するクライアントと、
前記クライアントとの前記第1の接続および前記ホストサービスとの第2の接続を確立する第1のプロトコルサービスと、
前記第1の接続および前記第2の接続のうち少なくとも1つを含む接続を維持する前記第1のプロトコルサービスと、
前記第1の接続および前記第2の接続のうち一方において中断した接続を再確立するために第1のチケットを有効にし、前記第1の接続および前記第2の接続のうちもう一方を使用するために第2のチケットを有効にする前記第1のプロトコルサービスと、
前記再確立された接続を前記維持された接続にリンクする前記第1のプロトコルサービスと、
を含む、システム。
【請求項19】
前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを生成するチケットオーソリティをさらに含む、請求項17に記載のシステム。
【請求項20】
前記第1のプロトコルサービスが、前記中断した接続において、中断の間、前記通信セッションを維持する、請求項18に記載のシステム。
【請求項21】
前記第1のプロトコルサービスが、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを生成する、請求項18に記載のシステム。
【請求項22】
前記チケットオーソリティが、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを有効にする、請求項18に記載のシステム。
【請求項23】
ウェブサーバをさらに含み、前記ウェブサーバは前記クライアントを認証する、請求項18に記載のシステム。
【請求項24】
前記ウェブサーバが前記第1のチケットを前記クライアントに伝送する、請求項23に記載のシステム。
【請求項25】
前記クライアントが、前記第1のチケットを前記第1のプロトコルサービスに伝送する、請求項18に記載のシステム。
【請求項26】
前記ホストサービスが前記通信セッションの確立時に前記クライアントを認証する、請求項18に記載のシステム。
【請求項27】
前記第1のプロトコルサービスがプロキシサーバを含む、請求項18に記載のシステム。
【請求項28】
前記第1のプロトコルサービスがセキュリティゲートウェイを含む、請求項18に記載のシステム。
【請求項29】
前記クライアントおよび前記第1のプロトコルサービスが第2のプロトコルをカプセル化する第1のプロトコルを使用して通信を行い、前記第1のプロトコルサービスおよび前記ホストサービスが前記第2のプロトコルを使用して通信を行う、請求項18に記載のシステム。
【請求項30】
前記第1のチケットが前記第1の接続に有効であり、前記第2のチケットが前記第2の接続に有効である、請求項18に記載のシステム。
【請求項31】
前記第2のチケットが、前記第1のチケットが有効にされるまで使用不可能である、請求項18に記載のシステム。
【請求項32】
前記第1のプロトコルサービスが、前記第1のチケットおよび前記第2のチケットが有効にされた後、前記再確立された接続を前記維持された接続にリンクする、請求項18に記載のシステム。
【請求項33】
前記第1の接続および前記第2の接続のうちいずれか1つが、中間ノードおよび1つ以上の第1のプロトコルサービスのうちいずれか1つを介して接続された複数の接続を含む、請求項18に記載のシステム。
【請求項34】
前記複数の接続のうち少なくとも1つのために第3のチケットが生成される、請求項33に記載のシステム。
【請求項35】
前記第3のチケットが、前記複数の接続のうち少なくとも1つに有効である、請求項34に記載のシステム。
【請求項1】
クライアントをホストサービスに再接続するための方法であって、
クライアントと第1のプロトコルサービスの間にある第1の接続および前記第1のプロトコルサービスとホストサービスの間にある第2の接続を介し、クライアントおよびホストサービスの間に通信セッションを提供するステップと、
前記第1の接続および前記第2の接続のうち一方における中断を検出し、前記第1の接続および前記第2の接続のうちもう一方を維持するステップと、
前記第1のプロトコルサービスにおいて第1のチケットと第2のチケットを得るステップと、
中断した接続を再確立するために前記第1のチケットを有効にするステップと、
維持された接続の使用を継続するために前記第2のチケットを有効にするステップと、
再確立された接続を維持された接続にリンクするステップと、
を含む、方法。
【請求項2】
前記中断した接続において、中断の間、前記通信セッションを維持するステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のプロトコルサービスおよびチケットオーソリティのうち少なくとも1つによって、前記第1のチケットおよび前記第2のチケットのうちいずれか1つを生成するステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記チケットオーソリティによって、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを有効にするステップをさらに含む、請求項1に記載の方法。
【請求項5】
ウェブサーバに対し前記クライアントを認証するステップをさらに含む、請求項1に記載の方法。
【請求項6】
ウェブサーバによって、前記第1のチケットを前記クライアントへ伝送するステップをさらに含む、請求項1に記載の方法。
【請求項7】
前記クライアントによって、前記第1のチケットを前記第1のプロトコルサービスへ伝送するステップをさらに含む、請求項1に記載の方法。
【請求項8】
前記ホストサービスによって、前記通信セッションの確立時に前記クライアントを認証するステップをさらに含む、請求項1に記載の方法。
【請求項9】
前記第1のプロトコルサービスがプロキシサーバを含む、請求項1に記載の方法。
【請求項10】
前記第1のプロトコルサービスがセキュリティゲートウェイを含む、請求項1に記載の方法。
【請求項11】
前記クライアントおよび前記第1のプロトコルサービスが第2のプロトコルをカプセル化する第1のプロトコルを使用して通信を行い、前記第1のプロトコルサービスおよび前記ホストサービスが前記第2のプロトコルを使用して通信を行う、請求項1に記載の方法。
【請求項12】
前記第1のチケットが前記第1の接続に有効であり、前記第2のチケットが前記第2の接続に有効である、請求項1に記載の方法。
【請求項13】
前記第2のチケットが、前記第1のチケットが有効にされるまで使用不可能である、請求項1に記載の方法。
【請求項14】
前記再確立された接続が、前記第1のチケットおよび前記第2のチケットが有効にされた後、前記維持された接続にリンクされる、請求項1に記載の方法。
【請求項15】
前記第1の接続および前記第2の接続のうちいずれか1つが、中間ノードおよび1つ以上の第1のプロトコルサービスのうちいずれか1つを介して接続された複数の接続を含む、請求項1に記載の方法。
【請求項16】
前記複数の接続のうち少なくとも1つのために第3のチケットが生成される、請求項15に記載の方法。
【請求項17】
前記第3のチケットが、前記複数の接続のうち少なくとも1つに対し有効にされる、請求項16に記載の方法。
【請求項18】
クライアントをホストサービスに再接続するためのシステムであって、
第1の接続を介しホストサービスとの通信セッションを確立するクライアントと、
前記クライアントとの前記第1の接続および前記ホストサービスとの第2の接続を確立する第1のプロトコルサービスと、
前記第1の接続および前記第2の接続のうち少なくとも1つを含む接続を維持する前記第1のプロトコルサービスと、
前記第1の接続および前記第2の接続のうち一方において中断した接続を再確立するために第1のチケットを有効にし、前記第1の接続および前記第2の接続のうちもう一方を使用するために第2のチケットを有効にする前記第1のプロトコルサービスと、
前記再確立された接続を前記維持された接続にリンクする前記第1のプロトコルサービスと、
を含む、システム。
【請求項19】
前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを生成するチケットオーソリティをさらに含む、請求項17に記載のシステム。
【請求項20】
前記第1のプロトコルサービスが、前記中断した接続において、中断の間、前記通信セッションを維持する、請求項18に記載のシステム。
【請求項21】
前記第1のプロトコルサービスが、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを生成する、請求項18に記載のシステム。
【請求項22】
前記チケットオーソリティが、前記第1のチケットおよび前記第2のチケットのうち少なくとも1つを有効にする、請求項18に記載のシステム。
【請求項23】
ウェブサーバをさらに含み、前記ウェブサーバは前記クライアントを認証する、請求項18に記載のシステム。
【請求項24】
前記ウェブサーバが前記第1のチケットを前記クライアントに伝送する、請求項23に記載のシステム。
【請求項25】
前記クライアントが、前記第1のチケットを前記第1のプロトコルサービスに伝送する、請求項18に記載のシステム。
【請求項26】
前記ホストサービスが前記通信セッションの確立時に前記クライアントを認証する、請求項18に記載のシステム。
【請求項27】
前記第1のプロトコルサービスがプロキシサーバを含む、請求項18に記載のシステム。
【請求項28】
前記第1のプロトコルサービスがセキュリティゲートウェイを含む、請求項18に記載のシステム。
【請求項29】
前記クライアントおよび前記第1のプロトコルサービスが第2のプロトコルをカプセル化する第1のプロトコルを使用して通信を行い、前記第1のプロトコルサービスおよび前記ホストサービスが前記第2のプロトコルを使用して通信を行う、請求項18に記載のシステム。
【請求項30】
前記第1のチケットが前記第1の接続に有効であり、前記第2のチケットが前記第2の接続に有効である、請求項18に記載のシステム。
【請求項31】
前記第2のチケットが、前記第1のチケットが有効にされるまで使用不可能である、請求項18に記載のシステム。
【請求項32】
前記第1のプロトコルサービスが、前記第1のチケットおよび前記第2のチケットが有効にされた後、前記再確立された接続を前記維持された接続にリンクする、請求項18に記載のシステム。
【請求項33】
前記第1の接続および前記第2の接続のうちいずれか1つが、中間ノードおよび1つ以上の第1のプロトコルサービスのうちいずれか1つを介して接続された複数の接続を含む、請求項18に記載のシステム。
【請求項34】
前記複数の接続のうち少なくとも1つのために第3のチケットが生成される、請求項33に記載のシステム。
【請求項35】
前記第3のチケットが、前記複数の接続のうち少なくとも1つに有効である、請求項34に記載のシステム。
【図1A】
【図1B】
【図2A】
【図2B】
【図3】
【図4】
【図5A】
【図5B】
【図6A】
【図6B】
【図6C】
【図6D】
【図7】
【図8A】
【図8B】
【図8C】
【図9】
【図10A】
【図10B】
【図1B】
【図2A】
【図2B】
【図3】
【図4】
【図5A】
【図5B】
【図6A】
【図6B】
【図6C】
【図6D】
【図7】
【図8A】
【図8B】
【図8C】
【図9】
【図10A】
【図10B】
【公表番号】特表2007−515852(P2007−515852A)
【公表日】平成19年6月14日(2007.6.14)
【国際特許分類】
【出願番号】特願2006−534410(P2006−534410)
【出願日】平成16年10月8日(2004.10.8)
【国際出願番号】PCT/US2004/033334
【国際公開番号】WO2005/036858
【国際公開日】平成17年4月21日(2005.4.21)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Macintosh
2.Linux
【出願人】(502239313)サイトリックス システムズ, インコーポレイテッド (36)
【Fターム(参考)】
【公表日】平成19年6月14日(2007.6.14)
【国際特許分類】
【出願日】平成16年10月8日(2004.10.8)
【国際出願番号】PCT/US2004/033334
【国際公開番号】WO2005/036858
【国際公開日】平成17年4月21日(2005.4.21)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Macintosh
2.Linux
【出願人】(502239313)サイトリックス システムズ, インコーポレイテッド (36)
【Fターム(参考)】
[ Back to top ]