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