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