以下の様々な実施形態の説明では、本明細書の一部を形成する上記で特定された添付図面を参照して、本明細書に記載された態様を実施することができる様々な実施形態を示す。本明細書に記載された範囲から逸脱することなく、他の実施形態が利用可能であり、構造および機能の変更が可能であることが理解されるべきである。様々な態様は、別の実施形態が可能であり、様々な異なる方法で実施および実行することが可能である。
本明細書で使用される表現および用語は、説明のためのものであり、限定的であると見なされるべきではないと理解される。むしろ、本明細書で使用される句および用語は、最も広い解釈および意味を与えられる。「含む(including)」および「備える(comprising)」並びにその変形の使用は、それ以降に列挙された項目およびその均等物、並びにそれらの追加項目および均等物を包含することを意味する。用語「取り付けられた(mounted)」、「接続された(connected)」、「結合された(coupled)」、「位置決めされた(positioned)」、「係合された(engaged)」および同様の用語の使用は、直接的および間接的な取り付け、接続、結合、位置決めおよび係合を含むことを意味する。
コンピューティングアーキテクチャ
コンピュータソフトウェア、ハードウェア、およびネットワークは、スタンドアロン、ネットワーク化、リモートアクセス(別名、リモートデスクトップ)、仮想化、および/またはクラウドベース環境を含む、様々な異なるシステム環境で使用可能である。図1は、スタンドアロンおよび/またはネットワーク環境で、本明細書に記載される1つ以上の例示的な態様を実装するために使用可能であるシステムアーキテクチャおよびデータ処理装置の一例を記述する。様々なネットワークノード103、105、107、および109は、インターネットなどのワイドエリアネットワーク(WAN)101を介して相互接続することができる。プライベートイントラネット、企業ネットワーク、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、無線ネットワーク、パーソナルネットワーク(PAN)などを含む他のネットワークもまた使用されてもよく、または代替として使用されてもよい。ネットワーク101は、例示目的のものであり、より少ないまたは追加のコンピュータネットワークと置き換えることができる。ローカルエリアネットワークは、任意の公知のLANトポロジのうちの1つ以上を有することができ、イーサネット(登録商標)などの様々な異なるプロトコルのうちの1つ以上を使用することができる。デバイス103、105、107、109および他のデバイス(図示せず)は、ツイストペア線、同軸ケーブル、光ファイバ、電波または他の通信媒体を介して1つ以上のネットワークに接続されてもよい。
本明細書で使用する図面に示されている用語「ネットワーク」は、遠隔記憶装置が1つ以上の通信経路を介して結合されるシステムを指すだけではなく、時折、記憶能力を有するそのようなシステムに結合され得るスタンドアロン装置をも指す。したがって、用語「ネットワーク」は、「物理ネットワーク」だけでなく、全ての物理ネットワークに存在する−単一エンティティに起因する−データから構成される「コンテンツネットワーク」をも含む。
コンポーネントは、データサーバ103、ウェブサーバ105、およびクライアントコンピュータ107、109を含むことができる。データサーバ103は、本明細書に記載された1つ以上の例示的な態様を実行するためのデータベースおよび制御ソフトウェアの全体的なアクセス、制御および管理を提供する。データサーバ103は、要請により、ユーザがデータと対話してデータを取得するウェブサーバ105に接続することができる。その代わりに、データサーバ103は、ウェブサーバ自体として機能してもよく、インターネットに直接接続されてもよい。データサーバ103は、ネットワーク101(例えば、インターネット)を介して、直接的または間接的な接続を介して、または他の何らかのネットワークを介してウェブサーバ105に接続することができる。ユーザは、ウェブサーバ105によってホストされた1つ以上の外部に露出されたウェブサイトを介して、データサーバ103に接続するために、例えばウェブブラウザを用いて、リモートコンピュータ107、109を使用してデータサーバ103と対話することができる。クライアントコンピュータ107、109は、そこに記憶されたデータにアクセスするためにデータサーバ103と協働して使用されてもよく、または他の目的のために使用されてもよい。例えば、クライアントデバイス107から、ユーザは、当該技術分野において知られているように、インターネットブラウザを使用して、または(インターネットなどの)コンピュータネットワーク上のウェブサーバ105および/またはデータサーバ103と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ105にアクセスすることができる。
サーバおよびアプリケーションは、同じ物理マシン上で結合することができ、別個の仮想または論理アドレスを保持することができ、または別個の物理マシン上に存在することができる。図1は、使用可能なネットワークアーキテクチャの単なる一例を示しており、当業者であれば、本明細書においてさらに記載されるように、使用される特定のネットワークアーキテクチャおよびデータ処理装置が変化してもよく、それらが提供する機能に対して二次的であることを理解する。例えば、ウェブサーバ105およびデータサーバ103によって提供されるサービスは、単一サーバ上で結合することができる。
各コンポーネント103、105、107、109は、任意の種類の公知のコンピュータ、サーバ、またはデータ処理装置とすることができる。データサーバ103は、例えば、データサーバ103の全体的な動作を制御するプロセッサ111を含んでもよい。データサーバ103は、さらに、ランダムアクセスメモリ(RAM)113、読出し専用メモリ(ROM)115、ネットワークインターフェース117、入出力インターフェース119(例えば、キーボード、マウス、ディスプレイ、プリンタなど)、およびメモリ121を含むことができる。入出力(I/O)119は、データまたはファイルの読み取り、書き込み、表示、および/または印刷のための様々なインターフェースユニットおよびドライブを含むことができる。メモリ121は、さらに、データ処理装置103の全体的な動作を制御するためのオペレーティングシステムソフトウェア123、本明細書に記載された態様を実行するようにデータサーバ103に指示する制御ロジック125、および本明細書に記載された態様とあわせて使用されても使用されなくてもよい二次的機能、サポート機能、および/または他の機能を提供する他のアプリケーションソフトウェア127を記憶することができる。制御ロジックはまた、本明細書ではデータサーバソフトウェア125とも呼ばれる。データサーバソフトウェアの機能は、制御ロジックにコード化されたルールに基づいて自動的に行われる、システムに入力を提供するユーザによって手動で行われる、および/またはユーザ入力(例えば、クエリ、データ更新など)に基づく自動処理の組み合わせによる動作または決定を指すことができる。
メモリ121はまた、第1のデータベース129および第2のデータベース131を含む、本明細書に記載された1つ以上の態様の実行に使用されるデータを記憶することができる。ある実施形態では、第1のデータベースは、(例えば、別個のテーブル、レポートなどとして)第2のデータベースを含むことができる。すなわち、情報は、システム設計に応じて、単一データベースに記憶されることができ、または、異なる論理、仮想、もしくは物理データベースに分離することができる。デバイス105、107、109は、デバイス103に関して記載されたものと同様のまたは異なるアーキテクチャを有してもよい。当業者であれば、本明細書に記載されたデータ処理装置103(またはデバイス105、107、109)の機能が、例えば、地理的位置、ユーザアクセスレベル、サービス品質(QoS)などに基づいてトランザクションを分離するために、複数のコンピュータにわたって処理負荷を分散するように、複数のデータ処理装置にわたって分散されてもよいことを理解する。
1つ以上の態様は、本明細書に記載される1つ以上のコンピュータまたは他のデバイスによって実行する、1つ以上のプログラムモジュールなど、コンピュータ使用可能または読み取り可能なデータおよび/またはコンピュータ実行可能命令で具体化されてもよい。一般に、プログラムモジュールは、特定のタスクを実行する、または、コンピュータまたは他のデバイスのプロセッサによって実行するときに特定の抽象データタイプを実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。モジュールは、実行のために後でコンパイルされるソースコードプログラミング言語で書かれてもよく、または、(これらに限定されるものではないが)ハイパーテキストマークアップ言語(HTML)もしくは拡張マークアップ言語(XML)などのスクリプト言語で書かれてもよい。コンピュータ実行可能命令は、不揮発性記憶装置などのコンピュータ可読媒体に記憶されてもよい。ハードディスク、CD−ROM、光記憶装置、磁気記憶装置、および/またはそれらの任意の組み合わせを含む、任意の適切なコンピュータ可読記憶媒体を利用してもよい。さらに、本明細書に記載されたようなデータまたはイベントを提示する様々な伝送(非記憶)媒体は、送信元と送信先との間で、金属ワイヤ、光ファイバ、および/または無線伝送媒体(例えば、空中および/または宇宙空間)などの信号伝達媒体を介して進む電磁波の形態で伝送されてもよい。本明細書に記載される様々な態様は、方法、データ処理システム、またはコンピュータプログラム製品として具体化されてもよい。従って、ソフトウェア、ファームウェア、および/またはハードウェア、または集積回路、フィールドプログラマブルゲートアレイ(FPGA)などのハードウェア均等物において、様々な機能が全体的または部分的に具体化されてもよい。本明細書に記載の1つ以上の態様をより効果的に実施するために、特定のデータ構造が使用されてもよく、そのようなデータ構造は、本明細書に記載されたコンピュータ実行可能命令およびコンピュータ使用可能データの範囲内であると想定される。
図2をさらに参照すると、本明細書に記載された1つ以上の態様は、リモートアクセス環境において実装することができる。図2は、本明細書に記載された1つ以上の例示的な態様に従って使用することができる例示的なコンピューティング環境200におけるコンピューティングデバイス201を含む例示的なシステムアーキテクチャを示す。コンピューティングデバイス201は、クライアントアクセスデバイスに仮想マシンを提供するように構成された単一サーバまたは複数サーバのデスクトップ仮想化システム(例えば、リモートアクセスまたはクラウドシステム)内のサーバ206aとして使用することができる。コンピューティングデバイス201は、サーバ、並びにRAM205、ROM207、I/Oモジュール209、およびメモリ215を含むその関連コンポーネントの全体的な動作を制御するためのプロセッサ203を有することができる。
I/Oモジュール209は、コンピューティングデバイス201のユーザが入力を提供することができるマウス、キーパッド、タッチスクリーン、スキャナ、光学式読み取り装置、および/またはスタイラス(または他の入力装置)を含むことができ、また、オーディオ出力を提供するための1つ以上のスピーカと、テキスト、オーディオビジュアル、および/またはグラフィカル出力を提供するためのビデオ表示装置を含むことができる。本明細書に記載されるような様々な機能を実行するために専用の目的のコンピューティングデバイスに、コンピューティングデバイス201を構成するための命令をプロセッサ203に提供するために、ソフトウェアをメモリ215および/または他の記憶装置内に記憶することができる。例えば、メモリ215は、オペレーションシステム217、アプリケーションプログラム219、および関連するデータベース221などのコンピューティングデバイス201によって使用されるソフトウェアを記憶することができる。
コンピューティングデバイス201は、端末240(クライアントデバイスとも呼ばれる)などの1つ以上のリモートコンピュータへの接続をサポートするネットワーク環境で動作することができる。端末240は、コンピューティングデバイス103または201に関して上述した要素の多くまたは全てを含むパーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバとすることができる。図2に示されるネットワーク接続は、ローカルエリアネットワーク(LAN)225およびワイドエリアネットワーク(WAN)229を含むが、他のネットワークも含んでもよい。LANネットワーキング環境で使用される場合、コンピューティングデバイス201は、ネットワークインターフェースまたはアダプタ223を介してLAN225に接続されてもよい。WANネットワーキング環境で使用される場合、コンピューティングデバイス201は、コンピュータネットワーク230(例えば、インターネット)などのWAN229上での通信を確立するためのモデム227または他のワイドエリアネットワークインターフェースを含んでもよい。示されたネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段が使用されてもよいことが理解される。コンピューティングデバイス201および/または端末240はまた、バッテリ、スピーカ、およびアンテナ(図示せず)などの様々な他のコンポーネントを含むモバイル端末(例えば、携帯電話、スマートフォン、携帯情報端末(PDA)、ノートブックなど)であってもよい。
本明細書に記載される態様はまた、多数の他の汎用または専用コンピューティングシステム環境または構成によって動作することもできる。本明細書に記載された態様によって使用するのに適している可能性がある他のコンピューティングシステム、環境、および/または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブル家電、ネットワークパーソナルコンピュータ(PC)、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスのいずれかを含む分散コンピューティング環境などを含むが、これらに限定されるものではない。
図2に示すように、1つ以上のクライアントデバイス240は、1つ以上のサーバ206a−206n(一般に、ここでは「サーバ206」と呼ばれる)と通信することができる。一実施形態では、コンピューティング環境200は、サーバ206とクライアントマシン240との間に設置されたネットワーク機器を含むことができる。ネットワーク機器は、クライアント/サーバ接続を管理することができ、場合によっては、複数のバックエンドサーバ206の間でクライアント接続を負荷分散することができる。
クライアントマシン240は、ある実施形態では、単一クライアントマシン240または単一グループのクライアントマシン240と呼ばれてもよく、一方、サーバ206は、単一サーバ206または単一グループのサーバ206と呼ばれてもよい。一実施形態では、単一クライアントマシン240は、複数のサーバ206と通信し、別の一実施形態では、単一サーバ206は、複数のクライアントマシン240と通信する。さらに他の実施形態では、単一クライアントマシン240は、単一サーバ206と通信する。
クライアントマシン240は、ある実施形態では、以下の非網羅的な用語のいずれか1つによって参照することができる:クライアントマシン;クライアント;クライアントコンピュータ;クライアントデバイス;クライアントコンピューティングデバイス;ローカルマシン;リモートマシン;クライアントノード;エンドポイント;またはエンドポイントノード。サーバ206は、ある実施形態では、以下の非網羅的な用語のいずれか1つによって参照することができる:サーバ、ローカルマシン;リモートマシン;サーバファーム、またはホストコンピューティングデバイス。
一実施形態では、クライアントマシン240は、仮想マシンであってもよい。仮想マシンは、任意の仮想マシンとすることができ、ある実施形態では、仮想マシンは、例えば、シトリックス・システムズ、IBM、VMwareによって開発されたハイパーバイザ、または任意の他のハイパーバイザなどのタイプ1またはタイプ2ハイパーバイザによって管理される任意の仮想マシンとすることができる。ある態様では、仮想マシンは、ハイパーバイザによって管理されてもよく、態様では、仮想マシンは、サーバ206上で実行するハイパーバイザまたはクライアント240上で実行するハイパーバイザによって管理されてもよい。
ある実施形態では、サーバ206または他の遠隔配置されたマシン上で遠隔実行するアプリケーションによって生成された、アプリケーション出力を表示するクライアントデバイス240を含む。これらの実施形態では、クライアントデバイス240は、仮想マシン受信機プログラムまたはアプリケーションを実行して、アプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに出力を表示することができる。一例では、アプリケーションはデスクトップであり、他の例では、アプリケーションは、デスクトップを生成または提示するアプリケーションである。デスクトップは、ローカルおよび/またはリモートアプリケーションを統合できるオペレーティングシステムのインスタンスのためのユーザインターフェースを提供するグラフィカルシェルを含むことができる。本明細書で使用されるように、アプリケーションは、オペレーティングシステムのインスタンス(および任意選択で、デスクトップも)がロードされた後に実行するプログラムである。
サーバ206は、ある実施形態では、リモート提示プロトコルまたは他のプログラムを使用して、クライアント上で実行するシンクライアントまたはリモートディスプレイアプリケーションにデータを送信し、サーバ206上で実行するアプリケーションによって生成されるディスプレイ出力を提示する。シンクライアントまたはリモートディスプレイプロトコルは、以下の非網羅的なプロトコルリストのいずれか1つとすることができる:フロリダ州フォートローダーデールのシトリックス・システムズ社によって開発されたインディペンデント・コンピューティング・アーキテクチャ(ICA)プロトコル;またはワシントン州レドモンドのマイクロソフトコーポレーションによって製造されたリモートデスクトッププロトコル(RDP)。
リモートコンピューティング環境は、サーバ206a−206nが、例えばクラウドコンピューティング環境内のサーバファーム206に一体に論理的にグループ化されるように、複数のサーバ206a−206nを含むことができる。サーバファーム206は、地理的に分散されるとともに一体に論理的にグループ化されたサーバ206、または互いに近接して配置されるとともに一体に論理的にグループ化されたサーバ206を含むことができる。ある実施形態では、サーバファーム206内の地理的に分散されたサーバ206a−206nは、WAN(ワイド)、MAN(メトロポリタン)、またはLAN(ローカル)を使用して通信することができ、異なる地理的領域を、以下のように特徴付けることができる:異なる大陸;大陸の異なる地域;異なる国;異なる州;異なる市;異なるキャンパス;異なる部屋;または前述の地理的位置の任意の組み合わせ。ある実施形態では、サーバファーム206は、単一エンティティとして管理することができる一方で、他の実施形態では、サーバファーム206は、複数のサーバファームを含むことができる。
ある実施形態では、サーバファームは、略同様のタイプのオペレーティングシステムプラットフォーム(例えば、ウィンドウズ(登録商標)、UNIX(登録商標)、リナックス(登録商標)、iOS、アンドロイド、シンビアンなど)を実行するサーバ206を含むことができる。他の実施形態では、サーバファーム206は、第1のタイプのオペレーティングシステムプラットフォームを実行する1つ以上のサーバの第1のグループと、第2のタイプのオペレーティングシステムプラットフォームを実行する1つ以上のサーバの第2のグループとを含むことができる。
サーバ206は、必要に応じて、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、機器、ネットワーク機器、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、デプロイメントサーバ、セキュア・ソケット・レイヤ(SSL)VPNサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバなどの任意のタイプのサーバとして、またはファイアウォール機能、アプリケーション機能、もしくは負荷分散機能を提供するマスターアプリケーションサーバ、アクティブディレクトリを実行するサーバ、もしくはアプリケーション加速プログラムを実行するサーバとして構成されることができる。他のサーバタイプを使用することができる。
ある実施形態では、クライアントマシン240からのリクエストを受信し、そのリクエストを第2のサーバ206bに転送し、第2のサーバ206bからの応答を利用して、クライアントマシン240によって生成されたリクエストに応答する第1のサーバ206aを含む。第1のサーバ206aは、クライアントマシン240に利用可能なアプリケーションの列挙を取得することができ、およびアプリケーションの列挙内で識別されるアプリケーションをホストするアプリケーションサーバ206に関連するアドレス情報として取得することができる。そして、第1のサーバ206aは、ウェブインターフェースを使用してクライアントのリクエストに対する応答を提示することができ、クライアント240に直接通信して、識別されたアプリケーションへのアクセスをクライアント240に提供することができる。1つ以上のクライアント240および/または1つ以上のサーバ206は、ネットワーク230、例えばネットワーク101を介してデータを送信することができる。
図3は、例示的なデスクトップ仮想化システムのハイレベルアーキテクチャを示す。示されるように、デスクトップ仮想化システムは、仮想デスクトップおよび/または仮想アプリケーションを1つ以上のクライアントアクセスデバイス240に提供するように構成された少なくとも1つの仮想化サーバ301を含む、単一サーバまたは複数サーバシステム、またはクラウドシステムとすることができる。本明細書では、デスクトップは、1つ以上のアプリケーションがホストおよび/または実行することができるグラフィック環境または空間を指す。デスクトップは、ローカルおよび/またはリモートアプリケーションが統合することができる、オペレーティングシステムのインスタンスのためのユーザインターフェースを提供するグラフィカルシェルを含むことができる。アプリケーションは、オペレーティングシステムのインスタンス(および必要に応じてデスクトップも)がロードされた後に実行するプログラムを含むことができる。オペレーティングシステムの各インスタンスは、物理的(例えば、デバイス毎に1つのオペレーティングシステム)または仮想的(例えば、単一デバイス上で動作するOSの多くのインスタンス)とすることができる。各アプリケーションは、ローカルデバイス上で実行されてもよく、または遠隔配置されたデバイス(例えば、リモート)上で実行されてもよい。
コンピュータデバイス301は、例えば、単一サーバ、複数サーバ、またはクラウドコンピューティング環境などの仮想化環境内の仮想化サーバとして構成されることができる。図3に示される仮想化サーバ301は、図2に示されるサーバ206の1つ以上の実施形態によって、または他の公知のコンピューティングデバイスによって装備および/または実装することができる。仮想化サーバ301には、1つ以上の物理ディスク304、1つ以上の物理デバイス306、1つ以上の物理プロセッサ308および1つ以上の物理メモリ316を含むことができるハードウェア層が含まれる。ある実施形態では、ファームウェア312は、物理メモリ316のメモリ要素内に記憶することができ、1つ以上の物理プロセッサ308によって実行可能となる。仮想化サーバ301は、さらに、物理メモリ316のメモリ要素に記憶され、1つ以上の物理プロセッサ308によって実行可能であるオペレーティングシステム314を含むことができる。さらに、ハイパーバイザ302は、物理メモリ316のメモリ要素に記憶することができ、物理プロセッサ308の1つ以上によって実行することができる。
1つ以上の物理プロセッサ308での実行は、1つ以上の仮想マシン332A−C(一般には332)とすることができる。各仮想マシン332は、仮想ディスク326A−Cおよび仮想プロセッサ328A−Cを有することができる。ある実施形態では、第1の仮想マシン332Aは、仮想プロセッサ328Aを使用して、ツールスタック324を含む制御プログラム320を実行することができる。制御プログラム320は、制御仮想マシン、Dom0、ドメイン0、またはシステム管理および/または制御に使用される他の仮想マシンと呼ばれてもよい。ある実施形態では、1つ以上の仮想マシン332B−Cは、仮想プロセッサ328B−Cを使用して、ゲストオペレーティングシステム330A−Bを実行することができる。
仮想化サーバ301は、仮想化サーバ301と通信する1つ以上のハードウェアピースを有するハードウェア層310を含むことができる。ある実施形態では、ハードウェア層310は、1つ以上の物理ディスク304、1つ以上の物理デバイス306、1つ以上の物理プロセッサ308、および1つ以上のメモリ216を含むことができる。物理コンポーネント304、306、308、および316は、例えば、上述したコンポーネントのいずれかを含むことができる。物理デバイス306は、例えば、ネットワークインターフェースカード、ビデオカード、キーボード、マウス、入力装置、モニタ、ディスプレイ装置、スピーカ、光学ドライブ、記憶装置、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素(例えば、ルータ、ファイアウォール、ネットワークアドレス変換器、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、ダイナミック・ホスト・コンフィギュレーション・プロトコル(DHCP)ルータなど)、または仮想化サーバ301と接続するまたは通信する任意の装置を含むことができる。ハードウェア層310内の物理メモリ316は、任意の種類のメモリを含むことができる。物理メモリ316は、データを記憶することができ、ある実施形態では、1つ以上のプログラム、または実行可能命令のセットを記憶することができる。図3は、ファームウェア312が仮想化サーバ301の物理メモリ316内に記憶される実施形態を示す。物理メモリ316に記憶されたプログラムまたは実行可能命令は、仮想化サーバ301の1つ以上のプロセッサ308によって実行することができる。
仮想化サーバ301はまた、ハイパーバイザ302も含むことができる。ある実施形態では、ハイパーバイザ302は、任意数の仮想マシン332を形成および管理するために、仮想化サーバ301上のプロセッサ308によって実行するプログラムとしてもよい。ハイパーバイザ302は、仮想マシンモニタ、またはプラットフォーム仮想化ソフトウェアと呼ばれてもよい。ある実施形態では、ハイパーバイザ302は、コンピューティングマシン上で実行する仮想マシンを監視する実行可能命令およびハードウェアの任意の組み合わせとすることができる。ハイパーバイザ302は、仮想化サーバ301上で実行するオペレーティングシステム314内で実行するハイパーバイザであるタイプ2ハイパーバイザとすることができる。そして、仮想マシンは、ハイパーバイザの上のレベルで実行する。ある実施形態では、タイプ2ハイパーバイザは、タイプ2ハイパーバイザがユーザのオペレーティングシステムと対話するように、ユーザのオペレーティングシステムのコンテキスト内で実行する。他の実施形態では、仮想化環境内の1つ以上の仮想化サーバ301は、代わりに、タイプ1ハイパーバイザ(図示せず)を含むことができる。タイプ1ハイパーバイザは、ハードウェア層310内のハードウェアおよびリソースに直接アクセスすることによって、仮想化サーバ301上で実行されることができる。すなわち、タイプ2ハイパーバイザ302は、示されるように、ホストオペレーティングシステム314を介してシステムリソースにアクセスするが、タイプ1ハイパーバイザは、ホストオペレーティングシステム314なしで全てのシステムリソースに直接アクセスすることができる。タイプ1ハイパーバイザは、仮想化サーバ301の1つ以上の物理プロセッサ308上で直接実行することができるおよび物理メモリ316に記憶されたプログラムデータを含むことができる。
ハイパーバイザ302は、ある実施形態では、システムリソースに直接アクセスするオペレーティングシステム330または制御プログラム320をシミュレートする任意の方法で、仮想マシン332上で実行するオペレーティングシステム330または制御プログラム320に仮想リソースを提供することができる。システムリソースは、物理デバイス306、物理ディスク304、物理プロセッサ308、物理メモリ316および仮想化サーバ301のハードウェア層310に含まれる任意の他のコンポーネントを含むことができるが、これらに限定されるものではない。ハイパーバイザ302は、仮想ハードウェアのエミュレーション、物理ハードウェアのパーティション、物理ハードウェアの仮想化、および/またはコンピューティング環境へのアクセスを提供する仮想マシンの実行に使用することができる。さらに他の実施形態では、ハイパーバイザ302は、仮想化サーバ301上で実行する仮想マシン332のプロセッサスケジューリングおよびメモリパーティショニングを制御する。ハイパーバイザ302は、カリフォルニア州パロアルトのVMWare社によって製造されたもの、オープンソースのXenProject.orgコミュニティによって開発が監督されているオープンソース製品であるXENPROJECTハイパーバイザ、マイクロソフトによって提供されるHyperV、VirtualServer、または仮想PCハイパーバイザなどを含むことができる。ある実施形態では、仮想化サーバ301は、ゲストオペレーティングシステムが実行可能な仮想マシンプラットフォームを形成するハイパーバイザ302を実行する。これらの実施形態では、仮想化サーバ301は、ホストサーバと呼ばれてもよい。そのような仮想化サーバの例は、フロリダ州フォートローダーデールのシトリックス・システム社によって提供されるXENSERVERである。
ハイパーバイザ302は、ゲストオペレーティングシステム330が実行する1つ以上の仮想マシン332B−C(一般には332)を形成することができる。ある実施形態では、ハイパーバイザ302は、仮想マシンイメージをロードして仮想マシン332を形成することができる。他の実施形態では、ハイパーバイザ302は、仮想マシン332内のゲストオペレーティングシステム330を実行することができる。さらに他の実施形態では、仮想マシン332は、ゲストオペレーティングシステム330を実行することができる。
仮想マシン332を形成することに加えて、ハイパーバイザ302は、少なくとも1つの仮想マシン332の実行を制御することができる。他の実施形態では、ハイパーバイザ302は、仮想化サーバ301によって提供される少なくとも1つのハードウェアリソース(例えば、ハードウェア層310内で利用可能な任意のハードウェアリソース)の抽象化を少なくとも1つの仮想マシン332に提示することができる。他の実施形態では、ハイパーバイザ302は、仮想マシン332が仮想化サーバ301内で利用可能な物理プロセッサ308にアクセスする方法を制御することができる。物理プロセッサ308へのアクセスを制御することは、仮想マシン332がプロセッサ308へのアクセスを有するべきかどうか、および物理プロセッサ能力が仮想マシン332にどのように提示されるかを判定することを含むことができる。
図3に示すように、仮想化サーバ301は、1つ以上の仮想マシン332をホストするまたは実行することができる。仮想マシン332は、プロセッサ308によって実行するときに、仮想マシン332が物理的コンピューティングデバイスのように多くのプログラムおよびプロセスを実行することができるように、物理コンピュータの稼働を模倣する実行可能命令のセットである。図3は、仮想化サーバ301が3つの仮想マシン332をホストする実施形態を示すが、他の実施形態では、仮想化サーバ301は、任意数の仮想マシン332をホストすることができる。ハイパーバイザ302は、ある実施形態では、その仮想マシン332に利用可能な物理ハードウェア、メモリ、プロセッサおよび他のシステムリソースの固有の仮想ビューを各仮想マシン332に提供する。ある実施形態では、固有の仮想ビューは、1つ以上の仮想マシン許可、1つ以上の仮想マシン識別子へのポリシーエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシン上で実行するアプリケーション、仮想マシンによってアクセスされるネットワーク、または任意の他の所望の基準に基づくことができる。例えば、ハイパーバイザ302は、1つ以上のセキュアではない仮想マシン332、および1つ以上のセキュアである仮想マシン332を形成することができる。セキュアではない仮想マシン332が、セキュアである仮想マシン332のアクセスが許可され得るリソース、ハードウェア、メモリロケーション、およびプログラムにアクセスすることを防止することができる。他の実施形態では、ハイパーバイザ302は、仮想マシン332に利用可能な物理ハードウェア、メモリ、プロセッサおよび他のシステムリソースの略同様の仮想ビューを各仮想マシン332に提供することができる。
各仮想マシン332は、仮想ディスク326A−C(一般には326)および仮想プロセッサ328A−C(一般には328)を含むことができる。仮想ディスク326は、ある実施形態では、仮想化サーバ301の1つ以上の物理ディスク304、または仮想化サーバ301の1つ以上の物理ディスク304の一部の仮想化されたビューである。物理ディスク304の仮想化されたビューは、ハイパーバイザ302によって生成する、提供する、および管理することができる。ある実施形態では、ハイパーバイザ302は、各仮想マシン332に物理ディスク304の固有のビューを提供する。従って、これらの実施形態では、各仮想マシン332に含まれる特定の仮想ディスク326は、他の仮想ディスク326と比較した場合に固有であり得る。
仮想プロセッサ328は、仮想化サーバ301の1つ以上の物理プロセッサ308の仮想化されたビューとすることができる。ある実施形態では、物理プロセッサ308の仮想化されたビューは、ハイパーバイザ302によって生成する、提供する、及び管理することができる。ある実施形態では、仮想プロセッサ328は、少なくとも1つの物理プロセッサ308の全ての同じ特性を実質的に有する。他の実施形態では、仮想プロセッサ308は、仮想プロセッサ328の特性の少なくとも一部が対応する物理プロセッサ308の特性と異なるように、物理プロセッサ308の修正されたビューを提供する。
図4をさらに参照すると、本明細書に記載されるある態様は、クラウドベース環境において実装されてもよい。図4は、クラウドコンピューティング環境(またはクラウドシステム)400の例を示す。図4に示すように、クライアントコンピュータ411−414は、クラウド管理サーバ410と通信して、クラウドシステムのコンピューティングリソース(例えば、ホストサーバ403、記憶装置リソース404、およびネットワークリソース405)にアクセスすることができる。
管理サーバ410は、1つ以上の物理サーバ上に実装されてもよい。管理サーバ410は、とりわけ、例えばフロリダ州フォートローダーデールのシトリックス・システム社によるCLOUDPLATFORM、またはOPENSTACKを実行することができる。管理サーバ410は、例えば、ホストコンピュータ403、データ記憶装置404、およびネットワーキング装置405などのクラウドハードウェアおよびソフトウェアリソースを含む様々なコンピューティングリソースを管理することができる。クラウドハードウェアおよびソフトウェアリソースは、プライベートおよび/またはパブリックコンポーネントを含むことができる。例えば、クラウドは、1つ以上の特定の顧客またはクライアントコンピュータ411−414によって、および/またはプライベートネットワークを介して使用されるプライベートクラウドとして構成されてもよい。他の実施形態では、オープンまたはハイブリッドネットワークを介して、他の顧客によってパブリッククラウドまたはハイブリッドパブリック・プライベートクラウドが使用されてもよい。
管理サーバ410は、クラウドオペレータおよびクラウド顧客が、クラウドシステムと対話することができるユーザインターフェースを提供するように構成することができる。例えば、管理サーバ410は、クラウドオペレータがクラウドリソースを管理し、仮想化層を構成し、顧客アカウントを管理し、及び他のクラウド管理タスクを実行することを可能にするために、ユーザインターフェースを有するアプリケーションプログラミングインターフェース(API)のセットおよび/または1つ以上のクラウドオペレータコンソールアプリケーション(例えば、スタンドアロンアプリケーション上のウェブベース)を提供することができる。管理サーバ410はまた、例えば、クラウド内の仮想マシンを形成、変更または破壊するリクエストなど、クライアントコンピュータ411−414を介してエンドユーザからクラウドコンピューティングリクエストを受信するように構成されたユーザインターフェースを有するAPIのセットおよび/または1つ以上の顧客コンソールアプリケーションを含むことができる。クライアントコンピュータ411−414は、インターネットまたは他の通信ネットワークを介して管理サーバ410に接続して、管理サーバ410によって管理されるコンピューティングリソースのうちの1つ以上へのアクセスを要求することができる。クライアントリクエストに応じて、管理サーバ410は、クライアントリクエストに基づいて、クラウドシステムのハードウェア層内の物理リソースを選択して提供するように構成されたリソースマネージャを含むことができる。例えば、管理サーバ410およびクラウドシステムの追加コンポーネントは、ネットワーク(例えば、インターネット)を介して、クライアントコンピュータ411−414において、顧客のために仮想マシンおよびその稼働環境(例えば、ハイパーバイザ、記憶装置リソース、ネットワーク要素によって提供されるサービスなど)を設定、形成および管理するように構成されることができ、計算リソース、データ記憶サービス、ネットワーキング能力、並びにコンピュータプラットフォームおよびアプリケーションサポートを顧客に提供する。クラウドシステムはまた、セキュリティシステム、開発環境、ユーザインターフェースなどを含む様々な特定のサービスを提供するように構成されてもよい。
特定のクライアント411−414は、例えば、同じエンドユーザ、または同じ会社もしくは組織に所属する異なるユーザに代わって、仮想マシンを形成する異なるクライアントコンピュータに関連することができる。他の例では、特定のクライアント411−414は、異なる会社または組織に所属するユーザなど、無関係であってもよい。無関係なクライアントの場合、仮想マシンまたは任意の1人のユーザの記憶装置に関する情報は、他のユーザから隠されていてもよい。
ここで、クラウドコンピューティング環境の物理ハードウェア層を参照すると、利用可能領域401−402(または領域)は、物理的コンピューティングリソースの併置されたセットを指すことができる。領域は、コンピューティングリソースのクラウド全体における他の領域から地理的に離れていてもよい。例えば、領域401は、カリフォルニアに位置する第1のクラウドデータセンターであり、領域402は、フロリダに位置する第2のクラウドデータセンターである。管理サーバ410は、利用可能領域の1つに、または別の場所に配置されることができる。各領域は、ゲートウェイを介して、管理サーバ410などの領域外にあるデバイスとインターフェースする内部ネットワークを含むことができる。クラウドのエンドユーザ(例えば、クライアント411−414)は、領域間の区別を認知していることもあれば認知していないこともある。例えば、エンドユーザは、指定された量のメモリ、処理能力、およびネットワーク能力を有する仮想マシンの形成を要求することができる。管理サーバ410は、ユーザのリクエストに応答することができ、仮想マシンが領域401または領域402からのリソースを使用して形成されたかどうかをユーザが知ることなく、仮想マシンを形成するためにリソースを割り当てることができる。他の例では、クラウドシステムは、エンドユーザが、特定領域または領域内の特定のリソース403−405に仮想マシン(または他のクラウドリソース)を割り当てることを要求することを可能にすることができる。
この例では、各領域401−402は、例えば、物理ホスティングリソース(または処理リソース)、物理ネットワークリソース、物理記憶装置リソース、スイッチ、および顧客にクラウドコンピューティングサービスを提供するために使用することができる追加のハードウェアリソースなどの様々な物理ハードウェアコンポーネント(またはコンピューティングリソース)403−405の構成を含むことができる。クラウド領域401−402内の物理ホスティングリソースは、仮想マシンインスタンスを形成してホストするように構成することができる上述の仮想化サーバ301などの1つ以上のコンピュータサーバ403を含むことができる。クラウド領域401または402内の物理ネットワークリソースは、ファイアウォール、ネットワークアドレス変換器、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、ダイナミックホストコンフィギュレーションプロトコル(DHCP)ルータなど、クラウド顧客にネットワークサービスを提供するように構成されたハードウェアおよび/またはソフトウェアを備える1つ以上のネットワーク要素405(例えば、ネットワークサービスプロバイダ)を含むことができる。クラウド領域401−402内の記憶装置リソースは、記憶装置ディスク(例えば、ソリッドステートドライブ(SSD)、磁気ハードディスクなど)および他の記憶装置を含むことができる。
図4に示される例示的なクラウドコンピューティング環境はまた、仮想マシンを形成および管理し、クラウド内の物理リソースを使用する顧客に他のサービスを提供するように構成された追加のハードウェアおよび/またはソフトウェアリソースを有する(例えば、図1−図3に示されるような)仮想化層を含むことができる。仮想化層は、図3において上述したように、ネットワーク仮想化、記憶装置仮想化などを提供するために、他のコンポーネントとともにハイパーバイザを含むことができる。仮想化層は、物理リソース層とは別個の層であってもよく、または同じハードウェアおよび/またはソフトウェアリソースの一部または全部を物理リソース層と共有してもよい。例えば、仮想化層は、物理コンピューティングリソースとともに各仮想化サーバ403にインストールされたハイパーバイザを含むことができる。例えば、WINDOWS(登録商標) AZURE(ワシントン州レドモンドのマイクロソフトコーポレーション)、AMAZON EC2(ワシントン州シアトルのアマゾン.com社)、IBM BLUE CLOUD(ニューヨーク州アーモンクのIBM社)などの公知のクラウドシステムが代わりに使用されてもよい。
企業モビリティ管理アーキテクチャ
図5は、BYOD環境で使用する企業モビリティ技術アーキテクチャ500を表す。アーキテクチャは、モバイルデバイス502のユーザが、モバイルデバイス502から企業または個人リソースにアクセスすることおよびモバイルデバイス502を個人的な使用のために使用することの双方を可能にする。ユーザは、ユーザによって購入されたモバイルデバイス502または企業によってユーザに提供されたモバイルデバイス502を使用して、そのような企業リソース504または企業サービス508にアクセスすることができる。ユーザは、業務用のみまたは業務用および個人用のためにモバイルデバイス502を利用することができる。モバイルデバイスは、iOSオペレーティングシステム、およびアンドロイドオペレーティングシステムなどを実行することができる。企業は、モバイルデバイス504を管理するためのポリシーを実装することを選択することができる。ポリシーは、モバイルデバイスが識別され、セキュアであるかもしくはセキュリティ検証され、企業リソースへの選択的または完全なアクセスが提供されるように、ファイアウォールまたはゲートウェイを介して埋め込まれてもよい。ポリシーは、モバイルデバイス管理ポリシー、モバイルアプリケーション管理ポリシー、モバイルデータ管理ポリシー、またはモバイルデバイス、アプリケーション、およびデータ管理ポリシーのいくつかの組み合わせであってもよい。モバイルデバイス管理ポリシーのアプリケーションを介して管理されるモバイルデバイス504は、登録デバイスと呼ばれてもよい。
ある実施形態では、モバイルデバイスのオペレーティングシステムは、管理パーティション510および非管理パーティション512に分離することができる。管理パーティション510は、管理パーティション上で実行するアプリケーションおよび管理パーティションに記憶されたデータを保護するために、適用されるポリシーを有することができる。管理パーティション上で実行されているアプリケーションは、セキュアアプリケーションとすることができる。他の実施形態では、全てのアプリケーションは、アプリケーションとは別に受信した1つ以上のポリシーファイルのセットにしたがって実行することができ、ポリシーファイルは、1つ以上のセキュリティパラメータ、特徴、リソース制限、および/またはそのアプリケーションがデバイス上で実行されているときにモバイルデバイス管理システムによって実行する他のアクセスコントロールを定義する。それぞれのポリシーファイルにしたがって動作することにより、各アプリケーションは、1つ以上の他のアプリケーションおよび/またはリソースとの通信を許可または制限されることができ、それによって仮想パーティションを形成することができる。したがって、本明細書では、パーティションは、メモリの物理的に区画化された部分(物理パーティション)、メモリの論理的に区画化された部分(論理パーティション)、および/または1つ以上のポリシーおよび/または本明細書に記載された複数のアプリケーションにまたがるポリシーファイルの実行の結果として形成される仮想パーティション(仮想パーティション)としてもよい。他の言い方をすれば、管理アプリケーション上でポリシー実行することにより、それらのアプリケーションは、他の管理アプリケーションおよび信頼できる企業リソースとだけ通信可能であるように制限されることができ、それによって管理されていないアプリケーションおよびデバイスによる侵入が不可能な仮想パーティションを形成する。
セキュアアプリケーションは、電子メールアプリケーション、ウェブブラウジングアプリケーション、ソフトウェア・アズ・ア・サービス(SaaS)アクセスアプリケーション、ウィンドウズ(登録商標)アプリケーションアクセスアプリケーションなどであってもよい。セキュアアプリケーションは、セキュアネイティブアプリケーション514、セキュアアプリケーションランチャ518によって実行するセキュアリモートアプリケーション522、セキュアアプリケーションランチャ518によって実行する仮想化アプリケーション526などであってもよい。セキュアネイティブアプリケーション514は、セキュアアプリケーションラッパー520によってラップされていてもよい。セキュアアプリケーションラッパー520は、セキュアネイティブアプリケーションがデバイス上で実行するときにモバイルデバイス502上で実行する統合ポリシーを含むことができる。セキュアアプリケーションラッパー520は、セキュアネイティブアプリケーション514が、セキュアネイティブアプリケーション514の実行時に要求されるタスクを完了するために必要とすることがある企業でホストされているリソースに対して、モバイルデバイス502上で実行されているセキュアネイティブアプリケーション514をポイントするメタデータを含むことができる。セキュアアプリケーションランチャ518によって実行するセキュアリモートアプリケーション522は、セキュアアプリケーションランチャアプリケーション518内で実行されてもよい。セキュアアプリケーションランチャ518によって実行する仮想化アプリケーション526は、企業リソース504などでモバイルデバイス502上のリソースを利用することができる。セキュアアプリケーションランチャ518によって実行する仮想化アプリケーション526によってモバイルデバイス502上で使用されるリソースは、ユーザ対話リソース、処理リソースなどを含むことができる。ユーザ対話リソースは、キーボード入力、マウス入力、カメラ入力、触覚入力、音声入力、視覚入力、ジェスチャ入力などを収集して送信するために使用することができる。処理リソースは、ユーザインターフェース、企業リソース504から受信したプロセスデータなどを提示するために使用することができる。セキュアアプリケーションランチャ518によって実行する仮想化アプリケーション526によって企業リソース504で使用されるリソースは、ユーザインターフェース生成リソース、処理リソースなどを含むことができる。ユーザインターフェース生成リソースは、ユーザインターフェースをアセンブルし、ユーザインターフェースを変更し、ユーザインターフェースをリフレッシュするなどのために使用することができる。処理リソースは、情報の生成、情報の読み取り、情報の更新、情報の削除などに使用することができる。例えば、仮想化アプリケーションは、グラフィカルユーザインターフェース(GUI)に関連するユーザ対話を記録し、サーバアプリケーションがサーバ上で動作するアプリケーションへの入力としてユーザ対話データを使用するサーバアプリケーションに、それらを通信することができる。この構成では、企業は、アプリケーションに関連するデータ、ファイルなどと同様に、サーバ側でアプリケーションを維持するように選択することができる。企業は、モバイルデバイス上に装備するためにそれらを保護することによって本明細書の原理に従っていくつかのアプリケーションを「動員」するように選択することができるが、この構成はまた、特定のアプリケーションのために選択することができる。例えば、一部のアプリケーションは、モバイルデバイス上で使用するために保護することができるが、他は、モバイルデバイス上での装備のために準備されないかまたは適切でないかもしれないため、企業は、仮想化技術を介して準備されないアプリケーションに対するモバイルユーザアクセスを提供するように選択することができる。別の一例として、企業は、モバイルデバイスにとってアプリケーションをカスタマイズすることが非常に困難であるかまたは望ましくない大規模且つ複雑なデータセットを有する大規模で複雑なアプリケーション(例えば、物質リソース計画アプリケーション)を有することがあるため、仮想化技術を介してアプリケーションに対するアクセスを提供するように選択することができる。さらに別の一例として、企業は、セキュアなモバイル環境ではセンシティブすぎると企業が見なし得る高度にセキュアなデータ(例えば、人事データ、顧客データ、エンジニアリングデータ)を維持するアプリケーションを有することがあるため、仮想化技術を使用して、そのようなアプリケーションおよびデータへのモバイルアクセスを可能にするように選択することができる。企業は、サーバ側でより適切に動作すると見なされるアプリケーションに対するアクセスを可能にするように、モバイルデバイス上に完全にセキュアであり、完全に機能するアプリケーション、並びに仮想化アプリケーションを提供するように選択することができる。一実施形態では、仮想化アプリケーションは、セキュアな記憶場所の1つに携帯電話上のデータ、ファイルなどを記憶することができる。例えば、企業は、特定の情報が電話に記憶されるのを可能にしつつ、他の情報は許可しないように選択することができる。
本明細書に記載されるように、仮想化アプリケーションに関連して、モバイルデバイスは、GUIを提示した後にGUIとのユーザ対話を記録するように設計された仮想化アプリケーションを有することができる。アプリケーションは、アプリケーションとのユーザ対話として、サーバ側アプリケーションによって使用されるようにサーバ側へのユーザ対話を通信することができる。それに応答して、サーバ側のアプリケーションは、新たなGUIをモバイルデバイスに送返することができる。例えば、新たなGUIは、静的ページ、動的ページ、アニメーションなどとすることができ、それにより、遠隔に位置するリソースへのアクセスを提供する。
セキュアアプリケーションは、モバイルデバイスの管理パーティション510内のセキュアデータコンテナ528に記憶されたデータにアクセスすることができる。セキュアデータコンテナに確保されたデータは、セキュアラップアプリケーション514、セキュアアプリケーションランチャ522によって実行するアプリケーション、セキュアアプリケーションランチャ522によって実行する仮想化アプリケーション526などによってアクセスすることができる。セキュアデータコンテナ528に記憶されるデータは、ファイル、データベースなどを含むことができる。セキュアデータコンテナ528に記憶されるデータは、特定のセキュアアプリケーション530に制限されたデータ、セキュアアプリケーション532の間で共有されるデータなどを含むことができる。セキュアアプリケーションに制限されたデータは、セキュアな一般データ534および高度にセキュアなデータ538を含むことができる。セキュアな一般データは、拡張暗号化標準(AES)128ビット暗号化などの強力な形式の暗号化を使用することができる一方で、高度にセキュアなデータ538は、AES256ビット暗号化などの非常に強力な形式の暗号化を使用することができる。セキュアデータコンテナ528に記憶されたデータは、デバイスマネージャ524からコマンドを受信し次第、デバイスから削除することができる。セキュアアプリケーションは、デュアルモードオプション540を有することができる。デュアルモードオプション540は、セキュアでないまたは管理されていないモードでセキュアアプリケーションを動作させるためのオプションをユーザに提示することができる。セキュアでないまたは管理されていないモードでは、セキュアアプリケーションは、モバイルデバイス502の管理されていないパーティション512上のセキュアでないデータコンテナ542に記憶されたデータにアクセスすることができる。セキュアでないデータコンテナに記憶されるデータは、個人データ544であってもよい。セキュアでないデータコンテナ542に記憶されたデータはまた、モバイルデバイス502の管理されていないパーティション512上で実行されているセキュアでないアプリケーション548によってアクセスされてもよい。セキュアでないデータコンテナ542に記憶されたデータは、セキュアデータコンテナ528に記憶されたデータがモバイルデバイス502から削除されたとき、モバイルデバイス502上に残っていてもよい。企業は、企業によって所有される、ライセンスされたまたは管理される、選択されたまたは全てのデータ、ファイル、および/またはアプリケーション(企業データ)を、モバイルデバイスから削除する一方で、ユーザによって所有される、ライセンスされたまたは管理される個人データ、ファイル、および/またはアプリケーション(個人データ)を残しておくことまたは保存することを望むことがある。この動作は、選択的ワイプと呼ばれてもよい。本明細書に記載された態様に従って配置された企業および個人データにより、企業は、選択的ワイプを実行することができる。
モバイルデバイスは、企業における企業リソース504および企業サービス508、パブリックインターネット548などに接続することができる。モバイルデバイスは、仮想プライベートネットワーク接続を介して企業リソース504および企業サービス508に接続することができる。マイクロVPNまたはアプリケーション固有VPNとも呼ばれる仮想プライベートネットワーク接続は、特定のアプリケーション550、特定のデバイス、モバイルデバイス上の特定のセキュア領域552などに固有のものであってもよい。例えば、電話のセキュア領域内のラップアプリケーションのそれぞれは、場合によってはユーザまたはデバイス属性情報とあわせて、アプリケーションに関連する属性に基づいてVPNへのアクセスが与えられるように、アプリケーション固有VPNを介して企業リソースにアクセスすることができる。仮想プライベートネットワーク接続は、マイクロソフト・エクスチェンジ・トラフィック、マイクロソフト・アクティブ・ディレクトリ・トラフィック、ハイパーテキスト転送プロトコル(HTTP)・トラフィック、ハイパーテキスト転送プロトコル・セキュア(HTTPS)・トラフィック、アプリケーション管理トラフィックなどを伝送することができる。仮想プライベートネットワーク接続は、シングルサインオン認証プロセス554をサポートしてイネーブルにすることができる。シングルサインオンプロセスは、その後に認証サービス558によって検証される認証情報の単一セットをユーザが提供するのを可能にすることができる。そして、認証サービス558は、個々の企業リソース504に対する認証情報を提供することをユーザに要求することなく、複数の企業リソース504へのアクセスをユーザに与えることができる。
仮想プライベートネットワーク接続は、アクセスゲートウェイ560によって確立されて管理されてもよい。アクセスゲートウェイ560は、モバイルデバイス502への企業リソース504の配信を管理し、加速し、及び改善する性能向上機能を含むことができる。アクセスゲートウェイはまた、モバイルデバイス502からパブリックインターネット548へのトラフィックをリルートすることができ、モバイルデバイス502がパブリックインターネット548上で動作するパブリックに利用可能であり且つセキュアでないアプリケーションにアクセスすることを可能にする。モバイルデバイスは、トランスポートネットワーク562を介してアクセスゲートウェイに接続することができる。トランスポートネットワーク562は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、プライベートネットワークなどとすることができる。
企業リソース504は、電子メールサーバ、ファイル共有サーバ、SaaSアプリケーション、ウェブアプリケーションサーバ、ウィンドウズ(登録商標)アプリケーションサーバなどを含むことができる。電子メールサーバは、エクスチェンジサーバ、ロータス・ノーツサーバなどを含むことができる。ファイル共有サーバは、ShareFileサーバなどを含むことができる。SaaSアプリケーションは、セールスフォースなどを含むことができる。ウィンドウズ(登録商標)アプリケーションサーバは、ローカルのウィンドウズ(登録商標)オペレーティングシステム上で実行することが意図されたアプリケーションなどを提供するように構築された、任意のアプリケーションサーバを含むことができる。企業リソース504は、構内ベースのリソース、クラウドベースのリソースなどであってもよい。企業リソース504は、モバイルデバイス502によって直接またはアクセスゲートウェイ560を介してアクセスされてもよい。企業リソース504は、トランスポートネットワーク562を介してモバイルデバイス502によってアクセスされてもよい。トランスポートネットワーク562は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、プライベートネットワークなどとすることができる。
企業サービス508は、認証サービス558、脅威検出サービス564、デバイスマネージャサービス524、ファイル共有サービス568、ポリシーマネージャサービス570、ソーシャル統合サービス572、アプリケーションコントローラサービス574などを含むことができる。認証サービス558は、ユーザ認証サービス、デバイス認証サービス、アプリケーション認証サービス、データ認証サービスなどを含むことができる。認証サービス558は、証明書を使用してもよい。証明書は、企業リソース504などによってモバイルデバイス502上に記憶されてもよい。モバイルデバイス502に記憶された証明書は、モバイルデバイス上の暗号化された場所に記憶されてもよく、証明書は、認証時に使用するためにモバイルデバイス502に一時的に記憶などされてもよい。脅威検出サービス564は、侵入検出サービス、不正アクセス試行検出サービスなどを含むことができる。不正アクセス試行検出サービスは、デバイス、アプリケーション、データなどへの不正なアクセス試行を含むことができる。デバイス管理サービス524は、構成、プロビジョニング、セキュリティ、サポート、監視、報告、およびサービスの廃止を含むことができる。ファイル共有サービス568は、ファイル管理サービス、ファイル記憶サービス、ファイル協働サービスなどを含むことができる。ポリシーマネージャサービス570は、デバイスポリシーマネージャサービス、アプリケーションポリシーマネージャサービス、データポリシーマネージャサービスなどを含むことができる。ソーシャル統合サービス572は、連絡先統合サービス、協働サービス、フェイスブック、ツイッター(登録商標)、およびリンクトインなどのソーシャルネットワークとの統合などを含むことができる。アプリケーションコントローラサービス574は、管理サービス、プロビジョニングサービス、開発サービス、割り当てサービス、失効サービス、ラッピングサービスなどを含むことができる。
企業モビリティ技術アーキテクチャ500は、アプリケーションストア578を含むことができる。アプリケーションストア578は、アンラップされたアプリケーション580、事前ラップされたアプリケーション582などを含むことができる。アプリケーションは、アプリケーションコントローラ574からアプリケーションストア578に投入されてもよい。アプリケーションストア578は、アクセスゲートウェイ560、パブリックインターネット548などを介して、モバイルデバイス502によってアクセスされてもよい。アプリケーションストアは、直感的で使いやすいユーザインターフェースを備えることができる。
ソフトウェア開発キット584は、本明細書で前述したように、アプリケーションをラッピングすることによって、ユーザによって選択されたアプリケーションを保護する能力をユーザに提供することができる。そして、ソフトウェア開発キット584を使用してラッピングされたアプリケーションは、アプリケーションコントローラ574を使用してアプリケーションストア578にそれを投入することによって、モバイルデバイス502に利用可能にすることができる。
企業モビリティ技術アーキテクチャ500は、管理および分析機能588を含むことができる。管理および分析機能588は、リソースの使用方法、リソースの使用頻度などに関連する情報を提供することができる。リソースは、デバイス、アプリケーション、データなどを含むことができる。リソースの使用方法は、どのデバイスがどのアプリケーションをダウンロードし、どのアプリケーションがどのデータにアクセスするかなどを含むことができる。リソースの使用頻度は、アプリケーションがダウンロードされた頻度、アプリケーションによって特定のデータセットがアクセスされた回数などを含むことができる。
図6は、別の例示的な企業モビリティ管理システム600である。図5を参照して上述したモビリティ管理システム500のコンポーネントのいくつかは、簡略化するために省略されている。図6に示されるシステム600のアーキテクチャは、多くの点で、図5を参照して上述したシステム500のアーキテクチャと同様であり、上述していない追加の特徴を含むことができる。
この場合、左側は、上記右側に示されるように、エクスチェンジ、共有ポイント、公開鍵インフラストラクチャ(PKI)リソース、ケルベロスリソース、証明書発行サービスなどの、様々な企業リソース608およびサービス609にアクセスするために(アクセスゲートウェイおよびアプリケーションコントローラ機能を含む)ゲートウェイサーバ606と対話するクライアントエージェント604を有する、登録されたモバイルデバイス602を表している。具体的に示されていないが、モバイルデバイス602はまた、アプリケーションの選択およびダウンロードのために企業アプリケーションストア(ストアフロント)と対話することもできる。
クライアントエージェント604は、高解像度ユーザ体験(HDX)/ICAディスプレイリモーティングプロトコルを使用してアクセスされる企業データセンターでホストされたウィンドウズ(登録商標)アプリケーション/デスクトップのためのUI(ユーザインターフェース)仲介として機能する。クライアントエージェント604はまた、ネイティブiOSまたはアンドロイドアプリケーションなどのネイティブアプリケーションのモバイルデバイス602上へのインストールおよび管理をサポートする。例えば、図6に示される管理対象アプリケーション610(メール、ブラウザ、ラップされたアプリケーション)は、全てデバイス上でローカルに実行するネイティブアプリケーションである。クライアントエージェント604およびこのアーキテクチャのアプリケーション管理フレームワークは、接続およびSSO(シングルサインオン)などのポリシー駆動管理機能および特徴を企業リソース/サービス608に提供するように機能する。クライアントエージェント604は、他のゲートウェイサーバコンポーネントへのSSOを用いて、企業に対する、通常はアクセスゲートウェイ(AG)に対するプライマリユーザ認証を処理する。クライアントエージェント604は、ゲートウェイサーバ606からポリシーを取得して、モバイルデバイス602上の管理対象アプリケーション610の挙動を制御する。
ネイティブアプリケーション610とクライアントエージェント604との間のセキュアプロセス間通信(IPC)リンク612は、クライアントエージェントが各アプリケーションを「ラッピング」するアプリケーション管理フレームワーク614によって実行するポリシーを供給することを可能にする管理チャネルを表す。IPCチャネル612はまた、クライアントエージェント604が、企業リソース608への接続およびSSOを可能にする認証証明書および認証情報を供給することを可能にする。最後に、IPCチャネル612は、アプリケーション管理フレームワーク614が、オンラインおよびオフライン認証などの、クライアントエージェント604によって行われるユーザインターフェース機能を呼び出すことを可能にする。
クライアントエージェント604とゲートウェイサーバ606との間の通信は、本質的に、各ネイティブ管理対象アプリケーション610をラッピングするアプリケーション管理フレームワーク614からの管理チャネルの拡張である。アプリケーション管理フレームワーク614は、クライアントエージェント604からポリシー情報を要求し、順を追ってクライアントエージェント604は、ゲートウェイサーバ606からそれを要求する。アプリケーション管理フレームワーク614は、認証を要求し、そしてクライアントエージェント604は、(NetScalerアクセスゲートウェイとしても知られる)ゲートウェイサーバ606のゲートウェイサービス部分にログインする。クライアントエージェント604はまた、以下でより詳細に説明するように、ローカルデータボールト616の暗号鍵を導出するための入力材料を生成することができる、またはPKI保護されたリソースへの直接認証を可能にすることができるクライアント証明書を提供することができる、ゲートウェイサーバ606上のサポートサービスを呼び出すこともできる。
より詳細には、アプリケーション管理フレームワーク614は、各管理対象アプリケーション610を「ラップする」。これは、明示的な構築ステップ、または構築後の処理ステップを介して組み込むことができる。アプリケーション管理フレームワーク614は、セキュアIPCチャネルを初期化するようにアプリケーション610の最初の起動時にクライアントエージェント604と「ペアリング」し、そのアプリケーションのポリシーを取得することができる。アプリケーション管理フレームワーク614は、クライアントエージェントのログイン依存性や、ローカルOSサービスの使用方法またはアプリケーション610との対話方法を制限するいくつかの包含ポリシーなど、ローカルに適用されるポリシーの関連部分を実行することができる。
アプリケーション管理フレームワーク614は、セキュアIPCチャネル612を介してクライアントエージェント604によって提供されるサービスを使用して、認証および内部ネットワークアクセスを容易にすることができる。プライベートおよび共有データボールト616(コンテナ)の鍵管理はまた、管理対象アプリケーション610とクライアントエージェント604との間の適切な対話によっても管理することができる。ボールト616は、オンライン認証後にのみ利用可能であってもよく、またはポリシーによって許可されている場合にはオフライン認証後に利用可能とされてもよい。ボールト616の最初の使用は、オンライン認証を必要としてもよく、オフラインアクセスは、オンライン認証が再び要求される前に、最大でもポリシーリフレッシュ期間まで制限されてもよい。
内部リソースへのネットワークアクセスは、個々の管理対象アプリケーション610からアクセスゲートウェイ606を介して直接発生してもよい。アプリケーション管理フレームワーク614は、各アプリケーション610に代わってネットワークアクセスを編成する役割を担う。クライアントエージェント604は、オンライン認証の後に取得される適切に時間制限された二次認証情報を提供することによって、これらのネットワーク接続を容易にすることができる。リバースウェブプロキシ接続およびエンドツーエンドVPNスタイルトンネル618など、複数のモードのネットワーク接続を使用することができる。
メールおよびブラウザ管理対象アプリケーション610は、特別な状態を有し、任意にラップされたアプリケーションに対して一般に利用可能ではない可能性があるファシリティを利用することができる。例えば、メールアプリケーションは、完全なAGログオンを必要とせずに長時間にわたってエクスチェンジにアクセスするのを可能にする、特別なバックグラウンドネットワークアクセス機構を使用してもよい。ブラウザアプリケーションは、異なる種類のデータを分離するために、複数のプライベートデータボールトを使用してもよい。
このアーキテクチャは、他の様々なセキュリティ機能の組み込みをサポートする。例えば、ゲートウェイサーバ606(そのゲートウェイサービスを含む)は、場合によっては、アクティブディレクトリ(AD)パスワードを検証する必要がない。状況によっては、一部のユーザに対してADパスワードが認証要素として使用されるかどうかは、企業の裁量に委ねることができる。ユーザがオンラインまたはオフラインである(すなわち、ネットワークに接続されているかまたはネットワークに接続されていない)場合、異なる認証方法が使用されてもよい。
ステップアップ認証は、ゲートウェイサーバ606が強力な認証を必要とする高度な機密データへのアクセスを有することが許可された管理対象ネイティブアプリケーション610を識別することができ、これが以前のより弱いレベルのログイン後にユーザによって再認証が要求されることを意味する場合であっても、これらのアプリケーションへのアクセスが適切な認証を行った後にのみ許可されることを保証することができる機能である。
この解決策の他のセキュリティ機能は、モバイルデバイス602上のデータボールト616(コンテナ)の暗号化である。ボールト616は、ファイル、データベース、および構成を含む全てのデバイス上のデータが保護されるように暗号化することができる。オンラインボールトの場合、鍵はサーバ(ゲートウェイサーバ606)に記憶されることができ、オフラインボールトの場合、鍵のローカルコピーは、ユーザパスワードまたは生体検証によって保護することができる。データがセキュアコンテナ616内のデバイス602にローカルに記憶されるときは、最小限のAES256暗号化アルゴリズムを利用することが好ましい。
他のセキュアなコンテナ機能も実装することができる。例えば、アプリケーション610の内部で起こっている全てのセキュリティイベントがログされてバックエンドに報告されるロギング機能が含まれてもよい。アプリケーション610が改ざんを検出した場合などには、関連する暗号化鍵がランダムデータによって上書きされることができ、ユーザデータが破壊された旨のヒントはファイルシステムに残らないデータワイプがサポートされてもよい。スクリーンショット保護は、アプリケーションがスクリーンショットにデータが記憶されるのを防止することができる別の機能である。例えば、キーウィンドウの隠しプロパティをYESに設定することができる。これは、結果として画面上に現在表示されているコンテンツを隠すことができ、コンテンツが通常存在するところに空白のスクリーンショットをもたらすことができる。
ローカルデータ転送を、例えば、コピーすることによってまたは外部アプリケーションに送信することによって、いかなるデータもアプリケーションコンテナの外部にローカルに転送されるのを防止するなどで、防止することができる。キーボードキャッシュ機能は、機密テキストフィールドの自動修正機能を無効にするように動作することができる。SSL証明書の検証が動作可能であるため、アプリケーションは、鍵チェーンに記憶する代わりにサーバSSL証明書を具体的に検証する。デバイス上のデータを暗号化するために使用される鍵がユーザによって供給されるパスフレーズまたは生体データ(オフラインアクセスが要求される場合)を使用して生成されるように、暗号化鍵生成機能を使用することができる。オフラインアクセスが要求されない場合、サーバ側でランダムに生成されて記憶された他の鍵とXOR演算されてもよい。鍵導出関数は、ユーザパスワードから生成された鍵がその暗号ハッシュを形成するのではなく、KDF(鍵導出関数、特にパスワードベースの鍵導出関数2(PBKDF2))を使用するように動作することができる。後者は、ブルートフォース攻撃または辞書攻撃の影響を受けやすい鍵を形成する。
さらに、1つ以上の初期化ベクトルを暗号化方法に使用することができる。初期化ベクトルは、同じ暗号化データの複数のコピーを生成し、異なる暗号文出力をもたらし、再生および暗号解読攻撃の双方を防止する。これはまた、データを暗号化するために使用された特定の初期化ベクトルがわからない場合、盗まれた暗号化鍵を用いたとしても、攻撃者がいかなるデータを復号することを防止する。さらに、ユーザがアプリケーション内で認証された後にのみアプリケーションデータが復号される認証後復号が使用されてもよい。他の機能は、必要なときにのみメモリ(ディスクではない)に保持することができるメモリ内の機密データに関連することができる。例えば、ログイン後にログイン認証情報がメモリから消去されることができ、オブジェクティブCインスタンス変数内の暗号化鍵および他のデータは、それらが容易に参照することができるため、記憶されない。代わりに、メモリは、これらについて手動で割り当てられることができる。
非活動タイムアウトを実装することができ、ポリシー定義の非活動期間後に、ユーザセッションが終了する。
アプリケーション管理フレームワーク614からのデータ漏洩は、他の方法で防止することができる。例えば、アプリケーション610がバックグラウンドに置かれている場合、メモリは、所定の(設定可能な)期間後にクリアすることができる。バックグラウンドの場合、フォアグランドプロセスを固定するために、アプリケーションの最後に表示された画面のスナップショットを撮ることができる。スクリーンショットは、機密データを含むことがあるため、クリアされる必要がある。
他のセキュリティ機能は、1つ以上のアプリケーションへのアクセスのためにAD(アクティブディレクトリ)パスワード622を使用せずに、OTP(ワンタイムパスワード)620を使用することに関する。場合によっては、一部のユーザは、彼らのADパスワードを知らない(または知ることを許可されない)ため、これらのユーザは、SecurIDのようなハードウェアOTPシステムを使用するなどによってOTP620を使用して認証することができる(OTPは、EntrustまたはGemaltoなど、異なるベンダによっても提供されてもよい)。場合によっては、ユーザがユーザIDを用いて認証した後、テキストがOTP620によってユーザに送信される。場合によっては、これは、オンラインでの使用のためにのみ実装されることができ、プロンプトは単一フィールドである。
企業ポリシーを介してオフライン使用が許可されるアプリケーション610のオフライン認証のために、オフラインパスワードを実装することができる。例えば、企業は、このようにストアフロントにアクセスされることを望むことがある。この場合、クライアントエージェント604は、カスタムオフラインパスワードを設定するようにユーザに要求することができ、ADパスワードは使用されない。ゲートウェイサーバ606は、これらの要件は変更されることがあるものの、標準的なウィンドウズ(登録商標)サーバパスワードの複雑さの要件によって記述されるものなど、最小長、文字クラスの構成、およびパスワードの寿命に関するパスワード標準を制御および実行するためのポリシーを提供することができる。
別の機能は、(アプリケーション管理フレームワークのマイクロVPN機能を介してPKI保護されたウェブリソースにアクセスする目的で)二次認証情報としての特定のアプリケーション610のためのクライアント側証明書の有効化に関する。例えば、アプリケーションは、そのような証明書を利用することができる。この場合、ActiveSyncプロトコルを使用する証明書ベースの認証をサポートすることができ、クライアントエージェント604からの証明書は、ゲートウェイサーバ606によって取り出され、鍵チェーン内で使用することができる。各管理対象アプリケーションは、ゲートウェイサーバ606において定義されたラベルによって識別される1つの関連クライアント証明書を有することができる。
ゲートウェイサーバ606は、関連する管理対象アプリケーションが、内部PKI保護リソースを認証するのを可能にするためにクライアント証明書の発行をサポートするよう、企業専用ウェブサービスと対話することができる。
クライアントエージェント604およびアプリケーション管理フレームワーク614は、内部PKI保護ネットワークリソースへの認証のために、クライアント証明書を取得および使用することをサポートするように拡張することができる。様々なレベルのセキュリティ要件および/または分離要件に一致するために、複数の証明書をサポートすることができる。証明書は、メールおよびブラウザ管理対象アプリケーションによって、最終的には任意のラップされたアプリケーションによって使用されてもよい(アプリケーション管理フレームワークがhttpsリクエストを仲介するのに合理的なウェブサービススタイル通信パターンをそれらのアプリケーションが使用するという条件で)。
iOS上でのアプリケーション管理クライアント証明書のサポートは、各管理対象アプリケーションのiOS鍵チェーンに公開鍵暗号化標準(PKCS)12 BLOB(バイナリラージオブジェクト)を各使用期間にわたってインポートすることに依存してもよい。アプリケーション管理フレームワークのクライアント証明書のサポートは、プライベートなメモリ内鍵記憶装置によるHTTPS実装を使用してもよい。クライアント証明書は、決してiOS鍵チェーンには存在せず、また強力に保護された潜在的に「オンラインのみ」のデータ値を除いて、永続化されない。
相互SSLはまた、モバイルデバイス602が企業に対して認証されることを要求することによって、追加のセキュリティを提供するように実装されてもよく、その逆でもよい。ゲートウェイサーバ606に対する認証のための仮想スマートカードも実装されてもよい。
ケルベロスの制限サポートおよび完全サポートの双方を、追加の機能とすることができる。完全サポート機能は、ADパスワードまたは信頼できるクライアント証明書を使用して、アクティブディレクトリ(AD)622に対して完全ケルベロスログインを実行し、HTTPネゴシエート認証チャレンジに応答するためにケルベロスサービスチケットを取得する能力に関する。制限サポート機能は、シトリックス・アクセス・ゲートウェイ・エンタープライズ・エディション(AGEE)の制限付き委任に関し、AGEEは、HTTPネゴシエート認証チャレンジに応答するためにケルベロスサービスチケット(制約付き委任の対象)を取得して使用するよう、ケルベロスプロトコル遷移を呼び出すことをサポートする。この機構は、http(httpsではない)接続がVPNおよびマイクロVPNモードでプロキシされる場合、リバースウェブプロキシ(企業仮想プライベートネットワーク(CVPN)モードとも呼ばれる)モードで稼働する。
別の機能は、ジェイルブレイクまたはルーティング検出時に自動的に発生する及び管理コンソールからプッシュされたコマンドとして発生することができ、アプリケーション610が実行されていない場合であっても、リモートワイプ機能を含むことができる、アプリケーションコンテナのロックおよびワイピングに関する。
故障が発生した場合にユーザが複数の異なる場所のいずれかからサービスを受けることを可能にする、企業アプリケーションストアおよびアプリケーションコントローラのマルチサイトアーキテクチャまたは構成をサポートすることができる。
場合によっては、管理対象アプリケーション610が、API(例えばOpenSSL)を介して、証明書および秘密鍵にアクセスすることを許可されてもよい。企業の信頼できる管理対象アプリケーション610が、アプリケーションのクライアント証明書および秘密鍵を用いて、特定の公開鍵動作を実行することを許可することができる。アプリケーションがブラウザのように動作して証明書のアクセスが要求されない場合、アプリケーションが「私は誰か」の証明書を読み取る場合、アプリケーションが証明書を使用してセキュアなセッショントークンを構築する場合、およびアプリケーションが重要データ(例えば、トランザクションログ)のデジタル署名のためにまたは一時的なデータ暗号化のために秘密鍵を使用する場合など、それぞれに応じて様々な使用事例を識別して処理することができる。
ネイティブブラウザおよびネイティブウェブアプリケーションへの仮想ブラウザの統合
本開示の1つ以上の態様は、図1−図6に関連して上述したコンピュータシステムアーキテクチャ、リモートアクセスシステムアーキテクチャ、仮想化(ハイパーバイザ)システムアーキテクチャ、クラウドベースシステムアーキテクチャ、および/または企業モビリティ管理システムのうちの1つ以上を使用して、組み込む、埋め込む、および/または実装することができる。さらに、本開示では以下の略語を使用してもよい:ハイ・ディフィニション・エクスペリエンス(HDX);モバイルアプリケーション・マネジメント(MAM);モバイルデバイス・マネジメント(MDM);モバイルデバイス・エクスペリエンス(MDX);プルーフ・オブ・コンセプト(POC);共有秘密ボールト(SSV);ストアフロント(SF);仮想チャネル(VC);WorxHome(WH);XenApp(XA);XenDesktop(XD);およびXenMobileサーバ(XMS)。
上述したように、本開示の1つ以上の態様は、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する方法を提供する。例えば、本開示の1つ以上の態様を実装することによって、仮想ブラウザは、ネイティブにサポートされていないコンテンツへのアクセスを可能にするおよび/または提供するために、および/またはよりセキュリティを強化および/またはより高いセキュリティを提供するために、ネイティブブラウザにシームレスに統合することができる。さらに、そのような仮想ブラウザは、ネイティブのユーザ体験および本格的なウェブアプリケーション機能の双方を提供するように、ネイティブ「ウェブ」アプリケーションへのアクセスを可能にするおよび/または提供するために使用することができる。
第1の使用事例では、特定のユーザのモバイルデバイスなどの特定のコンピューティングデバイス上で動作するCITRIX WorxWebなどのネイティブブラウザは、サポートされていないコンテンツ(例えば、モバイルデバイス上のネイティブブラウザに表示可能でないかもしれないコンテンツ)へのアクセスを提供するために、および/またはより高いセキュリティ(例えば、モバイルデバイス上のネイティブブラウザによって提供されないかもしれないセキュリティ)を提供するために、HDX仮想ブラウザにユニフォームリソースロケータ(URL)を開くことができる。この第1の使用事例の根底には、1つ以上の動作上の前提が存在してもよい。例えば、WorxWebは、主な使用事例とすることができる。さらに、このアプローチは、モバイルデバイス上のネイティブブラウザまたはウェブビューコントロールによってレンダリングされることができないFLASHコンテンツまたは他のコンテンツに有用とすることができる。さらに、このアプローチは、サーババックエンドでウェブコンテンツの処理を可能にするため、比類ないモバイルセキュリティが存在する状況で有用とすることができる。さらに、仮想ブラウザは、URLをローカルアプリケーションにリダイレクトし返す必要がないかもしれない(例えば、逆URLリダイレクトはない)。二次使用事例として、このアプローチはまた、インターネットエクスプローラー、クローム、および/またはファイアフォックスのようなデスクトップブラウザにも適用することができる。
第2の使用事例では、モバイル「ウェブ」アプリケーションへのアクセスを可能にするおよび/または提供するために、仮想ブラウを使用することができる。例えば、WorkDayなどのいくつかのモバイルアプリケーションは、それぞれの本格的なウェブアプリケーションに比べて機能が制限されていることがある。さらに、WorkDayウェブサイトなどのいくつかのウェブサイトは、モバイルブラウザ用に設計されていないことがある。本開示の態様は、ユーザがモバイルデバイススプリングボードからWorkDayのようなウェブアプリケーションにアクセスすることを可能にすることができる。特に、本開示の態様は、ネイティブユーザ体験および本格的なウェブアプリケーション機能の双方をユーザに提供することができる。
第3の使用事例では、CITRIX XenMobile MDMおよびMAM/MDXセキュリティは、双方のアプローチで強化されたセキュリティを提供するように、上述した第1の使用事例および第2の使用事例に適用し、組み合わせることができる。
コアインプリメンテーション
本開示の1つ以上の態様を実装するための基本的な設計を表すことができる本開示の1つ以上の態様のコアインプリメンテーションでは、ネイティブWorxWebアプリケーションは、選択されたウェブコンテンツのための仮想ブラウザと統合することができる。この構成では、フルスクリーンHDXビューを提供することができる。遠隔ブラウザ(例えば、インターネットエクスプローラーのリモートインスタンス)は、選択されたウェブコンテンツに対してHDXを介して、呼び出すことができる。リモートブラウザは、周囲にクロームのないキオスクモードで動作することができる。さらに、ユーザがリモートブラウザからネイティブWorxWebビューに戻ることを可能にする、変更されたHDXセッション制御ユーザインターフェースを提供することができる。単一のリモートタブのサポートも提供することができる。
図7は、本開示の1つ以上の態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する際に使用することができるアーキテクチャの例を示す。
図7に示す装備および構成では、管理者は、URLのホワイト/ブラックリストについてのWorxWebアプリケーションMDXポリシーによって、XenMobileサーバを構成することができる。セキュアブラウザとして、WorxWebは、(1)MDXアプリケーションからのURLとの関連付けを有する;および/または(2)ストアフロントおよびHDXソフトウェア開発キット(SDK)を使用して選択URLを開いて、そのようなURLを仮想ブラウザにリダイレクトするように、構成および/または設計することができる。場合によっては、MDXポリシー、SF/Auth SDK、および/またはMDX SDKに基づいて、1つ以上の依存性が存在することがある。それに加えてまたはその代わりに、XenAppサーバは、公開されたブラウザまたはXenAppブラウザサーバによって活用することができる。
図7に示された装備および構成では、動作の例示的なランタイムシーケンスは、以下のように発生することができる。第1に、管理者は、URLのホワイトリストおよび/またはブラックリストを定義するために、WorxWeb MDXアプリケーションポリシーを構成することができる。第2に、ユーザは、WorxHomeを介して、XenMobileサーバにログオンすることができ、WorxHomeは、ポリシーリフレッシュを実行することができる。第3に、WorxHomeは、他のMDXアプリケーションによってポリシーをプッシュするおよび/または認証トークンを共有することができる。場合によっては、共有秘密ボールト(SSV)およびMDXボールトを共有のために使用することができる。さらに、WorxWebは、URLリダイレクトをオンおよび/またはオフにするために、ならびにURLのホワイトリストおよび/またはブラックリストを受信するために、MDXアプリケーションポリシーを読み取ることができる。代替設計では、WorxWebおよび他のMDXアプリケーションは、XenMobileサーバから独立してポリシーリフレッシュを実行することができ、また、XenMobileサーバに対して独立してネットワーク認証を行うこともできる。このアプローチは、単一マスターアプリケーションとしてWorxHomeを有しない「分散認証」と呼ばれてもよい。
図7に示される装備および構成における動作のランタイムシーケンスの例を再び参照すると、第4のステップにおいて、ユーザは、サポートされていないURLを開くことができる。第5に、WorxWebは、ストアフロントSDKを使用して、ストアフロントと通信することができる。これは、共有認証トークンを使用した認証、アプリケーション起動リクエストの送信、およびICAファイル(例えば、インターネットエクスプローラーなど、サーバアドレスおよび/または初期アプリケーションなどの起動されるHDX接続の特性を記述することができるファイル)の取得を含むことができる。
第6に、WorxWebは、HDX仮想ブラウザアプリケーションを起動することができる。これは、取得したICAファイルに基づいてHDX接続を起動し、制御仮想チャネルを使用して、アプリケーションを起動してパラメータを供給すること(例えば、インターネットエクスプローラーへのパスなどのアプリケーションの供給)を含むことができる。さらに、以下に詳細に説明されるように、例えば、リダイレクトされたURLを起動することを示しているおよび/または「キオスク」モードでアプリケーションを動作することを示している、パラメータを付加することができる。
第7に、WorxWebは、仮想ウェブコンテンツをプレビューすることができる。これは、リモートアプリケーション(例えば、リモートブラウザによって開かれた、リダイレクトされたURLからのコンテンツを用いてキオスクモードで動作するインターネットエクスプローラー)からのHDXグラフィックスを表示することを含むことができる。ユーザがローカルウェブブラウジングに戻ることを可能にするために戻るボタンを設けることができる。それに加えてまたはその代わりに、ローカルHDXセッション制御は、ユーザが仮想ブラウザにおいてURLのプレビューを終了することを可能にすることができる。
その後、第8のステップにおいて、ユーザは、戻るボタンまたはプレビューを閉じるボタンを選択することができる。これは、ユーザおよび処理をローカルWorxWebブラウジングに戻すことができる。
図8は、本開示の1つ以上の態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する他の例を示す。特に、図8に示される例では、FLASHコンテンツは、モバイルアプリケーションブラウザに提示することができる。図8に示される例は、図7に示される例と同様であるが、図8に示される例では、FLASHコンテンツのHDXプレビューが(例えば、通常はモバイルプラットフォーム上では許可されないかもしれない)ネイティブWorxWebアプリケーションに提示される。
場合によっては、インターネットエクスプローラーのキオスクモードは、本開示の1つ以上の態様を実装する際に使用することができる。インターネットエクスプローラーがキオスクモードで実行すると、タイトルバー、メニュー、ツールバー、およびステータスバーは表示されないことがあり、ブラウザは、フルスクリーンモードで実行することがある。同様のキオスクモードをサポートしない他のブラウザを使用して本開示の態様を実装する場合、クライアントウィンドウ領域と非クライアントウィンドウ領域とを区別するためにHDXシームレスVCプロトコルのファシリティを使用することができる。このようにして、WorxWebは、ローカルグラフィックディスプレイからリモートブラウザの非クライアント領域(例えば、ウェブコンテンツを含むことのある領域)を削除することができ、クライアント領域のみを表示することができる。
拡張設計
本開示の1つ以上の態様の拡張設計実装では、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する際に、以下に説明する1つ以上の追加の高度な機能を上述した1つ以上の特徴と組み合わせることができる。
例えば、含まれる可能性のある高度な機能の1つは、複雑なHDXビューのサイズ変更である。特に、リモートブラウザをプレビューする際に、WorxWebは、パンニングおよびスケーリングのためにユーザに異なるユーザ体験オプションを提供することができる。例えば、必要に応じてリモートセッションの自動スケーリングを伴うフルスクリーン(画面にフィット)オプションを提供することができる。それに加えてまたはその代わりに、実際のリモートセッションサイズおよびスクロールバーオプションが提供されてもよい。それに加えてまたはその代わりに、リモートセッションサイズおよびスクロールバーオプションのパーセンテージが提供されてもよい。
含まれる可能性がある他の高度な機能は、ローカルとリモートの混合ブラウジングのためのローカルユーザインターフェースコントロールである。この機能を実装する場合、他が公開されたブラウザを介してリモートで処理される一方で、一部のURLがネイティブWebViewコントロールを介してローカルで処理されることに気づかずに、ユーザがローカルおよびリモートURLをシームレスにブラウズすることを可能にすることを目標とすることができる。このシームレスな体験はまた、戻る、進むおよび/または同様のものなどのユーザインターフェースボタンコントロールにも適用することができる。WorxWebは、コンテキストに応じてネイティブWebViewコントロールまたは公開されたブラウザウィンドウコントロールのいずれかにアクションをリダイレクトすることができる、ローカルユーザインターフェースボタンコントロールのみを表示することができる。場合によっては、これを実現するには、WorxWebは、URL遷移の履歴の追跡を保持する必要があることがある。データ構造は、URLリンク、URLのローカル処理対リモート処理を示すブール値、およびURL遷移のシーケンス内の現在の番号および/またはポインタ(例えば、ローカルおよびリモートスタックの組み合わせ)を含むオブジェクトのアレイを記憶するために使用することができる。
リモートブラウザで実際に発生しているURLリンク遷移の詳細を取得するために、ブラウザヘルパーオブジェクト(BHO)または他のブラウザに依存するプラグインを、このメタデータをHDX VCを介してWorxWebに通信するようにリモートブラウザで使用することができる。さらに、WorxWebは、HDX VCを介してリモートブラウザにキーボードショートカットを送信するように設計されたローカルの戻るおよび/または進むコントロールを介して、リモートの戻る動作および/または進む動作をコントロールすることができる(例えば、それぞれ、Alt−左矢印キーおよびAlt−右矢印キー)。ブラウジング履歴のコンテキスト(例えば、上述したデータ構造を使用する)に応じて、同じローカルの戻るおよび/または進むコントロールは、ローカルのWebViewコントロールブラウジングセッションに適用することができる。
場合によっては、戻るボタンを使用してバックトラッキングする以外に、リモートブラウザからローカルブラウザへのURLリダイレクトがないという簡単な前提条件を設けることができる。この前提条件を使用すると、実際のリモートURLリンクが通信される必要はなく、代わりにリモートURL遷移の動作のみが通信されればよい。
含まれる可能性がある他の高度な機能は、リモートブラウザ用のマルチタブサポートである。この機能を実装する場合、HDXセッション共有がないことがある。例えば、各タブは、別個のHDXセッション内で処理されることができ、別個のリモートプロセスの追跡を保持する必要はないことがある。上述した設計は、それぞれ別個のタブ毎に適用することができる。このアプローチのデメリットの中には、XenAppサーバスケーラビリティが影響を受ける可能性があり、それぞれ別個のセッション毎の初期HDX接続時間が長くなることがあるというのがある。
他の場合では、リモートブラウザのマルチタブサポートを実装する場合、HDXセッション共有が可能である。例えば、別個のリモートブラウザは、各ローカルタブについて同じHDXセッションで起動されることができ、既存のシームレスVCプロトコルを介して追跡することができる(例えば、公開されたアプリケーションの完全な階層およびリモートプロセスおよびウィンドウの対応するツリーを提供することができる)。このアプローチは、より複雑である可能性があるが、XenAppサーバスケーラビリティだけでなく、最初の起動後の各後続ブラウザの瞬間的な起動時間を優先することができる。
ある構成では、ネイティブブラウザを拡張するためにブラウザプラグインを提供することができる。特に、WorxWebは、モバイルプラットフォーム向けのネイティブカスタムブラウザと見なことができる。デスクトップオペレーティングシステムのネイティブブラウザにも同じ概念が適用されてもよい。例えば、ウィンドウズ(登録商標)オペレーティングシステム、MAC OS Xオペレーティングシステム、および/またはリナックス(登録商標)オペレーティングシステムで実行されている場合、インターネットエクスプローラー、クローム、および/またはファイアフォックスのブラウザプラグインを使用して、URLがリモートホストされたブラウザにリダイレクトされてもよい。そのようなブラウザプラグインは、リモーティングにCTRIX HTML5レシーバを使用することができ、上述したようにリモートブラウザを制御するためにカスタムVCによって拡張することができる。
ある構成では、モバイル「ウェブ」アプリケーション機能を提供することができる。例えば、モバイル「ウェブ」アプリケーション(例えば、モバイルデバイススプリングボード上のWorkDay)を実現するために、上述した組み込みHDXブラウザ設計およびモバイルHDXネイティブアプリケーション設計とのWorxWebの組み合わせまたは相互作用が必要とされることがある。HDXネイティブアプリケーションをモバイルデバイススプリングボードに提供する際、テンプレートHDX SDKアプリケーションは、公開されたアプリケーション(例えば、マイクロソフトワード)に対応する特定のネイティブアプリケーションのように見た目と感触をカスタマイズすることができる。
例えば、HDXネイティブアプリケーションは、MDMまたはMAMを介してスプリングボードに装備することができる。そのようなアプリケーションは、DOCおよびDOCXに対応するマイクロソフトワードのアイコン(例えば、対応する公開されたアプリケーションとして)およびファイルタイプアソシエーションズ(FTA)を含むように、テンプレートHDXアプリケーションから事前設定されてもよい。アプリケーションはまた、ネイティブアプリケーションを起動するときに、マイクロソフトワードの公開されたインスタンスおよび/またはリモートのインスタンスに対してHDXセッションを起動するように事前設定されてもよい。
本開示の1つ以上の態様の実装では、テンプレートWorxWebアプリケーションは、WorkDayウェブアプリケーションのアイコンによって構成されてもよく、開始時に、WorkDayウェブアプリケーションを指すURLによって公開されたブラウザおよび/またはリモートブラウザに対するHDXセッションを起動するようにさらに構成されてもよい。このようにして、ユーザは、ネイティブユーザ体験および本格的なウェブアプリケーション機能の双方を提供することができる。
図9は、本開示の1つ以上の態様に従って、モバイル「ウェブ」アプリケーションの例を示す。
図10は、本明細書に記載された1つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する方法を示す。ある実施形態では、図10に示される方法は、図1−図6に関連して上述したコンピュータシステムアーキテクチャ、リモートアクセスシステムアーキテクチャ、仮想化(ハイパーバイザ)システムアーキテクチャ、クラウドベースシステムアーキテクチャ、および/または企業モビリティ管理システムのうちの1つ以上の要素を組み込む、利用するおよび/または含むコンピューティングプラットフォームによって実行することができる。例えば、図10に示される方法は、少なくとも1つのプロセッサ、メモリ、および通信インターフェースを有するコンピューティングプラットフォームによって実行することができる。ステップ1005において、コンピューティングプラットフォームは、ネイティブにサポートされていないユニフォームリソースロケータを開くリクエストを受信することができる。ステップ1010において、ネイティブにサポートされていないユニフォームリソースロケータを開くリクエストを受信したことに応答して、コンピューティングプラットフォームは、ホストされた仮想ブラウザアプリケーションを起動することができる。ステップ1015において、コンピューティングプラットフォームは、ホストされた仮想ブラウザアプリケーションによって生成されたグラフィックスを表示することができ、ホストされた仮想ブラウザアプリケーションによって生成されたグラフィックスは、ネイティブにサポートされていないユニフォームリソースロケータに関連するコンテンツを含むことができる。
図11は、本明細書に記載される1つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なコンピューティング環境を示す。図11を参照すると、コンピューティング環境1100は、ユーザコンピューティングデバイス1110、企業サーバインフラストラクチャ1120、仮想化サーバインフラストラクチャ1130、およびネットワーク1150を含むことができる。ユーザコンピューティングデバイス1110、企業サーバインフラストラクチャ1120、および仮想化サーバインフラストラクチャ1130は、1つ以上のプロセッサ、メモリ、通信インターフェース、および/または同様のものなどの1つ以上の物理コンポーネントを含むことができる。さらに、ユーザコンピューティングデバイス1110は、上述したクライアントデバイス、モバイルデバイス、および/またはユーザデバイスのうちの1つ以上の態様を含む、組み込む、および/または実装することができる。企業サーバインフラストラクチャ1120は、上述した企業システムおよび/または管理サーバのうちの1つ以上の態様を含む、組み込む、および/または実装することができる。仮想化サーバインフラストラクチャ1130は、上述した仮想化サーバおよび/または他の仮想化インフラストラクチャのうちの1つ以上の態様を含む、組み込む、および/または実装することができる。
例えば、ユーザコンピューティングデバイス1110は、プロセッサ1111、メモリ1112、および通信インターフェース1114を含むことができる。プロセッサ1111は、オペレーティングシステムおよび/またはブラウジング機能を提供することができる(例えば、「ローカルブラウザ」または「ネイティブブラウザ」とも呼ばれてもよい)ローカルブラウザアプリケーションを含む、1つ以上のアプリケーションの実行などの1つ以上の機能をユーザコンピューティングデバイス1110が実行するように、メモリ1112に記憶された命令を実行することができる。メモリ1112は、以下に詳細に説明するように、上述したセキュアおよび/または管理されたブラウザアプリケーション(例えば、管理対象ブラウザアプリケーション610)のうちの1つ以上の態様を含む、組み込む、および/または実装することができ且つブラウジング機能を提供することができるローカルブラウザアプリケーション1113を記憶することができる。通信インターフェース1114は、ユーザコンピューティングデバイス1110が、企業サーバインフラストラクチャ1120、仮想化サーバインフラストラクチャ1130、および/または1つ以上の他のシステムおよび/またはデバイスなど、コンピューティング環境1100内の1つ以上の他のシステムおよび/またはデバイスと通信することができる1つ以上のネットワークインターフェースを含むことができる。
企業サーバインフラストラクチャ1120は、1つ以上のモバイルデバイス管理ポリシー、モバイルアプリケーション管理ポリシー、および/または他の企業ポリシーを定義する、適用する、実行する、更新する、使用不可にする、および/または制御することができる(例えば、1つ以上の管理対象ユーザモバイルデバイスを含む1つ以上の管理対象デバイスに関して)、1つ以上のポリシー管理システム1121を含むおよび/または提供することができる。仮想化サーバインフラストラクチャ1130は、ホストされたブラウザアプリケーション1131(例えば、上述したホストされた、リモートの、および/または仮想化されたアプリケーションと同様のリモートおよび/または仮想アプリケーションでもよく、以下に詳細に説明するように、例えば、サポートされていないコンテンツを1つ以上のユーザデバイスにレンダリングおよび/または提供するために使用することができる)を含む、実行する、および/または提供することができる。ネットワーク1150は、1つ以上のローカルエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、プライベートネットワーク、および/またはサブネットワークを含むことができ、ユーザコンピューティングデバイス1110、企業サーバインフラストラクチャ1120、仮想化サーバインフラストラクチャ1130を相互接続することができる。
図12A−図12Fは、本明細書に記載された1つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なイベントシーケンスを示す。図12Aを参照すると、ステップ1201において、企業サーバインフラストラクチャ1120は、1つ以上のポリシー(例えば、1人以上のポリシー管理者および/または他の管理ユーザから)を定義する入力を受信することができる。例えば、企業サーバインフラストラクチャ1120は1つ以上のモバイルデバイス管理ポリシー、1つ以上のモバイルデバイスアプリケーションポリシー、および/または1つ以上の他の企業ポリシー(例えば、ユーザコンピューティングデバイス1110のユーザが雇用されているおよび/または関連付けられる企業組織などの、企業サーバインフラストラクチャ1120を運営する組織に特有であるおよび/または関連するとしてもよい)を定義する入力を受信することができる。場合によっては、ステップ1201において定義された1つ以上のポリシーは、以下に詳細に説明するように、ローカルブラウザの代わりにホストされたブラウザで開かれることになる1つ以上のネイティブにサポートされていないユニフォームリソースロケータを指定することができる。
ステップ1202において、企業サーバインフラストラクチャ1120は、1つ以上のユーザデバイス(例えば、ステップ1201において定義された1つ以上のポリシーに基づいて)をプロビジョニングすることができる。例えば、ステップ1202において、企業サーバインフラストラクチャ1120は、そのような1つ以上のポリシーを有するユーザデバイスをプロビジョニングするために、ユーザコンピューティングデバイス1110および/または1つ以上の他のユーザデバイスを含む1つ以上のユーザデバイスに1つ以上の新たなポリシーおよび/またはポリシー更新を送信することができる。
ステップ1203において、ユーザコンピューティングデバイス1110は、企業サーバインフラストラクチャ1120から1つ以上のポリシーを受信することができる。例えば、ステップ1203において、ユーザコンピューティングデバイス1110は、通信インターフェース(例えば、通信インターフェース1114)を介して、企業サーバ(例えば、企業サーバインフラストラクチャ1120)から1つ以上の企業ポリシーを受信することができ、1つ以上の企業ポリシーは、1つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する少なくとも1つの企業ポリシーを含むことができる。以下に詳細に記述するように、そのような企業ポリシーの実行は、ホストされたセッション(例えば、仮想化サーバインフラストラクチャ1130によって)でリモートにレンダリングされてユーザデバイス(例えば、ユーザコンピューティングデバイス1110)上でローカルに表示されることになるネイティブにサポートされていないユニフォームリソースロケータに対応するコンテンツをイネーブルにするように、そのようなネイティブにサポートされていないユニフォームリソースロケータがユーザコンピューティングデバイス1110上でリクエストされた場合、ホストされたブラウザセッションを起動するようにユーザコンピューティングデバイス1110を指示する、制御するおよび/またはもたらすことができる。
ステップ1204において、ユーザコンピューティングデバイス1110は、企業サーバインフラストラクチャ1120から受信した1つ以上のポリシーを記憶することができる。例えば、ステップ1204において、ユーザコンピューティングデバイス1110は、少なくとも1つのポリシー管理エージェントによってコンピューティングデバイス(例えば、ユーザコンピューティングデバイス1110)上で実行するための1つ以上の企業ポリシーを記憶することができる。そのようなポリシー管理エージェントは、ユーザコンピューティングデバイス1110上で動作および/または実行することができ、上述したクライアントエージェント(例えば、クライアントエージェント604)の1つ以上の態様を含む、組み込む、および/または実装することができる。それに加えてまたはその代わりに、そのようなポリシー管理エージェントは、ユーザコンピューティングデバイス1110上のローカルブラウザおよび/またはユーザコンピューティングデバイス1110上(例えば、そのようなローカルブラウザ自体が統合することができる)の企業ポータルアプリケーションに統合することができる。
図12Bを参照すると、ステップ1205において、ユーザコンピューティングデバイス1110は、ユーザコンピューティングデバイス1110のユーザを認証することができる。例えば、ステップ1205において、ユーザコンピューティングデバイス1110は、コンピューティングデバイス(例えば、ユーザコンピューティングデバイス1110)のユーザを認証することができる。ユーザコンピューティングデバイス1110は、ユーザによって入力されたユーザ名、ユーザによって入力されたパスワード、ユーザによって提供された生体情報入力、および/またはユーザによって提供された他の入力を検証することに基づいてユーザを認証することができる。ステップ1206において、ユーザコンピューティングデバイス1110は、ステップ1205において認証されたユーザにリンクされたおよび/または関連付けられた1つ以上の認証情報をキャッシュすることができる。例えば、ステップ1206において、コンピューティングデバイス(例えば、ユーザコンピューティングデバイス1110)のユーザを認証することに基づいて、ユーザコンピューティングデバイス1110は、コンピューティングデバイスのユーザ(例えば、ユーザコンピューティングデバイス1110)のユーザに関連する1つ以上の認証情報をキャッシュすることができる。ユーザコンピューティングデバイス1110は、コンピューティングデバイスのユーザ(例えば、ユーザコンピューティングデバイス1110)に関連付けられた1つ以上の認証情報をキャッシュする際に、コンピューティングデバイス(例えば、ユーザコンピューティングデバイス1110)のユーザに関連付けられた企業ユーザアカウントにリンクされた1つ以上のシングルサインオン(SSO)認証情報を鍵チェーンに記憶することができるおよび/またはキャッシュすることができる。場合によっては、そのようなシングルサインオン(SSO)認証情報は、ユーザコンピューティングデバイス1110によって使用可能である、および/またはユーザコンピューティングデバイス1110が仮想化サーバインフラストラクチャ1130などの仮想化サーバにログインして企業ユーザアカウントにリンクされたホストされたブラウザセッションを開始するのを可能にする。
ステップ1207において、ユーザコンピューティングデバイス1110は、第1のユニフォームリソースロケータのリクエストを受信することができる。例えば、ステップ1207において、ユーザコンピューティングデバイス1110は、第1のユニフォームリソースロケータを開くリクエストを受信することができる。そのようなリクエストは例えば、ユーザコンピューティングデバイス1110のユーザから受信したユーザ入力に対応することができるおよび/またはそのようなリクエストをユーザ入力に含むことができる。ステップ1208において、ユーザコンピューティングデバイス1110は、第1のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。例えば、ステップ1208において、ユーザコンピューティングデバイス1110は、ユーザコンピューティングデバイス1110によって維持および/または判定される1つ以上のポリシーおよび/または他の情報に基づいて、第1のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。
ある実施形態では、第1のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することは、第1のユニフォームリソースロケータが、1つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する少なくとも1つの企業ポリシーに基づいて、ネイティブにサポートされていない旨を判定することを含むことができる。例えば、ユーザコンピューティングデバイス1110は、第1のユニフォームリソースロケータがネイティブにサポートされていない旨を判定する際に、第1のユニフォームリソースロケータが、1つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する少なくとも1つの企業ポリシーに基づいてネイティブにサポートされていない旨を判定することができる。そのような企業ポリシーは、例えば、ネイティブにサポートされていないユニフォームリソースロケータ、ネイティブにサポートされているユニフォームリソースロケータ、および/または他のユニフォームリソースロケータのブラックリストおよび/またはホワイトリストを定義することができる。さらに、ユーザコンピューティングデバイス1110は、例えば、少なくとも1つの企業ポリシーによって識別されおよび/または少なくとも1つの企業ポリシーによって特定されたネイティブにサポートされていないユニフォームリソースのリストに含まれる第1のユニフォームリソースロケータに基づいて、第1のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができ、この判定は、以下に詳細に記述するように、第1のユニフォームリソースロケータに関連するコンテンツをレンダリングするためにホストされたセッションを、ユーザコンピューティングデバイス1110で起動することができる。
ある実施形態では、第1のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することは、第1のユニフォームリソースロケータが、第1のユニフォームリソースロケータに関連する1つ以上の要素のロード失敗を検出することに基づいてネイティブにサポートされていない旨を判定することを含むことができる。例えば、ユーザコンピューティングデバイス1110は、第1のユニフォームリソースロケータがネイティブにサポートされていない旨を判定する際に、第1のユニフォームリソースロケータが、第1のユニフォームリソースロケータに関連する1つ以上の要素のロード失敗を検出するユーザコンピューティングデバイス1110に基づいてネイティブにサポートされていない旨を判定することができる。例えば、ユーザコンピューティングデバイス1110は、最初に第1のユニフォームリソースロケータへのアクセスを試みることができ、その後、第1のユニフォームリソースロケータに関連する1つ以上のコンテンツアイテム、スクリプト、プラグイン、および/または他の要素がロードされることができない旨および/またはロード失敗した旨を検出することができる。第1のユニフォームリソースロケータに関連する1つ以上のコンテンツアイテム、スクリプト、プラグイン、および/または他の要素がロードされることができない旨および/またはロード失敗した旨を検出することに応答して、ユーザコンピューティングデバイス1110は、(例えば、以下に詳細に示すように、ユーザコンピューティングデバイス1110に第1のユニフォームリソースロケータに関連するコンテンツをレンダリングするためにホストされたセッションを開始させることができる)第1のユニフォームリソースロケータがネイティブでサポートされていない旨を判定することができる。
ある実施形態では、第1のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することは、第1のユニフォームリソースロケータが、第1のユニフォームリソースロケータがホストされたウェブアプリケーションに関連するスタブアプリケーションに対応する旨を識別することに基づいてネイティブにサポートされていない旨を判定することを含むことができる。例えば、第1のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することにおいて、ユーザコンピューティングデバイス1110は、第1のユニフォームリソースロケータが、第1のユニフォームリソースロケータがホストされたウェブアプリケーションに関連するスタブアプリケーションに対応する旨を識別することに基づいてネイティブにサポートされていない旨を判定することができる。そのようなスタブアプリケーションは、例えば、ローカルブラウザ内で第1のユニフォームリソースロケータを開くように構成することができ、ローカルブラウザが第1のユニフォームリソースをネイティブにサポートされていないと識別することを引き起こすことができる1つ以上のコマンドラインオプションおよび/または他の埋め込みコマンドを含むことができ、次に、以下に詳細に示すように、第1のユニフォームリソースロケータに関連するコンテンツをレンダリングするために、ユーザコンピューティングデバイス1110がホストされたセッションの起動を引き起こすことができる。
図12Cを参照すると、ステップ1209において、ユーザコンピューティングデバイス1110は、仮想化サーバインフラストラクチャ1130に(例えば、ステップ1208において、第1のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに応答しておよび/または基づいて)接続することができる。ステップ1210において、ユーザコンピューティングデバイス1110は、ホストされたセッションにおいて(例えば、仮想化サーバインフラストラクチャ1130によって提供された、ホストされたセッションにおいてホストされたブラウザのインスタンスを起動するように仮想化サーバインフラストラクチャ1130に指示する、コマンドを出す、および/または制御することによって)ホストされたブラウザを起動することができる。例えば、ステップ1210において、第1のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、ユーザコンピューティングデバイス1110は、仮想化サーバ(例えば、仮想化サーバインフラストラクチャ1130)によってホストされた仮想セッションでホストされた仮想ブラウザアプリケーション(例えば、ホストされたブラウザアプリケーション1131)を起動することができる。
ある実施形態では、仮想化サーバによってホストされた仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動することは、仮想化サーバへの接続を確立し、1つ以上のキャッシュされた認証情報を使用して仮想化サーバによって認証することを含むことができる。例えば、仮想化サーバ(例えば、仮想化サーバインフラストラクチャ1130)によってホストされた仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動する際に、ユーザコンピューティングデバイス1110は、仮想化サーバ(例えば、仮想化サーバインフラストラクチャ1130)に対する接続を確立し、1つ以上のキャッシュされた認証情報(例えば、ステップ1206においてキャッシュされた認証情報)を使用して、仮想化サーバ(例えば、仮想化サーバインフラストラクチャ1130)で認証することができる。
ある実施形態では、1つ以上のキャッシュされた認証情報を使用して仮想化サーバによって認証することは、企業ユーザアカウントにリンクされた少なくとも1つのキャッシュされたシングルサインオン(SSO)認証情報を使用して、仮想化サーバによって認証することを含むことができる。例えば、1つ以上のキャッシュされた認証情報(例えば、ステップ1210において)を使用して仮想化サーバ(例えば、仮想化サーバインフラストラクチャ1130)で認証する際に、ユーザコンピューティングデバイス1110は、企業ユーザアカウントにリンクされた少なくとも1つのキャッシュされたシングルサインオン(SSO)認証情報を使用して、仮想化サーバで認証することができる。例えば、ユーザコンピューティングデバイス1110は、そのようなシングルサインオン(SSO)認証情報を検証のために仮想化サーバインフラストラクチャ1130に提出することによって、企業ユーザアカウントにリンクされた少なくとも1つのキャッシュされたSSO認証情報を使用して仮想化サーバで認証することができ、SSO認証情報は、上述したように、ステップ1206においてユーザコンピューティングデバイス1110によってキャッシュすることができる。それに加えてまたはその代わりに、SSO認証情報は、ユーザコンピューティングデバイス1110のユーザに関連付けられ且つユーザコンピューティングデバイス1110のユーザが企業アプリケーションストア、企業ファイル共有プラットフォーム、企業クラウド記憶プラットフォーム、および/または他の企業リソースなどの1つ以上の保護された企業リソースに選択的にアクセスすることを可能にする企業ユーザアカウントにリンクすることができる。
ステップ1211において、ユーザコンピューティングデバイス1110は、仮想化サーバインフラストラクチャ1130からホストされたブラウザグラフィックスを受信することができる。例えば、ステップ1211において、ユーザコンピューティングデバイス1110は、通信インターフェース(例えば、通信インターフェース1114)を介して、仮想化サーバ(例えば、仮想化サーバインフラストラクチャ1130)から、ホストされた仮想ブラウザアプリケーション(例えば、ホストされたブラウザアプリケーション1131)によって生成された第1のホストされたブラウザグラフィックスを受信することができる。さらに、ホストされた仮想ブラウザアプリケーション(例えば、ホストされたブラウザアプリケーション1131)によって生成された第1のホストされたブラウザグラフィックスは、第1のユニフォームリソースロケータに関連付けられたコンテンツを含むことができる。したがって、仮想化サーバインフラストラクチャ1130上のホストされたブラウザアプリケーション1131は、ユーザコンピューティングデバイス1110上でネイティブにサポートされていない第1のユニフォームリソースロケータに関連付けられたコンテンツにアクセスおよび/またはレンダリングすることができ、その後、仮想化サーバインフラストラクチャ1130上のホストされたブラウザアプリケーション1131は、第1のユニフォームリソースロケータに関連付けられたレンダリングされたコンテンツを、表示(例えば、ローカルブラウザアプリケーション1113などのユーザコンピューティングデバイス1110上のローカルブラウザにおいて)する目的のために、ユーザコンピューティングデバイス1110に送信することができる。
ステップ1212において、ユーザコンピューティングデバイス1110は、仮想化サーバインフラストラクチャ1130から受信した、ホストされたブラウザグラフィックスを提示することができる。例えば、ステップ1212において、ユーザコンピューティングデバイス1110は、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストされたブラウザアプリケーション1131)によって生成された第1のホストされたブラウザグラフィックスを提示することができる。ホストされた仮想ブラウザアプリケーションによって生成されたホストされたブラウザグラフィックスを提示する際に、ユーザコンピューティングデバイス1110は、図13に示されるグラフィカルユーザインターフェース1300と同様のグラフィカルユーザインターフェースを表示および/または提示することができる。図13に示すように、グラフィカルユーザインターフェース1300は、ローカルブラウザアプリケーション(例えば、タブリスト、戻るボタン、進むボタン、および/または他の要素)、および仮想化サーバインフラストラクチャ1130上のホストされたブラウザによってレンダリングされ且つコンピューティングデバイス1110上のローカルブラウザアプリケーションによって表示されるホストされたブラウザグラフィックスに関連するユーザインターフェース要素、コントロール、および/または他のコンテンツを含むことができる。
ある実施形態では、ホストされた仮想ブラウザアプリケーションによって生成された第1のホストされたブラウザグラフィックスを提示することは、ブラウジングアクティビティに関連するブラウジング遷移のスタックを維持することを含むことができる。例えば、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストされたブラウザアプリケーション1131)によって生成された第1のホストされたブラウザグラフィックスを提示する際、ユーザコンピューティングデバイス1110は、ブラウジングアクティビティに関連するブラウジング遷移のスタックを維持することができる。ブラウジングアクティビティに関連するブラウジング遷移のスタックを維持する際に、ユーザコンピューティングデバイス1110は、ユーザコンピューティングデバイス1110上で実行するローカルブラウザにおけるローカルブラウジングアクティビティおよび仮想化サーバインフラストラクチャ1130上で実行するホストされた仮想ブラウザにおけるリモートブラウジングアクティビティを含む、アクセスされるページおよび/またはページ間の遷移を識別する情報を追跡および/または記憶することができる。ユーザコンピューティングデバイス1110は、そのようなブラウジング遷移のスタックを維持して、ローカルブラウザおよび/またはホストされたブラウザにおけるナビゲーション機能、履歴追跡機能、および/または他の機能を戻すおよび/または進めることができる。場合によっては、そのようなブラウジング遷移のスタックは、ユーザコンピューティングデバイス1110上で維持することができるブラウジング遷移のスタックに加えてまたはその代わりに、仮想化サーバインフラストラクチャ1130上で同様に維持することができる。
図12Dを参照すると、ステップ1213において、ユーザコンピューティングデバイス1110は、ホストされたブラウザグラフィックス(例えば、ユーザコンピューティングデバイス1110上で実行するローカルブラウザによって提示することができる)と対話する入力(例えば、ユーザコンピューティングデバイス1110のユーザから)を受信することができる。例えば、ステップ1213において、ユーザコンピューティングデバイス1110は、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストされたブラウザアプリケーション1131)によって生成されてコンピューティングデバイス(例えば、ユーザコンピューティングデバイス1110)によって提示された第1のホストされたブラウザグラフィックスと対話する入力を受信することができる。そのような入力は、例えば、ホストされたブラウザグラフィックスに含まれるフォームまたは他のコントロールと対話する、および/またはホストされたブラウザグラフィックスに含まれる要素と対話する、ホストされたブラウザグラフィックスに含まれるリンクを呼び出すおよび/または選択するユーザを含むことができる。
ある実施形態では、ホストされた仮想ブラウザプリケーションによって生成されてコンピューティングデバイスによって提示された第1のホストされたブラウザグラフィックスとの入力対話を受信することは、ホストされた仮想ブラウザプリケーションによって生成されたおよびコンピューティングデバイスによって提示された第1のホストされたブラウザグラフィックスとの入力対話に基づいて、ブラウジング遷移のスタックを更新することを含むことができる。例えば、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストされたブラウザアプリケーション1131)によって生成されたおよびコンピューティングデバイス(例えば、ユーザコンピューティングデバイス1110)によって提示された第1のホストされたブラウザグラフィックスと対話する入力を受信する際に、ユーザコンピューティングデバイス1110は、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストブラウザアプリケーション1131)によって生成されたおよびコンピューティングデバイス(例えば、ユーザコンピューティングデバイス1110)によって提示された第1のホストされたブラウザグラフィックスと対話する入力に基づいて、ブラウジング遷移のスタックを更新することができる。例えば、入力がリンクの選択および/またはリンクに関連する新たなページへの遷移を含む場合、ユーザコンピューティングデバイス1110は、リンクの選択を識別する情報および/またはリンクに関連する新たなページへの遷移を含むようにブラウジング遷移を更新することができる。
ステップ1214において、ユーザコンピューティングデバイス1110は、ホストされたブラウザグラフィックスと対話する入力を仮想化サーバインフラストラクチャ1130に送信することができる。例えば、ステップ1214において、ユーザコンピューティングデバイス1110は、通信インターフェース(例えば、通信インターフェース1114)を介して、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストされたブラウザアプリケーション1131)によって生成されたおよびコンピューティングデバイス(例えば、ユーザコンピューティングデバイス1110)によって提示された第1のホストされたブラウザグラフィックスと対話する入力を、仮想化サーバ(例えば、仮想化サーバインフラストラクチャ1130)に送信することができる。ステップ1215において、ユーザコンピューティングデバイス1110は、仮想化サーバインフラストラクチャ1130から更新されたブラウザグラフィックスを受信することができる。例えば、ステップ1215において、ユーザコンピューティングデバイス1110は、通信インターフェース(例えば、通信インターフェース1114)を介して、仮想化サーバ(例えば、仮想化サーバインフラストラクチャ1130)から、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストされたブラウザアプリケーション1131)によって生成された、更新されてホストされたブラウザグラフィックスを受信することができる。例えば、仮想化サーバインフラストラクチャ1130上で実行するホストされたブラウザアプリケーション1131は、ユーザコンピューティングデバイス1110から受信した入力に基づいて、更新されたグラフィックスをレンダリングおよび/または生成することができ、その後、そのような更新されたグラフィックスを表示するためにユーザコンピューティングデバイス1110に返送することができる。ステップ1216において、ユーザコンピューティングデバイス1110は、仮想化サーバインフラストラクチャ1130から受信した更新されたブラウザグラフィックスを提示することができる。例えば、ステップ1216において、ユーザコンピューティングデバイス1110は、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストブラウザアプリケーション1131)によって生成された、更新されたホストされたブラウザグラフィックスを提示することができる。
図12Eを参照すると、ステップ1217において、ユーザコンピューティングデバイス1110は、第2のユニフォームリソースロケータのリクエストを受信することができる。例えば、ステップ1217において、ユーザコンピューティングデバイス1110は、第2のユニフォームリソースロケータを開くリクエストを受信することができる。そのようなリクエストは、例えば、ユーザコンピューティングデバイス1110のユーザから受信したユーザ入力に対応することができるおよび/またはユーザ入力に含むことができる。場合によっては、ユーザコンピューティングデバイス1110は、第1のユニフォームリソースロケータに関連付けられたホストされたグラフィックスが提示されるタブとは異なる新たなタブで、第2のユニフォームリソースロケータを開くリクエストを受信することができる。それに加えてまたはそれに代えて、ユーザコンピューティングデバイス1110は、ユーザコンピューティングデバイス1110上で実行するローカルブラウザの異なるタブ間に表示されるコンテンツおよび/またはブラウジング遷移を追跡することができる。
ステップ1218において、ユーザコンピューティングデバイス1110は、第2のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。例えば、ステップ1218において、ユーザコンピューティングデバイス1110は、第1のユニフォームリソースロケータがネイティブにサポートされていなかった旨をユーザコンピューティングデバイス1110が判定した方法と同様に、第2のユニフォームリソースロケータがネイティブにサポートされていない(例えば、1つ以上のポリシーに基づいて、ロード失敗の検出に基づいて、第2のユニフォームリソースロケータがホストされたウェブアプリケーションに関連するスタブアプリケーションに対応する旨の識別に基づいて、および/またはユーザコンピューティングデバイス1110によって維持および/または判定された他の情報に基づいて)旨を判定することができる。
ステップ1219において、ユーザコンピューティングデバイス1110は、ホストされたセッションにおいて(例えば、仮想化サーバインフラストラクチャ1130によって提供された、ホストされたセッションでのホストされたブラウザの他のインスタンスを起動するように仮想化サーバインフラストラクチャ1130に指示する、コマンドを出す、および/または制御することによって)、ホストされたブラウザの追加インスタンスを起動することができる。例えば、ステップ1219において、ユーザコンピューティングデバイス1110は、第2のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、仮想化サーバ(例えば、仮想化サーバインフラストラクチャ1130)によってホストされた仮想セッションにおいてホストされた仮想ブラウザアプリケーション(例えば、ホストされたブラウザアプリケーション1131)の追加インスタンスを起動することができる。
ステップ1220において、ユーザコンピューティングデバイス1110は、仮想化サーバインフラストラクチャ1130からホストされたブラウザグラフィックスを受信することができる。例えば、ステップ1220において、ユーザコンピューティングデバイス1110は、通信インターフェース(例えば、通信インターフェース1114)を介して、仮想化サーバ(例えば、仮想化サーバインフラストラクチャ1130)から、ホストされた仮想ブラウザアプリケーション(例えば、ホストされたブラウザアプリケーション1131)の追加インスタンスによって生成された第2のホストされたブラウザグラフィックスを受信することができる。さらに、第2のホストされたブラウザグラフィックスは、第2のユニフォームリソースロケータに関連するコンテンツを含むことができる。したがって、第1のユニフォームリソースロケータと同様に、仮想化サーバインフラストラクチャ1130上のホストされたブラウザアプリケーション1131は、ユーザコンピューティングデバイス1110上でネイティブにサポートされていない第2のユニフォームリソースロケータに関連付けられたコンテンツにアクセスおよび/またはレンダリングすることができ、その後、仮想化サーバインフラストラクチャ1130上のホストされたブラウザアプリケーション1131は、第2のユニフォームリソースロケータに関連付けられたレンダリングされたコンテンツを、表示する目的のために(例えば、ローカルブラウザアプリケーション1113などのユーザコンピューティングデバイス1110上のローカルブラウザにおいて)、ユーザコンピューティングデバイス1110に送信することができる。
図12Fを参照すると、ステップ1221において、ユーザコンピューティングデバイス1110は、仮想化サーバインフラストラクチャ1130から受信したホストされたブラウザグラフィックスを提示することができる。例えば、ステップ1221において、ユーザコンピューティングデバイス1110は、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストブラウザアプリケーション1131)の追加インスタンスによって生成された、第2のホストされたブラウザグラフィックスを提示することができる。
ある実施形態では、ホストされた仮想ブラウザアプリケーションによって生成された第1のホストされたブラウザグラフィックスを提示することは、ローカルブラウザアプリケーションの第1のタブに第1のホストされたブラウザグラフィックスを提示することを含むことができ、ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された第2のホストされたブラウザグラフィックスを提示することは、ローカルブラウザアプリケーションの第1のタブとは異なるローカルブラウザアプリケーションの第2のタブに第2のホストされたブラウザグラフィックスを提示することを含むことができる。例えば、ユーザコンピューティングデバイス1110は、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストされたブラウザアプリケーション1131)によって生成された第1のホストされたブラウザグラフィックスを提示する際に、ローカルブラウザアプリケーションの第1のタブ(例えば、ユーザコンピューティングデバイス1110上で実行するローカルブラウザアプリケーション1113の第1のタブ)において第1のホストされたブラウザグラフィックスを提示することができる。さらに、ユーザコンピューティングデバイス1110は、ホストされた仮想ブラウザアプリケーションの追加インスタンス(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストされたブラウザアプリケーション1131の追加インスタンス)によって生成された第2のホストされたブラウザグラフィックスを提示する際に、ローカルブラウザアプリケーションの第1のタブとは異なるローカルブラウザアプリケーションの第2のタブ(例えば、ユーザコンピューティングデバイス1110上で実行するローカルブラウザアプリケーション1113の第2のタブ)において第2のホストされたブラウザグラフィックスを提示することができる。
ある実施形態では、ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された第2のホストされたブラウザグラフィックスを提示することは、ローカルブラウザアプリケーションの第1のタブにおける第1のブラウジングアクティビティに関連するブラウジング遷移の第1のスタックを維持すること、およびローカルブラウザアプリケーションの第2のタブにおける第2のブラウジングアクティビティに関連するブラウジング遷移の第2のスタックを維持することとを含むことができる。例えば、ホストされた仮想ブラウザアプリケーション(例えば、仮想化サーバインフラストラクチャ1130上で実行するホストされたブラウザアプリケーション1131)の追加インスタンスによって生成された第2のホストされたブラウザグラフィックスを提示する際に、ユーザコンピューティングデバイス1110は、ローカルブラウザアプリケーションの第1のタブにおける第1のブラウジングアクティビティに関連するブラウジング遷移の第1のスタックを維持することができ、ローカルブラウザアプリケーションの第2のタブにおける第2のブラウジングアクティビティに関連するブラウジング遷移の第2のスタックを維持することができる。ユーザコンピューティングデバイス1110は、上述した例のように、ユーザコンピューティングデバイス1110が遷移スタックを維持することができる方法と同様に、そのような遷移スタックを維持することができる。
ステップ1222において、ユーザコンピューティングデバイス1110は、第3のユニフォームリソースロケータのリクエストを受信することができる。例えば、ステップ1222において、ユーザコンピューティングデバイス1110は、第3のユニフォームリソースロケータを開くリクエストを受信することができる。そのようなリクエストは、例えば、ユーザコンピューティングデバイス1110のユーザから受信したユーザ入力に対応することができるおよび/またはユーザ入力に含むことができる。場合によっては、ユーザコンピューティングデバイス1110は、第1のユニフォームリソースロケータに関連付けられたホストされたグラフィックスおよび/または第2のユニフォームリソースロケータに関連付けられたホストされたグラフィックスが提示されるタブとは異なる新たなタブで、第3のユニフォームリソースロケータを開くリクエストを受信することができる。それに加えてまたはその代わりに、ユーザコンピューティングデバイス1110は、ユーザコンピューティングデバイス1110上に表示されるコンテンツおよび/またはユーザコンピューティングデバイス1110上で実行するローカルブラウザの異なるタブ間のブラウジング遷移を追跡することができる。
ステップ1223において、ユーザコンピューティングデバイス1110は、第3のユニフォームリソースロケータがネイティブにサポートされている旨を判定することができる。例えば、ステップ1223において、ユーザコンピューティングデバイス1110は、ユーザコンピューティングデバイス1110が維持および/または判定する1つ以上のポリシーおよび/または他の情報に基づいて、第3のユニフォームリソースロケータがネイティブにサポートされている旨を判定することができる。ステップ1224において、ユーザコンピューティングデバイス1110は、第3のユニフォームリソースロケータにアクセスすることができる。例えば、ステップ1224において、第3のユニフォームリソースロケータがネイティブにサポートされていると判定したことに基づいて、ユーザコンピューティングデバイス1110は、ローカルブラウザアプリケーション(例えば、ローカルブラウザアプリケーション1113)を使用して第3のユニフォームリソースロケータにアクセスすることができる。第3のユニフォームリソースロケータにアクセスする際に、ユーザコンピューティングデバイス1110は、例えば、第3のユニフォームリソースロケータに関連するコンテンツをネイティブに開いて提示することができる。例えば、図14に示すように、第3のユニフォームリソースロケータにアクセスする際に、ユーザコンピューティングデバイス1110は、グラフィカルユーザインターフェース1400と同様のグラフィカルユーザインターフェースを表示および/または提示することができる。図14に示すように、グラフィカルユーザインターフェース1400は、ローカルブラウザアプリケーション(例えば、タブリスト、戻るボタン、進むボタン、および/または他の要素)、また、ユーザコンピューティングデバイス1110上のローカルブラウザアプリケーションによってレンダリングされるネイティブブラウザグラフィックスに関連し且つユーザコンピューティングデバイス1110上のローカルブラウザアプリケーションによって表示されるユーザインターフェース要素、コントロール、および/または他のコンテンツを含むことができる。
図15は、本明細書に記載された1つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する例示的な方法を示す。図15を参照すると、ステップ1505において、少なくとも1つのプロセッサ、通信インターフェース、およびメモリを有するコンピューティングデバイスは、第1のユニフォームリソースロケータを開くリクエストを受信することができる。ステップ1510において、コンピューティングデバイスは、第1のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。ステップ1515において、第1のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、コンピューティングデバイスは、仮想化サーバによってホストされる仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動することができる。ステップ1520において、コンピューティングデバイスは、通信インターフェースを介して、仮想化サーバから、ホストされた仮想ブラウザアプリケーションによって生成された第1のホストされたブラウザグラフィックスを受信することができ、ホストされた仮想ブラウザアプリケーションによって生成された第1のホストされたブラウザグラフィックスは、第1のユニフォームリソースロケータに関連するコンテンツを含むことができる。ステップ1525において、コンピューティングデバイスは、ホストされた仮想ブラウザアプリケーションによって生成された第1のホストされたブラウザグラフィックスを提示することができる。
上記例示したように、本開示の様々な態様は、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合することに関する。主題は、構造的特徴および/または方法論的作用に特有の文言で記載されているが、添付の特許請求の範囲に定義された主題は、必ずしも上述した特定の特徴または作用に限定されるものではないことが理解されるべきである。むしろ、上述した特定の特徴および動作は、以下の特許請求の範囲のいくつかの例示的な実装として記載される。