(57)【要約】  仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための方法、システム、およびコンピュータ可読媒体が提示される。ある実施形態では、コンピューティングデバイスは、第１のユニフォームリソースロケータを開くリクエストを受信することができる。その後、コンピューティングデバイスは、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。第１のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、コンピューティングデバイスは、仮想化サーバによってホストされる仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動することができる。その後、コンピューティングデバイスは、仮想化サーバから、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスを受信することができ、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスは、第１のユニフォームリソースロケータに関連するコンテンツを含むことができる。そして、コンピューティングデバイスは、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスを提示することができる。  【選択図】図１５
2019526842.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスであって、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに通信可能に結合された通信インターフェースと、
前記少なくとも１つのプロセッサによって実行するとき、その結果として前記コンピューティングデバイスが、
第１のユニフォームリソースロケータを開くリクエストを受信して、
前記第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定して、
前記第１のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、仮想化サーバによってホストされる仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動して、
前記通信インターフェースを介して、前記仮想化サーバから、前記ホストされた仮想ブラウザアプリケーションによって生成された前記第１のホストされたブラウザグラフィックスを受信する、前記ホストされた仮想ブラウザアプリケーションによって生成された前記第１のホストされたブラウザグラフィックスが前記第１のユニフォームリソースロケータに関連するコンテンツを含み、
前記ホストされた仮想ブラウザアプリケーションによって生成された、前記第１のホストされたブラウザグラフィックスを提示するコンピュータ可読命令を記憶するメモリと、を備える、コンピューティングデバイス。
【請求項２】
前記第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することが、前記第１のユニフォームリソースロケータが、１つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する少なくとも１つの企業ポリシーに基づいて、ネイティブにサポートされていない旨を判定することを備える、請求項１に記載のコンピューティングデバイス。
【請求項３】
前記第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することが、前記第１のユニフォームリソースロケータが、前記第１のユニフォームリソースロケータに関連する１つ以上の要素のロード失敗を検出することに基づいて、ネイティブにサポートされていない旨を判定することを備える、請求項１に記載のコンピューティングデバイス。
【請求項４】
前記第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することが、前記第１のユニフォームリソースロケータが、前記第１のユニフォームリソースロケータがホストされたウェブアプリケーションに関連するスタブアプリケーションに対応する旨を識別することに基づいて、ネイティブにサポートされていない旨を判定することを備える、請求項１に記載のコンピューティングデバイス。
【請求項５】
前記仮想化サーバによってホストされた前記仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動することが、前記仮想化サーバへの接続を確立し、１つ以上のキャッシュされた認証情報を使用して前記仮想化サーバで認証することを備える、請求項１に記載のコンピューティングデバイス。
【請求項６】
前記１つ以上のキャッシュされた認証情報を使用して前記仮想化サーバで認証することが、企業ユーザアカウントにリンクされた少なくとも１つのキャッシュされたシングルサインオン（ＳＳＯ）認証情報を使用して前記仮想化サーバで認証することを備える、請求項５に記載のコンピューティングデバイス。
【請求項７】
前記ホストされた仮想ブラウザアプリケーションによって生成された、前記第１のホストされたブラウザグラフィックスを提示することが、ブラウジングアクティビティに関連するブラウジング遷移のスタックを維持することを備える、請求項１に記載のコンピューティングデバイス。
【請求項８】
前記メモリが、前記少なくとも１つのプロセッサによって実行するとき、その結果として前記コンピューティングデバイスが、
前記第１のユニフォームリソースロケータを開くリクエストを受信する前に、
前記通信インターフェースを介して、前記企業サーバから、１つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する少なくとも１つの企業ポリシーを含む１つ以上の企業ポリシーを受信して、
少なくとも１つのポリシー管理エージェントによって前記コンピューティングデバイスにおいて実行するために前記１つ以上の企業ポリシーを記憶して、
追加のコンピュータ可読命令を記憶する、請求項１に記載のコンピューティングデバイス。
【請求項９】
前記メモリが、前記少なくとも１つのプロセッサによって実行するとき、その結果として前記コンピューティングデバイスが、
前記第１のユニフォームリソースロケータを開くリクエストを受信する前に、
前記コンピューティングデバイスのユーザを認証して、
前記コンピューティングデバイスのユーザを認証することに基づいて、前記コンピューティングデバイスのユーザに関連する１つ以上の認証情報をキャッシュして、
追加のコンピュータ可読命令を記憶する、請求項１に記載のコンピューティングデバイス。
【請求項１０】
前記メモリが、前記少なくとも１つのプロセッサによって実行するとき、その結果として前記コンピューティングデバイスが、
前記ホストされた仮想ブラウザアプリケーションによって生成されて前記コンピューティングデバイスによって提示された、前記第１のホストされたブラウザグラフィックスとの入力対話を受信して、
前記通信インターフェースを介して、前記ホストされた仮想ブラウザアプリケーションによって生成されて前記コンピューティングデバイスによって提示された、前記第１のホストされたブラウザグラフィックスとの入力対話を前記仮想化サーバに送信して、
前記通信インターフェースを介して、前記仮想化サーバから、前記ホストされた仮想ブラウザアプリケーションによって生成された、更新されてホストされたブラウザグラフィックスを受信して、
前記ホストされた仮想ブラウザアプリケーションによって生成された、更新されてホストされたブラウザグラフィックスを提示する、
追加のコンピュータ可読命令を記憶する、請求項１に記載のコンピューティングデバイス。
【請求項１１】
前記ホストされた仮想ブラウザアプリケーションによって生成されて前記コンピューティングデバイスによって提示された、前記第１のホストされたブラウザグラフィックスとの入力対話を受信することが、前記ホストされた仮想ブラウザアプリケーションによって生成されて前記コンピューティングデバイスによって提示された、前記第１のホストされたブラウザグラフィックスとの入力対話に基づいて、ブラウジング遷移のスタックを更新することを備える、請求項１０に記載のコンピューティングデバイス。
【請求項１２】
前記メモリが、前記少なくとも１つのプロセッサによって実行するとき、その結果として前記コンピューティングデバイスが、
第２のユニフォームリソースロケータを開くリクエストを受信して、
前記第２のユニフォームリソースロケータがネイティブにサポートされていない旨を判定して、
前記第２のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、前記仮想化サーバによってホストされる前記仮想セッションにおいて、ホストされた仮想ブラウザアプリケーションの追加インスタンスを起動して、
前記通信インターフェースを介して、前記仮想化サーバから、前記ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された第２のホストされたブラウザグラフィックスを受信して、前記第２のホストされたブラウザグラフィックスが、前記第２のユニフォームリソースロケータに関連するコンテンツを含み、
前記ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された、前記第２のホストされたブラウザグラフィックスを提示する、
追加のコンピュータ可読命令を記憶する、請求項１に記載のコンピューティングデバイス。
【請求項１３】
前記ホストされた仮想ブラウザアプリケーションによって生成された、前記第１のホストされたブラウザグラフィックスを提示することが、ローカルブラウザアプリケーションの第１のタブに、前記第１のホストされたブラウザグラフィックスを提示することを備え、前記ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された、前記第２のホストされたブラウザグラフィックスを提示することが、前記ローカルブラウザアプリケーションの前記第１のタブとは異なる前記ローカルブラウザアプリケーションの第２のタブに、前記第２のホストされたブラウザグラフィックスを提示することを備える、請求項１２に記載のコンピューティングデバイス。
【請求項１４】
前記ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された、前記第２のホストされたブラウザグラフィックスを提示することが、前記ローカルブラウザアプリケーションの前記第１のタブで、前記第１のブラウジングアクティビティに関連するブラウジング遷移の第１のスタックを維持することと、前記ローカルブラウザアプリケーションの前記第２のタブにおける、前記第２のブラウジングアクティビティに関連するブラウジング遷移の第２のスタックを維持することと、を備える、請求項１３に記載のコンピューティングデバイス。
【請求項１５】
前記メモリが、前記少なくとも１つのプロセッサによって実行するとき、その結果として前記コンピューティングデバイスが、
第３のユニフォームリソースロケータを開くリクエストを受信して、
前記第３のユニフォームリソースロケータがネイティブにサポートされている旨を判定して、
前記第３のユニフォームリソースロケータがネイティブにサポートされていると判定したことに基づいて、ローカルブラウザアプリケーションを使用して前記第３のユニフォームリソースロケータにアクセスして、
追加のコンピュータ可読命令を記憶する、請求項１２に記載のコンピューティングデバイス。
【請求項１６】
方法であって、
少なくとも１つのプロセッサと、メモリと、通信インターフェースとを備えるコンピューティングデバイスにおいて、
前記少なくとも１つのプロセッサによって第１のユニフォームリソースロケータを開くリクエストを受信することと、
前記少なくとも１つのプロセッサによって前記第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することと、
前記少なくとも１つのプロセッサによって、前記第１のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、仮想化サーバによってホストされる仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動することと、
前記少なくとも１つのプロセッサによって、前記通信インターフェースを介して、前記仮想化サーバから、前記ホストされた仮想ブラウザアプリケーションによって生成された前記第１のホストされたブラウザグラフィックスを受信することであって、前記ホストされた仮想ブラウザアプリケーションによって生成された前記第１のホストされたブラウザグラフィックスが前記第１のユニフォームリソースロケータに関連するコンテンツを含むことと、
前記少なくとも１つのプロセッサによって、前記ホストされた仮想ブラウザアプリケーションによって生成された前記第１のホストされたブラウザグラフィックスを提示することと、を備える、方法。
【請求項１７】
前記第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することが、前記第１のユニフォームリソースロケータが、１つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する少なくとも１つの企業ポリシーに基づいて、ネイティブにサポートされていない旨を判定することを備える、請求項１６に記載の方法。
【請求項１８】
前記第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することが、前記第１のユニフォームリソースロケータが、前記第１のユニフォームリソースロケータに関連する１つ以上の要素のロード失敗を検出することに基づいて、ネイティブにサポートされていない旨を判定することを備える、請求項１６に記載の方法。
【請求項１９】
前記第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することが、前記第１のユニフォームリソースロケータが、前記第１のユニフォームリソースロケータがホストされたウェブアプリケーションに関連するスタブアプリケーションに対応する旨を識別することに基づいて、ネイティブにサポートされていない旨を判定することを備える、請求項１６に記載の方法。
【請求項２０】
少なくとも１つのプロセッサ、メモリ、および通信インターフェースを備えるコンピューティングデバイスによって実行するとき、その結果として前記コンピューティングデバイスが、
第１のユニフォームリソースロケータを開くリクエストを受信して、
前記第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定して、
前記第１のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、仮想化サーバによってホストされる仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動して、
前記通信インターフェースを介して、前記仮想化サーバから、前記ホストされた仮想ブラウザアプリケーションによって生成された、前記第１のホストされたブラウザグラフィックスを受信して、前記ホストされた仮想ブラウザアプリケーションによって生成された前記第１のホストされたブラウザグラフィックスが、前記第１のユニフォームリソースロケータに関連するコンテンツを含み、
前記ホストされた仮想ブラウザアプリケーションによって生成された前記第１のホストされたブラウザグラフィックスを提示する、命令を記憶する１つ以上の非一過性のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、２０１７年３月２９日に出願された「仮想ブラウザ統合」という名称の米国特許出願第１５／４７２，７９８号、および２０１６年５月２３日に出願された「ネイティブブラウザおよびネイティブウェブアプリケーションへの仮想ブラウザの統合」という名称の米国仮特許出願第６２／３４０，０２８号に基づく優先権の利益を主張する。前述の各出願の内容は、全ての目的のために、その全体が参照することによって本明細書に組み込まれる。
【０００２】
本開示の態様は、コンピュータハードウェアおよびソフトウェアに関する。特に、本開示の１つ以上の態様は、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するためのコンピュータハードウェアおよびソフトウェアに関する。
【背景技術】
【０００３】
企業組織およびそれらの従業員並びに他の関連ユーザは、電子メールの送受信、カレンダーやタスクの管理、コンテンツの作成および表示、企業情報のアクセスおよび変更、並びに他の機能の実行など、様々な機能に携わるためにモバイルコンピューティングデバイスをますます利用している。そのようなモバイルデバイスがますます採用されて使用されるのに伴い、企業情報および他の企業リソースの安全性およびセキュリティを保護するために、そのようなデバイスが使用される方法および／またはそれらがアクセス可能な情報が何であるかを制御および／または管理することが企業にとってますます重要である。しかしながら、場合によっては、これには技術的な問題が生じる可能性がある。
【発明の概要】
【０００４】
本開示の態様は、モバイルデバイスおよび／またはモバイルアプリケーションによる企業情報および他の企業リソースへのアクセスを制御および／または管理することに関連する１つ以上の技術的課題に対処して克服することができる技術的解決策を提供する。
【０００５】
特に、本開示の１つ以上の態様は、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する方法を提供する。例えば、本開示の１つ以上の態様を実装することによって、仮想ブラウザは、ネイティブにサポートされていないコンテンツへのアクセスを可能にするおよび／または提供するために、および／またはよりセキュリティを強化および／またはより高いセキュリティを提供するために、ネイティブブラウザにシームレスに統合することができる。さらに、そのような仮想ブラウザは、ネイティブのユーザ体験および本格的なウェブアプリケーション機能の双方を提供するように、ネイティブ「ウェブ」アプリケーションへのアクセスを可能にするおよび／または提供するために使用することができる。
【０００６】
例えば、少なくとも１つのプロセッサ、メモリ、および通信インターフェースを有するコンピューティングプラットフォームは、ネイティブにサポートされていないユニフォームリソースロケータを開くリクエストを受信することができる。ネイティブにサポートされていないユニフォームリソースロケータを開くリクエストを受信したことに応答して、コンピューティングプラットフォームは、ホストされた仮想ブラウザアプリケーションを起動することができる。その後、コンピューティングプラットフォームは、ホストされた仮想ブラウザアプリケーションによって生成されたグラフィックスを表示することができ、ホストされた仮想ブラウザアプリケーションによって生成されたグラフィックスは、ネイティブにサポートされていないユニフォームリソースロケータに関連するコンテンツを含むことができる。
【０００７】
１つ以上の実施形態によれば、少なくとも１つのプロセッサ、通信インターフェース、およびメモリを有するコンピューティングデバイスは、第１のユニフォームリソースロケータを開くリクエストを受信することができる。その後、コンピューティングデバイスは、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。第１のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、コンピューティングデバイスは、仮想化サーバによってホストされる仮想セッションにおいて、ホストされた仮想ブラウザアプリケーションを起動することができる。その後、コンピューティングデバイスは、通信インターフェースを介して、仮想化サーバから、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスを受信することができ、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスは、第１のユニフォームリソースロケータに関連するコンテンツを含むことができる。そして、コンピューティングデバイスは、ホストされた仮想ブラウザアプリケーションによって生成された、第１のホストされたブラウザグラフィックスを提示することができる。
【０００８】
ある実施形態では、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することは、第１のユニフォームリソースロケータが、１つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する少なくとも１つの企業ポリシーに基づいて、ネイティブにサポートされていない旨を判定することを含むことができる。ある実施形態では、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することは、第１のユニフォームリソースロケータが、第１のユニフォームリソースロケータに関連する１つ以上の要素のロード失敗を検出することに基づいてネイティブにサポートされていない旨を判定することを含むことができる。ある実施形態では、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することは、第１のユニフォームリソースロケータが、第１のユニフォームリソースロケータがホストされたウェブアプリケーションに関連するスタブアプリケーションに対応する旨を識別することに基づいて、ネイティブにサポートされていない旨を判定することを含むことができる。
【０００９】
ある実施形態では、仮想化サーバによってホストされる仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動することは、仮想化サーバへの接続を確立し、１つ以上のキャッシュされた認証情報を使用して、仮想化サーバで認証することを含むことができる。場合によっては、１つ以上のキャッシュされた認証情報を使用して仮想化サーバで認証することは、企業ユーザアカウントにリンクされた少なくとも１つのキャッシュされたシングルサインオン（ＳＳＯ）認証情報を使用して、仮想化サーバで認証することを含むことができる。
【００１０】
ある実施形態では、ホストされた仮想ブラウザアプリケーションによって生成された、第１のホストされたブラウザグラフィックスを提示することは、ブラウジングアクティビティに関連するブラウジング遷移のスタックを維持することを含むことができる。
【００１１】
ある実施形態では、第１のユニフォームリソースロケータを開くリクエストを受信する前に、コンピューティングデバイスは、通信インターフェースを介して、企業サーバから１つ以上の企業ポリシーを受信することができ、１つ以上の企業ポリシーは、１つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する、少なくとも１つの企業ポリシーを含むことができる。その後、コンピューティングデバイスは、少なくとも１つのポリシー管理エージェントによってコンピューティングデバイスにおいて実行するために１つ以上の企業ポリシーを記憶することができる。
【００１２】
ある実施形態では、第１のユニフォームリソースロケータを開くリクエストを受信する前に、コンピューティングデバイスは、コンピューティングデバイスのユーザを認証することができる。コンピューティングデバイスのユーザを認証することに基づいて、コンピューティングデバイスは、コンピューティングデバイスのユーザに関連する１つ以上の認証情報をキャッシュすることができる。
【００１３】
ある実施形態では、コンピューティングデバイスは、ホストされた仮想ブラウザアプリケーションによって生成され、コンピューティングデバイスによって提示された第１のホストされたブラウザグラフィックスと対話する入力を受信することができる。その後、コンピューティングデバイスは、通信インターフェースを介して、ホストされた仮想ブラウザアプリケーションによって生成され、コンピューティングデバイスによって提示された第１のホストされたブラウザグラフィックスと対話する入力を仮想化サーバに送信することができる。その後、コンピューティングデバイスは、通信インターフェースを介して、仮想化サーバから、ホストされた仮想ブラウザアプリケーションによって生成され、更新されたホストされたブラウザグラフィックスを受信することができる。さらに、コンピューティングデバイスは、ホストされた仮想ブラウザアプリケーションによって生成され、更新されたホストされたブラウザグラフィックスを提示することができる。場合によっては、ホストされた仮想ブラウザアプリケーションによって生成され、コンピューティングデバイスによって提示された第１のホストされたブラウザグラフィックスと対話する入力を受信することは、ホストされた仮想ブラウザアプリケーションによって生成されてコンピューティングデバイスによって提示された第１のホストされたブラウザグラフィックスと対話する入力に基づいて、ブラウジング遷移のスタックを更新することを含むことができる。
【００１４】
ある実施形態では、コンピューティングデバイスは、第２のユニフォームリソースロケータを開くリクエストを受信することができる。その後、コンピューティングデバイスは、第２のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。第２のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、コンピューティングデバイスは、仮想化サーバによってホストされる仮想セッションで、ホストされた仮想ブラウザアプリケーションの追加インスタンスを起動することができる。その後、コンピューティングデバイスは、通信インターフェースを介して、仮想化サーバから、ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された第２のホストされたブラウザグラフィックスを受信することができ、第２のホストされたブラウザグラフィックスは、第２のユニフォームリソースロケータに関連するコンテンツを含むことができる。そして、コンピューティングデバイスは、ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された第２のホストされたブラウザグラフィックスを提示することができる。
【００１５】
ある実施形態では、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスを提示することは、ローカルブラウザアプリケーションの第１のタブに第１のホストされたブラウザグラフィックスを提示することを含むことができ、ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された第２のホストされたブラウザグラフィックスを提示することは、ローカルブラウザアプリケーションの第１のタブとは異なるローカルブラウザアプリケーションの第２のタブに、第２のホストされたブラウザグラフィックスを提示することを含むことができる。場合によっては、ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された第２のホストされたブラウザグラフィックスを提示することは、ローカルブラウザアプリケーションの第１のタブにおける第１のブラウジングアクティビティに関連するブラウジング遷移の第１のスタックを維持することと、ローカルブラウザアプリケーションの第２のタブにおける第２のブラウジングアクティビティに関連するブラウジング遷移の第２のスタックを維持することと、を含むことができる。
【００１６】
ある実施形態では、コンピューティングデバイスは、第３のユニフォームリソースロケータを開くリクエストを受信することができる。その後、コンピューティングデバイスは、第３のユニフォームリソースロケータがネイティブにサポートされている旨を判定することができる。第３のユニフォームリソースロケータがネイティブにサポートされていると判定したことに基づいて、コンピューティングデバイスは、ローカルブラウザアプリケーションを使用して第３のユニフォームリソースロケータにアクセスすることができる。
【００１７】
これらの特徴は、他の多くの特徴とともに、以下にさらに詳細に説明される。
【００１８】
添付図面を考慮して以下の詳細な説明を参照することにより、本明細書に記載された態様およびその利点のより完全な理解を得ることができ、図面において、同様の参照符号は、同様の特徴を示す。
【図面の簡単な説明】
【００１９】
【図１】図１は、本明細書に記載された１つ以上の例示的な態様に従って使用することができる、例示的なコンピュータシステムアーキテクチャを示す。
【図２】図２は、本明細書に記載された１つ以上の例示的な態様に従って使用することができる、例示的なリモートアクセスシステムアーキテクチャを示す。
【図３】図３は、本明細書に記載された１つ以上の例示的な態様に従って使用することができる、例示的な仮想化（ハイパーバイザ）システムアーキテクチャを示す。
【図４】図４は、本明細書に記載された１つ以上の例示的な態様に従って使用することができる、例示的なクラウドベースシステムアーキテクチャを示す。
【図５】図５は、本明細書に記載された１つ以上の例示的な態様に従う例示的な企業モビリティ管理システムを示す。
【図６】図６は、本明細書に記載された１つ以上の例示的な態様に従う他の例示的な企業モビリティ管理システムを示す。
【図７】図７は、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合することに関連する例を示す。
【図８】図８は、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合することに関連する例を示す。
【図９】図９は、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合することに関連する例を示す。
【図１０】図１０は、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する方法を示す。
【図１１】図１１は、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なコンピューティング環境を示す。
【図１２Ａ】図１２Ａは、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なイベントシーケンスを示す。
【図１２Ｂ】図１２Ｂは、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なイベントシーケンスを示す。
【図１２Ｃ】図１２Ｃは、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なイベントシーケンスを示す。
【図１２Ｄ】図１２Ｄは、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なイベントシーケンスを示す。
【図１２Ｅ】図１２Ｅは、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なイベントシーケンスを示す。
【図１２Ｆ】図１２Ｆは、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なイベントシーケンスを示す。
【図１３】図１３は、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なグラフィカルユーザインターフェースを示す。
【図１４】図１４は、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なグラフィカルユーザインターフェースを示す。
【図１５】図１５は、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する例示的な方法を示す。
【発明を実施するための形態】
【００２０】
以下の様々な実施形態の説明では、本明細書の一部を形成する上記で特定された添付図面を参照して、本明細書に記載された態様を実施することができる様々な実施形態を示す。本明細書に記載された範囲から逸脱することなく、他の実施形態が利用可能であり、構造および機能の変更が可能であることが理解されるべきである。様々な態様は、別の実施形態が可能であり、様々な異なる方法で実施および実行することが可能である。
【００２１】
本明細書で使用される表現および用語は、説明のためのものであり、限定的であると見なされるべきではないと理解される。むしろ、本明細書で使用される句および用語は、最も広い解釈および意味を与えられる。「含む（ｉｎｃｌｕｄｉｎｇ）」および「備える（ｃｏｍｐｒｉｓｉｎｇ）」並びにその変形の使用は、それ以降に列挙された項目およびその均等物、並びにそれらの追加項目および均等物を包含することを意味する。用語「取り付けられた（ｍｏｕｎｔｅｄ）」、「接続された（ｃｏｎｎｅｃｔｅｄ）」、「結合された（ｃｏｕｐｌｅｄ）」、「位置決めされた（ｐｏｓｉｔｉｏｎｅｄ）」、「係合された（ｅｎｇａｇｅｄ）」および同様の用語の使用は、直接的および間接的な取り付け、接続、結合、位置決めおよび係合を含むことを意味する。
【００２２】
コンピューティングアーキテクチャ
コンピュータソフトウェア、ハードウェア、およびネットワークは、スタンドアロン、ネットワーク化、リモートアクセス（別名、リモートデスクトップ）、仮想化、および／またはクラウドベース環境を含む、様々な異なるシステム環境で使用可能である。図１は、スタンドアロンおよび／またはネットワーク環境で、本明細書に記載される１つ以上の例示的な態様を実装するために使用可能であるシステムアーキテクチャおよびデータ処理装置の一例を記述する。様々なネットワークノード１０３、１０５、１０７、および１０９は、インターネットなどのワイドエリアネットワーク（ＷＡＮ）１０１を介して相互接続することができる。プライベートイントラネット、企業ネットワーク、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、無線ネットワーク、パーソナルネットワーク（ＰＡＮ）などを含む他のネットワークもまた使用されてもよく、または代替として使用されてもよい。ネットワーク１０１は、例示目的のものであり、より少ないまたは追加のコンピュータネットワークと置き換えることができる。ローカルエリアネットワークは、任意の公知のＬＡＮトポロジのうちの１つ以上を有することができ、イーサネット（登録商標）などの様々な異なるプロトコルのうちの１つ以上を使用することができる。デバイス１０３、１０５、１０７、１０９および他のデバイス（図示せず）は、ツイストペア線、同軸ケーブル、光ファイバ、電波または他の通信媒体を介して１つ以上のネットワークに接続されてもよい。
【００２３】
本明細書で使用する図面に示されている用語「ネットワーク」は、遠隔記憶装置が１つ以上の通信経路を介して結合されるシステムを指すだけではなく、時折、記憶能力を有するそのようなシステムに結合され得るスタンドアロン装置をも指す。したがって、用語「ネットワーク」は、「物理ネットワーク」だけでなく、全ての物理ネットワークに存在する−単一エンティティに起因する−データから構成される「コンテンツネットワーク」をも含む。
【００２４】
コンポーネントは、データサーバ１０３、ウェブサーバ１０５、およびクライアントコンピュータ１０７、１０９を含むことができる。データサーバ１０３は、本明細書に記載された１つ以上の例示的な態様を実行するためのデータベースおよび制御ソフトウェアの全体的なアクセス、制御および管理を提供する。データサーバ１０３は、要請により、ユーザがデータと対話してデータを取得するウェブサーバ１０５に接続することができる。その代わりに、データサーバ１０３は、ウェブサーバ自体として機能してもよく、インターネットに直接接続されてもよい。データサーバ１０３は、ネットワーク１０１（例えば、インターネット）を介して、直接的または間接的な接続を介して、または他の何らかのネットワークを介してウェブサーバ１０５に接続することができる。ユーザは、ウェブサーバ１０５によってホストされた１つ以上の外部に露出されたウェブサイトを介して、データサーバ１０３に接続するために、例えばウェブブラウザを用いて、リモートコンピュータ１０７、１０９を使用してデータサーバ１０３と対話することができる。クライアントコンピュータ１０７、１０９は、そこに記憶されたデータにアクセスするためにデータサーバ１０３と協働して使用されてもよく、または他の目的のために使用されてもよい。例えば、クライアントデバイス１０７から、ユーザは、当該技術分野において知られているように、インターネットブラウザを使用して、または（インターネットなどの）コンピュータネットワーク上のウェブサーバ１０５および／またはデータサーバ１０３と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ１０５にアクセスすることができる。
【００２５】
サーバおよびアプリケーションは、同じ物理マシン上で結合することができ、別個の仮想または論理アドレスを保持することができ、または別個の物理マシン上に存在することができる。図１は、使用可能なネットワークアーキテクチャの単なる一例を示しており、当業者であれば、本明細書においてさらに記載されるように、使用される特定のネットワークアーキテクチャおよびデータ処理装置が変化してもよく、それらが提供する機能に対して二次的であることを理解する。例えば、ウェブサーバ１０５およびデータサーバ１０３によって提供されるサービスは、単一サーバ上で結合することができる。
【００２６】
各コンポーネント１０３、１０５、１０７、１０９は、任意の種類の公知のコンピュータ、サーバ、またはデータ処理装置とすることができる。データサーバ１０３は、例えば、データサーバ１０３の全体的な動作を制御するプロセッサ１１１を含んでもよい。データサーバ１０３は、さらに、ランダムアクセスメモリ（ＲＡＭ）１１３、読出し専用メモリ（ＲＯＭ）１１５、ネットワークインターフェース１１７、入出力インターフェース１１９（例えば、キーボード、マウス、ディスプレイ、プリンタなど）、およびメモリ１２１を含むことができる。入出力（Ｉ／Ｏ）１１９は、データまたはファイルの読み取り、書き込み、表示、および／または印刷のための様々なインターフェースユニットおよびドライブを含むことができる。メモリ１２１は、さらに、データ処理装置１０３の全体的な動作を制御するためのオペレーティングシステムソフトウェア１２３、本明細書に記載された態様を実行するようにデータサーバ１０３に指示する制御ロジック１２５、および本明細書に記載された態様とあわせて使用されても使用されなくてもよい二次的機能、サポート機能、および／または他の機能を提供する他のアプリケーションソフトウェア１２７を記憶することができる。制御ロジックはまた、本明細書ではデータサーバソフトウェア１２５とも呼ばれる。データサーバソフトウェアの機能は、制御ロジックにコード化されたルールに基づいて自動的に行われる、システムに入力を提供するユーザによって手動で行われる、および／またはユーザ入力（例えば、クエリ、データ更新など）に基づく自動処理の組み合わせによる動作または決定を指すことができる。
【００２７】
メモリ１２１はまた、第１のデータベース１２９および第２のデータベース１３１を含む、本明細書に記載された１つ以上の態様の実行に使用されるデータを記憶することができる。ある実施形態では、第１のデータベースは、（例えば、別個のテーブル、レポートなどとして）第２のデータベースを含むことができる。すなわち、情報は、システム設計に応じて、単一データベースに記憶されることができ、または、異なる論理、仮想、もしくは物理データベースに分離することができる。デバイス１０５、１０７、１０９は、デバイス１０３に関して記載されたものと同様のまたは異なるアーキテクチャを有してもよい。当業者であれば、本明細書に記載されたデータ処理装置１０３（またはデバイス１０５、１０７、１０９）の機能が、例えば、地理的位置、ユーザアクセスレベル、サービス品質（ＱｏＳ）などに基づいてトランザクションを分離するために、複数のコンピュータにわたって処理負荷を分散するように、複数のデータ処理装置にわたって分散されてもよいことを理解する。
【００２８】
１つ以上の態様は、本明細書に記載される１つ以上のコンピュータまたは他のデバイスによって実行する、１つ以上のプログラムモジュールなど、コンピュータ使用可能または読み取り可能なデータおよび／またはコンピュータ実行可能命令で具体化されてもよい。一般に、プログラムモジュールは、特定のタスクを実行する、または、コンピュータまたは他のデバイスのプロセッサによって実行するときに特定の抽象データタイプを実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。モジュールは、実行のために後でコンパイルされるソースコードプログラミング言語で書かれてもよく、または、（これらに限定されるものではないが）ハイパーテキストマークアップ言語（ＨＴＭＬ）もしくは拡張マークアップ言語（ＸＭＬ）などのスクリプト言語で書かれてもよい。コンピュータ実行可能命令は、不揮発性記憶装置などのコンピュータ可読媒体に記憶されてもよい。ハードディスク、ＣＤ−ＲＯＭ、光記憶装置、磁気記憶装置、および／またはそれらの任意の組み合わせを含む、任意の適切なコンピュータ可読記憶媒体を利用してもよい。さらに、本明細書に記載されたようなデータまたはイベントを提示する様々な伝送（非記憶）媒体は、送信元と送信先との間で、金属ワイヤ、光ファイバ、および／または無線伝送媒体（例えば、空中および／または宇宙空間）などの信号伝達媒体を介して進む電磁波の形態で伝送されてもよい。本明細書に記載される様々な態様は、方法、データ処理システム、またはコンピュータプログラム製品として具体化されてもよい。従って、ソフトウェア、ファームウェア、および／またはハードウェア、または集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのハードウェア均等物において、様々な機能が全体的または部分的に具体化されてもよい。本明細書に記載の１つ以上の態様をより効果的に実施するために、特定のデータ構造が使用されてもよく、そのようなデータ構造は、本明細書に記載されたコンピュータ実行可能命令およびコンピュータ使用可能データの範囲内であると想定される。
【００２９】
図２をさらに参照すると、本明細書に記載された１つ以上の態様は、リモートアクセス環境において実装することができる。図２は、本明細書に記載された１つ以上の例示的な態様に従って使用することができる例示的なコンピューティング環境２００におけるコンピューティングデバイス２０１を含む例示的なシステムアーキテクチャを示す。コンピューティングデバイス２０１は、クライアントアクセスデバイスに仮想マシンを提供するように構成された単一サーバまたは複数サーバのデスクトップ仮想化システム（例えば、リモートアクセスまたはクラウドシステム）内のサーバ２０６ａとして使用することができる。コンピューティングデバイス２０１は、サーバ、並びにＲＡＭ２０５、ＲＯＭ２０７、Ｉ／Ｏモジュール２０９、およびメモリ２１５を含むその関連コンポーネントの全体的な動作を制御するためのプロセッサ２０３を有することができる。
【００３０】
Ｉ／Ｏモジュール２０９は、コンピューティングデバイス２０１のユーザが入力を提供することができるマウス、キーパッド、タッチスクリーン、スキャナ、光学式読み取り装置、および／またはスタイラス（または他の入力装置）を含むことができ、また、オーディオ出力を提供するための１つ以上のスピーカと、テキスト、オーディオビジュアル、および／またはグラフィカル出力を提供するためのビデオ表示装置を含むことができる。本明細書に記載されるような様々な機能を実行するために専用の目的のコンピューティングデバイスに、コンピューティングデバイス２０１を構成するための命令をプロセッサ２０３に提供するために、ソフトウェアをメモリ２１５および／または他の記憶装置内に記憶することができる。例えば、メモリ２１５は、オペレーションシステム２１７、アプリケーションプログラム２１９、および関連するデータベース２２１などのコンピューティングデバイス２０１によって使用されるソフトウェアを記憶することができる。
【００３１】
コンピューティングデバイス２０１は、端末２４０（クライアントデバイスとも呼ばれる）などの１つ以上のリモートコンピュータへの接続をサポートするネットワーク環境で動作することができる。端末２４０は、コンピューティングデバイス１０３または２０１に関して上述した要素の多くまたは全てを含むパーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバとすることができる。図２に示されるネットワーク接続は、ローカルエリアネットワーク（ＬＡＮ）２２５およびワイドエリアネットワーク（ＷＡＮ）２２９を含むが、他のネットワークも含んでもよい。ＬＡＮネットワーキング環境で使用される場合、コンピューティングデバイス２０１は、ネットワークインターフェースまたはアダプタ２２３を介してＬＡＮ２２５に接続されてもよい。ＷＡＮネットワーキング環境で使用される場合、コンピューティングデバイス２０１は、コンピュータネットワーク２３０（例えば、インターネット）などのＷＡＮ２２９上での通信を確立するためのモデム２２７または他のワイドエリアネットワークインターフェースを含んでもよい。示されたネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段が使用されてもよいことが理解される。コンピューティングデバイス２０１および／または端末２４０はまた、バッテリ、スピーカ、およびアンテナ（図示せず）などの様々な他のコンポーネントを含むモバイル端末（例えば、携帯電話、スマートフォン、携帯情報端末（ＰＤＡ）、ノートブックなど）であってもよい。
【００３２】
本明細書に記載される態様はまた、多数の他の汎用または専用コンピューティングシステム環境または構成によって動作することもできる。本明細書に記載された態様によって使用するのに適している可能性がある他のコンピューティングシステム、環境、および／または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブル家電、ネットワークパーソナルコンピュータ（ＰＣ）、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスのいずれかを含む分散コンピューティング環境などを含むが、これらに限定されるものではない。
【００３３】
図２に示すように、１つ以上のクライアントデバイス２４０は、１つ以上のサーバ２０６ａ−２０６ｎ（一般に、ここでは「サーバ２０６」と呼ばれる）と通信することができる。一実施形態では、コンピューティング環境２００は、サーバ２０６とクライアントマシン２４０との間に設置されたネットワーク機器を含むことができる。ネットワーク機器は、クライアント／サーバ接続を管理することができ、場合によっては、複数のバックエンドサーバ２０６の間でクライアント接続を負荷分散することができる。
【００３４】
クライアントマシン２４０は、ある実施形態では、単一クライアントマシン２４０または単一グループのクライアントマシン２４０と呼ばれてもよく、一方、サーバ２０６は、単一サーバ２０６または単一グループのサーバ２０６と呼ばれてもよい。一実施形態では、単一クライアントマシン２４０は、複数のサーバ２０６と通信し、別の一実施形態では、単一サーバ２０６は、複数のクライアントマシン２４０と通信する。さらに他の実施形態では、単一クライアントマシン２４０は、単一サーバ２０６と通信する。
【００３５】
クライアントマシン２４０は、ある実施形態では、以下の非網羅的な用語のいずれか１つによって参照することができる：クライアントマシン；クライアント；クライアントコンピュータ；クライアントデバイス；クライアントコンピューティングデバイス；ローカルマシン；リモートマシン；クライアントノード；エンドポイント；またはエンドポイントノード。サーバ２０６は、ある実施形態では、以下の非網羅的な用語のいずれか１つによって参照することができる：サーバ、ローカルマシン；リモートマシン；サーバファーム、またはホストコンピューティングデバイス。
【００３６】
一実施形態では、クライアントマシン２４０は、仮想マシンであってもよい。仮想マシンは、任意の仮想マシンとすることができ、ある実施形態では、仮想マシンは、例えば、シトリックス・システムズ、ＩＢＭ、ＶＭｗａｒｅによって開発されたハイパーバイザ、または任意の他のハイパーバイザなどのタイプ１またはタイプ２ハイパーバイザによって管理される任意の仮想マシンとすることができる。ある態様では、仮想マシンは、ハイパーバイザによって管理されてもよく、態様では、仮想マシンは、サーバ２０６上で実行するハイパーバイザまたはクライアント２４０上で実行するハイパーバイザによって管理されてもよい。
【００３７】
ある実施形態では、サーバ２０６または他の遠隔配置されたマシン上で遠隔実行するアプリケーションによって生成された、アプリケーション出力を表示するクライアントデバイス２４０を含む。これらの実施形態では、クライアントデバイス２４０は、仮想マシン受信機プログラムまたはアプリケーションを実行して、アプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに出力を表示することができる。一例では、アプリケーションはデスクトップであり、他の例では、アプリケーションは、デスクトップを生成または提示するアプリケーションである。デスクトップは、ローカルおよび／またはリモートアプリケーションを統合できるオペレーティングシステムのインスタンスのためのユーザインターフェースを提供するグラフィカルシェルを含むことができる。本明細書で使用されるように、アプリケーションは、オペレーティングシステムのインスタンス（および任意選択で、デスクトップも）がロードされた後に実行するプログラムである。
【００３８】
サーバ２０６は、ある実施形態では、リモート提示プロトコルまたは他のプログラムを使用して、クライアント上で実行するシンクライアントまたはリモートディスプレイアプリケーションにデータを送信し、サーバ２０６上で実行するアプリケーションによって生成されるディスプレイ出力を提示する。シンクライアントまたはリモートディスプレイプロトコルは、以下の非網羅的なプロトコルリストのいずれか１つとすることができる：フロリダ州フォートローダーデールのシトリックス・システムズ社によって開発されたインディペンデント・コンピューティング・アーキテクチャ（ＩＣＡ）プロトコル；またはワシントン州レドモンドのマイクロソフトコーポレーションによって製造されたリモートデスクトッププロトコル（ＲＤＰ）。
【００３９】
リモートコンピューティング環境は、サーバ２０６ａ−２０６ｎが、例えばクラウドコンピューティング環境内のサーバファーム２０６に一体に論理的にグループ化されるように、複数のサーバ２０６ａ−２０６ｎを含むことができる。サーバファーム２０６は、地理的に分散されるとともに一体に論理的にグループ化されたサーバ２０６、または互いに近接して配置されるとともに一体に論理的にグループ化されたサーバ２０６を含むことができる。ある実施形態では、サーバファーム２０６内の地理的に分散されたサーバ２０６ａ−２０６ｎは、ＷＡＮ（ワイド）、ＭＡＮ（メトロポリタン）、またはＬＡＮ（ローカル）を使用して通信することができ、異なる地理的領域を、以下のように特徴付けることができる：異なる大陸；大陸の異なる地域；異なる国；異なる州；異なる市；異なるキャンパス；異なる部屋；または前述の地理的位置の任意の組み合わせ。ある実施形態では、サーバファーム２０６は、単一エンティティとして管理することができる一方で、他の実施形態では、サーバファーム２０６は、複数のサーバファームを含むことができる。
【００４０】
ある実施形態では、サーバファームは、略同様のタイプのオペレーティングシステムプラットフォーム（例えば、ウィンドウズ（登録商標）、ＵＮＩＸ（登録商標）、リナックス（登録商標）、ｉＯＳ、アンドロイド、シンビアンなど）を実行するサーバ２０６を含むことができる。他の実施形態では、サーバファーム２０６は、第１のタイプのオペレーティングシステムプラットフォームを実行する１つ以上のサーバの第１のグループと、第２のタイプのオペレーティングシステムプラットフォームを実行する１つ以上のサーバの第２のグループとを含むことができる。
【００４１】
サーバ２０６は、必要に応じて、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、機器、ネットワーク機器、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、デプロイメントサーバ、セキュア・ソケット・レイヤ（ＳＳＬ）ＶＰＮサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバなどの任意のタイプのサーバとして、またはファイアウォール機能、アプリケーション機能、もしくは負荷分散機能を提供するマスターアプリケーションサーバ、アクティブディレクトリを実行するサーバ、もしくはアプリケーション加速プログラムを実行するサーバとして構成されることができる。他のサーバタイプを使用することができる。
【００４２】
ある実施形態では、クライアントマシン２４０からのリクエストを受信し、そのリクエストを第２のサーバ２０６ｂに転送し、第２のサーバ２０６ｂからの応答を利用して、クライアントマシン２４０によって生成されたリクエストに応答する第１のサーバ２０６ａを含む。第１のサーバ２０６ａは、クライアントマシン２４０に利用可能なアプリケーションの列挙を取得することができ、およびアプリケーションの列挙内で識別されるアプリケーションをホストするアプリケーションサーバ２０６に関連するアドレス情報として取得することができる。そして、第１のサーバ２０６ａは、ウェブインターフェースを使用してクライアントのリクエストに対する応答を提示することができ、クライアント２４０に直接通信して、識別されたアプリケーションへのアクセスをクライアント２４０に提供することができる。１つ以上のクライアント２４０および／または１つ以上のサーバ２０６は、ネットワーク２３０、例えばネットワーク１０１を介してデータを送信することができる。
【００４３】
図３は、例示的なデスクトップ仮想化システムのハイレベルアーキテクチャを示す。示されるように、デスクトップ仮想化システムは、仮想デスクトップおよび／または仮想アプリケーションを１つ以上のクライアントアクセスデバイス２４０に提供するように構成された少なくとも１つの仮想化サーバ３０１を含む、単一サーバまたは複数サーバシステム、またはクラウドシステムとすることができる。本明細書では、デスクトップは、１つ以上のアプリケーションがホストおよび／または実行することができるグラフィック環境または空間を指す。デスクトップは、ローカルおよび／またはリモートアプリケーションが統合することができる、オペレーティングシステムのインスタンスのためのユーザインターフェースを提供するグラフィカルシェルを含むことができる。アプリケーションは、オペレーティングシステムのインスタンス（および必要に応じてデスクトップも）がロードされた後に実行するプログラムを含むことができる。オペレーティングシステムの各インスタンスは、物理的（例えば、デバイス毎に１つのオペレーティングシステム）または仮想的（例えば、単一デバイス上で動作するＯＳの多くのインスタンス）とすることができる。各アプリケーションは、ローカルデバイス上で実行されてもよく、または遠隔配置されたデバイス（例えば、リモート）上で実行されてもよい。
【００４４】
コンピュータデバイス３０１は、例えば、単一サーバ、複数サーバ、またはクラウドコンピューティング環境などの仮想化環境内の仮想化サーバとして構成されることができる。図３に示される仮想化サーバ３０１は、図２に示されるサーバ２０６の１つ以上の実施形態によって、または他の公知のコンピューティングデバイスによって装備および／または実装することができる。仮想化サーバ３０１には、１つ以上の物理ディスク３０４、１つ以上の物理デバイス３０６、１つ以上の物理プロセッサ３０８および１つ以上の物理メモリ３１６を含むことができるハードウェア層が含まれる。ある実施形態では、ファームウェア３１２は、物理メモリ３１６のメモリ要素内に記憶することができ、１つ以上の物理プロセッサ３０８によって実行可能となる。仮想化サーバ３０１は、さらに、物理メモリ３１６のメモリ要素に記憶され、１つ以上の物理プロセッサ３０８によって実行可能であるオペレーティングシステム３１４を含むことができる。さらに、ハイパーバイザ３０２は、物理メモリ３１６のメモリ要素に記憶することができ、物理プロセッサ３０８の１つ以上によって実行することができる。
【００４５】
１つ以上の物理プロセッサ３０８での実行は、１つ以上の仮想マシン３３２Ａ−Ｃ（一般には３３２）とすることができる。各仮想マシン３３２は、仮想ディスク３２６Ａ−Ｃおよび仮想プロセッサ３２８Ａ−Ｃを有することができる。ある実施形態では、第１の仮想マシン３３２Ａは、仮想プロセッサ３２８Ａを使用して、ツールスタック３２４を含む制御プログラム３２０を実行することができる。制御プログラム３２０は、制御仮想マシン、Ｄｏｍ０、ドメイン０、またはシステム管理および／または制御に使用される他の仮想マシンと呼ばれてもよい。ある実施形態では、１つ以上の仮想マシン３３２Ｂ−Ｃは、仮想プロセッサ３２８Ｂ−Ｃを使用して、ゲストオペレーティングシステム３３０Ａ−Ｂを実行することができる。
【００４６】
仮想化サーバ３０１は、仮想化サーバ３０１と通信する１つ以上のハードウェアピースを有するハードウェア層３１０を含むことができる。ある実施形態では、ハードウェア層３１０は、１つ以上の物理ディスク３０４、１つ以上の物理デバイス３０６、１つ以上の物理プロセッサ３０８、および１つ以上のメモリ２１６を含むことができる。物理コンポーネント３０４、３０６、３０８、および３１６は、例えば、上述したコンポーネントのいずれかを含むことができる。物理デバイス３０６は、例えば、ネットワークインターフェースカード、ビデオカード、キーボード、マウス、入力装置、モニタ、ディスプレイ装置、スピーカ、光学ドライブ、記憶装置、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素（例えば、ルータ、ファイアウォール、ネットワークアドレス変換器、ロードバランサ、仮想プライベートネットワーク（ＶＰＮ）ゲートウェイ、ダイナミック・ホスト・コンフィギュレーション・プロトコル（ＤＨＣＰ）ルータなど）、または仮想化サーバ３０１と接続するまたは通信する任意の装置を含むことができる。ハードウェア層３１０内の物理メモリ３１６は、任意の種類のメモリを含むことができる。物理メモリ３１６は、データを記憶することができ、ある実施形態では、１つ以上のプログラム、または実行可能命令のセットを記憶することができる。図３は、ファームウェア３１２が仮想化サーバ３０１の物理メモリ３１６内に記憶される実施形態を示す。物理メモリ３１６に記憶されたプログラムまたは実行可能命令は、仮想化サーバ３０１の１つ以上のプロセッサ３０８によって実行することができる。
【００４７】
仮想化サーバ３０１はまた、ハイパーバイザ３０２も含むことができる。ある実施形態では、ハイパーバイザ３０２は、任意数の仮想マシン３３２を形成および管理するために、仮想化サーバ３０１上のプロセッサ３０８によって実行するプログラムとしてもよい。ハイパーバイザ３０２は、仮想マシンモニタ、またはプラットフォーム仮想化ソフトウェアと呼ばれてもよい。ある実施形態では、ハイパーバイザ３０２は、コンピューティングマシン上で実行する仮想マシンを監視する実行可能命令およびハードウェアの任意の組み合わせとすることができる。ハイパーバイザ３０２は、仮想化サーバ３０１上で実行するオペレーティングシステム３１４内で実行するハイパーバイザであるタイプ２ハイパーバイザとすることができる。そして、仮想マシンは、ハイパーバイザの上のレベルで実行する。ある実施形態では、タイプ２ハイパーバイザは、タイプ２ハイパーバイザがユーザのオペレーティングシステムと対話するように、ユーザのオペレーティングシステムのコンテキスト内で実行する。他の実施形態では、仮想化環境内の１つ以上の仮想化サーバ３０１は、代わりに、タイプ１ハイパーバイザ（図示せず）を含むことができる。タイプ１ハイパーバイザは、ハードウェア層３１０内のハードウェアおよびリソースに直接アクセスすることによって、仮想化サーバ３０１上で実行されることができる。すなわち、タイプ２ハイパーバイザ３０２は、示されるように、ホストオペレーティングシステム３１４を介してシステムリソースにアクセスするが、タイプ１ハイパーバイザは、ホストオペレーティングシステム３１４なしで全てのシステムリソースに直接アクセスすることができる。タイプ１ハイパーバイザは、仮想化サーバ３０１の１つ以上の物理プロセッサ３０８上で直接実行することができるおよび物理メモリ３１６に記憶されたプログラムデータを含むことができる。
【００４８】
ハイパーバイザ３０２は、ある実施形態では、システムリソースに直接アクセスするオペレーティングシステム３３０または制御プログラム３２０をシミュレートする任意の方法で、仮想マシン３３２上で実行するオペレーティングシステム３３０または制御プログラム３２０に仮想リソースを提供することができる。システムリソースは、物理デバイス３０６、物理ディスク３０４、物理プロセッサ３０８、物理メモリ３１６および仮想化サーバ３０１のハードウェア層３１０に含まれる任意の他のコンポーネントを含むことができるが、これらに限定されるものではない。ハイパーバイザ３０２は、仮想ハードウェアのエミュレーション、物理ハードウェアのパーティション、物理ハードウェアの仮想化、および／またはコンピューティング環境へのアクセスを提供する仮想マシンの実行に使用することができる。さらに他の実施形態では、ハイパーバイザ３０２は、仮想化サーバ３０１上で実行する仮想マシン３３２のプロセッサスケジューリングおよびメモリパーティショニングを制御する。ハイパーバイザ３０２は、カリフォルニア州パロアルトのＶＭＷａｒｅ社によって製造されたもの、オープンソースのＸｅｎＰｒｏｊｅｃｔ．ｏｒｇコミュニティによって開発が監督されているオープンソース製品であるＸＥＮＰＲＯＪＥＣＴハイパーバイザ、マイクロソフトによって提供されるＨｙｐｅｒＶ、ＶｉｒｔｕａｌＳｅｒｖｅｒ、または仮想ＰＣハイパーバイザなどを含むことができる。ある実施形態では、仮想化サーバ３０１は、ゲストオペレーティングシステムが実行可能な仮想マシンプラットフォームを形成するハイパーバイザ３０２を実行する。これらの実施形態では、仮想化サーバ３０１は、ホストサーバと呼ばれてもよい。そのような仮想化サーバの例は、フロリダ州フォートローダーデールのシトリックス・システム社によって提供されるＸＥＮＳＥＲＶＥＲである。
【００４９】
ハイパーバイザ３０２は、ゲストオペレーティングシステム３３０が実行する１つ以上の仮想マシン３３２Ｂ−Ｃ（一般には３３２）を形成することができる。ある実施形態では、ハイパーバイザ３０２は、仮想マシンイメージをロードして仮想マシン３３２を形成することができる。他の実施形態では、ハイパーバイザ３０２は、仮想マシン３３２内のゲストオペレーティングシステム３３０を実行することができる。さらに他の実施形態では、仮想マシン３３２は、ゲストオペレーティングシステム３３０を実行することができる。
【００５０】
仮想マシン３３２を形成することに加えて、ハイパーバイザ３０２は、少なくとも１つの仮想マシン３３２の実行を制御することができる。他の実施形態では、ハイパーバイザ３０２は、仮想化サーバ３０１によって提供される少なくとも１つのハードウェアリソース（例えば、ハードウェア層３１０内で利用可能な任意のハードウェアリソース）の抽象化を少なくとも１つの仮想マシン３３２に提示することができる。他の実施形態では、ハイパーバイザ３０２は、仮想マシン３３２が仮想化サーバ３０１内で利用可能な物理プロセッサ３０８にアクセスする方法を制御することができる。物理プロセッサ３０８へのアクセスを制御することは、仮想マシン３３２がプロセッサ３０８へのアクセスを有するべきかどうか、および物理プロセッサ能力が仮想マシン３３２にどのように提示されるかを判定することを含むことができる。
【００５１】
図３に示すように、仮想化サーバ３０１は、１つ以上の仮想マシン３３２をホストするまたは実行することができる。仮想マシン３３２は、プロセッサ３０８によって実行するときに、仮想マシン３３２が物理的コンピューティングデバイスのように多くのプログラムおよびプロセスを実行することができるように、物理コンピュータの稼働を模倣する実行可能命令のセットである。図３は、仮想化サーバ３０１が３つの仮想マシン３３２をホストする実施形態を示すが、他の実施形態では、仮想化サーバ３０１は、任意数の仮想マシン３３２をホストすることができる。ハイパーバイザ３０２は、ある実施形態では、その仮想マシン３３２に利用可能な物理ハードウェア、メモリ、プロセッサおよび他のシステムリソースの固有の仮想ビューを各仮想マシン３３２に提供する。ある実施形態では、固有の仮想ビューは、１つ以上の仮想マシン許可、１つ以上の仮想マシン識別子へのポリシーエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシン上で実行するアプリケーション、仮想マシンによってアクセスされるネットワーク、または任意の他の所望の基準に基づくことができる。例えば、ハイパーバイザ３０２は、１つ以上のセキュアではない仮想マシン３３２、および１つ以上のセキュアである仮想マシン３３２を形成することができる。セキュアではない仮想マシン３３２が、セキュアである仮想マシン３３２のアクセスが許可され得るリソース、ハードウェア、メモリロケーション、およびプログラムにアクセスすることを防止することができる。他の実施形態では、ハイパーバイザ３０２は、仮想マシン３３２に利用可能な物理ハードウェア、メモリ、プロセッサおよび他のシステムリソースの略同様の仮想ビューを各仮想マシン３３２に提供することができる。
【００５２】
各仮想マシン３３２は、仮想ディスク３２６Ａ−Ｃ（一般には３２６）および仮想プロセッサ３２８Ａ−Ｃ（一般には３２８）を含むことができる。仮想ディスク３２６は、ある実施形態では、仮想化サーバ３０１の１つ以上の物理ディスク３０４、または仮想化サーバ３０１の１つ以上の物理ディスク３０４の一部の仮想化されたビューである。物理ディスク３０４の仮想化されたビューは、ハイパーバイザ３０２によって生成する、提供する、および管理することができる。ある実施形態では、ハイパーバイザ３０２は、各仮想マシン３３２に物理ディスク３０４の固有のビューを提供する。従って、これらの実施形態では、各仮想マシン３３２に含まれる特定の仮想ディスク３２６は、他の仮想ディスク３２６と比較した場合に固有であり得る。
【００５３】
仮想プロセッサ３２８は、仮想化サーバ３０１の１つ以上の物理プロセッサ３０８の仮想化されたビューとすることができる。ある実施形態では、物理プロセッサ３０８の仮想化されたビューは、ハイパーバイザ３０２によって生成する、提供する、及び管理することができる。ある実施形態では、仮想プロセッサ３２８は、少なくとも１つの物理プロセッサ３０８の全ての同じ特性を実質的に有する。他の実施形態では、仮想プロセッサ３０８は、仮想プロセッサ３２８の特性の少なくとも一部が対応する物理プロセッサ３０８の特性と異なるように、物理プロセッサ３０８の修正されたビューを提供する。
【００５４】
図４をさらに参照すると、本明細書に記載されるある態様は、クラウドベース環境において実装されてもよい。図４は、クラウドコンピューティング環境（またはクラウドシステム）４００の例を示す。図４に示すように、クライアントコンピュータ４１１−４１４は、クラウド管理サーバ４１０と通信して、クラウドシステムのコンピューティングリソース（例えば、ホストサーバ４０３、記憶装置リソース４０４、およびネットワークリソース４０５）にアクセスすることができる。
【００５５】
管理サーバ４１０は、１つ以上の物理サーバ上に実装されてもよい。管理サーバ４１０は、とりわけ、例えばフロリダ州フォートローダーデールのシトリックス・システム社によるＣＬＯＵＤＰＬＡＴＦＯＲＭ、またはＯＰＥＮＳＴＡＣＫを実行することができる。管理サーバ４１０は、例えば、ホストコンピュータ４０３、データ記憶装置４０４、およびネットワーキング装置４０５などのクラウドハードウェアおよびソフトウェアリソースを含む様々なコンピューティングリソースを管理することができる。クラウドハードウェアおよびソフトウェアリソースは、プライベートおよび／またはパブリックコンポーネントを含むことができる。例えば、クラウドは、１つ以上の特定の顧客またはクライアントコンピュータ４１１−４１４によって、および／またはプライベートネットワークを介して使用されるプライベートクラウドとして構成されてもよい。他の実施形態では、オープンまたはハイブリッドネットワークを介して、他の顧客によってパブリッククラウドまたはハイブリッドパブリック・プライベートクラウドが使用されてもよい。
【００５６】
管理サーバ４１０は、クラウドオペレータおよびクラウド顧客が、クラウドシステムと対話することができるユーザインターフェースを提供するように構成することができる。例えば、管理サーバ４１０は、クラウドオペレータがクラウドリソースを管理し、仮想化層を構成し、顧客アカウントを管理し、及び他のクラウド管理タスクを実行することを可能にするために、ユーザインターフェースを有するアプリケーションプログラミングインターフェース（ＡＰＩ）のセットおよび／または１つ以上のクラウドオペレータコンソールアプリケーション（例えば、スタンドアロンアプリケーション上のウェブベース）を提供することができる。管理サーバ４１０はまた、例えば、クラウド内の仮想マシンを形成、変更または破壊するリクエストなど、クライアントコンピュータ４１１−４１４を介してエンドユーザからクラウドコンピューティングリクエストを受信するように構成されたユーザインターフェースを有するＡＰＩのセットおよび／または１つ以上の顧客コンソールアプリケーションを含むことができる。クライアントコンピュータ４１１−４１４は、インターネットまたは他の通信ネットワークを介して管理サーバ４１０に接続して、管理サーバ４１０によって管理されるコンピューティングリソースのうちの１つ以上へのアクセスを要求することができる。クライアントリクエストに応じて、管理サーバ４１０は、クライアントリクエストに基づいて、クラウドシステムのハードウェア層内の物理リソースを選択して提供するように構成されたリソースマネージャを含むことができる。例えば、管理サーバ４１０およびクラウドシステムの追加コンポーネントは、ネットワーク（例えば、インターネット）を介して、クライアントコンピュータ４１１−４１４において、顧客のために仮想マシンおよびその稼働環境（例えば、ハイパーバイザ、記憶装置リソース、ネットワーク要素によって提供されるサービスなど）を設定、形成および管理するように構成されることができ、計算リソース、データ記憶サービス、ネットワーキング能力、並びにコンピュータプラットフォームおよびアプリケーションサポートを顧客に提供する。クラウドシステムはまた、セキュリティシステム、開発環境、ユーザインターフェースなどを含む様々な特定のサービスを提供するように構成されてもよい。
【００５７】
特定のクライアント４１１−４１４は、例えば、同じエンドユーザ、または同じ会社もしくは組織に所属する異なるユーザに代わって、仮想マシンを形成する異なるクライアントコンピュータに関連することができる。他の例では、特定のクライアント４１１−４１４は、異なる会社または組織に所属するユーザなど、無関係であってもよい。無関係なクライアントの場合、仮想マシンまたは任意の１人のユーザの記憶装置に関する情報は、他のユーザから隠されていてもよい。
【００５８】
ここで、クラウドコンピューティング環境の物理ハードウェア層を参照すると、利用可能領域４０１−４０２（または領域）は、物理的コンピューティングリソースの併置されたセットを指すことができる。領域は、コンピューティングリソースのクラウド全体における他の領域から地理的に離れていてもよい。例えば、領域４０１は、カリフォルニアに位置する第１のクラウドデータセンターであり、領域４０２は、フロリダに位置する第２のクラウドデータセンターである。管理サーバ４１０は、利用可能領域の１つに、または別の場所に配置されることができる。各領域は、ゲートウェイを介して、管理サーバ４１０などの領域外にあるデバイスとインターフェースする内部ネットワークを含むことができる。クラウドのエンドユーザ（例えば、クライアント４１１−４１４）は、領域間の区別を認知していることもあれば認知していないこともある。例えば、エンドユーザは、指定された量のメモリ、処理能力、およびネットワーク能力を有する仮想マシンの形成を要求することができる。管理サーバ４１０は、ユーザのリクエストに応答することができ、仮想マシンが領域４０１または領域４０２からのリソースを使用して形成されたかどうかをユーザが知ることなく、仮想マシンを形成するためにリソースを割り当てることができる。他の例では、クラウドシステムは、エンドユーザが、特定領域または領域内の特定のリソース４０３−４０５に仮想マシン（または他のクラウドリソース）を割り当てることを要求することを可能にすることができる。
【００５９】
この例では、各領域４０１−４０２は、例えば、物理ホスティングリソース（または処理リソース）、物理ネットワークリソース、物理記憶装置リソース、スイッチ、および顧客にクラウドコンピューティングサービスを提供するために使用することができる追加のハードウェアリソースなどの様々な物理ハードウェアコンポーネント（またはコンピューティングリソース）４０３−４０５の構成を含むことができる。クラウド領域４０１−４０２内の物理ホスティングリソースは、仮想マシンインスタンスを形成してホストするように構成することができる上述の仮想化サーバ３０１などの１つ以上のコンピュータサーバ４０３を含むことができる。クラウド領域４０１または４０２内の物理ネットワークリソースは、ファイアウォール、ネットワークアドレス変換器、ロードバランサ、仮想プライベートネットワーク（ＶＰＮ）ゲートウェイ、ダイナミックホストコンフィギュレーションプロトコル（ＤＨＣＰ）ルータなど、クラウド顧客にネットワークサービスを提供するように構成されたハードウェアおよび／またはソフトウェアを備える１つ以上のネットワーク要素４０５（例えば、ネットワークサービスプロバイダ）を含むことができる。クラウド領域４０１−４０２内の記憶装置リソースは、記憶装置ディスク（例えば、ソリッドステートドライブ（ＳＳＤ）、磁気ハードディスクなど）および他の記憶装置を含むことができる。
【００６０】
図４に示される例示的なクラウドコンピューティング環境はまた、仮想マシンを形成および管理し、クラウド内の物理リソースを使用する顧客に他のサービスを提供するように構成された追加のハードウェアおよび／またはソフトウェアリソースを有する（例えば、図１−図３に示されるような）仮想化層を含むことができる。仮想化層は、図３において上述したように、ネットワーク仮想化、記憶装置仮想化などを提供するために、他のコンポーネントとともにハイパーバイザを含むことができる。仮想化層は、物理リソース層とは別個の層であってもよく、または同じハードウェアおよび／またはソフトウェアリソースの一部または全部を物理リソース層と共有してもよい。例えば、仮想化層は、物理コンピューティングリソースとともに各仮想化サーバ４０３にインストールされたハイパーバイザを含むことができる。例えば、ＷＩＮＤＯＷＳ（登録商標）  ＡＺＵＲＥ（ワシントン州レドモンドのマイクロソフトコーポレーション）、ＡＭＡＺＯＮ  ＥＣ２（ワシントン州シアトルのアマゾン．ｃｏｍ社）、ＩＢＭ  ＢＬＵＥ  ＣＬＯＵＤ（ニューヨーク州アーモンクのＩＢＭ社）などの公知のクラウドシステムが代わりに使用されてもよい。
【００６１】
企業モビリティ管理アーキテクチャ
図５は、ＢＹＯＤ環境で使用する企業モビリティ技術アーキテクチャ５００を表す。アーキテクチャは、モバイルデバイス５０２のユーザが、モバイルデバイス５０２から企業または個人リソースにアクセスすることおよびモバイルデバイス５０２を個人的な使用のために使用することの双方を可能にする。ユーザは、ユーザによって購入されたモバイルデバイス５０２または企業によってユーザに提供されたモバイルデバイス５０２を使用して、そのような企業リソース５０４または企業サービス５０８にアクセスすることができる。ユーザは、業務用のみまたは業務用および個人用のためにモバイルデバイス５０２を利用することができる。モバイルデバイスは、ｉＯＳオペレーティングシステム、およびアンドロイドオペレーティングシステムなどを実行することができる。企業は、モバイルデバイス５０４を管理するためのポリシーを実装することを選択することができる。ポリシーは、モバイルデバイスが識別され、セキュアであるかもしくはセキュリティ検証され、企業リソースへの選択的または完全なアクセスが提供されるように、ファイアウォールまたはゲートウェイを介して埋め込まれてもよい。ポリシーは、モバイルデバイス管理ポリシー、モバイルアプリケーション管理ポリシー、モバイルデータ管理ポリシー、またはモバイルデバイス、アプリケーション、およびデータ管理ポリシーのいくつかの組み合わせであってもよい。モバイルデバイス管理ポリシーのアプリケーションを介して管理されるモバイルデバイス５０４は、登録デバイスと呼ばれてもよい。
【００６２】
ある実施形態では、モバイルデバイスのオペレーティングシステムは、管理パーティション５１０および非管理パーティション５１２に分離することができる。管理パーティション５１０は、管理パーティション上で実行するアプリケーションおよび管理パーティションに記憶されたデータを保護するために、適用されるポリシーを有することができる。管理パーティション上で実行されているアプリケーションは、セキュアアプリケーションとすることができる。他の実施形態では、全てのアプリケーションは、アプリケーションとは別に受信した１つ以上のポリシーファイルのセットにしたがって実行することができ、ポリシーファイルは、１つ以上のセキュリティパラメータ、特徴、リソース制限、および／またはそのアプリケーションがデバイス上で実行されているときにモバイルデバイス管理システムによって実行する他のアクセスコントロールを定義する。それぞれのポリシーファイルにしたがって動作することにより、各アプリケーションは、１つ以上の他のアプリケーションおよび／またはリソースとの通信を許可または制限されることができ、それによって仮想パーティションを形成することができる。したがって、本明細書では、パーティションは、メモリの物理的に区画化された部分（物理パーティション）、メモリの論理的に区画化された部分（論理パーティション）、および／または１つ以上のポリシーおよび／または本明細書に記載された複数のアプリケーションにまたがるポリシーファイルの実行の結果として形成される仮想パーティション（仮想パーティション）としてもよい。他の言い方をすれば、管理アプリケーション上でポリシー実行することにより、それらのアプリケーションは、他の管理アプリケーションおよび信頼できる企業リソースとだけ通信可能であるように制限されることができ、それによって管理されていないアプリケーションおよびデバイスによる侵入が不可能な仮想パーティションを形成する。
【００６３】
セキュアアプリケーションは、電子メールアプリケーション、ウェブブラウジングアプリケーション、ソフトウェア・アズ・ア・サービス（ＳａａＳ）アクセスアプリケーション、ウィンドウズ（登録商標）アプリケーションアクセスアプリケーションなどであってもよい。セキュアアプリケーションは、セキュアネイティブアプリケーション５１４、セキュアアプリケーションランチャ５１８によって実行するセキュアリモートアプリケーション５２２、セキュアアプリケーションランチャ５１８によって実行する仮想化アプリケーション５２６などであってもよい。セキュアネイティブアプリケーション５１４は、セキュアアプリケーションラッパー５２０によってラップされていてもよい。セキュアアプリケーションラッパー５２０は、セキュアネイティブアプリケーションがデバイス上で実行するときにモバイルデバイス５０２上で実行する統合ポリシーを含むことができる。セキュアアプリケーションラッパー５２０は、セキュアネイティブアプリケーション５１４が、セキュアネイティブアプリケーション５１４の実行時に要求されるタスクを完了するために必要とすることがある企業でホストされているリソースに対して、モバイルデバイス５０２上で実行されているセキュアネイティブアプリケーション５１４をポイントするメタデータを含むことができる。セキュアアプリケーションランチャ５１８によって実行するセキュアリモートアプリケーション５２２は、セキュアアプリケーションランチャアプリケーション５１８内で実行されてもよい。セキュアアプリケーションランチャ５１８によって実行する仮想化アプリケーション５２６は、企業リソース５０４などでモバイルデバイス５０２上のリソースを利用することができる。セキュアアプリケーションランチャ５１８によって実行する仮想化アプリケーション５２６によってモバイルデバイス５０２上で使用されるリソースは、ユーザ対話リソース、処理リソースなどを含むことができる。ユーザ対話リソースは、キーボード入力、マウス入力、カメラ入力、触覚入力、音声入力、視覚入力、ジェスチャ入力などを収集して送信するために使用することができる。処理リソースは、ユーザインターフェース、企業リソース５０４から受信したプロセスデータなどを提示するために使用することができる。セキュアアプリケーションランチャ５１８によって実行する仮想化アプリケーション５２６によって企業リソース５０４で使用されるリソースは、ユーザインターフェース生成リソース、処理リソースなどを含むことができる。ユーザインターフェース生成リソースは、ユーザインターフェースをアセンブルし、ユーザインターフェースを変更し、ユーザインターフェースをリフレッシュするなどのために使用することができる。処理リソースは、情報の生成、情報の読み取り、情報の更新、情報の削除などに使用することができる。例えば、仮想化アプリケーションは、グラフィカルユーザインターフェース（ＧＵＩ）に関連するユーザ対話を記録し、サーバアプリケーションがサーバ上で動作するアプリケーションへの入力としてユーザ対話データを使用するサーバアプリケーションに、それらを通信することができる。この構成では、企業は、アプリケーションに関連するデータ、ファイルなどと同様に、サーバ側でアプリケーションを維持するように選択することができる。企業は、モバイルデバイス上に装備するためにそれらを保護することによって本明細書の原理に従っていくつかのアプリケーションを「動員」するように選択することができるが、この構成はまた、特定のアプリケーションのために選択することができる。例えば、一部のアプリケーションは、モバイルデバイス上で使用するために保護することができるが、他は、モバイルデバイス上での装備のために準備されないかまたは適切でないかもしれないため、企業は、仮想化技術を介して準備されないアプリケーションに対するモバイルユーザアクセスを提供するように選択することができる。別の一例として、企業は、モバイルデバイスにとってアプリケーションをカスタマイズすることが非常に困難であるかまたは望ましくない大規模且つ複雑なデータセットを有する大規模で複雑なアプリケーション（例えば、物質リソース計画アプリケーション）を有することがあるため、仮想化技術を介してアプリケーションに対するアクセスを提供するように選択することができる。さらに別の一例として、企業は、セキュアなモバイル環境ではセンシティブすぎると企業が見なし得る高度にセキュアなデータ（例えば、人事データ、顧客データ、エンジニアリングデータ）を維持するアプリケーションを有することがあるため、仮想化技術を使用して、そのようなアプリケーションおよびデータへのモバイルアクセスを可能にするように選択することができる。企業は、サーバ側でより適切に動作すると見なされるアプリケーションに対するアクセスを可能にするように、モバイルデバイス上に完全にセキュアであり、完全に機能するアプリケーション、並びに仮想化アプリケーションを提供するように選択することができる。一実施形態では、仮想化アプリケーションは、セキュアな記憶場所の１つに携帯電話上のデータ、ファイルなどを記憶することができる。例えば、企業は、特定の情報が電話に記憶されるのを可能にしつつ、他の情報は許可しないように選択することができる。
【００６４】
本明細書に記載されるように、仮想化アプリケーションに関連して、モバイルデバイスは、ＧＵＩを提示した後にＧＵＩとのユーザ対話を記録するように設計された仮想化アプリケーションを有することができる。アプリケーションは、アプリケーションとのユーザ対話として、サーバ側アプリケーションによって使用されるようにサーバ側へのユーザ対話を通信することができる。それに応答して、サーバ側のアプリケーションは、新たなＧＵＩをモバイルデバイスに送返することができる。例えば、新たなＧＵＩは、静的ページ、動的ページ、アニメーションなどとすることができ、それにより、遠隔に位置するリソースへのアクセスを提供する。
【００６５】
セキュアアプリケーションは、モバイルデバイスの管理パーティション５１０内のセキュアデータコンテナ５２８に記憶されたデータにアクセスすることができる。セキュアデータコンテナに確保されたデータは、セキュアラップアプリケーション５１４、セキュアアプリケーションランチャ５２２によって実行するアプリケーション、セキュアアプリケーションランチャ５２２によって実行する仮想化アプリケーション５２６などによってアクセスすることができる。セキュアデータコンテナ５２８に記憶されるデータは、ファイル、データベースなどを含むことができる。セキュアデータコンテナ５２８に記憶されるデータは、特定のセキュアアプリケーション５３０に制限されたデータ、セキュアアプリケーション５３２の間で共有されるデータなどを含むことができる。セキュアアプリケーションに制限されたデータは、セキュアな一般データ５３４および高度にセキュアなデータ５３８を含むことができる。セキュアな一般データは、拡張暗号化標準（ＡＥＳ）１２８ビット暗号化などの強力な形式の暗号化を使用することができる一方で、高度にセキュアなデータ５３８は、ＡＥＳ２５６ビット暗号化などの非常に強力な形式の暗号化を使用することができる。セキュアデータコンテナ５２８に記憶されたデータは、デバイスマネージャ５２４からコマンドを受信し次第、デバイスから削除することができる。セキュアアプリケーションは、デュアルモードオプション５４０を有することができる。デュアルモードオプション５４０は、セキュアでないまたは管理されていないモードでセキュアアプリケーションを動作させるためのオプションをユーザに提示することができる。セキュアでないまたは管理されていないモードでは、セキュアアプリケーションは、モバイルデバイス５０２の管理されていないパーティション５１２上のセキュアでないデータコンテナ５４２に記憶されたデータにアクセスすることができる。セキュアでないデータコンテナに記憶されるデータは、個人データ５４４であってもよい。セキュアでないデータコンテナ５４２に記憶されたデータはまた、モバイルデバイス５０２の管理されていないパーティション５１２上で実行されているセキュアでないアプリケーション５４８によってアクセスされてもよい。セキュアでないデータコンテナ５４２に記憶されたデータは、セキュアデータコンテナ５２８に記憶されたデータがモバイルデバイス５０２から削除されたとき、モバイルデバイス５０２上に残っていてもよい。企業は、企業によって所有される、ライセンスされたまたは管理される、選択されたまたは全てのデータ、ファイル、および／またはアプリケーション（企業データ）を、モバイルデバイスから削除する一方で、ユーザによって所有される、ライセンスされたまたは管理される個人データ、ファイル、および／またはアプリケーション（個人データ）を残しておくことまたは保存することを望むことがある。この動作は、選択的ワイプと呼ばれてもよい。本明細書に記載された態様に従って配置された企業および個人データにより、企業は、選択的ワイプを実行することができる。
【００６６】
モバイルデバイスは、企業における企業リソース５０４および企業サービス５０８、パブリックインターネット５４８などに接続することができる。モバイルデバイスは、仮想プライベートネットワーク接続を介して企業リソース５０４および企業サービス５０８に接続することができる。マイクロＶＰＮまたはアプリケーション固有ＶＰＮとも呼ばれる仮想プライベートネットワーク接続は、特定のアプリケーション５５０、特定のデバイス、モバイルデバイス上の特定のセキュア領域５５２などに固有のものであってもよい。例えば、電話のセキュア領域内のラップアプリケーションのそれぞれは、場合によってはユーザまたはデバイス属性情報とあわせて、アプリケーションに関連する属性に基づいてＶＰＮへのアクセスが与えられるように、アプリケーション固有ＶＰＮを介して企業リソースにアクセスすることができる。仮想プライベートネットワーク接続は、マイクロソフト・エクスチェンジ・トラフィック、マイクロソフト・アクティブ・ディレクトリ・トラフィック、ハイパーテキスト転送プロトコル（ＨＴＴＰ）・トラフィック、ハイパーテキスト転送プロトコル・セキュア（ＨＴＴＰＳ）・トラフィック、アプリケーション管理トラフィックなどを伝送することができる。仮想プライベートネットワーク接続は、シングルサインオン認証プロセス５５４をサポートしてイネーブルにすることができる。シングルサインオンプロセスは、その後に認証サービス５５８によって検証される認証情報の単一セットをユーザが提供するのを可能にすることができる。そして、認証サービス５５８は、個々の企業リソース５０４に対する認証情報を提供することをユーザに要求することなく、複数の企業リソース５０４へのアクセスをユーザに与えることができる。
【００６７】
仮想プライベートネットワーク接続は、アクセスゲートウェイ５６０によって確立されて管理されてもよい。アクセスゲートウェイ５６０は、モバイルデバイス５０２への企業リソース５０４の配信を管理し、加速し、及び改善する性能向上機能を含むことができる。アクセスゲートウェイはまた、モバイルデバイス５０２からパブリックインターネット５４８へのトラフィックをリルートすることができ、モバイルデバイス５０２がパブリックインターネット５４８上で動作するパブリックに利用可能であり且つセキュアでないアプリケーションにアクセスすることを可能にする。モバイルデバイスは、トランスポートネットワーク５６２を介してアクセスゲートウェイに接続することができる。トランスポートネットワーク５６２は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、プライベートネットワークなどとすることができる。
【００６８】
企業リソース５０４は、電子メールサーバ、ファイル共有サーバ、ＳａａＳアプリケーション、ウェブアプリケーションサーバ、ウィンドウズ（登録商標）アプリケーションサーバなどを含むことができる。電子メールサーバは、エクスチェンジサーバ、ロータス・ノーツサーバなどを含むことができる。ファイル共有サーバは、ＳｈａｒｅＦｉｌｅサーバなどを含むことができる。ＳａａＳアプリケーションは、セールスフォースなどを含むことができる。ウィンドウズ（登録商標）アプリケーションサーバは、ローカルのウィンドウズ（登録商標）オペレーティングシステム上で実行することが意図されたアプリケーションなどを提供するように構築された、任意のアプリケーションサーバを含むことができる。企業リソース５０４は、構内ベースのリソース、クラウドベースのリソースなどであってもよい。企業リソース５０４は、モバイルデバイス５０２によって直接またはアクセスゲートウェイ５６０を介してアクセスされてもよい。企業リソース５０４は、トランスポートネットワーク５６２を介してモバイルデバイス５０２によってアクセスされてもよい。トランスポートネットワーク５６２は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、プライベートネットワークなどとすることができる。
【００６９】
企業サービス５０８は、認証サービス５５８、脅威検出サービス５６４、デバイスマネージャサービス５２４、ファイル共有サービス５６８、ポリシーマネージャサービス５７０、ソーシャル統合サービス５７２、アプリケーションコントローラサービス５７４などを含むことができる。認証サービス５５８は、ユーザ認証サービス、デバイス認証サービス、アプリケーション認証サービス、データ認証サービスなどを含むことができる。認証サービス５５８は、証明書を使用してもよい。証明書は、企業リソース５０４などによってモバイルデバイス５０２上に記憶されてもよい。モバイルデバイス５０２に記憶された証明書は、モバイルデバイス上の暗号化された場所に記憶されてもよく、証明書は、認証時に使用するためにモバイルデバイス５０２に一時的に記憶などされてもよい。脅威検出サービス５６４は、侵入検出サービス、不正アクセス試行検出サービスなどを含むことができる。不正アクセス試行検出サービスは、デバイス、アプリケーション、データなどへの不正なアクセス試行を含むことができる。デバイス管理サービス５２４は、構成、プロビジョニング、セキュリティ、サポート、監視、報告、およびサービスの廃止を含むことができる。ファイル共有サービス５６８は、ファイル管理サービス、ファイル記憶サービス、ファイル協働サービスなどを含むことができる。ポリシーマネージャサービス５７０は、デバイスポリシーマネージャサービス、アプリケーションポリシーマネージャサービス、データポリシーマネージャサービスなどを含むことができる。ソーシャル統合サービス５７２は、連絡先統合サービス、協働サービス、フェイスブック、ツイッター（登録商標）、およびリンクトインなどのソーシャルネットワークとの統合などを含むことができる。アプリケーションコントローラサービス５７４は、管理サービス、プロビジョニングサービス、開発サービス、割り当てサービス、失効サービス、ラッピングサービスなどを含むことができる。
【００７０】
企業モビリティ技術アーキテクチャ５００は、アプリケーションストア５７８を含むことができる。アプリケーションストア５７８は、アンラップされたアプリケーション５８０、事前ラップされたアプリケーション５８２などを含むことができる。アプリケーションは、アプリケーションコントローラ５７４からアプリケーションストア５７８に投入されてもよい。アプリケーションストア５７８は、アクセスゲートウェイ５６０、パブリックインターネット５４８などを介して、モバイルデバイス５０２によってアクセスされてもよい。アプリケーションストアは、直感的で使いやすいユーザインターフェースを備えることができる。
【００７１】
ソフトウェア開発キット５８４は、本明細書で前述したように、アプリケーションをラッピングすることによって、ユーザによって選択されたアプリケーションを保護する能力をユーザに提供することができる。そして、ソフトウェア開発キット５８４を使用してラッピングされたアプリケーションは、アプリケーションコントローラ５７４を使用してアプリケーションストア５７８にそれを投入することによって、モバイルデバイス５０２に利用可能にすることができる。
【００７２】
企業モビリティ技術アーキテクチャ５００は、管理および分析機能５８８を含むことができる。管理および分析機能５８８は、リソースの使用方法、リソースの使用頻度などに関連する情報を提供することができる。リソースは、デバイス、アプリケーション、データなどを含むことができる。リソースの使用方法は、どのデバイスがどのアプリケーションをダウンロードし、どのアプリケーションがどのデータにアクセスするかなどを含むことができる。リソースの使用頻度は、アプリケーションがダウンロードされた頻度、アプリケーションによって特定のデータセットがアクセスされた回数などを含むことができる。
【００７３】
図６は、別の例示的な企業モビリティ管理システム６００である。図５を参照して上述したモビリティ管理システム５００のコンポーネントのいくつかは、簡略化するために省略されている。図６に示されるシステム６００のアーキテクチャは、多くの点で、図５を参照して上述したシステム５００のアーキテクチャと同様であり、上述していない追加の特徴を含むことができる。
【００７４】
この場合、左側は、上記右側に示されるように、エクスチェンジ、共有ポイント、公開鍵インフラストラクチャ（ＰＫＩ）リソース、ケルベロスリソース、証明書発行サービスなどの、様々な企業リソース６０８およびサービス６０９にアクセスするために（アクセスゲートウェイおよびアプリケーションコントローラ機能を含む）ゲートウェイサーバ６０６と対話するクライアントエージェント６０４を有する、登録されたモバイルデバイス６０２を表している。具体的に示されていないが、モバイルデバイス６０２はまた、アプリケーションの選択およびダウンロードのために企業アプリケーションストア（ストアフロント）と対話することもできる。
【００７５】
クライアントエージェント６０４は、高解像度ユーザ体験（ＨＤＸ）／ＩＣＡディスプレイリモーティングプロトコルを使用してアクセスされる企業データセンターでホストされたウィンドウズ（登録商標）アプリケーション／デスクトップのためのＵＩ（ユーザインターフェース）仲介として機能する。クライアントエージェント６０４はまた、ネイティブｉＯＳまたはアンドロイドアプリケーションなどのネイティブアプリケーションのモバイルデバイス６０２上へのインストールおよび管理をサポートする。例えば、図６に示される管理対象アプリケーション６１０（メール、ブラウザ、ラップされたアプリケーション）は、全てデバイス上でローカルに実行するネイティブアプリケーションである。クライアントエージェント６０４およびこのアーキテクチャのアプリケーション管理フレームワークは、接続およびＳＳＯ（シングルサインオン）などのポリシー駆動管理機能および特徴を企業リソース／サービス６０８に提供するように機能する。クライアントエージェント６０４は、他のゲートウェイサーバコンポーネントへのＳＳＯを用いて、企業に対する、通常はアクセスゲートウェイ（ＡＧ）に対するプライマリユーザ認証を処理する。クライアントエージェント６０４は、ゲートウェイサーバ６０６からポリシーを取得して、モバイルデバイス６０２上の管理対象アプリケーション６１０の挙動を制御する。
【００７６】
ネイティブアプリケーション６１０とクライアントエージェント６０４との間のセキュアプロセス間通信（ＩＰＣ）リンク６１２は、クライアントエージェントが各アプリケーションを「ラッピング」するアプリケーション管理フレームワーク６１４によって実行するポリシーを供給することを可能にする管理チャネルを表す。ＩＰＣチャネル６１２はまた、クライアントエージェント６０４が、企業リソース６０８への接続およびＳＳＯを可能にする認証証明書および認証情報を供給することを可能にする。最後に、ＩＰＣチャネル６１２は、アプリケーション管理フレームワーク６１４が、オンラインおよびオフライン認証などの、クライアントエージェント６０４によって行われるユーザインターフェース機能を呼び出すことを可能にする。
【００７７】
クライアントエージェント６０４とゲートウェイサーバ６０６との間の通信は、本質的に、各ネイティブ管理対象アプリケーション６１０をラッピングするアプリケーション管理フレームワーク６１４からの管理チャネルの拡張である。アプリケーション管理フレームワーク６１４は、クライアントエージェント６０４からポリシー情報を要求し、順を追ってクライアントエージェント６０４は、ゲートウェイサーバ６０６からそれを要求する。アプリケーション管理フレームワーク６１４は、認証を要求し、そしてクライアントエージェント６０４は、（ＮｅｔＳｃａｌｅｒアクセスゲートウェイとしても知られる）ゲートウェイサーバ６０６のゲートウェイサービス部分にログインする。クライアントエージェント６０４はまた、以下でより詳細に説明するように、ローカルデータボールト６１６の暗号鍵を導出するための入力材料を生成することができる、またはＰＫＩ保護されたリソースへの直接認証を可能にすることができるクライアント証明書を提供することができる、ゲートウェイサーバ６０６上のサポートサービスを呼び出すこともできる。
【００７８】
より詳細には、アプリケーション管理フレームワーク６１４は、各管理対象アプリケーション６１０を「ラップする」。これは、明示的な構築ステップ、または構築後の処理ステップを介して組み込むことができる。アプリケーション管理フレームワーク６１４は、セキュアＩＰＣチャネルを初期化するようにアプリケーション６１０の最初の起動時にクライアントエージェント６０４と「ペアリング」し、そのアプリケーションのポリシーを取得することができる。アプリケーション管理フレームワーク６１４は、クライアントエージェントのログイン依存性や、ローカルＯＳサービスの使用方法またはアプリケーション６１０との対話方法を制限するいくつかの包含ポリシーなど、ローカルに適用されるポリシーの関連部分を実行することができる。
【００７９】
アプリケーション管理フレームワーク６１４は、セキュアＩＰＣチャネル６１２を介してクライアントエージェント６０４によって提供されるサービスを使用して、認証および内部ネットワークアクセスを容易にすることができる。プライベートおよび共有データボールト６１６（コンテナ）の鍵管理はまた、管理対象アプリケーション６１０とクライアントエージェント６０４との間の適切な対話によっても管理することができる。ボールト６１６は、オンライン認証後にのみ利用可能であってもよく、またはポリシーによって許可されている場合にはオフライン認証後に利用可能とされてもよい。ボールト６１６の最初の使用は、オンライン認証を必要としてもよく、オフラインアクセスは、オンライン認証が再び要求される前に、最大でもポリシーリフレッシュ期間まで制限されてもよい。
【００８０】
内部リソースへのネットワークアクセスは、個々の管理対象アプリケーション６１０からアクセスゲートウェイ６０６を介して直接発生してもよい。アプリケーション管理フレームワーク６１４は、各アプリケーション６１０に代わってネットワークアクセスを編成する役割を担う。クライアントエージェント６０４は、オンライン認証の後に取得される適切に時間制限された二次認証情報を提供することによって、これらのネットワーク接続を容易にすることができる。リバースウェブプロキシ接続およびエンドツーエンドＶＰＮスタイルトンネル６１８など、複数のモードのネットワーク接続を使用することができる。
【００８１】
メールおよびブラウザ管理対象アプリケーション６１０は、特別な状態を有し、任意にラップされたアプリケーションに対して一般に利用可能ではない可能性があるファシリティを利用することができる。例えば、メールアプリケーションは、完全なＡＧログオンを必要とせずに長時間にわたってエクスチェンジにアクセスするのを可能にする、特別なバックグラウンドネットワークアクセス機構を使用してもよい。ブラウザアプリケーションは、異なる種類のデータを分離するために、複数のプライベートデータボールトを使用してもよい。
【００８２】
このアーキテクチャは、他の様々なセキュリティ機能の組み込みをサポートする。例えば、ゲートウェイサーバ６０６（そのゲートウェイサービスを含む）は、場合によっては、アクティブディレクトリ（ＡＤ）パスワードを検証する必要がない。状況によっては、一部のユーザに対してＡＤパスワードが認証要素として使用されるかどうかは、企業の裁量に委ねることができる。ユーザがオンラインまたはオフラインである（すなわち、ネットワークに接続されているかまたはネットワークに接続されていない）場合、異なる認証方法が使用されてもよい。
【００８３】
ステップアップ認証は、ゲートウェイサーバ６０６が強力な認証を必要とする高度な機密データへのアクセスを有することが許可された管理対象ネイティブアプリケーション６１０を識別することができ、これが以前のより弱いレベルのログイン後にユーザによって再認証が要求されることを意味する場合であっても、これらのアプリケーションへのアクセスが適切な認証を行った後にのみ許可されることを保証することができる機能である。
【００８４】
この解決策の他のセキュリティ機能は、モバイルデバイス６０２上のデータボールト６１６（コンテナ）の暗号化である。ボールト６１６は、ファイル、データベース、および構成を含む全てのデバイス上のデータが保護されるように暗号化することができる。オンラインボールトの場合、鍵はサーバ（ゲートウェイサーバ６０６）に記憶されることができ、オフラインボールトの場合、鍵のローカルコピーは、ユーザパスワードまたは生体検証によって保護することができる。データがセキュアコンテナ６１６内のデバイス６０２にローカルに記憶されるときは、最小限のＡＥＳ２５６暗号化アルゴリズムを利用することが好ましい。
【００８５】
他のセキュアなコンテナ機能も実装することができる。例えば、アプリケーション６１０の内部で起こっている全てのセキュリティイベントがログされてバックエンドに報告されるロギング機能が含まれてもよい。アプリケーション６１０が改ざんを検出した場合などには、関連する暗号化鍵がランダムデータによって上書きされることができ、ユーザデータが破壊された旨のヒントはファイルシステムに残らないデータワイプがサポートされてもよい。スクリーンショット保護は、アプリケーションがスクリーンショットにデータが記憶されるのを防止することができる別の機能である。例えば、キーウィンドウの隠しプロパティをＹＥＳに設定することができる。これは、結果として画面上に現在表示されているコンテンツを隠すことができ、コンテンツが通常存在するところに空白のスクリーンショットをもたらすことができる。
【００８６】
ローカルデータ転送を、例えば、コピーすることによってまたは外部アプリケーションに送信することによって、いかなるデータもアプリケーションコンテナの外部にローカルに転送されるのを防止するなどで、防止することができる。キーボードキャッシュ機能は、機密テキストフィールドの自動修正機能を無効にするように動作することができる。ＳＳＬ証明書の検証が動作可能であるため、アプリケーションは、鍵チェーンに記憶する代わりにサーバＳＳＬ証明書を具体的に検証する。デバイス上のデータを暗号化するために使用される鍵がユーザによって供給されるパスフレーズまたは生体データ（オフラインアクセスが要求される場合）を使用して生成されるように、暗号化鍵生成機能を使用することができる。オフラインアクセスが要求されない場合、サーバ側でランダムに生成されて記憶された他の鍵とＸＯＲ演算されてもよい。鍵導出関数は、ユーザパスワードから生成された鍵がその暗号ハッシュを形成するのではなく、ＫＤＦ（鍵導出関数、特にパスワードベースの鍵導出関数２（ＰＢＫＤＦ２））を使用するように動作することができる。後者は、ブルートフォース攻撃または辞書攻撃の影響を受けやすい鍵を形成する。
【００８７】
さらに、１つ以上の初期化ベクトルを暗号化方法に使用することができる。初期化ベクトルは、同じ暗号化データの複数のコピーを生成し、異なる暗号文出力をもたらし、再生および暗号解読攻撃の双方を防止する。これはまた、データを暗号化するために使用された特定の初期化ベクトルがわからない場合、盗まれた暗号化鍵を用いたとしても、攻撃者がいかなるデータを復号することを防止する。さらに、ユーザがアプリケーション内で認証された後にのみアプリケーションデータが復号される認証後復号が使用されてもよい。他の機能は、必要なときにのみメモリ（ディスクではない）に保持することができるメモリ内の機密データに関連することができる。例えば、ログイン後にログイン認証情報がメモリから消去されることができ、オブジェクティブＣインスタンス変数内の暗号化鍵および他のデータは、それらが容易に参照することができるため、記憶されない。代わりに、メモリは、これらについて手動で割り当てられることができる。
【００８８】
非活動タイムアウトを実装することができ、ポリシー定義の非活動期間後に、ユーザセッションが終了する。
【００８９】
アプリケーション管理フレームワーク６１４からのデータ漏洩は、他の方法で防止することができる。例えば、アプリケーション６１０がバックグラウンドに置かれている場合、メモリは、所定の（設定可能な）期間後にクリアすることができる。バックグラウンドの場合、フォアグランドプロセスを固定するために、アプリケーションの最後に表示された画面のスナップショットを撮ることができる。スクリーンショットは、機密データを含むことがあるため、クリアされる必要がある。
【００９０】
他のセキュリティ機能は、１つ以上のアプリケーションへのアクセスのためにＡＤ（アクティブディレクトリ）パスワード６２２を使用せずに、ＯＴＰ（ワンタイムパスワード）６２０を使用することに関する。場合によっては、一部のユーザは、彼らのＡＤパスワードを知らない（または知ることを許可されない）ため、これらのユーザは、ＳｅｃｕｒＩＤのようなハードウェアＯＴＰシステムを使用するなどによってＯＴＰ６２０を使用して認証することができる（ＯＴＰは、ＥｎｔｒｕｓｔまたはＧｅｍａｌｔｏなど、異なるベンダによっても提供されてもよい）。場合によっては、ユーザがユーザＩＤを用いて認証した後、テキストがＯＴＰ６２０によってユーザに送信される。場合によっては、これは、オンラインでの使用のためにのみ実装されることができ、プロンプトは単一フィールドである。
【００９１】
企業ポリシーを介してオフライン使用が許可されるアプリケーション６１０のオフライン認証のために、オフラインパスワードを実装することができる。例えば、企業は、このようにストアフロントにアクセスされることを望むことがある。この場合、クライアントエージェント６０４は、カスタムオフラインパスワードを設定するようにユーザに要求することができ、ＡＤパスワードは使用されない。ゲートウェイサーバ６０６は、これらの要件は変更されることがあるものの、標準的なウィンドウズ（登録商標）サーバパスワードの複雑さの要件によって記述されるものなど、最小長、文字クラスの構成、およびパスワードの寿命に関するパスワード標準を制御および実行するためのポリシーを提供することができる。
【００９２】
別の機能は、（アプリケーション管理フレームワークのマイクロＶＰＮ機能を介してＰＫＩ保護されたウェブリソースにアクセスする目的で）二次認証情報としての特定のアプリケーション６１０のためのクライアント側証明書の有効化に関する。例えば、アプリケーションは、そのような証明書を利用することができる。この場合、ＡｃｔｉｖｅＳｙｎｃプロトコルを使用する証明書ベースの認証をサポートすることができ、クライアントエージェント６０４からの証明書は、ゲートウェイサーバ６０６によって取り出され、鍵チェーン内で使用することができる。各管理対象アプリケーションは、ゲートウェイサーバ６０６において定義されたラベルによって識別される１つの関連クライアント証明書を有することができる。
【００９３】
ゲートウェイサーバ６０６は、関連する管理対象アプリケーションが、内部ＰＫＩ保護リソースを認証するのを可能にするためにクライアント証明書の発行をサポートするよう、企業専用ウェブサービスと対話することができる。
【００９４】
クライアントエージェント６０４およびアプリケーション管理フレームワーク６１４は、内部ＰＫＩ保護ネットワークリソースへの認証のために、クライアント証明書を取得および使用することをサポートするように拡張することができる。様々なレベルのセキュリティ要件および／または分離要件に一致するために、複数の証明書をサポートすることができる。証明書は、メールおよびブラウザ管理対象アプリケーションによって、最終的には任意のラップされたアプリケーションによって使用されてもよい（アプリケーション管理フレームワークがｈｔｔｐｓリクエストを仲介するのに合理的なウェブサービススタイル通信パターンをそれらのアプリケーションが使用するという条件で）。
【００９５】
ｉＯＳ上でのアプリケーション管理クライアント証明書のサポートは、各管理対象アプリケーションのｉＯＳ鍵チェーンに公開鍵暗号化標準（ＰＫＣＳ）１２  ＢＬＯＢ（バイナリラージオブジェクト）を各使用期間にわたってインポートすることに依存してもよい。アプリケーション管理フレームワークのクライアント証明書のサポートは、プライベートなメモリ内鍵記憶装置によるＨＴＴＰＳ実装を使用してもよい。クライアント証明書は、決してｉＯＳ鍵チェーンには存在せず、また強力に保護された潜在的に「オンラインのみ」のデータ値を除いて、永続化されない。
【００９６】
相互ＳＳＬはまた、モバイルデバイス６０２が企業に対して認証されることを要求することによって、追加のセキュリティを提供するように実装されてもよく、その逆でもよい。ゲートウェイサーバ６０６に対する認証のための仮想スマートカードも実装されてもよい。
【００９７】
ケルベロスの制限サポートおよび完全サポートの双方を、追加の機能とすることができる。完全サポート機能は、ＡＤパスワードまたは信頼できるクライアント証明書を使用して、アクティブディレクトリ（ＡＤ）６２２に対して完全ケルベロスログインを実行し、ＨＴＴＰネゴシエート認証チャレンジに応答するためにケルベロスサービスチケットを取得する能力に関する。制限サポート機能は、シトリックス・アクセス・ゲートウェイ・エンタープライズ・エディション（ＡＧＥＥ）の制限付き委任に関し、ＡＧＥＥは、ＨＴＴＰネゴシエート認証チャレンジに応答するためにケルベロスサービスチケット（制約付き委任の対象）を取得して使用するよう、ケルベロスプロトコル遷移を呼び出すことをサポートする。この機構は、ｈｔｔｐ（ｈｔｔｐｓではない）接続がＶＰＮおよびマイクロＶＰＮモードでプロキシされる場合、リバースウェブプロキシ（企業仮想プライベートネットワーク（ＣＶＰＮ）モードとも呼ばれる）モードで稼働する。
【００９８】
別の機能は、ジェイルブレイクまたはルーティング検出時に自動的に発生する及び管理コンソールからプッシュされたコマンドとして発生することができ、アプリケーション６１０が実行されていない場合であっても、リモートワイプ機能を含むことができる、アプリケーションコンテナのロックおよびワイピングに関する。
【００９９】
故障が発生した場合にユーザが複数の異なる場所のいずれかからサービスを受けることを可能にする、企業アプリケーションストアおよびアプリケーションコントローラのマルチサイトアーキテクチャまたは構成をサポートすることができる。
【０１００】
場合によっては、管理対象アプリケーション６１０が、ＡＰＩ（例えばＯｐｅｎＳＳＬ）を介して、証明書および秘密鍵にアクセスすることを許可されてもよい。企業の信頼できる管理対象アプリケーション６１０が、アプリケーションのクライアント証明書および秘密鍵を用いて、特定の公開鍵動作を実行することを許可することができる。アプリケーションがブラウザのように動作して証明書のアクセスが要求されない場合、アプリケーションが「私は誰か」の証明書を読み取る場合、アプリケーションが証明書を使用してセキュアなセッショントークンを構築する場合、およびアプリケーションが重要データ（例えば、トランザクションログ）のデジタル署名のためにまたは一時的なデータ暗号化のために秘密鍵を使用する場合など、それぞれに応じて様々な使用事例を識別して処理することができる。
【０１０１】
ネイティブブラウザおよびネイティブウェブアプリケーションへの仮想ブラウザの統合
本開示の１つ以上の態様は、図１−図６に関連して上述したコンピュータシステムアーキテクチャ、リモートアクセスシステムアーキテクチャ、仮想化（ハイパーバイザ）システムアーキテクチャ、クラウドベースシステムアーキテクチャ、および／または企業モビリティ管理システムのうちの１つ以上を使用して、組み込む、埋め込む、および／または実装することができる。さらに、本開示では以下の略語を使用してもよい：ハイ・ディフィニション・エクスペリエンス（ＨＤＸ）；モバイルアプリケーション・マネジメント（ＭＡＭ）；モバイルデバイス・マネジメント（ＭＤＭ）；モバイルデバイス・エクスペリエンス（ＭＤＸ）；プルーフ・オブ・コンセプト（ＰＯＣ）；共有秘密ボールト（ＳＳＶ）；ストアフロント（ＳＦ）；仮想チャネル（ＶＣ）；ＷｏｒｘＨｏｍｅ（ＷＨ）；ＸｅｎＡｐｐ（ＸＡ）；ＸｅｎＤｅｓｋｔｏｐ（ＸＤ）；およびＸｅｎＭｏｂｉｌｅサーバ（ＸＭＳ）。
【０１０２】
上述したように、本開示の１つ以上の態様は、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する方法を提供する。例えば、本開示の１つ以上の態様を実装することによって、仮想ブラウザは、ネイティブにサポートされていないコンテンツへのアクセスを可能にするおよび／または提供するために、および／またはよりセキュリティを強化および／またはより高いセキュリティを提供するために、ネイティブブラウザにシームレスに統合することができる。さらに、そのような仮想ブラウザは、ネイティブのユーザ体験および本格的なウェブアプリケーション機能の双方を提供するように、ネイティブ「ウェブ」アプリケーションへのアクセスを可能にするおよび／または提供するために使用することができる。
【０１０３】
第１の使用事例では、特定のユーザのモバイルデバイスなどの特定のコンピューティングデバイス上で動作するＣＩＴＲＩＸ  ＷｏｒｘＷｅｂなどのネイティブブラウザは、サポートされていないコンテンツ（例えば、モバイルデバイス上のネイティブブラウザに表示可能でないかもしれないコンテンツ）へのアクセスを提供するために、および／またはより高いセキュリティ（例えば、モバイルデバイス上のネイティブブラウザによって提供されないかもしれないセキュリティ）を提供するために、ＨＤＸ仮想ブラウザにユニフォームリソースロケータ（ＵＲＬ）を開くことができる。この第１の使用事例の根底には、１つ以上の動作上の前提が存在してもよい。例えば、ＷｏｒｘＷｅｂは、主な使用事例とすることができる。さらに、このアプローチは、モバイルデバイス上のネイティブブラウザまたはウェブビューコントロールによってレンダリングされることができないＦＬＡＳＨコンテンツまたは他のコンテンツに有用とすることができる。さらに、このアプローチは、サーババックエンドでウェブコンテンツの処理を可能にするため、比類ないモバイルセキュリティが存在する状況で有用とすることができる。さらに、仮想ブラウザは、ＵＲＬをローカルアプリケーションにリダイレクトし返す必要がないかもしれない（例えば、逆ＵＲＬリダイレクトはない）。二次使用事例として、このアプローチはまた、インターネットエクスプローラー、クローム、および／またはファイアフォックスのようなデスクトップブラウザにも適用することができる。
【０１０４】
第２の使用事例では、モバイル「ウェブ」アプリケーションへのアクセスを可能にするおよび／または提供するために、仮想ブラウを使用することができる。例えば、ＷｏｒｋＤａｙなどのいくつかのモバイルアプリケーションは、それぞれの本格的なウェブアプリケーションに比べて機能が制限されていることがある。さらに、ＷｏｒｋＤａｙウェブサイトなどのいくつかのウェブサイトは、モバイルブラウザ用に設計されていないことがある。本開示の態様は、ユーザがモバイルデバイススプリングボードからＷｏｒｋＤａｙのようなウェブアプリケーションにアクセスすることを可能にすることができる。特に、本開示の態様は、ネイティブユーザ体験および本格的なウェブアプリケーション機能の双方をユーザに提供することができる。
【０１０５】
第３の使用事例では、ＣＩＴＲＩＸ  ＸｅｎＭｏｂｉｌｅ  ＭＤＭおよびＭＡＭ／ＭＤＸセキュリティは、双方のアプローチで強化されたセキュリティを提供するように、上述した第１の使用事例および第２の使用事例に適用し、組み合わせることができる。
【０１０６】
コアインプリメンテーション
本開示の１つ以上の態様を実装するための基本的な設計を表すことができる本開示の１つ以上の態様のコアインプリメンテーションでは、ネイティブＷｏｒｘＷｅｂアプリケーションは、選択されたウェブコンテンツのための仮想ブラウザと統合することができる。この構成では、フルスクリーンＨＤＸビューを提供することができる。遠隔ブラウザ（例えば、インターネットエクスプローラーのリモートインスタンス）は、選択されたウェブコンテンツに対してＨＤＸを介して、呼び出すことができる。リモートブラウザは、周囲にクロームのないキオスクモードで動作することができる。さらに、ユーザがリモートブラウザからネイティブＷｏｒｘＷｅｂビューに戻ることを可能にする、変更されたＨＤＸセッション制御ユーザインターフェースを提供することができる。単一のリモートタブのサポートも提供することができる。
【０１０７】
図７は、本開示の１つ以上の態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する際に使用することができるアーキテクチャの例を示す。
【０１０８】
図７に示す装備および構成では、管理者は、ＵＲＬのホワイト／ブラックリストについてのＷｏｒｘＷｅｂアプリケーションＭＤＸポリシーによって、ＸｅｎＭｏｂｉｌｅサーバを構成することができる。セキュアブラウザとして、ＷｏｒｘＷｅｂは、（１）ＭＤＸアプリケーションからのＵＲＬとの関連付けを有する；および／または（２）ストアフロントおよびＨＤＸソフトウェア開発キット（ＳＤＫ）を使用して選択ＵＲＬを開いて、そのようなＵＲＬを仮想ブラウザにリダイレクトするように、構成および／または設計することができる。場合によっては、ＭＤＸポリシー、ＳＦ／Ａｕｔｈ  ＳＤＫ、および／またはＭＤＸ  ＳＤＫに基づいて、１つ以上の依存性が存在することがある。それに加えてまたはその代わりに、ＸｅｎＡｐｐサーバは、公開されたブラウザまたはＸｅｎＡｐｐブラウザサーバによって活用することができる。
【０１０９】
図７に示された装備および構成では、動作の例示的なランタイムシーケンスは、以下のように発生することができる。第１に、管理者は、ＵＲＬのホワイトリストおよび／またはブラックリストを定義するために、ＷｏｒｘＷｅｂ  ＭＤＸアプリケーションポリシーを構成することができる。第２に、ユーザは、ＷｏｒｘＨｏｍｅを介して、ＸｅｎＭｏｂｉｌｅサーバにログオンすることができ、ＷｏｒｘＨｏｍｅは、ポリシーリフレッシュを実行することができる。第３に、ＷｏｒｘＨｏｍｅは、他のＭＤＸアプリケーションによってポリシーをプッシュするおよび／または認証トークンを共有することができる。場合によっては、共有秘密ボールト（ＳＳＶ）およびＭＤＸボールトを共有のために使用することができる。さらに、ＷｏｒｘＷｅｂは、ＵＲＬリダイレクトをオンおよび／またはオフにするために、ならびにＵＲＬのホワイトリストおよび／またはブラックリストを受信するために、ＭＤＸアプリケーションポリシーを読み取ることができる。代替設計では、ＷｏｒｘＷｅｂおよび他のＭＤＸアプリケーションは、ＸｅｎＭｏｂｉｌｅサーバから独立してポリシーリフレッシュを実行することができ、また、ＸｅｎＭｏｂｉｌｅサーバに対して独立してネットワーク認証を行うこともできる。このアプローチは、単一マスターアプリケーションとしてＷｏｒｘＨｏｍｅを有しない「分散認証」と呼ばれてもよい。
【０１１０】
図７に示される装備および構成における動作のランタイムシーケンスの例を再び参照すると、第４のステップにおいて、ユーザは、サポートされていないＵＲＬを開くことができる。第５に、ＷｏｒｘＷｅｂは、ストアフロントＳＤＫを使用して、ストアフロントと通信することができる。これは、共有認証トークンを使用した認証、アプリケーション起動リクエストの送信、およびＩＣＡファイル（例えば、インターネットエクスプローラーなど、サーバアドレスおよび／または初期アプリケーションなどの起動されるＨＤＸ接続の特性を記述することができるファイル）の取得を含むことができる。
【０１１１】
第６に、ＷｏｒｘＷｅｂは、ＨＤＸ仮想ブラウザアプリケーションを起動することができる。これは、取得したＩＣＡファイルに基づいてＨＤＸ接続を起動し、制御仮想チャネルを使用して、アプリケーションを起動してパラメータを供給すること（例えば、インターネットエクスプローラーへのパスなどのアプリケーションの供給）を含むことができる。さらに、以下に詳細に説明されるように、例えば、リダイレクトされたＵＲＬを起動することを示しているおよび／または「キオスク」モードでアプリケーションを動作することを示している、パラメータを付加することができる。
【０１１２】
第７に、ＷｏｒｘＷｅｂは、仮想ウェブコンテンツをプレビューすることができる。これは、リモートアプリケーション（例えば、リモートブラウザによって開かれた、リダイレクトされたＵＲＬからのコンテンツを用いてキオスクモードで動作するインターネットエクスプローラー）からのＨＤＸグラフィックスを表示することを含むことができる。ユーザがローカルウェブブラウジングに戻ることを可能にするために戻るボタンを設けることができる。それに加えてまたはその代わりに、ローカルＨＤＸセッション制御は、ユーザが仮想ブラウザにおいてＵＲＬのプレビューを終了することを可能にすることができる。
【０１１３】
その後、第８のステップにおいて、ユーザは、戻るボタンまたはプレビューを閉じるボタンを選択することができる。これは、ユーザおよび処理をローカルＷｏｒｘＷｅｂブラウジングに戻すことができる。
【０１１４】
図８は、本開示の１つ以上の態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する他の例を示す。特に、図８に示される例では、ＦＬＡＳＨコンテンツは、モバイルアプリケーションブラウザに提示することができる。図８に示される例は、図７に示される例と同様であるが、図８に示される例では、ＦＬＡＳＨコンテンツのＨＤＸプレビューが（例えば、通常はモバイルプラットフォーム上では許可されないかもしれない）ネイティブＷｏｒｘＷｅｂアプリケーションに提示される。
【０１１５】
場合によっては、インターネットエクスプローラーのキオスクモードは、本開示の１つ以上の態様を実装する際に使用することができる。インターネットエクスプローラーがキオスクモードで実行すると、タイトルバー、メニュー、ツールバー、およびステータスバーは表示されないことがあり、ブラウザは、フルスクリーンモードで実行することがある。同様のキオスクモードをサポートしない他のブラウザを使用して本開示の態様を実装する場合、クライアントウィンドウ領域と非クライアントウィンドウ領域とを区別するためにＨＤＸシームレスＶＣプロトコルのファシリティを使用することができる。このようにして、ＷｏｒｘＷｅｂは、ローカルグラフィックディスプレイからリモートブラウザの非クライアント領域（例えば、ウェブコンテンツを含むことのある領域）を削除することができ、クライアント領域のみを表示することができる。
【０１１６】
拡張設計
本開示の１つ以上の態様の拡張設計実装では、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する際に、以下に説明する１つ以上の追加の高度な機能を上述した１つ以上の特徴と組み合わせることができる。
【０１１７】
例えば、含まれる可能性のある高度な機能の１つは、複雑なＨＤＸビューのサイズ変更である。特に、リモートブラウザをプレビューする際に、ＷｏｒｘＷｅｂは、パンニングおよびスケーリングのためにユーザに異なるユーザ体験オプションを提供することができる。例えば、必要に応じてリモートセッションの自動スケーリングを伴うフルスクリーン（画面にフィット）オプションを提供することができる。それに加えてまたはその代わりに、実際のリモートセッションサイズおよびスクロールバーオプションが提供されてもよい。それに加えてまたはその代わりに、リモートセッションサイズおよびスクロールバーオプションのパーセンテージが提供されてもよい。
【０１１８】
含まれる可能性がある他の高度な機能は、ローカルとリモートの混合ブラウジングのためのローカルユーザインターフェースコントロールである。この機能を実装する場合、他が公開されたブラウザを介してリモートで処理される一方で、一部のＵＲＬがネイティブＷｅｂＶｉｅｗコントロールを介してローカルで処理されることに気づかずに、ユーザがローカルおよびリモートＵＲＬをシームレスにブラウズすることを可能にすることを目標とすることができる。このシームレスな体験はまた、戻る、進むおよび／または同様のものなどのユーザインターフェースボタンコントロールにも適用することができる。ＷｏｒｘＷｅｂは、コンテキストに応じてネイティブＷｅｂＶｉｅｗコントロールまたは公開されたブラウザウィンドウコントロールのいずれかにアクションをリダイレクトすることができる、ローカルユーザインターフェースボタンコントロールのみを表示することができる。場合によっては、これを実現するには、ＷｏｒｘＷｅｂは、ＵＲＬ遷移の履歴の追跡を保持する必要があることがある。データ構造は、ＵＲＬリンク、ＵＲＬのローカル処理対リモート処理を示すブール値、およびＵＲＬ遷移のシーケンス内の現在の番号および／またはポインタ（例えば、ローカルおよびリモートスタックの組み合わせ）を含むオブジェクトのアレイを記憶するために使用することができる。
【０１１９】
リモートブラウザで実際に発生しているＵＲＬリンク遷移の詳細を取得するために、ブラウザヘルパーオブジェクト（ＢＨＯ）または他のブラウザに依存するプラグインを、このメタデータをＨＤＸ  ＶＣを介してＷｏｒｘＷｅｂに通信するようにリモートブラウザで使用することができる。さらに、ＷｏｒｘＷｅｂは、ＨＤＸ  ＶＣを介してリモートブラウザにキーボードショートカットを送信するように設計されたローカルの戻るおよび／または進むコントロールを介して、リモートの戻る動作および／または進む動作をコントロールすることができる（例えば、それぞれ、Ａｌｔ−左矢印キーおよびＡｌｔ−右矢印キー）。ブラウジング履歴のコンテキスト（例えば、上述したデータ構造を使用する）に応じて、同じローカルの戻るおよび／または進むコントロールは、ローカルのＷｅｂＶｉｅｗコントロールブラウジングセッションに適用することができる。
【０１２０】
場合によっては、戻るボタンを使用してバックトラッキングする以外に、リモートブラウザからローカルブラウザへのＵＲＬリダイレクトがないという簡単な前提条件を設けることができる。この前提条件を使用すると、実際のリモートＵＲＬリンクが通信される必要はなく、代わりにリモートＵＲＬ遷移の動作のみが通信されればよい。
【０１２１】
含まれる可能性がある他の高度な機能は、リモートブラウザ用のマルチタブサポートである。この機能を実装する場合、ＨＤＸセッション共有がないことがある。例えば、各タブは、別個のＨＤＸセッション内で処理されることができ、別個のリモートプロセスの追跡を保持する必要はないことがある。上述した設計は、それぞれ別個のタブ毎に適用することができる。このアプローチのデメリットの中には、ＸｅｎＡｐｐサーバスケーラビリティが影響を受ける可能性があり、それぞれ別個のセッション毎の初期ＨＤＸ接続時間が長くなることがあるというのがある。
【０１２２】
他の場合では、リモートブラウザのマルチタブサポートを実装する場合、ＨＤＸセッション共有が可能である。例えば、別個のリモートブラウザは、各ローカルタブについて同じＨＤＸセッションで起動されることができ、既存のシームレスＶＣプロトコルを介して追跡することができる（例えば、公開されたアプリケーションの完全な階層およびリモートプロセスおよびウィンドウの対応するツリーを提供することができる）。このアプローチは、より複雑である可能性があるが、ＸｅｎＡｐｐサーバスケーラビリティだけでなく、最初の起動後の各後続ブラウザの瞬間的な起動時間を優先することができる。
【０１２３】
ある構成では、ネイティブブラウザを拡張するためにブラウザプラグインを提供することができる。特に、ＷｏｒｘＷｅｂは、モバイルプラットフォーム向けのネイティブカスタムブラウザと見なことができる。デスクトップオペレーティングシステムのネイティブブラウザにも同じ概念が適用されてもよい。例えば、ウィンドウズ（登録商標）オペレーティングシステム、ＭＡＣ  ＯＳ  Ｘオペレーティングシステム、および／またはリナックス（登録商標）オペレーティングシステムで実行されている場合、インターネットエクスプローラー、クローム、および／またはファイアフォックスのブラウザプラグインを使用して、ＵＲＬがリモートホストされたブラウザにリダイレクトされてもよい。そのようなブラウザプラグインは、リモーティングにＣＴＲＩＸ  ＨＴＭＬ５レシーバを使用することができ、上述したようにリモートブラウザを制御するためにカスタムＶＣによって拡張することができる。
【０１２４】
ある構成では、モバイル「ウェブ」アプリケーション機能を提供することができる。例えば、モバイル「ウェブ」アプリケーション（例えば、モバイルデバイススプリングボード上のＷｏｒｋＤａｙ）を実現するために、上述した組み込みＨＤＸブラウザ設計およびモバイルＨＤＸネイティブアプリケーション設計とのＷｏｒｘＷｅｂの組み合わせまたは相互作用が必要とされることがある。ＨＤＸネイティブアプリケーションをモバイルデバイススプリングボードに提供する際、テンプレートＨＤＸ  ＳＤＫアプリケーションは、公開されたアプリケーション（例えば、マイクロソフトワード）に対応する特定のネイティブアプリケーションのように見た目と感触をカスタマイズすることができる。
【０１２５】
例えば、ＨＤＸネイティブアプリケーションは、ＭＤＭまたはＭＡＭを介してスプリングボードに装備することができる。そのようなアプリケーションは、ＤＯＣおよびＤＯＣＸに対応するマイクロソフトワードのアイコン（例えば、対応する公開されたアプリケーションとして）およびファイルタイプアソシエーションズ（ＦＴＡ）を含むように、テンプレートＨＤＸアプリケーションから事前設定されてもよい。アプリケーションはまた、ネイティブアプリケーションを起動するときに、マイクロソフトワードの公開されたインスタンスおよび／またはリモートのインスタンスに対してＨＤＸセッションを起動するように事前設定されてもよい。
【０１２６】
本開示の１つ以上の態様の実装では、テンプレートＷｏｒｘＷｅｂアプリケーションは、ＷｏｒｋＤａｙウェブアプリケーションのアイコンによって構成されてもよく、開始時に、ＷｏｒｋＤａｙウェブアプリケーションを指すＵＲＬによって公開されたブラウザおよび／またはリモートブラウザに対するＨＤＸセッションを起動するようにさらに構成されてもよい。このようにして、ユーザは、ネイティブユーザ体験および本格的なウェブアプリケーション機能の双方を提供することができる。
【０１２７】
図９は、本開示の１つ以上の態様に従って、モバイル「ウェブ」アプリケーションの例を示す。
【０１２８】
図１０は、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する方法を示す。ある実施形態では、図１０に示される方法は、図１−図６に関連して上述したコンピュータシステムアーキテクチャ、リモートアクセスシステムアーキテクチャ、仮想化（ハイパーバイザ）システムアーキテクチャ、クラウドベースシステムアーキテクチャ、および／または企業モビリティ管理システムのうちの１つ以上の要素を組み込む、利用するおよび／または含むコンピューティングプラットフォームによって実行することができる。例えば、図１０に示される方法は、少なくとも１つのプロセッサ、メモリ、および通信インターフェースを有するコンピューティングプラットフォームによって実行することができる。ステップ１００５において、コンピューティングプラットフォームは、ネイティブにサポートされていないユニフォームリソースロケータを開くリクエストを受信することができる。ステップ１０１０において、ネイティブにサポートされていないユニフォームリソースロケータを開くリクエストを受信したことに応答して、コンピューティングプラットフォームは、ホストされた仮想ブラウザアプリケーションを起動することができる。ステップ１０１５において、コンピューティングプラットフォームは、ホストされた仮想ブラウザアプリケーションによって生成されたグラフィックスを表示することができ、ホストされた仮想ブラウザアプリケーションによって生成されたグラフィックスは、ネイティブにサポートされていないユニフォームリソースロケータに関連するコンテンツを含むことができる。
【０１２９】
図１１は、本明細書に記載される１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なコンピューティング環境を示す。図１１を参照すると、コンピューティング環境１１００は、ユーザコンピューティングデバイス１１１０、企業サーバインフラストラクチャ１１２０、仮想化サーバインフラストラクチャ１１３０、およびネットワーク１１５０を含むことができる。ユーザコンピューティングデバイス１１１０、企業サーバインフラストラクチャ１１２０、および仮想化サーバインフラストラクチャ１１３０は、１つ以上のプロセッサ、メモリ、通信インターフェース、および／または同様のものなどの１つ以上の物理コンポーネントを含むことができる。さらに、ユーザコンピューティングデバイス１１１０は、上述したクライアントデバイス、モバイルデバイス、および／またはユーザデバイスのうちの１つ以上の態様を含む、組み込む、および／または実装することができる。企業サーバインフラストラクチャ１１２０は、上述した企業システムおよび／または管理サーバのうちの１つ以上の態様を含む、組み込む、および／または実装することができる。仮想化サーバインフラストラクチャ１１３０は、上述した仮想化サーバおよび／または他の仮想化インフラストラクチャのうちの１つ以上の態様を含む、組み込む、および／または実装することができる。
【０１３０】
例えば、ユーザコンピューティングデバイス１１１０は、プロセッサ１１１１、メモリ１１１２、および通信インターフェース１１１４を含むことができる。プロセッサ１１１１は、オペレーティングシステムおよび／またはブラウジング機能を提供することができる（例えば、「ローカルブラウザ」または「ネイティブブラウザ」とも呼ばれてもよい）ローカルブラウザアプリケーションを含む、１つ以上のアプリケーションの実行などの１つ以上の機能をユーザコンピューティングデバイス１１１０が実行するように、メモリ１１１２に記憶された命令を実行することができる。メモリ１１１２は、以下に詳細に説明するように、上述したセキュアおよび／または管理されたブラウザアプリケーション（例えば、管理対象ブラウザアプリケーション６１０）のうちの１つ以上の態様を含む、組み込む、および／または実装することができ且つブラウジング機能を提供することができるローカルブラウザアプリケーション１１１３を記憶することができる。通信インターフェース１１１４は、ユーザコンピューティングデバイス１１１０が、企業サーバインフラストラクチャ１１２０、仮想化サーバインフラストラクチャ１１３０、および／または１つ以上の他のシステムおよび／またはデバイスなど、コンピューティング環境１１００内の１つ以上の他のシステムおよび／またはデバイスと通信することができる１つ以上のネットワークインターフェースを含むことができる。
【０１３１】
企業サーバインフラストラクチャ１１２０は、１つ以上のモバイルデバイス管理ポリシー、モバイルアプリケーション管理ポリシー、および／または他の企業ポリシーを定義する、適用する、実行する、更新する、使用不可にする、および／または制御することができる（例えば、１つ以上の管理対象ユーザモバイルデバイスを含む１つ以上の管理対象デバイスに関して）、１つ以上のポリシー管理システム１１２１を含むおよび／または提供することができる。仮想化サーバインフラストラクチャ１１３０は、ホストされたブラウザアプリケーション１１３１（例えば、上述したホストされた、リモートの、および／または仮想化されたアプリケーションと同様のリモートおよび／または仮想アプリケーションでもよく、以下に詳細に説明するように、例えば、サポートされていないコンテンツを１つ以上のユーザデバイスにレンダリングおよび／または提供するために使用することができる）を含む、実行する、および／または提供することができる。ネットワーク１１５０は、１つ以上のローカルエリアネットワーク、ワイドエリアネットワーク、パブリックネットワーク、プライベートネットワーク、および／またはサブネットワークを含むことができ、ユーザコンピューティングデバイス１１１０、企業サーバインフラストラクチャ１１２０、仮想化サーバインフラストラクチャ１１３０を相互接続することができる。
【０１３２】
図１２Ａ−図１２Ｆは、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合するための例示的なイベントシーケンスを示す。図１２Ａを参照すると、ステップ１２０１において、企業サーバインフラストラクチャ１１２０は、１つ以上のポリシー（例えば、１人以上のポリシー管理者および／または他の管理ユーザから）を定義する入力を受信することができる。例えば、企業サーバインフラストラクチャ１１２０は１つ以上のモバイルデバイス管理ポリシー、１つ以上のモバイルデバイスアプリケーションポリシー、および／または１つ以上の他の企業ポリシー（例えば、ユーザコンピューティングデバイス１１１０のユーザが雇用されているおよび／または関連付けられる企業組織などの、企業サーバインフラストラクチャ１１２０を運営する組織に特有であるおよび／または関連するとしてもよい）を定義する入力を受信することができる。場合によっては、ステップ１２０１において定義された１つ以上のポリシーは、以下に詳細に説明するように、ローカルブラウザの代わりにホストされたブラウザで開かれることになる１つ以上のネイティブにサポートされていないユニフォームリソースロケータを指定することができる。
【０１３３】
ステップ１２０２において、企業サーバインフラストラクチャ１１２０は、１つ以上のユーザデバイス（例えば、ステップ１２０１において定義された１つ以上のポリシーに基づいて）をプロビジョニングすることができる。例えば、ステップ１２０２において、企業サーバインフラストラクチャ１１２０は、そのような１つ以上のポリシーを有するユーザデバイスをプロビジョニングするために、ユーザコンピューティングデバイス１１１０および／または１つ以上の他のユーザデバイスを含む１つ以上のユーザデバイスに１つ以上の新たなポリシーおよび／またはポリシー更新を送信することができる。
【０１３４】
ステップ１２０３において、ユーザコンピューティングデバイス１１１０は、企業サーバインフラストラクチャ１１２０から１つ以上のポリシーを受信することができる。例えば、ステップ１２０３において、ユーザコンピューティングデバイス１１１０は、通信インターフェース（例えば、通信インターフェース１１１４）を介して、企業サーバ（例えば、企業サーバインフラストラクチャ１１２０）から１つ以上の企業ポリシーを受信することができ、１つ以上の企業ポリシーは、１つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する少なくとも１つの企業ポリシーを含むことができる。以下に詳細に記述するように、そのような企業ポリシーの実行は、ホストされたセッション（例えば、仮想化サーバインフラストラクチャ１１３０によって）でリモートにレンダリングされてユーザデバイス（例えば、ユーザコンピューティングデバイス１１１０）上でローカルに表示されることになるネイティブにサポートされていないユニフォームリソースロケータに対応するコンテンツをイネーブルにするように、そのようなネイティブにサポートされていないユニフォームリソースロケータがユーザコンピューティングデバイス１１１０上でリクエストされた場合、ホストされたブラウザセッションを起動するようにユーザコンピューティングデバイス１１１０を指示する、制御するおよび／またはもたらすことができる。
【０１３５】
ステップ１２０４において、ユーザコンピューティングデバイス１１１０は、企業サーバインフラストラクチャ１１２０から受信した１つ以上のポリシーを記憶することができる。例えば、ステップ１２０４において、ユーザコンピューティングデバイス１１１０は、少なくとも１つのポリシー管理エージェントによってコンピューティングデバイス（例えば、ユーザコンピューティングデバイス１１１０）上で実行するための１つ以上の企業ポリシーを記憶することができる。そのようなポリシー管理エージェントは、ユーザコンピューティングデバイス１１１０上で動作および／または実行することができ、上述したクライアントエージェント（例えば、クライアントエージェント６０４）の１つ以上の態様を含む、組み込む、および／または実装することができる。それに加えてまたはその代わりに、そのようなポリシー管理エージェントは、ユーザコンピューティングデバイス１１１０上のローカルブラウザおよび／またはユーザコンピューティングデバイス１１１０上（例えば、そのようなローカルブラウザ自体が統合することができる）の企業ポータルアプリケーションに統合することができる。
【０１３６】
図１２Ｂを参照すると、ステップ１２０５において、ユーザコンピューティングデバイス１１１０は、ユーザコンピューティングデバイス１１１０のユーザを認証することができる。例えば、ステップ１２０５において、ユーザコンピューティングデバイス１１１０は、コンピューティングデバイス（例えば、ユーザコンピューティングデバイス１１１０）のユーザを認証することができる。ユーザコンピューティングデバイス１１１０は、ユーザによって入力されたユーザ名、ユーザによって入力されたパスワード、ユーザによって提供された生体情報入力、および／またはユーザによって提供された他の入力を検証することに基づいてユーザを認証することができる。ステップ１２０６において、ユーザコンピューティングデバイス１１１０は、ステップ１２０５において認証されたユーザにリンクされたおよび／または関連付けられた１つ以上の認証情報をキャッシュすることができる。例えば、ステップ１２０６において、コンピューティングデバイス（例えば、ユーザコンピューティングデバイス１１１０）のユーザを認証することに基づいて、ユーザコンピューティングデバイス１１１０は、コンピューティングデバイスのユーザ（例えば、ユーザコンピューティングデバイス１１１０）のユーザに関連する１つ以上の認証情報をキャッシュすることができる。ユーザコンピューティングデバイス１１１０は、コンピューティングデバイスのユーザ（例えば、ユーザコンピューティングデバイス１１１０）に関連付けられた１つ以上の認証情報をキャッシュする際に、コンピューティングデバイス（例えば、ユーザコンピューティングデバイス１１１０）のユーザに関連付けられた企業ユーザアカウントにリンクされた１つ以上のシングルサインオン（ＳＳＯ）認証情報を鍵チェーンに記憶することができるおよび／またはキャッシュすることができる。場合によっては、そのようなシングルサインオン（ＳＳＯ）認証情報は、ユーザコンピューティングデバイス１１１０によって使用可能である、および／またはユーザコンピューティングデバイス１１１０が仮想化サーバインフラストラクチャ１１３０などの仮想化サーバにログインして企業ユーザアカウントにリンクされたホストされたブラウザセッションを開始するのを可能にする。
【０１３７】
ステップ１２０７において、ユーザコンピューティングデバイス１１１０は、第１のユニフォームリソースロケータのリクエストを受信することができる。例えば、ステップ１２０７において、ユーザコンピューティングデバイス１１１０は、第１のユニフォームリソースロケータを開くリクエストを受信することができる。そのようなリクエストは例えば、ユーザコンピューティングデバイス１１１０のユーザから受信したユーザ入力に対応することができるおよび／またはそのようなリクエストをユーザ入力に含むことができる。ステップ１２０８において、ユーザコンピューティングデバイス１１１０は、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。例えば、ステップ１２０８において、ユーザコンピューティングデバイス１１１０は、ユーザコンピューティングデバイス１１１０によって維持および／または判定される１つ以上のポリシーおよび／または他の情報に基づいて、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。
【０１３８】
ある実施形態では、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することは、第１のユニフォームリソースロケータが、１つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する少なくとも１つの企業ポリシーに基づいて、ネイティブにサポートされていない旨を判定することを含むことができる。例えば、ユーザコンピューティングデバイス１１１０は、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定する際に、第１のユニフォームリソースロケータが、１つ以上のネイティブにサポートされていないユニフォームリソースロケータを定義する少なくとも１つの企業ポリシーに基づいてネイティブにサポートされていない旨を判定することができる。そのような企業ポリシーは、例えば、ネイティブにサポートされていないユニフォームリソースロケータ、ネイティブにサポートされているユニフォームリソースロケータ、および／または他のユニフォームリソースロケータのブラックリストおよび／またはホワイトリストを定義することができる。さらに、ユーザコンピューティングデバイス１１１０は、例えば、少なくとも１つの企業ポリシーによって識別されおよび／または少なくとも１つの企業ポリシーによって特定されたネイティブにサポートされていないユニフォームリソースのリストに含まれる第１のユニフォームリソースロケータに基づいて、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができ、この判定は、以下に詳細に記述するように、第１のユニフォームリソースロケータに関連するコンテンツをレンダリングするためにホストされたセッションを、ユーザコンピューティングデバイス１１１０で起動することができる。
【０１３９】
ある実施形態では、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することは、第１のユニフォームリソースロケータが、第１のユニフォームリソースロケータに関連する１つ以上の要素のロード失敗を検出することに基づいてネイティブにサポートされていない旨を判定することを含むことができる。例えば、ユーザコンピューティングデバイス１１１０は、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定する際に、第１のユニフォームリソースロケータが、第１のユニフォームリソースロケータに関連する１つ以上の要素のロード失敗を検出するユーザコンピューティングデバイス１１１０に基づいてネイティブにサポートされていない旨を判定することができる。例えば、ユーザコンピューティングデバイス１１１０は、最初に第１のユニフォームリソースロケータへのアクセスを試みることができ、その後、第１のユニフォームリソースロケータに関連する１つ以上のコンテンツアイテム、スクリプト、プラグイン、および／または他の要素がロードされることができない旨および／またはロード失敗した旨を検出することができる。第１のユニフォームリソースロケータに関連する１つ以上のコンテンツアイテム、スクリプト、プラグイン、および／または他の要素がロードされることができない旨および／またはロード失敗した旨を検出することに応答して、ユーザコンピューティングデバイス１１１０は、（例えば、以下に詳細に示すように、ユーザコンピューティングデバイス１１１０に第１のユニフォームリソースロケータに関連するコンテンツをレンダリングするためにホストされたセッションを開始させることができる）第１のユニフォームリソースロケータがネイティブでサポートされていない旨を判定することができる。
【０１４０】
ある実施形態では、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することは、第１のユニフォームリソースロケータが、第１のユニフォームリソースロケータがホストされたウェブアプリケーションに関連するスタブアプリケーションに対応する旨を識別することに基づいてネイティブにサポートされていない旨を判定することを含むことができる。例えば、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することにおいて、ユーザコンピューティングデバイス１１１０は、第１のユニフォームリソースロケータが、第１のユニフォームリソースロケータがホストされたウェブアプリケーションに関連するスタブアプリケーションに対応する旨を識別することに基づいてネイティブにサポートされていない旨を判定することができる。そのようなスタブアプリケーションは、例えば、ローカルブラウザ内で第１のユニフォームリソースロケータを開くように構成することができ、ローカルブラウザが第１のユニフォームリソースをネイティブにサポートされていないと識別することを引き起こすことができる１つ以上のコマンドラインオプションおよび／または他の埋め込みコマンドを含むことができ、次に、以下に詳細に示すように、第１のユニフォームリソースロケータに関連するコンテンツをレンダリングするために、ユーザコンピューティングデバイス１１１０がホストされたセッションの起動を引き起こすことができる。
【０１４１】
図１２Ｃを参照すると、ステップ１２０９において、ユーザコンピューティングデバイス１１１０は、仮想化サーバインフラストラクチャ１１３０に（例えば、ステップ１２０８において、第１のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに応答しておよび／または基づいて）接続することができる。ステップ１２１０において、ユーザコンピューティングデバイス１１１０は、ホストされたセッションにおいて（例えば、仮想化サーバインフラストラクチャ１１３０によって提供された、ホストされたセッションにおいてホストされたブラウザのインスタンスを起動するように仮想化サーバインフラストラクチャ１１３０に指示する、コマンドを出す、および／または制御することによって）ホストされたブラウザを起動することができる。例えば、ステップ１２１０において、第１のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、ユーザコンピューティングデバイス１１１０は、仮想化サーバ（例えば、仮想化サーバインフラストラクチャ１１３０）によってホストされた仮想セッションでホストされた仮想ブラウザアプリケーション（例えば、ホストされたブラウザアプリケーション１１３１）を起動することができる。
【０１４２】
ある実施形態では、仮想化サーバによってホストされた仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動することは、仮想化サーバへの接続を確立し、１つ以上のキャッシュされた認証情報を使用して仮想化サーバによって認証することを含むことができる。例えば、仮想化サーバ（例えば、仮想化サーバインフラストラクチャ１１３０）によってホストされた仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動する際に、ユーザコンピューティングデバイス１１１０は、仮想化サーバ（例えば、仮想化サーバインフラストラクチャ１１３０）に対する接続を確立し、１つ以上のキャッシュされた認証情報（例えば、ステップ１２０６においてキャッシュされた認証情報）を使用して、仮想化サーバ（例えば、仮想化サーバインフラストラクチャ１１３０）で認証することができる。
【０１４３】
ある実施形態では、１つ以上のキャッシュされた認証情報を使用して仮想化サーバによって認証することは、企業ユーザアカウントにリンクされた少なくとも１つのキャッシュされたシングルサインオン（ＳＳＯ）認証情報を使用して、仮想化サーバによって認証することを含むことができる。例えば、１つ以上のキャッシュされた認証情報（例えば、ステップ１２１０において）を使用して仮想化サーバ（例えば、仮想化サーバインフラストラクチャ１１３０）で認証する際に、ユーザコンピューティングデバイス１１１０は、企業ユーザアカウントにリンクされた少なくとも１つのキャッシュされたシングルサインオン（ＳＳＯ）認証情報を使用して、仮想化サーバで認証することができる。例えば、ユーザコンピューティングデバイス１１１０は、そのようなシングルサインオン（ＳＳＯ）認証情報を検証のために仮想化サーバインフラストラクチャ１１３０に提出することによって、企業ユーザアカウントにリンクされた少なくとも１つのキャッシュされたＳＳＯ認証情報を使用して仮想化サーバで認証することができ、ＳＳＯ認証情報は、上述したように、ステップ１２０６においてユーザコンピューティングデバイス１１１０によってキャッシュすることができる。それに加えてまたはその代わりに、ＳＳＯ認証情報は、ユーザコンピューティングデバイス１１１０のユーザに関連付けられ且つユーザコンピューティングデバイス１１１０のユーザが企業アプリケーションストア、企業ファイル共有プラットフォーム、企業クラウド記憶プラットフォーム、および／または他の企業リソースなどの１つ以上の保護された企業リソースに選択的にアクセスすることを可能にする企業ユーザアカウントにリンクすることができる。
【０１４４】
ステップ１２１１において、ユーザコンピューティングデバイス１１１０は、仮想化サーバインフラストラクチャ１１３０からホストされたブラウザグラフィックスを受信することができる。例えば、ステップ１２１１において、ユーザコンピューティングデバイス１１１０は、通信インターフェース（例えば、通信インターフェース１１１４）を介して、仮想化サーバ（例えば、仮想化サーバインフラストラクチャ１１３０）から、ホストされた仮想ブラウザアプリケーション（例えば、ホストされたブラウザアプリケーション１１３１）によって生成された第１のホストされたブラウザグラフィックスを受信することができる。さらに、ホストされた仮想ブラウザアプリケーション（例えば、ホストされたブラウザアプリケーション１１３１）によって生成された第１のホストされたブラウザグラフィックスは、第１のユニフォームリソースロケータに関連付けられたコンテンツを含むことができる。したがって、仮想化サーバインフラストラクチャ１１３０上のホストされたブラウザアプリケーション１１３１は、ユーザコンピューティングデバイス１１１０上でネイティブにサポートされていない第１のユニフォームリソースロケータに関連付けられたコンテンツにアクセスおよび／またはレンダリングすることができ、その後、仮想化サーバインフラストラクチャ１１３０上のホストされたブラウザアプリケーション１１３１は、第１のユニフォームリソースロケータに関連付けられたレンダリングされたコンテンツを、表示（例えば、ローカルブラウザアプリケーション１１１３などのユーザコンピューティングデバイス１１１０上のローカルブラウザにおいて）する目的のために、ユーザコンピューティングデバイス１１１０に送信することができる。
【０１４５】
ステップ１２１２において、ユーザコンピューティングデバイス１１１０は、仮想化サーバインフラストラクチャ１１３０から受信した、ホストされたブラウザグラフィックスを提示することができる。例えば、ステップ１２１２において、ユーザコンピューティングデバイス１１１０は、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストされたブラウザアプリケーション１１３１）によって生成された第１のホストされたブラウザグラフィックスを提示することができる。ホストされた仮想ブラウザアプリケーションによって生成されたホストされたブラウザグラフィックスを提示する際に、ユーザコンピューティングデバイス１１１０は、図１３に示されるグラフィカルユーザインターフェース１３００と同様のグラフィカルユーザインターフェースを表示および／または提示することができる。図１３に示すように、グラフィカルユーザインターフェース１３００は、ローカルブラウザアプリケーション（例えば、タブリスト、戻るボタン、進むボタン、および／または他の要素）、および仮想化サーバインフラストラクチャ１１３０上のホストされたブラウザによってレンダリングされ且つコンピューティングデバイス１１１０上のローカルブラウザアプリケーションによって表示されるホストされたブラウザグラフィックスに関連するユーザインターフェース要素、コントロール、および／または他のコンテンツを含むことができる。
【０１４６】
ある実施形態では、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスを提示することは、ブラウジングアクティビティに関連するブラウジング遷移のスタックを維持することを含むことができる。例えば、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストされたブラウザアプリケーション１１３１）によって生成された第１のホストされたブラウザグラフィックスを提示する際、ユーザコンピューティングデバイス１１１０は、ブラウジングアクティビティに関連するブラウジング遷移のスタックを維持することができる。ブラウジングアクティビティに関連するブラウジング遷移のスタックを維持する際に、ユーザコンピューティングデバイス１１１０は、ユーザコンピューティングデバイス１１１０上で実行するローカルブラウザにおけるローカルブラウジングアクティビティおよび仮想化サーバインフラストラクチャ１１３０上で実行するホストされた仮想ブラウザにおけるリモートブラウジングアクティビティを含む、アクセスされるページおよび／またはページ間の遷移を識別する情報を追跡および／または記憶することができる。ユーザコンピューティングデバイス１１１０は、そのようなブラウジング遷移のスタックを維持して、ローカルブラウザおよび／またはホストされたブラウザにおけるナビゲーション機能、履歴追跡機能、および／または他の機能を戻すおよび／または進めることができる。場合によっては、そのようなブラウジング遷移のスタックは、ユーザコンピューティングデバイス１１１０上で維持することができるブラウジング遷移のスタックに加えてまたはその代わりに、仮想化サーバインフラストラクチャ１１３０上で同様に維持することができる。
【０１４７】
図１２Ｄを参照すると、ステップ１２１３において、ユーザコンピューティングデバイス１１１０は、ホストされたブラウザグラフィックス（例えば、ユーザコンピューティングデバイス１１１０上で実行するローカルブラウザによって提示することができる）と対話する入力（例えば、ユーザコンピューティングデバイス１１１０のユーザから）を受信することができる。例えば、ステップ１２１３において、ユーザコンピューティングデバイス１１１０は、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストされたブラウザアプリケーション１１３１）によって生成されてコンピューティングデバイス（例えば、ユーザコンピューティングデバイス１１１０）によって提示された第１のホストされたブラウザグラフィックスと対話する入力を受信することができる。そのような入力は、例えば、ホストされたブラウザグラフィックスに含まれるフォームまたは他のコントロールと対話する、および／またはホストされたブラウザグラフィックスに含まれる要素と対話する、ホストされたブラウザグラフィックスに含まれるリンクを呼び出すおよび／または選択するユーザを含むことができる。
【０１４８】
ある実施形態では、ホストされた仮想ブラウザプリケーションによって生成されてコンピューティングデバイスによって提示された第１のホストされたブラウザグラフィックスとの入力対話を受信することは、ホストされた仮想ブラウザプリケーションによって生成されたおよびコンピューティングデバイスによって提示された第１のホストされたブラウザグラフィックスとの入力対話に基づいて、ブラウジング遷移のスタックを更新することを含むことができる。例えば、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストされたブラウザアプリケーション１１３１）によって生成されたおよびコンピューティングデバイス（例えば、ユーザコンピューティングデバイス１１１０）によって提示された第１のホストされたブラウザグラフィックスと対話する入力を受信する際に、ユーザコンピューティングデバイス１１１０は、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストブラウザアプリケーション１１３１）によって生成されたおよびコンピューティングデバイス（例えば、ユーザコンピューティングデバイス１１１０）によって提示された第１のホストされたブラウザグラフィックスと対話する入力に基づいて、ブラウジング遷移のスタックを更新することができる。例えば、入力がリンクの選択および／またはリンクに関連する新たなページへの遷移を含む場合、ユーザコンピューティングデバイス１１１０は、リンクの選択を識別する情報および／またはリンクに関連する新たなページへの遷移を含むようにブラウジング遷移を更新することができる。
【０１４９】
ステップ１２１４において、ユーザコンピューティングデバイス１１１０は、ホストされたブラウザグラフィックスと対話する入力を仮想化サーバインフラストラクチャ１１３０に送信することができる。例えば、ステップ１２１４において、ユーザコンピューティングデバイス１１１０は、通信インターフェース（例えば、通信インターフェース１１１４）を介して、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストされたブラウザアプリケーション１１３１）によって生成されたおよびコンピューティングデバイス（例えば、ユーザコンピューティングデバイス１１１０）によって提示された第１のホストされたブラウザグラフィックスと対話する入力を、仮想化サーバ（例えば、仮想化サーバインフラストラクチャ１１３０）に送信することができる。ステップ１２１５において、ユーザコンピューティングデバイス１１１０は、仮想化サーバインフラストラクチャ１１３０から更新されたブラウザグラフィックスを受信することができる。例えば、ステップ１２１５において、ユーザコンピューティングデバイス１１１０は、通信インターフェース（例えば、通信インターフェース１１１４）を介して、仮想化サーバ（例えば、仮想化サーバインフラストラクチャ１１３０）から、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストされたブラウザアプリケーション１１３１）によって生成された、更新されてホストされたブラウザグラフィックスを受信することができる。例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストされたブラウザアプリケーション１１３１は、ユーザコンピューティングデバイス１１１０から受信した入力に基づいて、更新されたグラフィックスをレンダリングおよび／または生成することができ、その後、そのような更新されたグラフィックスを表示するためにユーザコンピューティングデバイス１１１０に返送することができる。ステップ１２１６において、ユーザコンピューティングデバイス１１１０は、仮想化サーバインフラストラクチャ１１３０から受信した更新されたブラウザグラフィックスを提示することができる。例えば、ステップ１２１６において、ユーザコンピューティングデバイス１１１０は、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストブラウザアプリケーション１１３１）によって生成された、更新されたホストされたブラウザグラフィックスを提示することができる。
【０１５０】
図１２Ｅを参照すると、ステップ１２１７において、ユーザコンピューティングデバイス１１１０は、第２のユニフォームリソースロケータのリクエストを受信することができる。例えば、ステップ１２１７において、ユーザコンピューティングデバイス１１１０は、第２のユニフォームリソースロケータを開くリクエストを受信することができる。そのようなリクエストは、例えば、ユーザコンピューティングデバイス１１１０のユーザから受信したユーザ入力に対応することができるおよび／またはユーザ入力に含むことができる。場合によっては、ユーザコンピューティングデバイス１１１０は、第１のユニフォームリソースロケータに関連付けられたホストされたグラフィックスが提示されるタブとは異なる新たなタブで、第２のユニフォームリソースロケータを開くリクエストを受信することができる。それに加えてまたはそれに代えて、ユーザコンピューティングデバイス１１１０は、ユーザコンピューティングデバイス１１１０上で実行するローカルブラウザの異なるタブ間に表示されるコンテンツおよび／またはブラウジング遷移を追跡することができる。
【０１５１】
ステップ１２１８において、ユーザコンピューティングデバイス１１１０は、第２のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。例えば、ステップ１２１８において、ユーザコンピューティングデバイス１１１０は、第１のユニフォームリソースロケータがネイティブにサポートされていなかった旨をユーザコンピューティングデバイス１１１０が判定した方法と同様に、第２のユニフォームリソースロケータがネイティブにサポートされていない（例えば、１つ以上のポリシーに基づいて、ロード失敗の検出に基づいて、第２のユニフォームリソースロケータがホストされたウェブアプリケーションに関連するスタブアプリケーションに対応する旨の識別に基づいて、および／またはユーザコンピューティングデバイス１１１０によって維持および／または判定された他の情報に基づいて）旨を判定することができる。
【０１５２】
ステップ１２１９において、ユーザコンピューティングデバイス１１１０は、ホストされたセッションにおいて（例えば、仮想化サーバインフラストラクチャ１１３０によって提供された、ホストされたセッションでのホストされたブラウザの他のインスタンスを起動するように仮想化サーバインフラストラクチャ１１３０に指示する、コマンドを出す、および／または制御することによって）、ホストされたブラウザの追加インスタンスを起動することができる。例えば、ステップ１２１９において、ユーザコンピューティングデバイス１１１０は、第２のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、仮想化サーバ（例えば、仮想化サーバインフラストラクチャ１１３０）によってホストされた仮想セッションにおいてホストされた仮想ブラウザアプリケーション（例えば、ホストされたブラウザアプリケーション１１３１）の追加インスタンスを起動することができる。
【０１５３】
ステップ１２２０において、ユーザコンピューティングデバイス１１１０は、仮想化サーバインフラストラクチャ１１３０からホストされたブラウザグラフィックスを受信することができる。例えば、ステップ１２２０において、ユーザコンピューティングデバイス１１１０は、通信インターフェース（例えば、通信インターフェース１１１４）を介して、仮想化サーバ（例えば、仮想化サーバインフラストラクチャ１１３０）から、ホストされた仮想ブラウザアプリケーション（例えば、ホストされたブラウザアプリケーション１１３１）の追加インスタンスによって生成された第２のホストされたブラウザグラフィックスを受信することができる。さらに、第２のホストされたブラウザグラフィックスは、第２のユニフォームリソースロケータに関連するコンテンツを含むことができる。したがって、第１のユニフォームリソースロケータと同様に、仮想化サーバインフラストラクチャ１１３０上のホストされたブラウザアプリケーション１１３１は、ユーザコンピューティングデバイス１１１０上でネイティブにサポートされていない第２のユニフォームリソースロケータに関連付けられたコンテンツにアクセスおよび／またはレンダリングすることができ、その後、仮想化サーバインフラストラクチャ１１３０上のホストされたブラウザアプリケーション１１３１は、第２のユニフォームリソースロケータに関連付けられたレンダリングされたコンテンツを、表示する目的のために（例えば、ローカルブラウザアプリケーション１１１３などのユーザコンピューティングデバイス１１１０上のローカルブラウザにおいて）、ユーザコンピューティングデバイス１１１０に送信することができる。
【０１５４】
図１２Ｆを参照すると、ステップ１２２１において、ユーザコンピューティングデバイス１１１０は、仮想化サーバインフラストラクチャ１１３０から受信したホストされたブラウザグラフィックスを提示することができる。例えば、ステップ１２２１において、ユーザコンピューティングデバイス１１１０は、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストブラウザアプリケーション１１３１）の追加インスタンスによって生成された、第２のホストされたブラウザグラフィックスを提示することができる。
【０１５５】
ある実施形態では、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスを提示することは、ローカルブラウザアプリケーションの第１のタブに第１のホストされたブラウザグラフィックスを提示することを含むことができ、ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された第２のホストされたブラウザグラフィックスを提示することは、ローカルブラウザアプリケーションの第１のタブとは異なるローカルブラウザアプリケーションの第２のタブに第２のホストされたブラウザグラフィックスを提示することを含むことができる。例えば、ユーザコンピューティングデバイス１１１０は、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストされたブラウザアプリケーション１１３１）によって生成された第１のホストされたブラウザグラフィックスを提示する際に、ローカルブラウザアプリケーションの第１のタブ（例えば、ユーザコンピューティングデバイス１１１０上で実行するローカルブラウザアプリケーション１１１３の第１のタブ）において第１のホストされたブラウザグラフィックスを提示することができる。さらに、ユーザコンピューティングデバイス１１１０は、ホストされた仮想ブラウザアプリケーションの追加インスタンス（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストされたブラウザアプリケーション１１３１の追加インスタンス）によって生成された第２のホストされたブラウザグラフィックスを提示する際に、ローカルブラウザアプリケーションの第１のタブとは異なるローカルブラウザアプリケーションの第２のタブ（例えば、ユーザコンピューティングデバイス１１１０上で実行するローカルブラウザアプリケーション１１１３の第２のタブ）において第２のホストされたブラウザグラフィックスを提示することができる。
【０１５６】
ある実施形態では、ホストされた仮想ブラウザアプリケーションの追加インスタンスによって生成された第２のホストされたブラウザグラフィックスを提示することは、ローカルブラウザアプリケーションの第１のタブにおける第１のブラウジングアクティビティに関連するブラウジング遷移の第１のスタックを維持すること、およびローカルブラウザアプリケーションの第２のタブにおける第２のブラウジングアクティビティに関連するブラウジング遷移の第２のスタックを維持することとを含むことができる。例えば、ホストされた仮想ブラウザアプリケーション（例えば、仮想化サーバインフラストラクチャ１１３０上で実行するホストされたブラウザアプリケーション１１３１）の追加インスタンスによって生成された第２のホストされたブラウザグラフィックスを提示する際に、ユーザコンピューティングデバイス１１１０は、ローカルブラウザアプリケーションの第１のタブにおける第１のブラウジングアクティビティに関連するブラウジング遷移の第１のスタックを維持することができ、ローカルブラウザアプリケーションの第２のタブにおける第２のブラウジングアクティビティに関連するブラウジング遷移の第２のスタックを維持することができる。ユーザコンピューティングデバイス１１１０は、上述した例のように、ユーザコンピューティングデバイス１１１０が遷移スタックを維持することができる方法と同様に、そのような遷移スタックを維持することができる。
【０１５７】
ステップ１２２２において、ユーザコンピューティングデバイス１１１０は、第３のユニフォームリソースロケータのリクエストを受信することができる。例えば、ステップ１２２２において、ユーザコンピューティングデバイス１１１０は、第３のユニフォームリソースロケータを開くリクエストを受信することができる。そのようなリクエストは、例えば、ユーザコンピューティングデバイス１１１０のユーザから受信したユーザ入力に対応することができるおよび／またはユーザ入力に含むことができる。場合によっては、ユーザコンピューティングデバイス１１１０は、第１のユニフォームリソースロケータに関連付けられたホストされたグラフィックスおよび／または第２のユニフォームリソースロケータに関連付けられたホストされたグラフィックスが提示されるタブとは異なる新たなタブで、第３のユニフォームリソースロケータを開くリクエストを受信することができる。それに加えてまたはその代わりに、ユーザコンピューティングデバイス１１１０は、ユーザコンピューティングデバイス１１１０上に表示されるコンテンツおよび／またはユーザコンピューティングデバイス１１１０上で実行するローカルブラウザの異なるタブ間のブラウジング遷移を追跡することができる。
【０１５８】
ステップ１２２３において、ユーザコンピューティングデバイス１１１０は、第３のユニフォームリソースロケータがネイティブにサポートされている旨を判定することができる。例えば、ステップ１２２３において、ユーザコンピューティングデバイス１１１０は、ユーザコンピューティングデバイス１１１０が維持および／または判定する１つ以上のポリシーおよび／または他の情報に基づいて、第３のユニフォームリソースロケータがネイティブにサポートされている旨を判定することができる。ステップ１２２４において、ユーザコンピューティングデバイス１１１０は、第３のユニフォームリソースロケータにアクセスすることができる。例えば、ステップ１２２４において、第３のユニフォームリソースロケータがネイティブにサポートされていると判定したことに基づいて、ユーザコンピューティングデバイス１１１０は、ローカルブラウザアプリケーション（例えば、ローカルブラウザアプリケーション１１１３）を使用して第３のユニフォームリソースロケータにアクセスすることができる。第３のユニフォームリソースロケータにアクセスする際に、ユーザコンピューティングデバイス１１１０は、例えば、第３のユニフォームリソースロケータに関連するコンテンツをネイティブに開いて提示することができる。例えば、図１４に示すように、第３のユニフォームリソースロケータにアクセスする際に、ユーザコンピューティングデバイス１１１０は、グラフィカルユーザインターフェース１４００と同様のグラフィカルユーザインターフェースを表示および／または提示することができる。図１４に示すように、グラフィカルユーザインターフェース１４００は、ローカルブラウザアプリケーション（例えば、タブリスト、戻るボタン、進むボタン、および／または他の要素）、また、ユーザコンピューティングデバイス１１１０上のローカルブラウザアプリケーションによってレンダリングされるネイティブブラウザグラフィックスに関連し且つユーザコンピューティングデバイス１１１０上のローカルブラウザアプリケーションによって表示されるユーザインターフェース要素、コントロール、および／または他のコンテンツを含むことができる。
【０１５９】
図１５は、本明細書に記載された１つ以上の例示的な態様に従って、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合する例示的な方法を示す。図１５を参照すると、ステップ１５０５において、少なくとも１つのプロセッサ、通信インターフェース、およびメモリを有するコンピューティングデバイスは、第１のユニフォームリソースロケータを開くリクエストを受信することができる。ステップ１５１０において、コンピューティングデバイスは、第１のユニフォームリソースロケータがネイティブにサポートされていない旨を判定することができる。ステップ１５１５において、第１のユニフォームリソースロケータがネイティブにサポートされていないと判定したことに基づいて、コンピューティングデバイスは、仮想化サーバによってホストされる仮想セッションにおいてホストされた仮想ブラウザアプリケーションを起動することができる。ステップ１５２０において、コンピューティングデバイスは、通信インターフェースを介して、仮想化サーバから、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスを受信することができ、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスは、第１のユニフォームリソースロケータに関連するコンテンツを含むことができる。ステップ１５２５において、コンピューティングデバイスは、ホストされた仮想ブラウザアプリケーションによって生成された第１のホストされたブラウザグラフィックスを提示することができる。
【０１６０】
上記例示したように、本開示の様々な態様は、仮想ブラウザをネイティブブラウザおよびネイティブウェブアプリケーションに統合することに関する。主題は、構造的特徴および／または方法論的作用に特有の文言で記載されているが、添付の特許請求の範囲に定義された主題は、必ずしも上述した特定の特徴または作用に限定されるものではないことが理解されるべきである。むしろ、上述した特定の特徴および動作は、以下の特許請求の範囲のいくつかの例示的な実装として記載される。
【図１】
2019526842.tif 000003
【図２】
2019526842.tif 000004
【図３】
2019526842.tif 000005
【図４】
2019526842.tif 000006
【図５】
2019526842.tif 000007
【図６】
2019526842.tif 000008
【図７】
2019526842.tif 000009
【図８】
2019526842.tif 000010
【図９】
2019526842.tif 000011
【図１０】
2019526842.tif 000012
【図１１】
2019526842.tif 000013
【図１２Ａ】
2019526842.tif 000014
【図１２Ｂ】
2019526842.tif 000015
【図１２Ｃ】
2019526842.tif 000016
【図１２Ｄ】
2019526842.tif 000017
【図１２Ｅ】
2019526842.tif 000018
【図１２Ｆ】
2019526842.tif 000019
【図１３】
2019526842.tif 000020
【図１４】
2019526842.tif 000021
【図１５】
2019526842.tif 000022
【国際調査報告】
2019526842.tif 000023
2019526842.tif 000024