(58)【調査した分野】(Int.Cl.,DB名)
プロトコルデータをハイパーテキストトランスファープロトコル(HTTP)により中継サーバを通じてトンネリングすることによってクライアントの機能性を拡張するための方法であって、前記方法は、前記中継サーバにおいて実行され、
前記クライアントから、リモートエンドポイントとの中継セッションを作成するために通信を受け取るステップと、
前記クライアントを認証するステップであって、前記クライアントを認証することは、チャレンジ応答データを前記クライアントに送信することを含む、ステップと、
前記中継セッションを構成するステップと、
前記中継セッションのセッション識別子を生成するステップと、
前記セッション識別子をクライアントに送信するステップと、
前記中継セッションを構成した後、前記リモートエンドポイントとデータを交換するために、HTTP要求を前記クライアントから受け取り、前記HTTP要求に対するHTTP応答を前記クライアントに転送するステップであって、前記HTTP要求が前記セッション識別子及び前記クライアントによって生成されるシーケンス番号を含み、前記HTTP応答は前記中継サーバによって生成される確認応答番号を含み、前記HTTP応答が否定のHTTP応答である場合、当該否定のHTTP応答は前記HTTP要求を再試行するように処理される、ステップと
を含み、前記シーケンス番号と前記確認応答番号は、同一の中継セッションに属するHTTP要求とHTTP応答に対して割り当てられる、方法。
開始要求と開始応答が前記中継セッションを開始し、後続のHTTP要求が、セッション開始プロトコル(SIP)データを、HTTPを介して前記中継サーバを通じて前記リモートエンドポイントに転送する、請求項1に記載の方法。
前記SIPデータはHTTPを介してトランスポート機構に転送され、前記トランスポート機構は、伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)及びトランスポートレイヤセキュリティ(TLS)から成る群のうちの1つを含む、請求項4に記載の方法。
開始要求と開始応答が前記中継セッションを開始し、後続のHTTP要求が、リモートデスクトッププロトコル(RDP)データを、HTTPを介して前記中継サーバを通じて前記リモートエンドポイントに転送する、請求項1に記載の方法。
前記RDPデータはHTTPを介してトランスポート機構に転送され、前記トランスポート機構は、RTP/SRTP、TLS、UDP及びTCPから成る群のうちの1つを含む、請求項6に記載の方法。
中継サーバのプロセッサによって実行されると、当該中継サーバのプロセッサに、HTTPによりプロトコルデータをトンネリングすることによってクライアントの機能性を拡張する方法を実行させる、コンピュータプログラムであって、前記方法は、
前記クライアントから、リモートエンドポイントとの中継セッションを作成するために通信を受け取るステップと、
前記クライアントを認証するステップであって、前記クライアントを認証することは、チャレンジ応答データを前記クライアントに送信することを含む、ステップと、
前記中継セッションを構成するステップと、
前記中継セッションのセッション識別子を生成するステップと、
前記セッション識別子を前記クライアントに送信するステップと、
前記中継セッションを構成した後、前記クライアントからHTTP要求を受け取り、該HTTP要求に対するHTTP応答を前記クライアントに転送するステップであって、前記クライアントからのHTTP要求は前記セッション識別子及び前記クライアントによって生成されるシーケンス番号を含み、前記HTTP応答は前記中継サーバによって生成される確認応答番号を含み、前記HTTP応答が否定のHTTP応答である場合、当該否定のHTTP応答は前記HTTP要求を再試行するように処理されるステップと
を含む、コンピュータプログラム。
HTTPによりトンネリングされる前記プロトコルデータは、任意のプロトコルデータを含むか、RDPデータとSIPデータとから成る群のうちの1つまたは複数を含む、請求項8に記載のコンピュータプログラム。
【発明を実施するための形態】
【0010】
本開示では、以下において、添付の図面を参照して例示の実施形態についてさらに詳しく説明し、特定の実施形態を示す。しかし、他の態様を多くの異なる形式で具現化することができ、本開示に特定の実施形態を含めることは、そのような態様を本明細書に記載される実施形態の態様に限定するものとして解釈されるべきではない。むしろ、図面に示される実施形態は、完全な開示を提供し、かつ意図された範囲を当業者に十分に伝達する開示を提供するために含まれている。点線は、選択的な構成要素または操作を示すために使用される。
【0011】
実施形態は概して、中継サーバを使用して、ウェブ会議環境において、ブラウザベースまたはウェブベースのクライアント機能を拡張することに関する。代替実施形態において、クライアントは、ブラウザベースのクライアントでも、ウェブベースのクライアントでもなく、当業者により理解される任意のタイプのクライアントである。中継サーバは、例えば、ウェブベースのクライアントまたはHTTPのエンドポイントと、任意の宛先またはリモートサーバとの間で任意のバイナリデータのトンネリングを行う。そのようなトンネリングは有用であるが、これはウェブベースのクライアントが一般的にはHTTPプロトコルを使用して通信し、リモートサーバが理解するトランスポートプロトコルを使用して通信することはできないためである。そのようなトランスポートプロトコルには、例えば、TCP、UDP、SRTP、TLSなどが含まれる。これらのプロトコルは、単なる例として提示される。当業者により理解されるように任意の数のトランスポートプロトコルを、リモートサーバによって使用することができる。従って、SIPおよびRDPなどのいずれかの任意のプロトコルのHTTPを介したトンネリングが、中継サーバを使用することにより提供される。中継サーバは、あるタイプの「仲介者」として動作し、HTTP要求を介してバイトバッファを受け取り、その要求を宛先に中継する。同様に、中継サーバは、宛先からデータを受け入れ、そのデータをHTTP応答によりクライアントに中継する。
【0012】
一実施形態において、中継サーバは、例えば、インターネット情報サーバ(IIS:Internet Information Server)サーバに配置されるウェブアプリケーションとして設計される。そのような実施形態における中継サーバは、セッション管理コンポーネント、中継エンジンコンポーネント、および選択的なプラットフォームサービスコンポーネントを備える。任意の数のタイプの構成要素を、実施形態において組み合わせまたは単独で使用することができ、また、一部の構成要素は、図示されるように実施形態において選択的なものとすることもできる。中継サーバは、任意のトランスポート機構を使用してHTTPエンドポイントからトンネリングされたデータを受け入れることを可能にするように拡張可能に設計される。中継サーバでは、任意のバイナリデータがトンネリングされる。例えば、実施形態においてはSIPおよびRDPのトラフィックがトンネリングされる。しかし、他の実施形態では、ファイルトランスポートデータを含む任意のデータのトンネリングが提供される。中継セッションの確立においては、実施形態では中継サーバを提供し、宛先エンドポイントと通信して接続をセットアップするため、宛先エンドポイントが理解する特定のプロトコルのデータが交換可能にされる。中継サーバはこのように構成され、任意のプロトコルで通信して接続をセットアップする。
【0013】
中継セッションを確立するための実施形態に従って、クライアントが、中継サーバのセッション管理コンポーネントにおけるセッションの作成を要求する。クライアントと中継サーバとの間のこの対話を、中継セッションの第1の「レッグ(区間)」と呼ぶことができる。実施形態において、中継サーバは、選択的なプラットフォームサービスを用いて構成され、例えば、認証であろうとDNSルックアップであろうと、セッション確立に役立つ。中継サーバはまた、1つまたは複数のトランスポートモジュールで構成され、トランスポートモジュールはリモートサーバと特定のプロトコルで通信する。セッション管理コンポーネントは、例えば、ウェブサービス呼び出しを介してクライアントからの潜在的な助けを用いてリモートサーバに接続するようトランスポートモジュールを推進する。「ウェブサービス呼び出し」は、そのような情報を通信する方法の単なる例として提示される。当業者が理解する他のタイプの通信を使用しても良い。実施形態において、中継セッションの第1のレッグの間、セッション管理コンポーネントが、中継エンジンコンポーネントと対話し、セッション識別子(セッションID)を生成してHTTP側のトラフィックをグループ化し、セッションIDをクライアントに返す。セッションIDを用いて、クライアントと中継サーバとの間の仮想接続がHTTPを介して確立される。このセッションIDは、実施形態に従い、クライアントが送信する各HTTP要求に存在する。セッションID(シーケンス/確認応答番号と共に)と、一実施形態に従い、各方向(アップストリームおよびダウンストリーム)に多くとも1つの保留中要求があるというエンフォースメントと、例えば、障害が発生した時などに所定回数HTTP要求の送信の再試行することとにより、クライアントと中継サーバとの間のHTTPを介した信頼性のある順序化された双方向のデータ配信の方法が提供される。なお、実施形態において述べたように、この接続は中継セッションの1つのレッグであり、中継サーバからリモートサーバへの中継セッションの第2のレッグがあり、そこでは任意のトランスポートプロトコルが使用される。実施形態に従い、トランスポートスタックが中継サーバに搭載され、プロトコルのトンネリングが可能にされる。
【0014】
プロトコルのデータを、HTTPを介してトンネリングすることにより、本開示の実施形態では、ウェブベースクライアントの機能性を有意に拡張するが、これは中継サーバが各可能性のある宛先エンドポイントへの接続のための異なる種々の手段への適合を可能にするためである。例えば、宛先エンドポイントがサーバである場合、特定のタイプのサーバに接続するために、例えば、SIPサーバに対してTLS、画面共有サーバに対してRTP/SRTPなど、異なる手段が使用される。
【0015】
さらに、本開示の実施形態はまた、セキュリティ特性を強化するために使用される企業ファイアウォールおよび制限されたポートが原因となる制限を補償する。企業ネットワークに存在する制限されたポートのため、ポリシーファイルをウェブベースクライアントから検索することは、不可能ではなくとも難しいことがある。例えば、ポート943はSILVERLIGHTプラットフォームにポリシーファイルの実装を保持する。SILVERLIGHTクライアントコンピュータは、ウェブサイトにポート943上のポリシーファイルへのアクセスの要求を送信す
る。しかし、ポート943は通常、企業ネットワークではオープンされていない。従って、全てが不可能にされているのではないなら、ポリシーファイルの検索は阻止される。ポリシーファイルが無い場合、ブラウザベースのクライアントは、リモートサーバへのソケット接続のオープンを拒否する。従って、ウェブベースクライアントとリモートサーバとの間の通信は一般的には可能ではない。しかし、本開示の実施形態では、中継サーバを使用してウェブベースクライアントとリモートサーバを接続させる。HTTPでクライアントと通信する中継サーバの能力により、企業ファイアウォールを横断することが可能になる。例えば、HTTPをトランスポート機構として使用することにより、企業ファイアウォールの横断の問題が減少されるが、それはポート80/443(HTTP80/TCP、World Wide Web HTTP;HTTPS443/TCP、TLS/SSLを介したHTTPプロトコル)は典型的に、企業ネットワークにおいてオープンされているからである。
【0016】
実施形態において、ウェブベースクライアントは従って、クライアントとリモートサーバとの間の通信のための中継器として動作する中継サーバへのHTTP接続をオープンすることが可能である。そして、ウェブベースクライアントはHTTP要求を使用して中継サーバと通信する。HTTP要求を受け取ると、中継サーバは、交換用の実際のデータを「アンラップ(unwrap)」し、リモートサーバが理解するトランスポートプロトコルを使用してリモートホストに送る。同様に、リモートサーバが使用するトランスポートプロトコルでデータを受け取ると、中継サーバはデータをHTTPプロトコルで「ラップ(wrap)」し、HTTP応答の一部としてウェブベースクライアントに送信または転送する。
【0017】
HTTPが簡素な要求/応答のプロトコルであり、クライアントからサーバまでの複数の接続をサポートするため、順序化されたメッセージ配信は保証されない。さらに、HTTPプロトコルの簡素な要求/応答の性質のため、信頼性のあるメッセージ配信を確実にするためのビルトイン機構は備えておらず、従って、応答がクライアントに到着する前に失われることがある。さらに、これらのプロトコルでは、要求をグループ化してセッションを形成する方法が提供されない。信頼性のある順序化されたメッセージ配信が保証不可能であることは、ウェブ会議の成功には不利益である。このため、本開示の実施形態では、セッション識別子(セッションID)、例えば、GUID(グローバル一意識別子)のようなセッション識別子または他の暗号的に強力な識別子などの使用を提供して、上記で検討したように、同一の中継セッションに属する要求をグループ化する。セッション識別子は、中継サーバにおいて暗号化乱数発生機を使用してランダムに生成される。暗号化乱数発生機を使用することにより、第三者により番号が推測され、システムが提供するサービスが攻撃されることを阻止する。さらなるセキュリティのため、中継サーバだけが知る秘密を使用してセッション識別子に署名をして、任意の推測攻撃を阻止することもできる。このように、セッション識別子の能力により、セキュリティが強化され、HTTP環境に特有の複数の接続が特定の中継セッションに編成される。
【0018】
順序化されたメッセージ配信をさらに達成させるために、本開示の実施形態は、アップストリームおよびダウンストリームの要求を追跡し、1回に1つの保留中アップストリーム要求および1つの保留中ダウンストリーム要求のみを許可するようにする。シーケンス番号および確認応答番号は、要求および応答のメッセージに割り当てられて、データ交換が追跡され、失われたメッセージが探索される。失われたメッセージの検出時、または、否定/失敗のHTTP応答(200OK以外の何らかのステータスコードを伴う応答など)の表示を受け取った時、否定/失敗のHTTP応答に対応するHTTP要求が、セッション終了前に、所定回数再送信および/または再試行される。そのようなメッセージ追跡は、ロスレスデータ送信およびシステム弾力性の達成に役立つ。
【0019】
さらなる実施形態では、宛先と通信するための制限された環境においてウェブベースクライアントの機能拡張のために、選択的プラットフォームサービスコンポーネントが、制限された環境では利用できない機能の提供を支援する。異なるプロトコルのデータが中継される場合、異なるプラットフォームサービスが必要とされる可能性がある。そのようなサービスはシステムに対してプラグ着脱可能である。一例として、プラットフォームサービスは、SIPデータをトンネリングする一方、クライアントがSIPサーバから開始されたセキュリティチャレンジに対して成功裏に応答することを支援する、認証ブローカを含む。そのようなチャレンジに対してウェブベースクライアントが成功裏に応答できないことは、制限されたクライアント環境においてセキュリティに対する十分なソフトウェアパッケージが無いことに起因する。ウェブベースクライアントは、本開示の実施形態において、その制限された機能性を、認証能力を認証ブローカに委託することにより拡張させるが、これはSIPデータをトンネリングするためのプラットフォームサービスの一部であり、その使用はSIPデータのトンネリングに限定されない。中継サーバは、実施形態において、制限されたクライアント環境よりも多くの機能性を有するが、それは十分に機能的なサーバであるからである。例えば、実施形態の中継サーバは、より多くのソフトウェアパッケージがインストールされている。実施形態において中継サーバだけが要求される機能性を提供できない場合、中継サーバのプラットフォームサービスは、他のサーバコンポーネントに行き、クライアントに対して満足できる結果を調整することができる。一実施形態において、例えば、中継サーバ上の認証ブローカモジュールが利用されて、宛先との認証ハンドシェイクを計算する際にクライアントを支援する。従って、ウェブベースクライアントは、暗号化呼び出しを中継サーバに委託し、暗号化呼び出しとリモートサーバにおいてプロトコル通信に必要なアドレスとを処理するツールとして中継サーバを使用する。他の実施形態では、ウェブベースクライアントの機能性の拡張は、中継サーバのプラットフォームサービスコンポーネントに、例えば、(中継サーバ上に必要なアルゴリズムを実装することによる)ハッシュ計算の処理、または(ホスト名をIPアドレスに解決するための)ドメイン名解決API呼び出しの処理を委託することにより行われる。本明細書に提供される操作は、単なる例として提示される。
【0020】
複数の参加者間のウェブ会議を開催するための一例である論理的な環境またはシステム100が
図1に示される。参加者102および104は、ウェブ会議を共に行いたいと考える。ここで、クライアント106および118が、例えば、それぞれネットワーク108および120を介してSIPサーバなどのサーバ110にコンタクトし、それぞれ会議114および124に参加することを要求する。セッション開始要求が了解され有効にされると、SIPサーバ110が受諾メッセージ116および122をそれぞれクライアント106および118に送る。しかし、クライアント106とSIPサーバ110との間が接続されていない場合、例えば、セッション要求114は完全に無制約で変更可能となるかまたは拒否される(図示せず)。そのようなシナリオが存在するのは、例えば、ウェブベースクライアントなどのクライアント106の制限された環境により、ソケット接続(図示せず)がサーバ110に対してオープンされることが阻止される場合である。さらに、クライアント106は、HTTPにおける通信のみ可能であり、したがって、サーバ110によって理解されるプロトコル、例えばTLSまたはTCPを介して通信することができないことがある。従って、クライアント106が、HTTPのみで通信するウェブベースのクライアントである場合、あるいは、例えば、企業ファイアウォールネットワーク、ネットワーク裏のプロキシサーバ、NATなどの何らかの他の形式の制限されたネットワーク接続を有するウェブベースクライアントである場合に、SIPを、例えばHTTPを介してトンネリングすることが望ましい。
【0021】
図1が一般的な会議環境を例示するのに対し、
図2は、制限された環境にあるウェブベースクライアント202の機能性を中継サーバ206の使用により拡張し、宛先208とのリッチな会議経験を可能にするための、一例の論理的な環境またはシステム200を示す。ウェブベースクライアント202は、
図2ではトンネリングクライアント202とも称する。さらに、ウェブベースクライアントは、実施形態においては、「ブラウザベースクライアント」などの任意のタイプの任意のエンドポイントと称することもできる。用語「ウェブベース」のクライアントは、単なる例として提示される。ウェブベースクライアント202の通信がHTTPベースである場合、宛先エンドポイント208がHTTPベースでない既存の通信プロトコルを有すると、クライアント202は宛先エンドポイント208に接続できない。一実施形態において、宛先208はSIPサーバ等のリモートサーバである。別の実施形態において、宛先208は画面共有サーバである。さらに他の実施形態において、宛先208はクライアント自身である。さらに、省略の点210および宛先212により図示されるように、任意の数の宛先エンドポイント208が使用されて良い。
【0022】
ウェブベースクライアントすなわちトンネリングクライアント202は、HTTP要求214を、ネットワーク204を介して中継サーバ206に送る。中継サーバ206は、要求214内のデータをアンラップし、アンラップされたデータ216を宛先208が理解するプロトコルを使用してネットワーク218を介して宛先208に送る。実施形態において、中継サーバ206は、このようにデータ、例えば、SIPおよびRDPプロトコルのデータを、HTTPを介してトンネリングする。上記で検討したように、いずれか任意のバイナリデータが中継サーバ206によりトンネリングされて良い。そのような環境では、中継サーバ206は、RTP/SRTPまたはTLSなどの適切なトランスポートスタックを、必要に応じて搭載して既に有しており(図示せず)そのようなトンネリングを可能にする。
【0023】
受け取ったプロトコルデータ216を処理した後、宛先208はプロトコルデータ220を中継サーバ206に送る。中継サーバ206は、宛先208から受け取ったデータをHTTPプロトコルでラップして、HTTP応答222の一部としてクライアント202に送る。任意のタイプの任意のデータを、本明細書に開示される実施形態に従って、トンネリングすることができる。例えば、環境またはシステム200は、実施形態に従って、任意のデータを、HTTPを介してRTP/SRTPにトンネリングすること、RDPを、HTTPを介してRTP/SRTPにトンネリングすること、RDPを、HTTPを介して任意のトランスポート機構(TCPまたはUDPなど)にトンネリングすること、およびSIPを、HTTPを介してトンリングすることを可能にする。
【0024】
論理的環境200は、任意の特定の実装に限定されず、むしろ、本明細書に記載される環境の機能性を実践することができる任意のコンピュータ環境を具現化する。例えば、当業者が理解する任意のタイプのクライアントコンピュータ202を、実施形態に従って使用して良い。さらに、ネットワーク204および218は、個々の単一のネットワークとして図示されるが、当業者が理解する従来の任意のタイプのネットワークトすることができる。実施形態に従うと、ネットワークは、グローバルなネットワーク(例えば、インターネットやワールドワイドウェブ、略して「ウェブ」)とすることができる。例えば、イントラネットなどのローカルエリアネットワーク、またはワイドエリアネットワークとしても良い。実施形態に従うと、ネットワーク204および218を介した通信は、1つまたは複数の標準パケットベースのフォーマット、例えば、H.323、IP、イーサネット(登録商標)、および/またはATMに従って発生する。
【0025】
さらに、当業者が理解するような任意の想到し得る環境またはシステムは、本開示の実施形態に従って使用されて良い。
図2は、本明細書に開示される実施形態の教示を理解する目的のためだけに例示される。例えば、
図2は、中継サーバ206ならびに宛先208、210および212を示す。しかし、実施形態では、任意のタイプのサーバ、別個のサーバ、サーバファーム、または他のメッセージサーバも包含される。さらに、
図2はクライアントコンピュータ202を示す。しかし、本明細書に開示される実施形態の精神および範囲から逸脱することなく当業者が理解するような、任意のタイプの小型コンピュータ装置が使用されて良い。クライアントコンピュータ202は1つだけ図示されるが、例えば、別の実施形態では、中継サーバ206と通信する複数の小型コンピュータ装置が提供される。一実施形態において、各小型コンピュータ装置は、ネットワーク204と通信し、または、他の実施形態では、複数の別個のネットワークが小型コンピュータ装置と通信する。さらに別の実施形態において、各小型コンピュータ装置は別々のネットワークと通信する。実際、環境またはシステム200は、本明細書に記載される実施形態を実践する有効な方法を示すが、本開示の範囲に決して制限されない。さらに、例示のネットワーク環境200は、例えば、中継サーバ、クライアントなどの記載される特定のコンポーネントの観点から検討しても良く、あるいは、そのようなユニットに対応する類似のモジュールの観点から検討しても良い。
【0026】
図2が、HTTPを介したプロトコルトンネリングのための例示の環境またはシステム200を示すのに対し、
図3は、本開示の実施形態に従い、ブラウザベースのクライアント302の機能性を、中継サーバ304を介して拡張させるためのソフトウェア機能モジュール300を例示する。ソフトウェア機能モジュール300は、本明細書に開示される実施形態に従い、
図3に示すコンピュータシステムにおいて実行される。
図3に示す実施形態において、ブラウザベースのクライアント302は、ウェブサービス呼び出し322を介するなどして、中継サーバ304にコンタクトして中継セッションを作成する。中継サーバ304のセッション管理コンポーネント310は、ウェブサービス312を備え、メソッド呼び出し315を介して、例えば、プレーンHTTPウェブハンドラ316を備える中継エンジン314と対話して要求された中継セッションを構成する。実施形態において、セッション管理コンポーネント310は、クライアント302とリモートサーバ308などの宛先との間の接続を、セッション識別子を生成することなどにより開始およびセットアップするため、例えば、会議に含まれるエンティティ間の接続を確立するため、および、同一の中継セッションに属する要求をグループ化するための、機能性を提供する。実施形態に従うと、セッション識別子は、例えば、ウェブサービス呼び出し戻り値を介してクライアントに戻される。セッションが一度確立されると、中継エンジンコンポーネント314は、クライアント302とリモートサーバ308との間のデータ交換を行う。中継エンジン314はまた、実施形態において、要求および応答のメッセージの信頼性のある順序化された配信を確実にするためにシーケンス番号および確認応答番号の割り当てを行う。
【0027】
一実施形態において、セッション管理コンポーネント310は、まずプラットフォームサービスコンポーネント320、または認証コンポーネント320にコンタクトし324、中継セッションを構成するための許可にアクセスする。(いくつかの実施形態において、プラットフォームサービスコンポーネント320は、点線320で示すように選択的なものである。)実施形態に従うと、プラットフォームサービスコンポーネント320は、例えば、クライアント302の認証の実行、また、暗号化呼び出し操作およびDNS解決操作の処理を行う。これらのサービスは単なる例として提示される。他の追加的なタイプのサービスが、プラットフォームサービスコンポーネント320により実行される。一部の実施形態において、プラットフォームサービスコンポーネント320は、ブラウザベースクライアント302が直接呼び出しても良い。実施形態に従うと、ブラウザベースクライアント302は、リモートサーバすなわち宛先308との会議に参加するためには認証される必要がある場合がある。さらなる実施形態において、認証コンポーネント320は、ブラウザベースクライアント302とリモートサーバ308との間の「仲介者」として動作する中継サーバ304との中継セッションを作成する前に認証を行うための、ブラウザベースクライアント302に渡すチャレンジデータなどの情報またはデータを有する。さらなる実施形態において、認証コンポーネント320は、中継セッションを作成するクライアント要求をリモートサーバ308に提示することにより、および/または、チャレンジ応答メッセージ322の構築のためにクライアント302に送る322ための、チャレンジデータなどの認証情報またはデータ、および実施形態において一意的な識別子を取得することにより、会議参加のために、リモートサーバ308にコンタクトし326、クライアント302を検証する。認証コンポーネント320とリモートサーバ308との間のコンタクトの選択的な性質が、点線326で示される。リモートサーバ308がコンタクトされる場合、実施形態に従い、リモートサーバ308は中継サーバ304が提供する秘密を検証しても良く、そのような検証が成功した場合、チャレンジデータ(実施形態に従う一意的な識別子を含む)が認証コンポーネント320(コンタクト326の双方向性により示されるように)に提供される。さらに他の実施形態において、リモートサーバ308には秘密が提供されず、中継サーバ304からの要求について任意の検証を行わずに、リモートサーバ308がチャレンジ/識別子のデータを提供する。
【0028】
認証が要求されて成功する(または、上記で検討したように、最初は認証が要求されない)実施形態において、セッション管理コンポーネント310は、例えば、メソッド呼び出しを介して中継エンジンコンポーネント314と対話し315、中継セッションを構成する。中継セッションの作成に成功すると、セッション管理コンポーネント310はセッションIDをクライアント302に割り当てる。一実施形態において、クライアント302に割り当てられたセッションIDを使用して、同一のセッションに属する要求がグループ化される。一実施形態において、セッションIDはGUIDのような、または他の暗号的に強力な、セッション識別子である。GUIDのような識別子は単なる例として提示される。セキュリティをさらに強化するような他のタイプのセッション識別子が、本開示の実施形態に従って使用されて良い。一実施形態において、1つのセッションIDがSIP要求に対して割り当てられ、別のセッションIDが、例えば、ブラウザベースクライアント302からのRDP要求に対して割り当てられる。そのようなセッションIDは中継サーバ304からブラウザベースクライアント302に送られ322、クライアント302はそのセッションIDをHTTPヘッダとして使用して中継エンジン314と通信を行う328。ブラウザベースクライアント302からデータを受け取ると、中継エンジン314はトランスポートコンポーネント318と対話して330、リモートサーバ308とのデータの中継をする332。このように、中継エンジン314は、受け取ったかまたは転送されたデータをHTTP要求でラップして、そのデータをそのようなトランスポートに適切なプロトコルでリモートサーバ308に送る。従って、中継サーバ304は、所望のネットワークプロトコルで通信するための「トンネル」として動作する。ソフトウェア機能モジュール300は、記載される実施形態の可能性のあるソフトウェア機能モジュールの一例として提示される。他の実施形態では、図示されるモジュール、図示されるものよりも少ないモジュールおよび/またはサブモジュール、追加のモジュールおよび/またはサブモジュール、モジュールおよび/またはサブモジュールの組み合わせ、図示されるモジュールおよび/またはサブモジュールを拡張したもの、などを含んでも良い。
【0029】
実施形態に従うと、中継サーバ304上のモジュールに対応するモジュールがブラウザベースクライアント302およびリモートサーバ308上にも存在し、そのような通信およびトランスポートを可能にする。クライアント側において、実施形態では、例えば、HTTP要求を開始し、セッションIDをHTTPヘッダとして要求に配置し、アップストリームデータ用にシーケンス番号を割り当て、確認応答番号を使用して、ダウンストリーム用にシーケンス番号を使用し確認応答番号を生成する、などを行う中継サーバに対応するモジュールを備える。リモートサーバ側において、実施形態に従うと、中継サーバに対応する部分がプロトコル参加者である。一実施形態において、プロトコル参加者は、例えばTCP参加者であり、中継サーバとリモートサーバとの間のデータの移動を支援する。
【0030】
図3に示される種々のソフトウェア機能モジュールの対話が、本明細書に開示される実施形態に従って、HTTPを介してプロトコルデータをトンネリングするための、
図4に示される操作ステップ400にさらに例示される。開始操作402が開始され、プロセス400が進行して、例えばウェブサービス呼び出しを介するなどして、ブラウザベースクライアントからコンタクトを受け取り、中継セッションを作成する404。要求された中継セッションを構成する410前に、プロセス400は、選択的に(点線で示す)最初にクエリ406に進み、クライアントが、宛先とのセッションを作成することが許可されるかどうか、例えば、認証されるかおよび/または認可されるか、をプラットフォームサービスコンポーネントから判定しても良い。そのような判定406を行う際に、中継サーバは、プラットフォームサービスコンポーネント320を介するなどして、選択的に
図3のリモートサーバ308などの宛先にコンタクトし408、クライアントと宛先との間のハンドシェイクを完全にして要求されるセッションを構成するためのチャレンジデータおよび/または他の認証データを取得しても良い。ステップ406および408は双方とも、記載される実施形態に従って選択的なステップとして図示され、他の実施形態では、406におけるそのような認証判定を必要とするが、408のリモートサーバとのコンタクトを必要としない。さらなる実施形態において、ステップ406および408の双方が、必要とされる認証および/または認可のステップである。ステップ406および408に含まれる認証は、プラットフォームサービスのプラグ可能な性質、例えば、本開示の実施形態において使用される認証ブローカを示す。クライアントが中継セッションのセットアップについて認証および/または認可されているとクエリ406が判定した場合、プロセス400はYESに進み中継セッションを構成する410。クライアントが認証されず、本明細書に開示される実施形態に従って処理を進めるためにそのような認証が必要な場合、プロセス400はNOで終了操作422に進み、プロセス400が終了する。クライアントが中継セッションの構成を許可され、そのようなセッションが構成される410場合、プロセス400はセッションIDの生成412および割り当て414の各処理に進み、セッションIDが生成されてクライアントに割り当てられる。一実施形態において、セッションIDが生成され割り当てられて、同一の中継セッションに属する要求がグループ化される。一実施形態において、そのようなセッションIDは、中継サーバにおいて、例えば、セッション管理コンポーネントにおいて、暗号化乱数発生機を用いてランダムに生成される。検討してきたように、GUIDセッションIDについて記述したが、このタイプの識別子は単なる例として提示されている。任意の数のタイプの識別子が、本開示の精神および範囲から逸脱することなく、当業者が理解するように使用されて良い。
【0031】
次に、プロセス400は、セッションIDをクライアントに送る処理
416に進み、特定の中継セッションに属する要求に割り当てられたセッションIDがクライアントに送られる。すると、クライアントはセッションIDをHTTPヘッダとして使用し、さらなるデータ交換のために中継サーバと通信して、中継サーバが、セッションIDを有するHTTP要求を受け取る418。次に、データがリモートサーバとの間で中継サーバを介して交換され
420、プロセス400はEND操作422にて終了する。
図4は、本明細書に開示される実施形態に従う、中継サーバを使用してHTTPを介したプロトコルトンネリングを行うための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせる、および/または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【0032】
次に、
図5では、本開示の実施形態に従い、システムのプラグ可能な性質を例示する。例えば、上記で検討したように、プラットフォームサービスコンポーネントは、制限された環境にあるクライアントにサービスを提供するべくプラグ可能である。例えば、認証ブローカは、実施形態に従うプラットフォームサービスコンポーネントの一部であり、SIP認証を用いてクライアントを支援する。さらに、トランスポートがプラグ可能である。トランスポートのプラグ可能な性質により、任意のデータのトンネリングが可能になるが、それは、トンネリングしたいデータについての任意の適切なプロトコルが使用できるからである。例えば、SIPトンネリングでは、実施形態においてTLSがトランスポートとして使用され、RDPトンネリングでは実施形態においてSRTPがトランスポートとして使用される。
図5は、実施形態に従って、中継サーバを、開発者などが性質上プラグ可能に構成するためのプロセスを例示する。プロセス500は、開始操作502にて開始され、クエリ504に進み、中継サーバを構成してデータをトンネリングさせるかどうかを判定する。NOの場合、プロセス500は終了操作528に進み、プロセス500は終了する。YESの場合、プロセス500はYESに進み、操作506を判定し、SIPデータをトンネリングするかどうかを判定する。YESの場合、プロセス500は処理を進め、プラグインTLS/SSLトランスポートモジュール508を追加し、TLS/SSLは、実施形態においてSIPトンネリングの際にトランスポートとして使用される。別の実施形態において、別のタイプのプロトコルが、SIPトンネリングのためのトランスポートに使用される。次に、プロセス500は、クエリ510に進み、任意の他のプラグインが追加されるかどうかを判定する。プラグインがそれ以上不要な場合は、プロセス500はNOで終了操作534に進み、プロセス500は終了される。別のプラグインが必要な場合、プロセス500はYESに進み、例えば、認証ブローカプラグインを追加する512。実施形態において、認証ブローカは、SIP認証の実行においてクライアントを支援するプラットフォームサービスのセットである。プラグイン認証ブローカの追加512に続き、プロセス500はクエリ514に進み、任意の他のプラグインが必要かどうかを判定する。YESの場合、プラグインが追加され516、プラグインがそれ以上不要になるまでステップ514から516が繰り返される。プラグインがそれ以上不要な場合、プロセス500はNOから終了操作534に進み、終了する。
【0033】
クエリ506に戻り、SIPトンネリングが必要な場合、プロセス500はNOからクエリ518に進み、RDPデータをトンネリングする必要があるかどうかを判定する。RDPデータのトンネリングが必要な場合、プロセス500はYESに進み、RTP/SRTPトランスポートモジュールのためのプラグインを追加し520、RDPトンネリングではRTP/SRTPがトランスポートとして使用される。次に、任意の他のプラグインを追加する必要があるかどうかが判定される522。プラグインがそれ以上不要な場合、プロセス500はNOから終了操作534に進み、プロセス500は終了する。他のプラグインが必要な場合、プロセス500はYESに進みプラグインを追加し524、クエリ522に進んで再度、任意の他のプラグインが必要かどうかが判定され、これらのステップが繰り返される。プラグインがそれ以上不要な場合、プロセス500はNOから終了操作534に進み、プロセス500が終了する。
【0034】
ステップ518に戻り、RDPのトンネリングが不要な場合、プロセス500はNOからクエリ526に進み、いずれか任意のデータのトンネリングが必要かどうかが判定される。NOの場合、プロセス500は終了操作528にて終了する。任意のデータのトンネリングが必要な場合、プロセス500はYESに進み、適切なプロトコルトランスポートモジュールをプラグインして530、任意のプロトコルデータのトンネリングをサポートする。次に、操作532にて任意の他のプラグインが必要かどうかが判定される。他のプラグインが必要である場合、プロセス500はYESに進んでプラグインを追加し524、これらのステップは、プラグインがそれ以上不要となるまで繰り返される。プラグインがそれ以上不要な場合、プロセス500はNOから終了操作534に進み、プロセス500は終了する。
図5は、本明細書に開示される実施形態に従って、性質上プラグ可能な中継サーバを、開発者などによって構成するための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせることおよび/または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【0035】
次に、
図6は、本明細書に開示される実施形態に従って、セッションIDを割り当てて同一の中継セッションに属する要求をグループ化するための例示の操作ステップ600を示す。プロセス600は、開始操作602にて開始され、処理を進めて中継セッションを作成する要求を受け取り604、ここではブラウザベースクライアントからのSIP要求などの要求が中継サーバにおいて受け取られる。中継セッションが操作606にて作成され、SIP要求などの要求を同一の中継セッションに属するグループに割り当てるために、セッションIDが暗号化乱数発生機を用いてランダムに生成される608。一実施形態において、セッションIDはGUIDのようなセッションIDである。次に、プロセス600は処理を進めて、操作610にて乱数をグループ1に割り当てる。グループの番号は、例えば、「グループ1」のクライアントに送られる612。次に、プロセス600は処理を進めて、例えば、RDPデータを求める要求をブラウザベースのウェブアプリケーションから受け取る614。次に、別のセッションIDが生成され616、例えばRDPデータを求める要求が「グループ2」にグループ化される。グループ番号を「グループ2」のクライアントに割り当てるためのセッションIDが、クライアントに送られ618、プロセス600は終了操作620にて終了する。
図6は、本明細書に開示される実施形態に従って、セッションIDを割り当てて同一の中継セッションに属する要求をグループ化するための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせる、および/または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【0036】
さらに、
図7は、本明細書に開示される実施形態に従って、シーケンス番号および確認応答番号を割り当てて、ウェブブラウザベースクライアントなどのクライアントと中継サーバとの間の信頼性のある順序化されたデータ配信を確実にする方法を実行するための例示としての操作ステップ700を示す。プロセス700は、開始操作702にて開始され、処理を進めてブラウザベースクライアントにてHTTP要求を生成し704、ここでプロセス700はブラウザベースクライアントからリモートサーバへ中継サーバを介して移動するアップストリームデータを例示する。操作704にて、シーケンス番号もクライアントにより要求に割り当てられる。次に、シーケンス番号を有するHTTP要求が中継サーバにて受け取られる706。中継サーバはシーケンス番号を使用し708、ここでシーケンス番号はHTTPヘッダとして中継サーバに渡される。中継サーバは次に、確認応答番号を生成する710。中継サーバは、HTTP応答に対するHTTPヘッダとして、および/または、実施形態に従う応答の主部として、確認応答番号をHTTP応答と共にクライアントに戻す。クライアント側では、HTTP応答(受け取った場合)が保留中の要求(図示せず)とマッチングされる。HTTP応答とその要求とのマッチングは、実施形態に従いウェブブラウザなどの基本のプラットフォームによりクライアントにおいて実行される。そのような実施形態において、HTTP応答は、要求が送られたのと同じ、TCPなどの接続を介して、クライアントにおいて受け取られる。実施形態において、要求/応答のシーケンス番号および確認応答番号のこのマッチングおよび追跡により、HTTPを介した順序化された信頼性のあるデータ送信の支援が可能となる。
【0037】
応答メッセージおよび確認応答番号は、中継サーバからクライアントへの送信中に失われる可能性があるため、プロセス700は、クエリ714にて、クライアントが、HTTP要求で送ったデータに対応する確認応答を受け取ったかどうかの判定を行う。例えば、アップストリームデータについては、本明細書に開示される実施形態に従うと、クライアントから開始された各HTTP要求は、特定の要求が担持するデータの最初のバイトにシーケンス番号を担持する。加えて、各要求は要求が担持するデータのバイト数を表す長さ数を有する。中継サーバ側では、応答メッセージのために生成された確認応答番号は、中継サーバが受け取った最後のバイトである。この確認応答番号の前のシーケンス番号を有する全てのデータは、従って、直近の確認応答番号でも確認される。クライアントは、数バイトのデータを受け取ったことを確認すると、そのバイトデータをキャッシュから削除する。あるいは、確認が受け取れない場合は、実施形態に従って、データは再配信される。例えば、シーケンス番号が1で始まり、要求の長さが100バイトである時、クライアントが探す確認応答番号は100である。第2の要求が送られる場合、シーケンス番号は101で始まり、長さが200であれば、クライアントは対応する確認応答番号である300を探す。
【0038】
図7に戻り、714にて、確認応答が受け取られた場合(要求/応答メッセージの信頼性のある配信を示す)、プロセス700はYESでクエリ716に進み、クライアントが任意の他の要求を、中継サーバを介してリモートサーバに送ることを求めているかどうかを判定する。他の要求が求められている場合、プロセス700はYESに進み、HTTP要求を生成し、シーケンス番号を次の要求に割り当てる704。要求が求められていない場合、プロセス700はNOから終了操作718に進み、プロセス700を終了する。
【0039】
クエリ714が、確認応答が受け取られていないと判定する場合、または、他の実施形態において、否定の処理および/または失敗の処理を示す応答が受け取られたと判定する場合、プロセス700はNOからクエリ720に進み、所定の待ち時間が過ぎたかどうかを判定する。実施形態においてタイマが示すように、確認応答についての待ち時間が超過していない場合、プロセス700はクエリ714に戻って確認応答が受け取られたどうかを判定し、ステップ714および720を繰り返す。所定の待ち時間が超過したと判定される場合、プロセス700はYESから操作722に進み、要求の送信を再試行し、そしてプロセス700は再度操作706に進む。ステップ706から716までを繰り返した後、プロセス700は最終的に終了操作718に進み、プロセス700が終了する。
図7は、本明細書に開示される実施形態に従う、シーケンス番号を割り当て、要求の確認応答を追跡して、順序化された信頼性のあるメッセージ配信を行うための、可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせる、および/または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【0040】
確認応答のクエリおよび/または確認応答番号を使用し、第1の要求が受け取られたという応答確認がなされるまで第2の要求の送信を待つことにより、プロセス700は、メッセージを追跡して、データの喪失を防ぎシステム弾力性のあるロスレスなデータ送信を達成することにより、信頼性のある順序化されたメッセージ配信を行う。さらに、本明細書に開示される実施形態に従って、要求/応答のメッセージを追跡することにより、1回に1つの保留中アップストリーム要求および1つのダウンストリーム要求のみを行い、第1の要求/応答が確認応答されるまで第2の要求が送信されないようにすることにより、システムは順序化された配信を維持することができる。さらに、確認応答番号を使用することにより、システムは、再試行される要求を追跡して、要求を担持するデータに加えて新しいデータを一緒に送ることができる。加えて、検討したように、HTTPが、例えば、一度に複数の接続を可能にすることを考慮すると、順序化されたメッセージ配信はHTTP要求/応答での会議環境において有益である。
図7は、クライアントと中継サーバとの間の信頼性のある順序化されたデータ配信を達成するためのステップを例示するが、その逆も同様であり、本明細書に開示される実施形態に従って、それらの間で使用されるプロトコルにより、中継サーバとリモートサーバとの間のデータの信頼性のある順序化された配信が指示される。
【0041】
図7は、中継サーバを介したクライアントからリモートサーバへのアップストリームデータ用シーケンス番号/確認応答番号を示すが、本明細書に開示される実施形態に従って、中継サーバを介したリモートサーバからクライアントへのダウンストリームデータには対応するステップが含まれる。一実施形態において、シーケンス番号が中継サーバ側で生成され、クライアントにより使用される。そして、実施形態に従って、クライアントは確認応答番号を生成し、この確認応答番号は中継サーバにて使用される。
【0042】
上述の
図3は、中継サーバ304を介してブラウザベースクライアント302の機能性を拡張させるための例示のソフトウェア機能モジュール300を示すが、
図8Aは、本明細書に開示される実施形態に従い、SIPデータをトンネリングするための、かつ、システムにプラグされる選択的なプラットフォームサービスを使用して、認証を実行することなどによりSIPデータのトンネリングを支援するための例示のソフトウェア機能モジュール800を示す。ブラウザベースクライアント802は、例えば、ウェブサービス呼び出しを介して822、中継サーバ804にコンタクトし、中継セッションを構成する。中継サーバ804のウェブサービス812を備えるセッション管理コンポーネント810は、例えば、メソッド呼び出し806を介して、プレーンHTTPウェブハンドラ816を備える中継エンジン814と対話し、要求される中継セッションを作成する。実施形態において、セッション管理コンポーネント810は、クライアント802とリモートサーバ808などの宛先との間の接続に対するSIPセッションを、セッション識別子を生成することなどにより開始およびセットアップするため、例えば、会議に含まれるエンティティ間の接続を確立するため、および、同一の中継セッションに属する要求をグループ化するための、機能性を提供する。実施形態に従うと、セッション識別子は、例えば、ウェブサービス呼び出し戻り値を介して822クライアントに戻される。セッションが一度確立されると、中継エンジンコンポーネント814は、クライアント802とリモートサーバ808との間のデータ交換を行う。中継エンジン814はまた、実施形態において、要求および応答のメッセージの信頼性のある順序化された配信を確実にするためにシーケンス番号および確認応答番号の割り当てを行う。
【0043】
一実施形態において、選択的な(点線820で図示するように)プラットフォームサービスコンポーネント820が、所望の中継セッションを構成するための許可にアクセスするため、最初にコンタクトされる824。実施形態に従うと、プラットフォームサービスコンポーネント820は、例えば、クライアント802の認証の実行、また、暗号化呼び出し操作およびDNS解決操作の処理を行う。さらなる実施形態において、認証ブローカ821は、SIP認証の実行においてクライアントを支援するプラグ可能プラットフォームサービスのセットとして使用される。認証ブローカは、そのような実施形態において、チャレンジデータなどの情報またはデータを有し、ブラウザベースクライアント802とリモートサーバ808との間の「仲介者」として動作する中継サーバ804との中継セッションの作成の前に、認証のために、ブラウザベースクライアント802にそれを渡す。さらなる一実施形態において、認証コンポーネントは、中継セッションを作成するクライアント要求をリモートサーバ808に提示することにより、および/または、チャレンジ応答メッセージ822の構築のためにクライアント802に送る822ための、チャレンジデータなどの認証情報またはデータ、および実施形態において一意的な識別子を取得することにより、リモートサーバ808にコンタクトし826、クライアント802の会議参加を検証する。認証コンポーネント820とリモートサーバ808との間のコンタクト826の選択的な性質が、点線826で示されている。リモートサーバ808がコンタクトされる場合、実施形態に従い、リモートサーバ808は中継サーバ804が提供する秘密を検証することができ、そのような検証が成功した場合、チャレンジデータ(実施形態に従う一意的な識別子を含む)が認証コンポーネント820(コンタクト826の双方向性により示されるように)に提供される。さらに他の実施形態においては、リモートサーバ808に秘密が提供されず、中継サーバ804からの要求について任意の検証を行わずに、リモートサーバ808がチャレンジ/識別子のデータを提供する。
【0044】
認証が実行されて成功する(または、上記で検討したように、最初は認証が要求されない)実施形態において、セッション管理コンポーネント810は、例えば、メソッド呼び出しを介して中継エンジンコンポーネント814と対話し、中継セッションを構成する。中継セッションの作成に成功すると、セッション管理コンポーネント810はセッションIDをクライアント802に割り当てる。一実施形態において、クライアント302に割り当てられたセッションIDを使用して、同一のセッションに属する要求がグループ化される。そのようなセッションIDは中継サーバ804からブラウザベースクライアント802に送られ822、クライアント802はそのセッションIDをHTTPヘッダとして使用して中継エンジン814と通信を行う828。ブラウザベースクライアント802からデータを受け取ると、中継エンジン814はSSLストリームトランスポートモジュール818と対話して830、例えばTLS/SSLを使用して832、リモートサーバ808とのデータの中継をする832。このように、中継エンジン814は、受け取ったまたは転送されたデータをHTTP要求でラップして、そのデータをトランスポート用TLS/SSLプロトコルでリモートサーバ808に送る。従って、中継サーバ804は、SIPで通信するための「トンネル」として動作する。例示のソフトウェア機能モジュール800は、記載される実施形態の可能性のあるソフトウェア機能モジュールの一例として提示されている。他の実施形態では、図示されるモジュール、図示されるものよりも少ないモジュールおよび/またはサブモジュール、追加のモジュールおよび/またはサブモジュール、モジュールおよび/またはサブモジュールの組み合わせ、図示されるモジュールおよび/またはサブモジュールを拡張したものなどを含んでも良い。
【0045】
続いて
図8Bを参照すると、
図8Aに図示されるような、かつ、本明細書に開示される実施形態に従う、SSLストリームトランスポートモジュールおよびプラグ可能認証モジュールを使用してSIPデータをトンネリングするための例示の操作ステップ834が示される。プロセス834が開始操作836で開始され、処理を進めて、例えば、ウェブサービス呼び出しを介するなどして中継サーバのセッション管理コンポーネントにてコンタクトを受け取り、中継セッションを作成する838。次に、セッション管理コンポーネントは中継エンジンと対話して、要求される中継セッションを構成する844。しかし、プロセス834は最初に選択的にクエリ840に進んで、クライアントが、セッションを作成することが許可されるかどうか、例えば、認証されるかおよび/または認可されるか、をプラットフォームサービスコンポーネントから判定しても良い。この判定を行う840際に、中継サーバは、プラットフォームサービスコンポーネント820および/または認証ブローカ821を介するなどして、選択的にリモートサーバ808にコンタクトし842、クライアント802とリモートサーバ808との間のハンドシェイク(ステップ840と842との間の矢印の選択的な双方向の性質により示されるように)を完全にするためにチャレンジデータおよび/または認証データを取得しても良い。他の実施形態において、認証ブローカ821は、ハンドシェイクを完全にするためのチャレンジデータおよび/または認証データを提供する。クライアント802が、中継セッションを作成することを認証されないおよび/または認可されない場合、プロセス834はNOから終了操作856に進み、プロセス834が終了する。認証および/または認可が求められ成功した場合、プロセス834はYESから中継セッション構成の操作844に進み、中継セッションが構成される844。セッション管理コンポーネントにてセッションIDが生成され846、クライアントに対して割り当てられ848、クライアントに送られる850。そして、中継エンジンは、SIPトンネリングのためのトランスポートモジュール、例えば、SSLストリームモジュールと対話して、リモートサーバに対してデータを中継する852。次に、SSLストリームトランスポートモジュールが、リモートサーバと通信してデータを交換し854、プロセス834が終了操作856にて終了する。
図8Bは、本明細書に開示される実施形態に従う、クライアントとリモートサーバとの間の中継サーバを使用してHTTPを介してSIPをトンネリングするための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせることおよび/または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【0046】
次に、
図9では、選択的なプラットフォームサービスがどのようにシステム全体にプラグインされて、例えばSIPなどの特定のプロトコルのデータのトンネリングを支援するかを示す、例示の操作ステップ900が示される。例えば、
図9は、本明細書に開示される実施形態に従う、例えばリモートサーバなどの宛先との認証のハンドシェイクを完全にする際における、例えばHTTPエンドポイントなどのクライアントを支援するためのプラグ可能な認証モジュールの使用を示す。従ってプロセス900は、ブラウザベースクライアントによる、中継サーバへの認証の委託を示す。プロセス900は開始操作902にて開始され、処理を進めてブラウザベースのウェブアプリケーションからチャレンジデータを受け取る904。そして、中継サーバが、ブラウザベースクライアントから受け取ったチャレンジデータを使用して認証を実行し906、チャレンジ応答を生成して、そのチャレンジ応答をクライアントに送る908。一実施形態において、中継サーバは、認証を実行する906リモートサーバにコンタクトし、別の実施形態においては、ブラウザベースクライアントに対するチャレンジ応答を生成するために、中継サーバが認証を実行する。チャレンジ応答を受け取ると、ブラウザベースのアプリケーションは戻されたチャレンジ応答を、中継サーバおよびリモートサーバとのセッションを開始するための新しいSIPメッセージなどの新しい要求メッセージに組み立てる。そして、中継サーバが新しい要求を組み立てたチャレンジ応答と共に受け取り910、新しい要求を、例えば、セッションを開始するためにリモートサーバ912に送る。クライアントが有効な参加者であると判定されると(図示せず)、リモートサーバが中継サーバに承認を送り、中継サーバが受け取る914。次に、中継サーバは、ブラウザベースのウェブアプリケーションにセッションの承認と開始を通知する916。そして中継サーバにてブラウザベースのウェブアプリケーションから交換用のデータを受け取り918、プロセス900は終了操作920にて終了する。
図9は、本明細書に開示される実施形態に従う、認証を中継サーバに委託することによりブラウザベースのウェブアプリケーションと宛先との間のハンドシェイクを認証するための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせること、および/または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【0047】
次に、
図10では、本開示の一実施形態に従い、媒体スタックなどのトランスポートスタックをシステム全体にプラグインして、RTP/SRTPを介したRDPデータのトンネリングを支援するための、例示のソフトウェア機能モジュール1000が示される。ブラウザベースクライアント1002は、例えばウェブサービス呼び出しを介して1018、中継サーバ1004の構成コンポーネント1008にコンタクトし、SRTPチャネルを構成する。実施形態において、構成コンポーネント1008は、ウェブサービス1010を備え、チャネルを構成するために、例えばメソッド呼び出しを介して1026中継エンジン1012と対話する。次に、構成コンポーネント1008は、中継サーバ1004に搭載された媒体スタック1016を構成する1020。
【0048】
媒体スタック1016は、他のモジュールの中でも、中継サーバ1004がブラウザベースクライアント1002の機能性を拡張させることを可能にする。実施形態に従うと、媒体スタックは、中継サーバに搭載されて特定プロトコルのトンネリングを可能にする。例えば、RDPの中継のシナリオにおいて、RDPデータをRTP/SRTPを介して移送するために、実施形態においてRTP/SRTPおよびICE(Interactive Connectivity Establishment)の知見も使用される。ICEを使用して、例えば、RTP/SRTPトラフィックがファイアウォールを横断することが可能となる。従って、中継サーバがRTP/SRTP/ICEをサポートする媒体スタックを搭載するのは、RDPデータが典型的にはRTP/SRTPを介して画面共有サーバに移送されるからである。RDP中継を含み、画面共有サーバとの接続をセットアップする一実施形態においては、ウェブベースクライアントはSIPで画面共有サーバと通信し、中継サーバと画面共有サーバとの間のRTP/SRTP/ICE接続をセットアップする。RTP/SRTP/ICEのための媒体スタックを中継サーバに搭載することにより、このプロセスが促進される。そして、SIPメッセージ本文の一部、すなわち、セッション記述プロトコル(SDP:Session Description Protocol)の一部が中継サーバからウェブサービス呼び出しを介して読みだされるため、クライアントがSIPで画面共有サーバと通信可能になる。同様に、画面共有サーバからのSIP要求のSDPは、ウェブサービス呼び出しを介して中継サーバに渡される。従って、中継サーバが媒体スタックを搭載することにより、RDPデータのトランスポートなどが制限された環境において、そのようなトランスポートを行うことが可能にされる。例えば、RTP/SRTPおよびICEの媒体スタックは、典型的にはMacプラットフォームでは利用できない。Macプラットフォームでは、例えば、開発者は、媒体スタックをネイティブマックに移植するか、ウェブベースクライアントで媒体スタックを開発する。しかし、そのような手法は複雑であり、そのような移植および/または開発には依然として機能性の制約が存在する。
【0049】
図10に戻ると、上記で検討したように、RTP/SRTPを介してRDPデータを移送するために、実施形態においてRTP/SRTPおよびICEの知見が使用される。一実施形態において、そのような構成には、接続が可能であるかどうかを判定する接続チェックのためにリモートのSIP/RTPエンドポイント1006に対して通信することが含まれる。別の実施形態において、接続チェックは行われない。SRTPチャネルおよび媒体スタックが構成されると、クライアント1002は、中継セッションを構成するためのプレーンHTTPウェブハンドラ1014を備える中継エンジン1012に対して、HTTPを介して1022RDPデータを送受信する。そして、中継エンジン1012は、媒体スタック1016と通信して1024、媒体スタック1016とリモートRTPエンドポイント1006との間でRTP関連のメッセージを交換することにより1028、RDPデータを取得する。ソフトウェア機能モジュール1000は、記載される実施形態の可能性のあるソフトウェア機能モジュールの一例として提示される。他の実施形態では、図示されるモジュール、図示されるものよりも少ないモジュールおよび/またはサブモジュール、追加のモジュールおよび/またはサブモジュール、モジュールおよび/またはサブモジュールの組み合わせ、図示されるモジュールおよび/またはサブモジュールを拡張したものなどを含んでも良い。
【0050】
図10は、媒体スタックなどのトランスポートスタックをシステム全体にプラグインして、RTP/SRTPを介してRDPデータをトンネリングするための例示のソフトウェア機能モジュールを示すが、
図11では、本開示の一実施形態に従い、プラグ可能なトランスポートスタックを使用して、RTP/SRTPを介してRDPデータをトンネリングするための例示の操作ステップ1100が示される。プロセス1100は開始操作1102にて開始され、操作1104に進み、中継サーバが、例えば、ウェブサービス呼び出しなどを介して、クライアントとリモートRTPエンドポイントとの間でコンタクトされ、RDPデータをトンネリングするためのSRTPチャネルが構成される。次に、構成コンポーネントが、プラグ可能な媒体スタックを構成し1106、その際、選択的に(点線で示されるように)接続チェック1107のためにリモートRTPエンドポイントと通信する。RTPエンドポイントは、1106と1107との間の矢印の双方向の性質により示されるように、情報を用いて応答する。クライアントはその後、HTTPを介してRDPデータを中継エンジン1108へ/から送受信する。すると中継エンジンが媒体スタックと通信してRDPデータを取得する1110。RDPデータを取得するためには、媒体スタックはリモートRTPエンドポイントとRTPメッセージを交換する1112。プロセス1100は終了操作1114にて終了する。
図11は、本明細書に開示される実施形態に従って、プラグ可能なトランスポートスタックを使用してRTP/SRTPを介してRDPデータをトンネリングするための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせ、および/または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【0051】
最後に、
図12では、本明細書に開示される実施形態を実装することができる一例のコンピュータシステム1200が示される。クライアントコンピュータ202、中継サーバ206、またはリモートサーバ208などの、
図2に示すようなメッセージデータを交換するための少なくとも1つのプロセッサ1202を有するコンピュータシステム1200が、本明細書に開示される実施形態に従って図示される。システム1200は、例えば、システムメモリ、揮発性メモリおよび不揮発性メモリを備えるメモリ1204を有する。その最も基本的な構成で、コンピュータシステム1200が
図12において点線1206で示される。加えて、システム1200は、磁気または光のディスクまたはテープを含むがこれに限定されない追加の記憶装置(取り外し可能および/または取り外し不可能)を含んでも良い。そのような追加の記憶装置は、
図12において取り外し可能記憶装置1208および取り外し不可能記憶装置1210により例示される。
【0052】
本明細書において使用されるとき、用語「コンピュータ読取可能媒体」は、コンピュータ記憶媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装される、揮発性および不揮発性、取り外し可能および取り外し不可能の媒体が含まれて良い。システムメモリ1204、取り外し可能記憶装置1208、および取り外し不可能記憶装置1210は全てコンピュータ記憶媒体の例(すなわち、メモリ記憶装置)である。コンピュータ記憶媒体には、RAM、ROM、EEPROM(electrically erasable read-only memory)、フラッシュメモリもしくは他のメモリ技術、CD−ROM、DVD(digital versatile disk)もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク装置や他の磁気記憶装置、または、情報を記憶するために使用可能かつコンピュータ装置1200によりアクセス可能な任意の他の媒体、が含まれても良いがこれらに限定されない。任意のそのようなコンピュータ記憶媒体は装置1200の一部であって良い。
図12に例示されるものは、本開示の範囲に全く限定されないよう意図されている。
【0053】
本明細書で使用されるとき、用語「コンピュータ読取可能媒体」は、通信媒体を含むこともできる。通信媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、または搬送波もしくは他のトランスポート機構などの変調データ信号内の他のデータにより具現化されて良く、任意の情報配信媒体を含む。用語「変調データ信号」には、信号内の情報を符号化する様式で1つまたは複数の特徴が設定または変更された信号を記述して良い。制限ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、無線周波数(RF)、赤外線および他の無線媒体などの無線媒体を含んで良い。
【0054】
システム1200は、装置を他の装置と通信させる通信接続1216を含んでも良い。加えて、本開示の一実施形態に従って、例えば、クライアントコンピュータ202の対応するUIモジュール(図示せず)により提供されるような、例えば、クライアントコンピュータ202上のユーザインターフェース(UI)のフィールドにコンテンツを入力するために、システム1200は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置1214を有しても良い。ディスプレイ、スピーカ、プリンタなどの出力装置1212を含んでも良い。これらの装置の全ては当該技術において周知であり、ここで詳細を検討する必要はない。上述の装置は例であり、他の装置を使用することもできる。
【0055】
上記では、本開示の実施形態について図面を参照して説明したが、当業者に対して示唆され、本開示の範囲および精神に包含され、そして添付の請求項に定義されるような多数の修正を、実施形態に対して行って良いことは理解されるべきである。実際、実施形態は開示を目的として記載されているが、本開示の範囲内にある種々の変更および修正を行うことができる。
【0056】
同様に、本開示では、構造的特徴、 方法論的動作、およびそのような動作を含むコンピュータ読取可能媒体に特有の言語を使用したが、添付の請求項に定義する主題は、必ずしも本明細書に記載する特有の構造、動作、特徴または媒体に限定されないことは理解されたい。むしろ、上述の特有の構造、特徴、動作および/または媒体は、請求項を実装する例示の形態として開示されている。実施形態の態様では、複数のクライアントコンピュータ、複数のリモートサーバ、複数の中継サーバ、および複数のネットワークなどが考慮される。または、他の実施形態においては、単一のクライアントコンピュータと単一のリモートサーバ、単一の中継サーバ、および単一のネットワークが使用される。当業者は、本開示の範囲および精神に含まれる他の実施形態または実装を認識するであろう。従って、特有の構造、動作または媒体が、本開示を実装する例示の実施形態として開示される。本開示は添付の請求項により定義される。