特許第6987931号(P6987931)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ サイトリックス システムズ,インコーポレイテッドの特許一覧

特許6987931クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス
<>
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000002
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000003
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000004
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000005
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000006
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000007
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000008
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000009
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000010
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000011
  • 特許6987931-クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6987931
(24)【登録日】2021年12月3日
(45)【発行日】2022年1月5日
(54)【発明の名称】クライアントアプリケーションのためのセキュアなシングルサインオン及び条件付きアクセス
(51)【国際特許分類】
   G06F 21/41 20130101AFI20211220BHJP
   G06F 21/44 20130101ALI20211220BHJP
【FI】
   G06F21/41
   G06F21/44
【請求項の数】20
【全頁数】46
(21)【出願番号】特願2020-115524(P2020-115524)
(22)【出願日】2020年7月3日
(62)【分割の表示】特願2018-175020(P2018-175020)の分割
【原出願日】2018年9月19日
(65)【公開番号】特開2020-166906(P2020-166906A)
(43)【公開日】2020年10月8日
【審査請求日】2020年7月17日
(31)【優先権主張番号】15/716,871
(32)【優先日】2017年9月27日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】397074301
【氏名又は名称】サイトリックス システムズ,インコーポレイテッド
(74)【代理人】
【識別番号】110002310
【氏名又は名称】特許業務法人あい特許事務所
(72)【発明者】
【氏名】ジャナルダナン ジャワハル
【審査官】 平井 誠
(56)【参考文献】
【文献】 米国特許出願公開第2016/0219060(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00−88
(57)【特許請求の範囲】
【請求項1】
方法であって、
コンピューティングデバイスによって、ユーザデバイスから、前記ユーザデバイスと前記コンピューティングデバイスとの間のセキュアなチャネルを通して認証要求を受信し、
前記コンピューティングデバイスによって、前記ユーザデバイスと前記コンピューティングデバイスとの間の前記セキュアなチャネルを通して要求された前記認証要求の受信を判定したことに基づいて、前記認証要求から前記ユーザデバイスに関連付けられた識別子を抽出し、
前記コンピューティングデバイスからサーバに対して、前記ユーザデバイスに関連付けられた前記識別子を示すデータを送信し、
前記コンピューティングデバイスによって、前記サーバから、前記ユーザデバイスが1または複数のセキュリティポリシーに準拠しているかどうかを示すデータを受信し、
前記コンピューティングデバイスによって、前記ユーザデバイスが1または複数のセキュリティポリシーに準拠しているかどうかを示すデータに基づいて、前記ユーザデバイスがサービスにアクセスすることを許可するかどうかを判定する、各ステップを含む方法。
【請求項2】
前記ユーザデバイスによって、前記コンピューティングデバイスにアクセスしたいという要求を検知し、
通信アプリケーションによって、前記コンピューティングデバイスにアクセスする要求をインターセプトし、
前記通信アプリケーションによって、前記ユーザデバイスと前記コンピューティングデバイスとの間に前記セキュアなチャネルを確立する、各ステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記セキュアなチャネルは、仮想プライベートネットワーク(VPN)トンネルを含む、請求項1に記載の方法。
【請求項4】
要求に応じて前記ユーザデバイスと前記コンピューティングデバイスとの間に、前記サービスのサービス・プロバイダから前記コンピューティングデバイスへ前記認証要求をリダイレクトするためのセキュアなチャネルを確立するステップをさらに含む、請求項1に記載の方法。
【請求項5】
前記サービスへのアクセスを許可することを決定した後、前記コンピューティングデバイスによって、前記ユーザデバイスに関連付けられたキャッシュされた認証データを抽出し、
前記キャッシュされた認証データを用いて前記コンピューティングデバイスによって、認証トークンを生成し、
前記コンピューティングデバイスによって、前記ユーザデバイスに対して前記認証トークンを送信する各ステップをさらに含む、請求項1に記載の方法。
【請求項6】
前記認証トークンは、前記ユーザデバイスが前記サービスにアクセスするために使用するように構成されている、請求項5に記載の方法。
【請求項7】
前記コンピューティングデバイスによって、前記ユーザデバイスに関連付けられた認証データが前記コンピューティングデバイスでキャッシュされていないことを判定し、
前記認証データが前記コンピューティングデバイスでキャッシュされていないと判定されたことに応答して、前記コンピューティングデバイスによって、前記ユーザデバイスに対して、アイデンティティプロバイダデバイスからの認証データの要求を送信し、
前記コンピューティングデバイスによって、前記ユーザデバイスから前記アイデンティティプロバイダデバイスを介して、前記ユーザデバイスに関連付けられた前記認証データを受信し、
前記コンピューティングデバイスによって、前記ユーザデバイスに関連付けられた前記認証データをキャッシュする各ステップをさらに含む、請求項1に記載の方法。
【請求項8】
前記コンピューティングデバイスによって、前記ユーザデバイスに関連付けられた前記キャッシュされた認証データを抽出し、
前記コンピューティングデバイスによって、前記キャッシュされた認証データを使用して認証トークンを生成し、
前記コンピューティングデバイスによって、前記ユーザデバイスに対して前記認証トークンを送信する各ステップをさらに含む、請求項7に記載の方法。
【請求項9】
所定の時間の経過後、前記コンピューティングデバイスによって、前記ユーザデバイスに関連して前記キャッシュされた認証データを削除するステップをさらに含む、請求項7に記載の方法。
【請求項10】
前記サービスへのアクセス許可を決定した後、前記コンピューティングデバイスによって、前記認証要求に関連付けられた情報から、前記ユーザデバイスのユーザに関連付けられたユーザ識別子を決定し、
前記コンピューティングデバイスによって、前記ユーザ識別子を使用して、認証トークンを生成し、
前記コンピューティングデバイスによって、前記ユーザデバイスに対して、前記認証トークンを送信する各ステップをさらに含む、請求項1に記載の方法。
【請求項11】
前記ユーザ識別子を決定した後、前記コンピューティングデバイスによって、ディレクトリサービスに対して、前記ユーザデバイスのユーザに関連付けられた追加データの要求を送信し、
前記コンピューティングデバイスによって、前記ディレクトリサービスから、前記ユーザデバイスのユーザに関連付けられた追加データを受け取る、各ステップをさらに含み、
前記認証トークンを生成するステップは、前記ユーザ識別子と前記ディレクトリサービスから受信したユーザに関連付けられた追加データとを使用して前記認証トークンを生成する、請求項10に記載の方法。
【請求項12】
装置であって、
プロセッサと、コンピュータ実行可能命令を記憶しているメモリとを備え、
前記メモリは、前記プロセッサによって実行されると、前記装置に、
(a)ユーザデバイスから、前記装置と前記ユーザデバイスとの間のセキュアなチャネルを通して、認証要求を受け取り、
(b)前記認証要求が前記ユーザデバイスと前記装置との間の前記セキュアなチャネルを通して受信されたとの判定に基づいて、前記認証要求から前記ユーザデバイスに関連付けられた識別子を抽出し、
(c)前記ユーザデバイスに関連付けられた識別子を示すデータを、サーバへ送信し、
(d)前記サーバから、前記ユーザデバイスが1または複数のセキュリティポリシーに準拠しているかどうかを示すデータを受信し、
(e)前記ユーザデバイスが1または複数のセキュリティポリシーに準拠しているかどうかを示す前記データに基づいて、前記ユーザデバイスがサービスにアクセスすることを許可するかどうかを決定する、
各ステップを実行させる、装置。
【請求項13】
前記メモリは、前記プロセッサによって実行されると、前記装置に、
(f)前記サービスへのアクセスを許可することを判定した後に、前記ユーザデバイスに関連付けてキャッシュされた認証データを抽出し、
(g)前記キャッシュされた認証データを使用して、認証トークンを生成し、
(h)前記ユーザデバイスへ前記認証トークンを送信する、
各ステップを実行させるコンピュータ実行可能命令を記憶している、請求項12に記載の装置。
【請求項14】
前記認証トークンが、前記サービスにアクセスするために、前記ユーザデバイスによって使用されるように構成されている、請求項13に記載の装置。
【請求項15】
前記メモリは、前記プロセッサによって実行されると、前記装置に、
(i)前記ユーザデバイスに関連付けられた認証データが前記装置でキャッシュされていないことを判定し、
(j)前記認証データが前記装置でキャッシュされていないと判定したことに応じて、前記ユーザデバイスへ、アイデンティティプロバイダデバイスからの前記認証データのための要求を送信し、
(k)前記ユーザデバイスから、かつ前記アイデンティティプロバイダデバイスを介して、前記ユーザデバイスに関連付けられた前記認証データを受信し、
(l)前記ユーザデバイスに関連付けられた前記認証データをキャッシュする、各ステップを実行させるコンピュータ実行可能命令を記憶している、請求項12に記載の装置。
【請求項16】
前記メモリは、前記プロセッサによって実行されると、前記装置に、
(m)前記ユーザデバイスに関連付けられた前記キャッシュされた認証データを取り出し、
(n)前記キャッシュされた認証データを使用して認証トークンを生成し、
(o)前記ユーザデバイスへ前記認証トークンを送信する、
各ステップを実行させるコンピュータ実行可能命令を記憶している、請求項15に記載の装置。
【請求項17】
前記メモリは、前記プロセッサによって実行されると、前記装置に、
(p)前記サービスへのアクセスを許可することを決定した後に、前記認証要求に関連付けられた情報から、前記ユーザデバイスのユーザに関連付けられたユーザ識別子を判定し、
(q)前記ユーザ識別子を使用して認証トークンを生成し、
(r)前記ユーザデバイスへ前記認証トークンを送信する、
各ステップを実行させるコンピュータ実行可能命令を記憶している、請求項12に記載の装置。
【請求項18】
システムであって、
ユーザデバイスと、コンピューティングデバイスとを有し、
前記ユーザデバイスは、プロセッサと、メモリとを備え、
前記メモリは、前記ユーザデバイスの前記プロセッサによって実行されると、前記ユーザデバイスに、前記ユーザデバイスと前記コンピューティングデバイスとの間のセキュアなチャネルを通して前記コンピューティングデバイスに向かって認証要求を送信させるコンピュータ実行可能命令を記憶し、
前記コンピューティングデバイスは、プロセッサと、メモリとを備え、
前記メモリは、前記コンピューティングデバイスの前記プロセッサによって実行されると、前記コンピューティングデバイスに、
(a)前記ユーザデバイスから、かつ前記セキュアなチャネルを介して、前記認証要求を受け取り、
(b)前記ユーザデバイスと前記コンピューティングデバイスとの間の前記セキュアなチャネルを通した前記認証要求の受け取りを判定したことに基づいて、前記認証要求から前記ユーザデバイスに関連付けられた識別子を抽出し、
(c)サーバに対して、前記ユーザデバイスに関連付けられた前記識別子を示すデータを送信し、
(d)前記サーバから、前記ユーザデバイスが1または複数のセキュリティポリシーに準拠しているかどうかを示すデータを受信し、
(e)前記ユーザデバイスが1または複数のセキュリティポリシーに準拠しているかどうかを示すデータに基づいて、前記ユーザデバイスがサービスにアクセスすることを許可するかどうかを判定する、
各ステップを実行させるコンピュータ実行可能命令を記憶している、システム。
【請求項19】
前記ユーザデバイスの前記メモリは、前記ユーザデバイスの前記プロセッサによって実行されると、前記ユーザデバイスに、
(f)前記コンピューティングデバイスにアクセスするための要求を検出し、
(g)前記コンピューティングデバイスにアクセスするための前記要求を、通信アプリケーションによってインターセプトし、
(h)前記通信アプリケーションによって、前記ユーザデバイスと前記コンピューティングデバイスとの間の前記セキュアなチャネルを確立する、
各ステップを実行させるコンピュータ実行可能命令を記憶している、請求項18に記載のシステム。
【請求項20】
前記ユーザデバイスの前記メモリは、前記ユーザデバイスの前記プロセッサによって実行されると、前記ユーザデバイスに、前記サービスのサービスプロバイダからの、前記コンピューティングデバイスへの前記認証要求をリダイレクトする要求に応答して、前記セキュアなチャネルを、前記ユーザデバイスと前記コンピューティングデバイスとの間に確立するステップを実行させるコンピュータ実行可能命令を記憶している、請求項18に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に記載する態様は、概して、コンピュータネットワーキング及びデータセキュリティに関する。特に、本明細書に記載する態様は、シングルサインオン及び/または条件付きアクセスメカニズムを使用して、クライアントデバイスに1つ以上のリソースへのアクセスを許可することに関する。
【背景技術】
【0002】
ブリング・ユア・オウン・デバイス(bring your own device:BYOD)など、企業支給のデバイスではない可能性のあるデバイスを使用してソフトウェアアプリケーション(企業アプリケーションなど)が使用され得る傾向が強まっている。エンドユーザは、企業アプリケーションについて消費者のようなユーザ体験を望むことがある。例えば、ユーザは企業アプリケーションに対してシングルサインオン(SSO)を行えることを望むことがある。同時に、IT部門は、許可されたユーザによって、許可されたエンドポイントについて、かつ許可されたアプリケーションを使用して、企業データを安全に使用することを望む場合がある。また、彼らは、機械学習などの技術を活用して、異常な動作を認識し、条件付きアクセスメカニズムを使用して企業データへのアクセスを制限したい場合がある。
【0003】
モバイルデバイスプラットフォームなどの特定のプラットフォームでは、SSO及び条件付きアクセスが困難な場合がある。例えば、モバイルプラットフォーム(例えば、iOS、Android(登録商標)、Windows(登録商標)10など)は、アプリケーションのサンドボックス化に優れている可能性があり、それはデスクトップコンピュータで使用されるSSOの従来の解決策(例えば、共有システムキーチェーンまたは共有認証クッキー)を妨げることがある。モバイルエンドポイントはBYODデバイスであってもよく、例えばエンドユーザによってインストールされた非企業アプリケーションを有することができる。どのアプリケーションがSSO機能にアクセスするかを制御する必要がある。条件付きアクセスの決定に影響を及ぼす要因を考慮する必要もある。
【発明の概要】
【0004】
下記は、本明細書に記載される様々な態様の簡略化された概要を提示する。この概約は、広範な概説ではなく、決定的な要素もしくは重要な要素を特定すること、または特許請求の範囲を説明することを意図するものではない。下記の概要は、以下に提供されるより詳細な説明の導入的な序文として簡略化された形態でいくつかの概念を提示するに過ぎない。
【0005】
モバイルデバイスで作動しているアプリケーションとアイデンティティプロバイダゲートウェイデバイスとの間にセキュアな、すなわちセキュリティ保護された通信トンネルが確立され得る。アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスで作動しているアプリケーションから、かつセキュアな通信トンネルを介して、クライアント証明書を含む認証要求を受信することができる。アイデンティティプロバイダゲートウェイデバイスは、クライアント証明書から、モバイルデバイスに関連付けられたデバイス識別子を抽出することができる。アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための要求を、デバイス管理サーバに送信することができる。モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための要求は、モバイルデバイスに関連付けられたデバイス識別子を含むことができる。モバイルデバイスがセキュリティポリシーに準
拠しているかどうかを判定するための要求を送信することに応じて、アイデンティティプロバイダゲートウェイデバイスは、デバイス管理サーバから、モバイルデバイスがセキュリティポリシーに準拠しているかどうかの指標を受信することができる。アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスがセキュリティポリシーに準拠しているかどうかの指標に基づいて、モバイルデバイスで作動しているアプリケーションに、モバイルデバイスで作動しているアプリケーションに関連付けられたサービスへのアクセスを許可するかどうかを判定することができる。
【0006】
いくつかの態様において、セキュアな通信トンネルを確立することは、アイデンティティプロバイダゲートウェイデバイスにアクセスするための要求を、モバイルデバイスで作動しているアプリケーションによって検出することを含むことができる。トンネリングアプリケーションが、アイデンティティプロバイダゲートウェイデバイスにアクセスするための要求をインターセプトすることができる。トンネリングアプリケーションは、モバイルデバイスで作動しているアプリケーションとアイデンティティプロバイダゲートウェイデバイスとの間のセキュアな通信トンネルを、クライアント証明書を使用して確立することができる。セキュアな通信トンネルを確立することは、要求に応じて、認証要求をサービスのサービスプロバイダからアイデンティティプロバイダゲートウェイデバイスにリダイレクトするように行われ得る。セキュアな通信トンネルは、仮想プライベートネットワーク(VPN)トンネルを含むことができる。
【0007】
いくつかの態様において、サービスへのアクセスを許可することを判定した後に、アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスに関連付けられたキャッシュされた認証データを取り出すことができる。アイデンティティプロバイダゲートウェイデバイスは、キャッシュされた認証データを使用して、認証トークンを生成することができる。アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスへ認証トークンを送信することができる。認証トークンは、モバイルデバイスで作動しているアプリケーションに関連付けられたサービスにアクセスするために、モバイルデバイスによって使用され得る。
【0008】
いくつかの態様において、アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスに関連付けられた認証データがアイデンティティプロバイダゲートウェイデバイスでキャッシュされていないことを判定することができる。認証データがアイデンティティプロバイダゲートウェイデバイスでキャッシュされていないと判定することに応じて、アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスへアイデンティティプロバイダデバイスからの認証データに対する要求を送信することができる。アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスから、かつアイデンティティプロバイダデバイスを介して、モバイルデバイスに関連付けられた認証データを受信することができる。アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスに関連付けられた認証データをキャッシュすることができる。所定の時間後に、アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスに関連付けられたキャッシュされた認証データを削除することができる。
【0009】
いくつかの態様において、アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスに関連付けられたキャッシュされた認証データを取り出すことができる。アイデンティティプロバイダゲートウェイデバイスは、キャッシュされた認証データを使用して、認証トークンを生成することができる。アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスに認証トークンを送信することができる。
【0010】
いくつかの態様において、サービスへのアクセスを許可することを判定した後に、アイデンティティプロバイダゲートウェイデバイスは、クライアント証明書から、モバイルデ
バイスのユーザに関連付けられたユーザ識別子を抽出することができる。アイデンティティプロバイダゲートウェイデバイスは、ユーザ識別子を使用して、認証トークンを生成することができる。アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスに認証トークンを送信することができる。
【0011】
いくつかの態様において、ユーザ識別子を抽出した後に、アイデンティティプロバイダゲートウェイデバイスは、モバイルデバイスのユーザに関連付けられた追加データに対する要求をディレクトリサービスに送信することができる。アイデンティティプロバイダゲートウェイデバイスは、ディレクトリサービスから、モバイルデバイスのユーザに関連付けられた追加データを受信することができる。認証トークンを生成することは、ディレクトリサービスから受信した、ユーザに関連付けられたユーザ識別子及び追加データを使用して認証トークンを生成することを含むことができる。
【0012】
これらの、及び追加の態様は、以下でさらに詳細に説明される開示の恩恵を受けて理解されるであろう。
【図面の簡単な説明】
【0013】
本明細書に記載される態様、及びその利点のより完全な理解は、同様の参照番号は同様の特徴を示す、添付図面を考慮して下記の説明を参照することによって得ることができる。
【0014】
図1】本明細書に記載される1つ以上の例示的な態様によって使用され得る例示的なコンピュータシステムアーキテクチャを示す。
図2】本明細書に記載される1つ以上の例示的な態様によって使用され得る例示的なリモートアクセスシステムアーキテクチャを示す。
図3】本明細書に記載される1つ以上の例示的な態様によって使用され得る例示的な仮想化(ハイパーバイザー)システムアーキテクチャを示す。
図4】本明細書に記載される1つ以上の例示的な態様によって使用され得る例示的なクラウドベースシステムアーキテクチャを示す。
図5】例示的な企業モビリティ管理システムを示す。
図6】別の例示的な企業モビリティ管理システムを示す。
図7】本明細書に記載される1つ以上の例示的な態様による、クライアントアプリケーションのシングルサインオン及び/または条件付きアクセスのための例示的なシステム及び方法を示す。
図8A】本明細書に記載される1つ以上の例示的な態様による、クライアントアプリケーションのシングルサインオン及び/または条件付きアクセスのための例示的なシステム及び方法を示す。
図8B】本明細書に記載される1つ以上の例示的な態様による、クライアントアプリケーションのシングルサインオン及び/または条件付きアクセスのための例示的なシステム及び方法を示す。
図9】本明細書に記載される1つ以上の例示的な態様による、クライアントアプリケーションのシングルサインオン及び/または条件付きアクセスのための別の例示的なシステム及び方法を示す。
図10】本明細書に記載される1つ以上の例示的な態様による、クライアントアプリケーションのシングルサインオン及び/または条件付きアクセスのための、なお別の例示的なシステム及び方法を示す。
【発明を実施するための形態】
【0015】
様々な実施形態の下記の説明では、本明細書の一部を形成し本明細書に記載の態様を実施することができる様々な実施形態を例示として示した上記の添付図面を参照する。本明
細書に記載された範囲から逸脱することなく、他の実施形態を利用することができ、構造的及び機能的改変を行うことができる。種々の態様は、他の実施形態が可能であり、かつ様々な異なる方法で実施され、または成し遂げられる。
【0016】
本明細書で使用される表現及び用語は、説明のためのものであり、限定的であると見なされるべきではない。むしろ、本明細書で使用される句及び用語は、最も広い解釈及び意味を与えられるべきである。「含む(including)」及び「含む(comprising)」及びその変形の使用は、それ以降に列挙された項目及びその等価物、ならびにそれらの追加項目及び等価物を包含することを意味する。「取り付けされた」、「接続された」、「結合された」、「位置付けされた」、「係合された」等の用語の使用は、直接的及び間接的な取り付けの両方、接続、結合、位置決め、ならびに係合を含むことを意味する。
【0017】
コンピューティングアーキテクチャ
【0018】
コンピュータソフトウェア、ハードウェア及びネットワークは、とりわけ、スタンドアロン、ネットワーク、リモートアクセス(リモートデスクトップとしても知られている)、仮想化、及び/またはクラウドベースの環境を含む、様々な異なるシステム環境で利用することができる。図1は、スタンドアロン及び/またはネットワーク環境において、本明細書に記載される1つ以上の例示的な態様を実施するために使用され得るシステムアーキテクチャ及びデータ処理デバイスの一例を示す。様々なネットワークノード103、105、107、109は、インターネットなどの広域ネットワーク(WAN)101を介して相互接続されてもよい。プライベートイントラネット、企業ネットワーク、LAN、メトロポリタンエリアネットワーク(MAN)ワイヤレスネットワーク、プライベートネットワーク(PAN)などを含む他のネットワークを使用してもよいし、代替として使用してもよい。ネットワーク101は、例示のためのものであり、より少ないまたは追加のコンピュータネットワークと置き換えることができる。ローカルエリアネットワーク(LAN)は、任意の既知の1つ以上のLANトポロジーを有することができ、イーサネット(登録商標)などの様々な異なるプロトコルのうちの1つ以上を使用することができる。デバイス103、105、107、109及び他のデバイス(図示せず)は、ツイストペア線、同軸ケーブル、光ファイバ、電波または他の通信媒体を介して1つ以上のネットワークに接続することができる。
【0019】
本明細書で使用され、図面に示されている用語「ネットワーク」は、リモート記憶デバイスが1つ以上の通信経路を介して共に結合されるシステムを指すだけでなく、時折、記憶能力を有するようなシステムに結合され得るスタンドアロンにも適用することができる。したがって、用語「ネットワーク」には、「物理ネットワーク」だけでなく、全ての物理ネットワークにわたって存在する単一のエンティティに起因するデータで構成される「コンテンツネットワーク」も含まれる。
【0020】
コンポーネントは、データサーバ103、ウェブサーバ105、及びクライアントコンピュータ107、109を含むことができる。データサーバ103は、本明細書に記載する1つ以上の例示的な態様を行うためのデータベース及び制御ソフトウェアの全体的なアクセス、制御及び管理を提供する。データサーバ103は、要求されたときに、ユーザがそれを通じて対話するウェブサーバ105に接続され、かつデータを取得する。あるいは、データサーバ103は、ウェブサーバ自体として作用し、インターネットに直接接続されてもよい。データサーバ103は、ネットワーク101(例えば、インターネット)を通じて、すなわち、直接的または間接的な接続を介して、または他の何らかのネットワークを介してウェブサーバ105に接続することができる。ユーザは、リモートコンピュータ107、109を使用して、例えば、ウェブサーバ105によってホストされる1つ以
上の、外部に露出されたウェブサイトを介し、データサーバ103に接続するためウェブブラウザを使用して、データサーバ103と対話することができる。クライアントコンピュータ107、109は、そこに記憶されたデータにアクセスするためにデータサーバ103と協働して使用されてもよく、または他の目的のために使用されてもよい。例えば、クライアントデバイス107から、ユーザは、当該技術分野で知られているように、インターネットブラウザを使用して、またはコンピュータネットワーク(インターネットなど)を越えてウェブサーバ105及び/またはデータサーバ103と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ105にアクセスすることができる。
【0021】
サーバとアプリケーションは、同じ物理マシン上で結合することができ、別個の仮想アドレスまたは論理アドレスを保持することも、別個の物理マシン上に存在することもある。図1は、使用可能なネットワークアーキテクチャの単なる一例を示しており、当業者であれば、使用される固有のネットワークアーキテクチャ及びデータ処理デバイスは変更されてもよく、本明細書でさらに記載するように、それらが提供する機能に二次的であることを理解するであろう。例えば、ウェブサーバ105及びデータサーバ103によって提供されるサービスは、単一のサーバ上で組み合わせることができる。
【0022】
各コンポーネント103、105、107、109は、任意のタイプの既知のコンピュータ、サーバ、またはデータ処理デバイスとすることができる。データサーバ103は、例えば、データサーバ103の全体的な動作を制御するプロセッサ111を含むことができる。データサーバ103は、ランダムアクセスメモリ(RAM)113、読み取り専用メモリ(ROM)115、ネットワークインターフェース117、入力/出力インターフェース119(例えば、キーボード、マウス、ディスプレイ、プリンタなど)、及びメモリ121をさらに含むことができる。入力/出力(I/O)119は、データまたはファイルの読み取り、書き込み、表示、及び/または印刷のための様々なインターフェースユニット及びドライブを含むことができる。メモリ121は、データ処理デバイス103の全体的な動作を制御するためのオペレーティングシステムソフトウェア123、データサーバ103に対して本明細書に記載された態様を行わせるよう指示する制御論理125、及び本明細書に記載の態様と併せて使用されても使用されなくてもよい、二次的、サポート及び/または他の機能を提供する他のアプリケーションソフトウェア127をさらに記憶することができる。制御論理は、本明細書ではデータサーバソフトウェア125と称され得る。データサーバソフトウェアの機能は、制御論理にコード化されたルールに基づいて自動的に行われ、システムへの入力提供によってユーザによって手動で行われる動作もしくは決定、及び/またはユーザ入力(例えば、クエリ、データ更新など)に基づく自動処理の組み合わせを意味することができる。
【0023】
メモリ121はまた、本明細書に記載の1つ以上の態様のパフォーマンスに使用されるデータを記憶することができ、第1のデータベース129及び第2のデータベース131を含む。いくつかの実施形態において、第1のデータベースは、(例えば、別個のテーブル、レポートなどとして)第2のデータベースを含むことができる。すなわち、システム設計に応じて、情報を単一のデータベースに記憶し、または異なる論理、仮想、または物理データベースに分離することができる。デバイス105、107、109は、デバイス103に関して説明したのと同様のアーキテクチャまたは異なるアーキテクチャを有することができる。当業者であれば、本明細書に記載されるデータ処理デバイス103(またはデバイス105、107、109)の機能は、例えば複数のコンピュータにわたって処理負荷を分散させ、地理的場所、ユーザアクセスレベル、サービス品質(QoS)などに基づいてトランザクションを分離するために、複数のデータ処理デバイスにわたって分散され得ることを理解するであろう。
【0024】
1つ以上の態様は、本明細書に記載する1つ以上のコンピュータまたは他のデバイスによって実行される、1つ以上のプログラムモジュールなど、コンピュータ使用可能または読み取り可能なデータ及び/またはコンピュータ実行可能命令で具現化されてもよい。概して、プログラムモジュールは、コンピュータまたは他のデバイス内のプロセッサによって実行されるときに、特定のタスクを行うか、または特定の抽象データタイプを実装することができる、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。モジュールは、実行のために後でコンパイルされるソースコードプログラミング言語で書かれてもよく、HTML(HyperText Markup Language)またはXML(Extensible Markup Language)などのスクリプト言語(しかし、これらに限定されない)で書かれてもよい。コンピュータ実行可能命令は、不揮発性記憶デバイスなどのコンピュータ可読媒体に記憶されてもよい。ハードディスク、CD−ROM、光学記憶デバイス、磁気記憶デバイス、及び/またはそれらの任意の組み合わせを含む、任意の適切なコンピュータ可読記憶媒体を利用することができる。その上、本明細書に記載するデータまたはイベントを表す様々な送信(非記憶)媒体は、金属ワイヤ、光ファイバまたはワイヤレス伝送媒体(例えば、空気及び/または空間)などの信号伝達媒体を通じて進む電磁波の形で送信元と送信先との間で転送されてもよい。本明細書に記載される様々な態様は、方法、データ処理システム、またはコンピュータプログラム製品として具現化されてもよい。したがって、様々な機能は、ソフトウェア、ファームウェア、及び/またはハードウェア、または集積回路、現場プログラミング可能ゲートアレイ(FPGA)などのハードウェア同等物において、全体的または部分的に具現化されてもよい。本明細書に記載の1つ以上の態様をより効果的に実装するために、特定のデータ構造を使用することができ、このようなデータ構造は、本明細書に記載のコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内であると考慮される。
【0025】
図2をさらに参照すると、本明細書に記載された1つ以上の態様は、リモートアクセス環境において実装され得る。図2は、本明細書に記載される1つ以上の例示的な態様によって使用され得る例示的なコンピューティング環境200内の汎用コンピューティングデバイス201を含む例示的なシステムアーキテクチャを示す。汎用コンピューティングデバイス201は、クライアントアクセスデバイスに仮想マシンを提供するように構成された、単一のサーバまたは複数のサーバのデスクトップ仮想化システム(例えば、リモートアクセスまたはクラウドシステム)内のサーバ206aとして使用することができる。汎用コンピューティングデバイス201は、RAM205、ROM207、I/Oモジュール209、及びメモリ215を含む、サーバ及びその関連コンポーネントの全体的な動作を制御するためのプロセッサ203を有することができる。
【0026】
I/Oモジュール209は、汎用コンピューティングデバイス201のユーザが入力を提供することができるマウス、キーパッド、タッチスクリーン、スキャナ、光学式リーダ、及び/またはスタイラス(または他の入力デバイス)を含むことができ、かつオーディオ出力を提供するための1つ以上のスピーカと、テキスト出力、オーディオビジュアル出力、及び/またはグラフィカル出力を提供するためのビデオ表示デバイスをも含むことができる。ソフトウェアは、メモリ215及び/または他の記憶装置内に記憶され得、本明細書に記載されるような様々な機能を行うために、汎用コンピューティングデバイス201を専用コンピューティングデバイスに構成するための命令をプロセッサ203に提供する。例えば、メモリ215は、オペレーティングシステム217、アプリケーションプログラム219、及び関連するデータベース221など、コンピューティングデバイス201によって使用されるソフトウェアを記憶することができる。
【0027】
コンピューティングデバイス201は、(クライアントデバイスとも称される)端末240などの1つ以上のリモートコンピュータへの接続をサポートするネットワーク環境で
作用することができる。端末240は、汎用コンピューティングデバイス103または201に関して上記の要素の多く、または全てを含む、プライベートコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバであってもよい。図2に示すネットワーク接続は、ローカルエリアネットワーク(LAN)225及びワイドエリアネットワーク(WAN)229を含むが、他のネットワークを含むこともできる。LANネットワーキング環境で使用されるとき、コンピューティングデバイス201は、ネットワークインターフェースまたはアダプタ223を通じてLAN225に接続され得る。WANネットワーキング環境で使用されるとき、コンピューティングデバイス201は、コンピュータネットワーク230(例えば、インターネット)などのWAN229を越えて通信を確立するためのモデム227または他のワイドエリアネットワークインターフェースを含むことができる。示されたネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段を使用することができることが理解されるであろう。コンピューティングデバイス201及び/または端末240は、バッテリ、スピーカ、及びアンテナ(図示せず)などの様々な他のコンポーネントを含むモバイル端末(例えば、携帯電話、スマートフォン、PDA、ノートブックなど)であってもよい。
【0028】
本明細書に記載される態様は、多数の他の汎用または専用コンピューティングシステム環境または構成と共に動作することもできる。本明細書に記載する態様での使用に適している他のコンピューティングシステム、環境、及び/または構成の例には、プライベートコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークプライベートコンピュータ(PC)、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などを含むが、限定的ではない。
【0029】
図2に示すように、1つ以上のクライアントデバイス240は、1つ以上のサーバ206a〜206n(概して、本明細書では「サーバ206」と称される)と通信することができる。一実施形態では、コンピューティング環境200は、サーバ206とクライアントマシン240との間にインストールされたネットワーク機器を含むことができる。ネットワーク機器は、クライアント/サーバ接続を管理することができ、場合によっては、複数のバックエンドサーバ206の間でクライアント接続を負荷分散することができる。
【0030】
クライアントマシン240は、いくつかの実施形態においては、単一のクライアントマシン240または単一のグループのクライアントマシン240と称され得、一方、サーバ206は、単一のサーバ206または単一のグループのサーバ206と称され得る。一実施形態では、単一のクライアントマシン240が複数のサーバ206と通信し、別の実施形態では単一のサーバ206が複数のクライアントマシン240と通信する。なお別の実施形態では、単一のクライアントマシン240が単一のサーバ206と通信する。
【0031】
クライアントマシン240は、いくつかの実施形態においては、下記の非網羅的な用語、すなわち、クライアントマシン、クライアント、クライアントコンピュータ、クライアントデバイス、クライアントコンピューティングデバイス、ローカルマシン、リモートマシン、クライアントノード、エンドポイント、またはエンドポイントノードのいずれか1つによって参照され得る。サーバ206は、いくつかの実施形態においては、下記の非網羅的な用語、すなわち、サーバ、ローカルマシン、リモートマシン、サーバファーム、またはホストコンピューティングデバイスのいずれか1つによって参照され得る。
【0032】
一実施形態では、クライアントマシン240は仮想マシンであってもよい。仮想マシンは任意の仮想マシンとすることができ、いくつかの実施形態においては、仮想マシンは、タイプ1またはタイプ2ハイパーバイザーによって管理される任意の仮想マシン、例えば
、Citrix Systems、IBM、VMwareまたはその他のハイパーバイザーによって開発されるハイパーバイザーであってもよい。いくつかの態様では、仮想マシンはハイパーバイザーによって管理され、態様では仮想マシンはサーバ206上で実行されるハイパーバイザーまたはクライアント240上で実行されるハイパーバイザーによって管理されてもよい。
【0033】
いくつかの実施形態は、サーバ206または他の遠隔配置されたマシンで遠隔実行するアプリケーションによって生成された、アプリケーション出力を表示するクライアントデバイス240を含む。これらの実施形態では、クライアントデバイス240は、仮想マシン受信機プログラムまたはアプリケーションを実行して、アプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに出力を表示することができる。一例では、アプリケーションはデスクトップであり、他の例ではアプリケーションはデスクトップを生成または提示するアプリケーションである。デスクトップは、ローカル及び/またはリモートアプリケーションを統合することができるオペレーティングシステムのインスタンスのためのユーザインターフェースを提供するグラフィカルシェルを含むことができる。本明細書で使用されるように、アプリケーションとは、オペレーティングシステムのインスタンス(及び必要に応じてデスクトップも)がロードされた後に実行されるプログラムである。
【0034】
サーバ206は、いくつかの実施形態においては、リモートプレゼンテーションプロトコルまたは他のプログラムを使用して、クライアントで実行しているシンクライアントまたはリモートディスプレイアプリケーションにデータを送信し、サーバ206で実行しているアプリケーションによって生成されるディスプレイ出力を提示する。シンクライアントまたはリモートディスプレイプロトコルは、下記のプロトコル、すなわち、Citrix Systems,Inc.of Ft.Lauderdale,Floridaによって開発された、the Independent Computing Architecture (ICA)プロトコル、またはthe Microsoft Corporation of Redmond Washingtonによって開発された、the Remote Desktop Protcol (RDP)の非包括的なリストのうちのいずれか1つであり得る。
【0035】
リモートコンピューティング環境は、複数のサーバ206a〜206nを含むことができ、サーバ206a〜206nは、例えばクラウドコンピューティング環境内のサーバファーム206に論理的に一緒にグループ化される。サーバファーム206は、地理的に分散されながら論理的に一緒にグループ化されたサーバ206、または論理的に一緒にグループ化されながら互いに近接して配置されたサーバ206を含むことができる。サーバファーム206内の地理的に分散されたサーバ206a〜206nは、いくつかの実施形態においては、WAN(ワイド)、MAN(メトロポリタン)、またはLAN(ローカル)を使用して通信することができ、ここで、地理的に異なる地域は、異なる大陸、大陸の異なる地域、異なる国、異なる州、異なる都市、異なるキャンパス、異なる部屋、または前記地理的位置の任意の組み合わせとして特徴付けることができる。いくつかの実施形態において、サーバファーム206は単一のエンティティとして管理され得、他の実施形態ではサーバファーム206は複数のサーバファームを含むことができる。
【0036】
いくつかの実施形態において、サーバファームは、実質的に同様のタイプのオペレーティングシステムプラットフォーム(例えば、WINDOWS(登録商標)、UNIX(登
録商標)、LINUX、iOS、ANDROID(登録商標)、SYMBIANなど)を
実行するサーバ206を含むことができる。他の実施形態では、サーバファーム206は、第1のタイプのオペレーティングシステムプラットフォームを実行する1つ以上のサーバの第1のグループと、第2のタイプのオペレーティングシステムプラットフォームを実
行する1つ以上のサーバの第2のグループとを含むことができる。
【0037】
サーバ206は、必要に応じて、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、デプロイメントサーバ、Secure Sockets Layer(SSL)VPNサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバまたはマスタアプリケーションサーバとしてのアプリケーションサーバ、アクティブディレクトリを実行するサーバ、またはファイアウォール機能、アプリケーション機能、ないしはロードバランシング機能を提供するアプリケーション加速プログラムを実行するサーバなど任意のタイプのサーバとして構成することができる。他のサーバのタイプが使われても良い。
【0038】
いくつかの実施形態は、クライアントマシン240から要求を受信し、第2のサーバ206bにその要求を転送し、第2のサーバ206bからの応答で、クライアントマシン240によって生成された要求に応答する第1のサーバ206aを含む。第1のサーバ206aは、クライアントマシン240に利用可能なアプリケーションの目録を、アプリケーションの目録内で識別されるアプリケーションをホストするアプリケーションサーバ206に関連するアドレス情報としても取得することができる。次に、第1のサーバ206aは、ウェブインターフェースを使用してクライアントの要求に対する応答を提示し、クライアント240に直接通信して、識別されたアプリケーションへのアクセスをクライアント240に提供することができる。1つ以上のクライアント240及び/または1つ以上のサーバ206は、ネットワーク230、例えばネットワーク101を越えてデータを送信することができる。
【0039】
図2は、例示的なデスクトップ仮想化システムの高水準アーキテクチャを示す。図示のように、デスクトップ仮想化システムは、仮想デスクトップ及び/または仮想アプリケーションを1つ以上のクライアントアクセスデバイス240に提供するように構成された少なくとも1つの仮想化サーバ206を含む、単一のサーバまたは複数のサーバシステム、またはクラウドシステムであってもよい。本明細書で使用されるように、デスクトップは、1つ以上のアプリケーションをホスト及び/または実行することができるグラフィック環境または空間を指す。デスクトップは、ローカル及び/またはリモートアプリケーションを統合することができるオペレーティングシステムのインスタンスのためのユーザインターフェースを提供するグラフィカルシェルを含むことができる。アプリケーションには、オペレーティングシステムのインスタンス(及び必要に応じてデスクトップも)がロードされた後に実行されるプログラムが含まれる。オペレーティングシステムの各インスタンスは、物理的(例えば、デバイスごとに1つのオペレーティングシステム)、または仮想(例えば、単一のデバイスで作動しているOSの多くのインスタンス)であってもよい。各アプリケーションは、ローカルデバイスで実行されてもよいし、リモートに(例えば、離れて)位置するデバイスで実行されてもよい。
【0040】
さらに図3を参照すると、コンピュータデバイス301は、仮想化環境、例えば、単一のサーバ、複数サーバ、またはクラウドコンピューティング環境内の仮想化サーバとして構成することができる。図3に示す仮想化サーバ301は、図2に示すサーバ206の1つ以上の実施形態、または他の既知のコンピューティングデバイスとして展開、及び/または、図2に示すサーバ206の1つ以上の実施形態、もしくは他の既知のコンピューティングデバイスによって実装することができる。仮想化サーバ301には、1つ以上の物理ディスク304、1つ以上の物理デバイス306、1つ以上の物理プロセッサ308、及び1つ以上の物理メモリ316を含むことができるハードウェア層が含まれる。いくつかの実施形態において、ファームウェア312が、物理メモリ316のメモリ要素内に記憶され、1つ以上の物理プロセッサ308によって実行され得る。仮想化サーバ301は
、物理メモリ316のメモリ要素に記憶され、1つ以上の物理プロセッサ308によって実行されるオペレーティングシステム314をさらに含むことができる。なおさらに、ハイパーバイザー302が、物理メモリ316のメモリ要素に記憶され、1つ以上の物理プロセッサ308によって実行され得る。
【0041】
1つ以上の物理プロセッサ308での実行は、1つ以上の仮想マシン332A〜C(概して332)であってもよい。各仮想マシン332は、仮想ディスク326A〜C及び仮想プロセッサ328A〜Cを有することができる。いくつかの実施形態において、第1の仮想マシン332Aは、仮想プロセッサ328Aを使用して、ツールスタック324を含む制御プログラム320を実行することができる。制御プログラム320は、制御仮想マシン、Dom0、Domain0、またはシステム管理及び/もしくは制御に使用される他の仮想マシンと称され得る。いくつかの実施形態において、1つ以上の仮想マシン332B〜Cは、仮想プロセッサ328B〜Cを使用して、ゲストオペレーティングシステム330A〜Bを実行することができる。
【0042】
仮想化サーバ301は、仮想化サーバ301と通信する1つ以上のハードウェアを有するハードウェア層310を含むことができる。いくつかの実施形態において、ハードウェア層310は、1つ以上の物理ディスク304、1つ以上の物理デバイス306、1つ以上の物理プロセッサ308、及び1つ以上のメモリ316を含むことができる。物理コンポーネント304、306、308、316は、例えば、上記のコンポーネントのいずれかを含むことができる。物理デバイス306は、例えば、ネットワークインターフェースカード、ビデオカード、キーボード、マウス、入力デバイス、モニタ、表示デバイス、スピーカ、光学ドライブ、記憶デバイス、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素(例えば、ルータ、ファイアウォール、ネットワークアドレス変換器、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、Dynamic Host Configuration Protocol(DHCP)ルータなど)、もしくは仮想化サーバ301に接続し、または仮想化サーバ301と通信する、任意のデバイスを含むことができる。ハードウェア層310内の物理メモリ316は、任意のタイプのメモリを含むことができる。物理メモリ316は、データを記憶することができ、いくつかの実施形態においては、1つ以上のプログラムまたは実行可能命令のセットを記憶することができる。図3は、ファームウェア312が仮想化サーバ301の物理メモリ316内に記憶される実施形態を示す。物理メモリ316に記憶されたプログラムまたは実行可能命令は、仮想化サーバ301の1つ以上のプロセッサ308によって実行され得る。
【0043】
仮想化サーバ301は、ハイパーバイザー302を含むこともできる。いくつかの実施形態において、ハイパーバイザー302は、任意の数の仮想マシン332を作成及び管理するために、仮想化サーバ301のプロセッサ308によって実行されるプログラムであってもよい。ハイパーバイザー302は、仮想マシンモニタまたはプラットフォーム仮想化ソフトウェアと称され得る。いくつかの実施形態において、ハイパーバイザー302は、コンピューティングマシンで実行される仮想マシンを監視する、実行可能命令及びハードウェアの任意の組み合わせとすることができる。ハイパーバイザー302は、仮想化サーバ301で実行するオペレーティングシステム314内で実行するハイパーバイザーである、タイプ2のハイパーバイザーとすることができる。次に、仮想マシンは、ハイパーバイザー上のレベルで実行する。いくつかの実施形態において、タイプ2のハイパーバイザーは、タイプ2ハイパーバイザーがユーザのオペレーティングシステムと対話するように、ユーザのオペレーティングシステムのコンテキスト内で実行する。他の実施形態において、仮想化環境内の1つ以上の仮想化サーバ301は、代わりに、タイプ1のハイパーバイザー(図示せず)を含むことができる。タイプ1のハイパーバイザーは、ハードウェア層310内のハードウェア及びリソースに直接アクセスすることによって、仮想化サー
バ301実行することができる。すなわち、タイプ2のハイパーバイザー302は、図示されるように、ホストオペレーティングシステム314を通じてシステムリソースにアクセスするが、タイプ1のハイパーバイザーは、ホストオペレーティングシステム314なしで全てのシステムリソースに直接アクセスすることができる。タイプ1のハイパーバイザーは、仮想化サーバ301の1つ以上の物理プロセッサ308で直接実行することができ、物理メモリ316に記憶されたプログラムデータを含むことができる。
【0044】
ハイパーバイザー302は、いくつかの実施形態においては、オペレーティングシステム330、またはシステムリソースに直接アクセスする制御プログラム320をシミュレートする任意の方法で、仮想マシン332で実行するオペレーティングシステム330または制御プログラム320に仮想リソースを提供することができる。システムリソースは、物理デバイス306、物理ディスク304、物理プロセッサ308、物理メモリ316、及び仮想化サーバ301のハードウェア層310に含まれる任意の他のコンポーネントを含むことができるが、これらに限定されない。ハイパーバイザー302は、仮想ハードウェアをエミュレートし、物理ハードウェアをパーティションし、物理ハードウェアを仮想化し、及び/またはコンピューティング環境へのアクセスを提供する仮想マシンを実行するために使用することができる。さらに他の実施形態おいては、ハイパーバイザー302は、仮想化サーバ301で実行する仮想マシン332のプロセッサスケジューリング及びメモリパーティションを制御する。ハイパーバイザー302は、Palo Alto,CaliforniaのVMWare,Inc.によって製造されるもの、オープンソース製品で、その開発がthe open source Xen.org communityによって監督されている、XENハイパーバイザー、Microsoft他によって提供されるHyperV、VirtualServer、または仮想PCハイパーバイザーを含むことができる。いくつかの実施形態において、仮想化サーバ301は、ゲストオペレーティングシステムが実行できる仮想マシンプラットフォームを作成するハイパーバイザー302を実行する。これらの実施形態において、仮想化サーバ301はホストサーバと称され得る。そのような仮想化サーバの例は、Fort Lauderdale,FLのCitrix Systems,Inc.によって提供されるXEN SERVERである。
【0045】
ハイパーバイザー302は、ゲストオペレーティングシステム330が実行する1つ以上の仮想マシン332B〜C(概して332)を作成することができる。いくつかの実施形態においては、ハイパーバイザー302は仮想マシンイメージをロードして、仮想マシン332を作成することができる。他の実施形態においては、ハイパーバイザー302は、仮想マシン332内のゲストオペレーティングシステム330を実行することができる。さらに他の実施形態においては、仮想マシン332は、ゲストオペレーティングシステム330を実行することができる。
【0046】
ハイパーバイザー302は、仮想マシン332を作成することに加えて、少なくとも1つの仮想マシン332の実行を制御することができる。他の実施形態においては、ハイパーバイザー302は、仮想化サーバ301によって提供される少なくとも1つのハードウェアリソース(例えば、ハードウェア層310内で利用可能な任意のハードウェアリソース)の抽象化を少なくとも1つの仮想マシン332に提示することができる。他の実施形態においては、ハイパーバイザー302は、仮想マシン332が仮想化サーバ301内で利用可能な物理プロセッサ308にアクセスする方法を制御することができる。物理プロセッサ308へのアクセスを制御することは、仮想マシン332がプロセッサ308へのアクセスを有するかどうか、及びどのように物理プロセッサ能力が仮想マシン332に提示されるかを決定することを含むことができる。
【0047】
図3に示すように、仮想化サーバ301は、1つ以上の仮想マシン332をホストまた
は実行することができる。仮想マシン332は、プロセッサ308によって実行されるときに、仮想マシン332が物理コンピューティングデバイスのようにプログラム及びプロセスを実行できるように、物理コンピュータの動作を模倣する実行可能命令のセットである。図3は、仮想化サーバ301が3つの仮想マシン332をホストする実施形態を示しているが、他の実施形態においては、仮想化サーバ301は任意の数の仮想マシン332をホストすることができる。ハイパーバイザー302は、いくつかの実施形態においては、各仮想マシン332に利用可能な物理ハードウェア、メモリ、プロセッサ及び他のシステムリソースの一意の仮想ビューを各仮想マシン332に提供する。いくつかの実施形態においては、一意の仮想ビューは、1つ以上の仮想マシン許可、1つ以上の仮想マシン識別子へのポリシーエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシンで実行されるアプリケーション、仮想マシンによってアクセスされるネットワーク、または任意の他の所望の基準に基づくことができる。例えば、ハイパーバイザー302は、1つ以上のセキュアでない仮想マシン332及び1つ以上のセキュアな仮想マシン332を作成することができる。セキュアでない仮想マシン332は、セキュアな仮想マシン332がアクセスすることが許可され得るリソース、ハードウェア、メモリロケーション、及びプログラムへアクセスすることを防止される。他の実施形態においては、ハイパーバイザー302は、仮想マシン332に利用可能な物理ハードウェア、メモリ、プロセッサ及び他のシステムリソースの実質的に類似した仮想ビューを各仮想マシン332に提供することができる。
【0048】
各仮想マシン332は、仮想ディスク326A〜C(概して326)及び仮想プロセッサ328A〜C(概して328)を含むことができる。仮想ディスク326は、いくつかの実施形態においては、仮想化サーバ301の1つ以上の物理ディスク304、または仮想化サーバ301の1つ以上の物理ディスク304の一部の仮想化ビューである。物理ディスク304の仮想化ビューは、ハイパーバイザー302によって生成され、提供され、管理されることができる。いくつかの実施形態において、ハイパーバイザー302は、各仮想マシン332に物理ディスク304の一意のビューを提供する。したがって、これらの実施形態においては、各仮想マシン332に含まれる特定の仮想ディスク326は、他の仮想ディスク326と比較した場合に一意であり得る。
【0049】
仮想プロセッサ328は、仮想化サーバ301の1つ以上の物理プロセッサ308の仮想化ビューであり得る。いくつかの実施形態において、物理プロセッサ308の仮想化ビューは、ハイパーバイザー302によって生成され、提供され、管理され得る。いくつかの実施形態において、仮想プロセッサ328は、少なくとも1つの物理プロセッサ308と実質的に同じ特性の全てを有する。他の実施形態において、仮想プロセッサ308は、仮想プロセッサ328の特性の少なくとも一部が対応する物理プロセッサ308の特性と異なるように、物理プロセッサ308の改変されたビューを提供する。
【0050】
さらに図4参照すると、本明細書に記載されるいくつかの態様は、クラウドベースの環境において実装され得る。図4は、クラウドコンピューティング環境(またはクラウドシステム)400の例を示す。図4に見られるように、クライアントコンピュータ411〜414は、クラウド管理サーバ410と通信して、クラウドシステムのコンピューティングリソース(例えば、ホストサーバ403、記憶リソース404、及びネットワークリソース405)にアクセスすることができる。
【0051】
管理サーバ410は、1つ以上の物理サーバに実装されてもよい。管理サーバ410は、例えば、とりわけ、CLOUDSTACKまたはOPENSTACKを作動させることができる。管理サーバ410は、クラウドハードウェア及びソフトウェアリソース、例えばホストコンピュータ403、データ記憶デバイス404、及びネットワーキングデバイス405を含む様々なコンピューティングリソースを管理することができる。クラウドハ
ードウェア及びソフトウェアリソースには、プライベート及び/または公衆コンポーネントが含まれている場合がある。例えば、クラウドは、1つ以上の特定の顧客またはクライアントコンピュータ411〜414によって、及び/またはプライベートネットワークを越えて使用されるプライベートクラウドとして構成されてもよい。他の実施形態において、公衆クラウドまたはハイブリッド公衆−プライベートクラウドは、オープンまたはハイブリッドネットワークを越えて他の顧客によって使用されてもよい。
【0052】
管理サーバ410は、それを通じてクラウドオペレータ及びクラウド顧客がクラウドシステムと対話することができるユーザインターフェースを提供するように構成することができる。例えば、管理サーバ410は、アプリケーションプログラミングインターフェース(API)のセット、及び/または1つ以上のクラウドオペレータコンソールアプリケーション(例えば、スタンドアロンアプリケーションに基づくウェブ)をユーザインターフェースで提供して、クラウドオペレータがクラウドリソースを管理し、仮想化レイヤを構成し、顧客アカウントを管理し、かつ他のクラウド管理タスクを行うことができる。管理サーバ410は、クライアントコンピュータ411〜414を介してエンドユーザからクラウドコンピューティング要求、例えば、クラウド内の仮想マシンを作成、改変または破棄する要求を受信するように構成された、ユーザインターフェースを有するAPIのセット及び/または1つ以上の顧客コンソールアプリケーションを含むこともできる。クライアントコンピュータ411〜414は、インターネットまたは他の通信ネットワークを介して管理サーバ410に接続することができ、管理サーバ410によって管理される1つ以上のコンピューティングリソースへのアクセスを要求することができる。クライアント要求に応じて、管理サーバ410は、クライアント要求に基づいてクラウドシステムのハードウェア層における物理リソースを選択し提供するように構成されたリソースマネージャを含むことができる。例えば、管理サーバ410及びクラウドシステムの追加コンポーネントは、ネットワーク(例えばインターネット)を越え、クライアントコンピュータ411〜414において、仮想マシン及びその動作環境(例えば、ハイパーバイザー、記憶リソース、ネットワーク要素によって提供されるサービスなど)を顧客に対して提供、作成、及び管理するように構成され、計算リソース、データ記憶サービス、ネットワーキング機能、並びにコンピュータプラットフォーム、及びアプリケーションのサポートを顧客に提供することができる。クラウドシステムは、セキュリティシステム、開発環境、ユーザインターフェースなどを含む様々な固有のサービスを提供するように構成することもできる。
【0053】
特定のクライアント411〜414は、例えば、同じエンドユーザに代わって仮想マシンを作成する異なるクライアントコンピュータ、または同じ会社ないしは組織に所属する異なるユーザに関連することができる。他の例では、特定のクライアント411〜414は、異なる会社または組織に所属するユーザのように無関係であってもよい。無関係なクライアントの場合、仮想マシンに関する情報または任意の1人のユーザの記憶は、他のユーザから隠される可能性がある。
【0054】
ここで、クラウドコンピューティング環境の物理ハードウェア層を参照すると、可用性ゾーン401〜402(またはゾーン)は、物理的コンピューティングリソースの併置されたセットを意味することができる。ゾーンは、コンピューティングリソースの全体的なクラウド内の他のゾーンから地理的に分離されていてもよい。例えば、ゾーン401はCaliforniaに位置する第1のクラウドデータセンターであってよく、ゾーン402はFloridaに位置する第2のクラウドデータセンターであってもよい。管理サーバ410は、可用性ゾーンの1つに、または別個の場所に配置することができる。各ゾーンは、ゲートウェイを通じて、管理サーバ410のような、ゾーン外にあるデバイスとインターフェース接続する内部ネットワークを含むことができる。クラウドのエンドユーザ(例えば、クライアント411〜414)は、ゾーン間の差異を知っていることもあれば
、そうでないこともある。例えば、エンドユーザは、メモリの指定量、処理能力、及びネットワーク能力を有する仮想マシンの作成を要求することができる。管理サーバ410は、ユーザの要求に応答することができ、仮想マシンがゾーン401またはゾーン402からのリソースを使用して作成されたかどうかをユーザが知らずに、仮想マシンを作成するためにリソースを割り当てることができる。他の例において、クラウドシステムは、エンドユーザが、固有のゾーンまたはゾーン内の固有のリソース403〜405に仮想マシン(または他のクラウドリソース)が割り当てられることを要求することを可能にすることができる。
【0055】
この例では、各ゾーン401〜402は、例えば物理ホストリソース(または処理リソース)、物理ネットワークリソース、物理的記憶リソース、スイッチ、及び顧客にクラウドコンピューティングサービスを提供するために使用され得る追加のハードウェアリソースなどの様々な物理ハードウェアコンポーネント(またはコンピューティングリソース)403〜405の構成を含むことができる。クラウドゾーン401〜402における物理ホスティングリソースは、仮想マシンインスタンスを作成してホストするように構成することができる、上記の仮想化サーバ301などの1つ以上のコンピュータサーバ403を含むことができる。クラウドゾーン401または402における物理ネットワークリソースは、ファイアウォール、ネットワークアドレストランスレータ、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(Dynamic Host Configuration Protocol:DHCP)ルータなど、クラウド顧客にネットワークサービスを提供するように構成されたハードウェア及び/またはソフトウェアを含む1つ以上のネットワーク要素405(例えば、ネットワークサービスプロバイダ)を含むことができる。クラウドゾーン401〜402における記憶リソースは、記憶ディスク(例えば、ソリッドステートドライブ(SSD)、磁気ハードディスクなど)及び他の記憶デバイスを含むことができる。
【0056】
図4に示す例示的なクラウドコンピューティング環境は、仮想マシンを作成及び管理し、かつクラウドにおける物理リソースを使用して顧客に他のサービスを提供するように構成された、追加のハードウェア及び/またはソフトウェアリソースを有する(例えば図1〜3に示したような)仮想化層を含むこともできる。仮想化層は、ネットワーク仮想化、記憶仮想化などを提供するための他のコンポーネントと共に、図3で上記したように、ハイパーバイザーを含むことができる。仮想化層は、物理リソース層とは別個の層としてもよいし、同じハードウェア及び/またはソフトウェアリソースの一部または全部を物理リソース層と共有してもよい。例えば、仮想化層は、物理コンピューティングリソースと共に各仮想化サーバ403にインストールされたハイパーバイザーを含むことができる。例えば、WINDOWS(登録商標) AZURE(Microsoft Corporation of Redmond Washington)、AMAZON EC2(Amazon.com Inc.of Seattle,Washington)、IBM
BLUE CLOUD(IBM Corporation of Armonk,New York)などの既知のクラウドシステムを代わりに使用することができる。
【0057】
企業モビリティ管理アーキテクチャ
【0058】
図5は、BYOD環境で使用する企業モビリティ技術アーキテクチャ500を表す。本アーキテクチャにより、モバイルデバイス502のユーザは、モバイルデバイス502から企業またはプライベートリソースにアクセスすること、モバイルデバイス502をプライベート使用のために使用すること、の両方ができる。ユーザは、ユーザによって購入されたモバイルデバイス502または企業によってユーザに提供されたモバイルデバイス502を使用して、そのような企業リソース504または企業サービス508にアクセスすることができる。ユーザは、業務使用のみ、または業務使用及びプライベート使用のため
にモバイルデバイス502を利用することができる。モバイルデバイスは、iOSペレーティングシステム、及びAndroid(登録商標)オペレーティングシステムなどを作動させることができる。企業は、モバイルデバイス504を管理するポリシーを実装することを選択することができる。ポリシーは、モバイルデバイスが識別され、セキュリティ保護され、またはセキュリティ検証され、企業リソースへの選択的または完全なアクセスが提供されることができるように、ファイアウォールまたはゲートウェイを通じて埋め込まれてもよい。ポリシーは、モバイルデバイス管理ポリシー、モバイルアプリケーション管理ポリシー、モバイルデータ管理ポリシー、またはモバイルデバイス、アプリケーション、及びデータ管理ポリシーのいくつかの組み合わせであってもよい。モバイルデバイス管理ポリシーのアプリケーションを通じて管理されるモバイルデバイス504は、登録デバイスと称され得る。
【0059】
いくつかの実施形態において、モバイルデバイスのオペレーティングシステムは、管理されたパーティション510と管理されていないパーティション512とに分離することができる。管理されたパーティション510は、そこで作動されているアプリケーション及び管理されたパーティションに記憶されたデータを保護するために、管理パーティション510に適用されるポリシーを有することができる。管理されたパーティションで作動しているアプリケーションは、セキュアなアプリケーションである可能性がある。他の実施形態において、全てのアプリケーションは、アプリケーションとは別個に受信された1つ以上のポリシーファイルのセットにより実行することができ、それは、1つ以上のセキュリティパラメータ、機能、リソース制限、及び/または、そのアプリケーションがデバイス上で実行されているときに、モバイルデバイス管理システムによって施行される他のアクセス制御を規定する。それぞれのポリシーファイルにより動作することによって、各アプリケーションは、1つ以上の他のアプリケーション及び/またはリソースとの通信を許可または制限され、それによって仮想パーティションを作成することができる。したがって、本明細書で使用されるように、パーティションは、メモリの物理的にパーティション化された部分(物理パーティション)、メモリの論理的にパーティション化された部分(論理パーティション)、及び/または1つ以上のポリシー、及び/または本明細書に記載された複数のアプリケーションにまたがるポリシーファイルを強いた結果として作成された仮想パーティション(仮想パーティション)を意味する。別の言い方をすれば、管理されたアプリケーションにポリシーを強いることによって、それらのアプリケーションは、他の管理されたアプリケーション及び信頼された企業リソースと通信することができることに制限され得、それによって、管理されていないアプリケーション及びデバイスからアクセスできない仮想パーティションが作成される。
【0060】
セキュアなアプリケーションは、電子メールアプリケーション、ウェブ閲覧アプリケーション、software−as−a−service(SaaS)アクセスアプリケーション、Windows(登録商標) Applicationアクセスアプリケーションなどであってもよい。セキュアなアプリケーションは、セキュアなネイティブアプリケーション514、セキュアなアプリケーションランチャ518によって実行されるセキュアなリモートアプリケーション522、セキュアなアプリケーションランチャ518によって実行される仮想化アプリケーション526などであってもよい。セキュアなネイティブアプリケーション514は、セキュアなアプリケーションラッパー520によって包まれることができる。セキュアなアプリケーションラッパー520は、セキュアなネイティブアプリケーションがデバイスで実行されるときに、モバイルデバイス502で実行される統合ポリシーを含むことができる。セキュアなアプリケーションラッパー520は、セキュアなネイティブアプリケーション514の実行時に要求されたタスクをセキュアなネイティブアプリケーション514が完了するために必要とする可能性がある、企業でホストされているリソースに、モバイルデバイス502で作動しているセキュアなネイティブアプリケーション514を示すメタデータを含むことができる。セキュアなプリケーショ
ンランチャ518によって実行されるセキュアなリモートアプリケーション522は、セキュアなアプリケーションランチャアプリケーション518内で実行されてもよい。セキュアなアプリケーションランチャ518によって実行される仮想化アプリケーション526は、モバイルデバイス502上、企業リソース504上などのリソースを利用することができる。セキュアなアプリケーションランチャ518によって実行される仮想化アプリケーション526によってモバイルデバイス502で使用されるリソースは、ユーザ対話リソース、処理リソースなどを含むことができる。ユーザ対話リソースは、キーボード入力、マウス入力、カメラ入力、触覚入力、音声入力、視覚入力、ジェスチャ入力などを収集し、送信するために使用されてもよい。処理リソースは、ユーザインターフェース、企業リソース504から受信したプロセスデータなどを提示するために使用することができる。セキュアなアプリケーションランチャ518によって実行される仮想化アプリケーション526によって企業リソース504で使用されるリソースは、ユーザインターフェース生成リソース、処理リソースなどを含むことができる。ユーザインターフェース生成リソースは、ユーザインターフェースをアセンブルし、ユーザインターフェースを改変し、ユーザインターフェースをリフレッシュするなどのために使用することができる。処理リソースは、情報の作成、情報の読み取り、情報の更新、情報の削除などに使用することができる。例えば、仮想化アプリケーションは、グラフィカルユーザインターフェース(GUI)に関連するユーザ対話を記録し、それらをサーバアプリケーションに通信することができ、サーバアプリケーションは、サーバで動作しているアプリケーションへの入力としてユーザ対話データを使用することができる。この構成では、企業はアプリケーションをサーバ側だけでなく、アプリケーションに関連するデータ、ファイルなどに維持することを選ぶことができる。企業は、本明細書の原理に従っていくつかのアプリケーションをモバイルデバイス上に展開するために確保することによって、それらを「動員」することを選ぶことができるが、この構成は、特定のアプリケーションのために選ぶこともできる。例えば、いくつかのアプリケーションはモバイルデバイスで使用するために保護されているかもしれないが、他のアプリケーションはモバイルデバイス上での展開のために準備されていないか、または適切でないかもしれないので、企業は仮想化技術を通じて、準備されていないアプリケーションにモバイルユーザがアクセスすることを選ぶことを可能にすることができる。別の例として、企業は、モバイルデバイスのアプリケーションをカスタマイズすることが非常に困難または望ましくない、大規模かつ複雑なデータセットを有する大規模な複雑なアプリケーション(例えば、物質リソース計画アプリケーション)を有することがあり、そのため、企業は、仮想化技術を通じてアプリケーションにアクセスすることを選ぶことができる。なお別の例として、企業は、セキュリティ保護されたモバイル環境でさえも非常に敏感であると、企業によって見なすことができる高度に保護されたデータ(例えば、人事データ、顧客データ、エンジニアリングデータ)を維持するアプリケーションを有することができ、企業は、仮想化技術を使用することを選んで、そのようなアプリケーション及びデータへのモバイルアクセスを許可することができる。企業は、完全にセキュリティ保護されたアプリケーションと完全に機能するアプリケーションの両方をモバイルデバイスと仮想化アプリケーションの両方で提供し、サーバ側でより適切に作用していると見なされるアプリケーションにアクセスできるようにすることを選ぶことできる。実施形態において、仮想化アプリケーションは、セキュアな記憶場所の1つに携帯電話上のデータ、ファイルなどを記憶することができる。企業は、例えば、特定の情報を電話に記憶し、他の情報は許可しないようにすることを選ぶことができる。
【0061】
本明細書に記載されるように、仮想化アプリケーションに関して、モバイルデバイスは、GUIを提示し、次にGUIとのユーザ対話を記録するように設計された仮想化アプリケーションを有することができる。アプリケーションは、アプリケーションとのユーザ対話としてサーバ側アプリケーションによって使用されるように、ユーザ対話をサーバ側に通信することができる。これに応答して、サーバ側のアプリケーションは、新しいGUIをモバイルデバイスに送り返すことができる。例えば、新しいGUIは、静的ページ、動
的ページ、アニメーションなどであってもよく、それにより、遠隔に位置するリソースへのアクセスを提供する。
【0062】
セキュアなアプリケーションは、モバイルデバイスの管理されたパーティション510内のセキュアなデータコンテナ528に記憶されたデータにアクセスすることができる。セキュアなデータコンテナに保護されるデータは、セキュアなラップドアプリケーション514、セキュアなアプリケーションランチャ522によって実行されるアプリケーション、セキュアなアプリケーションランチャ522によって実行される仮想化アプリケーション526などによってアクセスされてもよい。セキュアなデータコンテナ528に記憶されるデータは、ファイル、データベースなどを含むことができる。セキュアなデータコンテナ528に記憶されるデータは、具体的にセキュアなアプリケーション530に限定されたデータ、セキュアなアプリケーション532の間で共有されるデータなどを含むことができる。セキュアなアプリケーションに限定されたデータは、セキュアな一般データ534及び高度にセキュアなデータ538を含むことができる。セキュアな一般データは、Advanced Encryption Standard(AES)128ビット暗号化などの強力な形式の暗号化を使用することができ、高度にセキュアなデータ538は、AES256ビット暗号化などの非常に強力な暗号化形式を使用することができる。セキュアなデータコンテナ528に記憶されたデータは、デバイスマネージャ524からコマンドを受信すると、デバイスから削除することができる。セキュアなアプリケーションは、デュアルモードオプション540を有することができる。デュアルモードオプション540は、保護されていないモードまたは管理されていないモードで保護されたアプリケーションを作用させるオプションをユーザに提示することができる。保護されていないモードまたは管理されていないモードにおいて、セキュアなアプリケーションは、モバイルデバイス502の管理されていないパーティション512の保護されていないデータコンテナ542に記憶されたデータにアクセスすることができる。保護されていないデータコンテナに記憶されるデータは、プライベートデータ544であってもよい。保護されていないデータコンテナ542に記憶されたデータは、モバイルデバイス502の管理されていないパーティション512で実行されている保護されていないアプリケーション548によってアクセスされてもよい。保護されていないデータコンテナ542に記憶されたデータは、保護データコンテナ528に記憶されたデータがモバイルデバイス502から削除されたとき、モバイルデバイス502に残っていてもよい。企業は、選択されたモバイルデバイス、または全てのデータ、ファイル、及び/または企業によって所有、ライセンス、または管理されているアプリケーション(企業データ)を削除したい場合があり、その一方で、プライベートデータ、ファイル、及び/またはユーザによって所有、使用許諾、または管理されるアプリケーション(プライベートデータ)を残し、または保持したい場合がある。この動作は、選択的ワイプと称され得る。本明細書に記載の態様に従って手配された企業データ及びプライベートデータについて、企業は選択的なワイプを行うことができる。
【0063】
モバイルデバイス502は、企業における企業リソース504及び企業サービス508に接続するために、公衆インターネット548などに接続することができる。モバイルデバイスは、仮想プライベートネットワーク接続を通じて企業リソース504及び企業サービス508に接続することができる。マイクロVPNまたはアプリケーション固有のVPNとも称される仮想プライベートネットワーク接続は、(例えば、マイクロVPN550によって示されるような)特定のアプリケーション、特定のデバイス、(例えば、O/S
VPN552によって示されるような)モバイルデバイス上の特定のセキュアな領域などに特有であり得る。例えば、電話機のセキュアな領域内のラップされたアプリケーションのそれぞれは、アプリケーション固有のVPNを通じて企業リソースにアクセスすることができ、その結果、アプリケーションに関連付けられた属性に基づいて、おそらくはユーザまたはデバイスの属性情報と組み合わされて、VPNへのアクセスが許可される。仮
想プライベートネットワーク接続は、Microsoft Exchangeトラフィック、Microsoft Active Directoryトラフィック、HTTP(HyperText Transfer Protocol)トラフィック、HTTPS(HyperText Transfer Protocol Secure)トラフィック、アプリケーション管理トラフィックなどを搬送することができる。仮想プライベートネットワーク接続により、シングルサインオン認証プロセスをサポートし、使用可能にすることができる(554)。シングルサインオンプロセスにより、ユーザは認証証明書の単一のセットを提供することができ、次に認証証明書は認証サービス558によって検証される。次に、認証サービス558により、ユーザに、それぞれ個々の企業リソース504に認証証明書を提供することを要求することなく、複数の企業リソース504へのアクセスをユーザに許可することができる。
【0064】
仮想プライベートネットワーク接続は、アクセスゲートウェイ560によって確立され、管理されてもよい。アクセスゲートウェイ560は、企業リソース504のモバイルデバイス502への配信を管理し、加速し、改善するパフォーマンス向上機能を含むことができる。アクセスゲートウェイは、モバイルデバイス502から公衆インターネット548にトラフィックのルートを変更することもでき、モバイルデバイス502は、公衆インターネット548上で作動する、公的に利用可能な、かつ保護されていないアプリケーションにアクセスすることができる。モバイルデバイスは、転送ネットワーク562を介してアクセスゲートウェイに接続することができる。転送ネットワーク562は、1つ以上の転送プロトコルを使用することができ、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、ワイドエリアネットワーク、公衆ネットワーク、プライベートネットワークなどであってもよい。
【0065】
企業リソース504は、電子メールサーバ、ファイル共有サーバ、SaaSアプリケーション、ウェブアプリケーションサーバ、Windows(登録商標)アプリケーションサーバなどを含むことができる。電子メールサーバには、Exchangeサーバ、Lotus Notesサーバなどが含まれる場合がある。ファイル共有サーバには、ShareFileサーバなどが含まれる場合がある。SaaSアプリケーションには、Salesforceなどが含まれる。Windows(登録商標)アプリケーションサーバは、ローカルのWindows(登録商標)オペレーティングシステム上で作動することを意図したアプリケーションなどを提供するように構築された任意のアプリケーションサーバを含むことができる。企業リソース504は、構内ベースのリソース、クラウドベースのリソースなどであってもよい。企業リソース504は、モバイルデバイス502によって直接に、またはアクセスゲートウェイ560を通じてアクセスされてもよい。企業リソース504は、転送ネットワーク562を介してモバイルデバイス502によってアクセスされてもよい。転送ネットワーク562は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、広域ネットワーク、公衆ネットワーク、プライベートネットワークなどであってもよい。
【0066】
企業サービス508は、認証サービス558、脅威検出サービス564、デバイスマネージャサービス524、ファイル共有サービス568、ポリシーマネージャサービス570、ソーシャル統合サービス572、アプリケーションコントローラサービス574などを含むことができる。認証サービス558は、ユーザ認証サービス、デバイス認証サービス、アプリケーション認証サービス、データ認証サービスなどを含むことができる。認証サービス558は証明書を使用することができる。証明書は、企業リソース504などによってモバイルデバイス502に記憶されてもよい。モバイルデバイス502に記憶された証明書は、モバイルデバイス上の暗号化された場所に記憶されてもよく、証明書は、認
証時に使用するためにモバイルデバイス502などに一時的に記憶されてもよい。脅威検出サービス564は、侵入検出サービス、不正アクセス試行検出サービスなどを含むことができる。不正アクセス試行検出サービスには、デバイス、アプリケーション、データなどにアクセスするための不正試行が含まれる場合がある。デバイス管理サービス524は、構成、提供、セキュリティ、サポート、監視、報告、及びサービス停止サービスを含むことができる。ファイル共有サービス568は、ファイル管理サービス、ファイル記憶サービス、ファイル共同作業サービスなどを含むことができる。ポリシーマネージャサービス570は、デバイスポリシーマネージャサービス、アプリケーションポリシーマネージャサービス、データポリシーマネージャサービスなどを含むことができる。ソーシャル統合サービス572は、連絡先統合サービス、共同サービス、Facebook、Twitter、及びLinkedlnなどのソーシャルネットワークとの統合などを含むことができる。アプリケーションコントローラサービス574は、管理サービス、提供サービス、展開サービス、割り当てサービス、失効サービス、ラッピングサービスなどを含むことができる。
【0067】
企業モビリティ技術アーキテクチャ500は、アプリケーションストア578を含むことができる。アプリケーションストア578は、アンラップされたアプリケーション580、事前ラップされたアプリケーション582などを含むことができる。アプリケーションは、アプリケーションコントローラ574からアプリケーションストア578に投入されてもよい。アプリケーションストア578は、アクセスゲートウェイ560、公衆インターネット548などを通じて、モバイルデバイス502によりアクセスされてもよい。アプリケーションストアには、直感的で使いやすいユーザインターフェースが提供されてもよい。
【0068】
ソフトウェア開発キット584は、この記述で前記したように、アプリケーションをラッピングすることによってユーザによって選択されたアプリケーションを保護する能力をユーザに提供することができる。ソフトウェア開発キット584を使用してラッピングされたアプリケーションは、次に、アプリケーションコントローラ574を使用してアプリケーションストア578にそれを入力することによって、モバイルデバイス502に利用可能にされ得る。
【0069】
企業モビリティ技術アーキテクチャ500は、管理及び分析能力を含むことができる。管理及び分析能力は、リソースの使用方法、リソースの使用頻度などに関連する情報を提供することができる。リソースには、デバイス、アプリケーション、データなどが含まれ得る。リソースの使用方法には、どのデバイスがどのアプリケーションをダウンロードし、どのアプリケーションがどのデータにアクセスするかなどを含むことができる。リソースの使用頻度には、アプリケーションがダウンロードされた頻度、アプリケーションによって特定のデータのセットが何回アクセスされたかなどを含むことができる。
【0070】
図6は、別の例示的な企業モビリティ管理システム600である。図5を参照して上述したモビリティ管理システム500の構成要素のいくつかは、簡略化のため省略されている。図6に示すシステム600のアーキテクチャは、図5を参照して上記したシステム500のアーキテクチャと多くの点で類似しており、かつ上述されていない追加の特徴を含むことができる。
【0071】
この場合、左側は、登録されたモバイルデバイス602を有するクライアントエージェント604を表し、クライアントエージェント604は、(Access Gateway及びアプリケーションコントローラ機能を含む)ゲートウェイサーバ606と対話して、上記の右側に示すように、Exchange、Sharepoint、公開キーインフラストラクチャ(PKI)Resources、Kerberos Resources
、Certificate Issuanceサービスなど、様々な企業リソース608及びサービス609にアクセスする。特に図示していないが、モバイルデバイス602は、アプリケーションの選択及びダウンロードのために企業アプリケーションストア(StoreFront)と対話することもできる。
【0072】
クライアントエージェント604は、High−Definition User Experience(HDX)/ICAディスプレイリモーティングプロトコルを使用してアクセスされる、EnterpriseデータセンターでホストされるWindows(登録商標)アプリ/デスクトップのUI(ユーザインターフェース)手段として作用する。クライアントエージェント604はまた、ネイティブなiOSプリケーションまたはAndroid(登録商標)アプリケーションなど、モバイルデバイス602上のネイティブアプリケーションのインストール及び管理をサポートする。例えば、上図に示す管理されたアプリケーション610(メール、ブラウザ、ラップされたアプリケーション)は、全てデバイス上でローカルに実行されるネイティブアプリケーションである。クライアントエージェント604及びこのアーキテクチャのアプリケーション管理フレームワークは、接続及びSSO(シングルサインオン)などのポリシー駆動型管理機能及び機能を企業リソース/サービス608に提供するように作用する。クライアントエージェント604は、企業に対する一次ユーザ認証を、他のゲートウェイサーバコンポーネントへのSSOを用いて、通常はAccess Gateway(AG)に対して処理する。クライアントエージェント604は、ゲートウェイサーバ606からポリシーを取得して、モバイルデバイス602上の管理されたアプリケーション610の挙動を制御する。
【0073】
ネイティブアプリケーション610とクライアントエージェント604との間のセキュアなプロセス間通信(IPC)リンク612は、アプリケーション管理フレームワーク614が各アプリケーションを「ラッピング」することによって施行されるポリシーを、クライアントエージェントが提供することができる管理チャネルを表す。IPCチャネル612はまた、クライアントエージェント604が、接続及び企業リソース608へのSSOを可能にする資格証明書及び認証情報を提供することを可能にする。最後に、IPCチャネル612は、オンライン及びオフライン認証などの、クライアントエージェント604によって実装されるユーザインターフェース機能を、アプリケーション管理フレームワーク614が呼び出すことを可能にする。
【0074】
クライアントエージェント604とゲートウェイサーバ606との間の通信は、本質的に、各ネイティブの管理されたアプリケーション610をラッピングするアプリケーション管理フレームワーク614からの管理チャネルの拡張である。アプリケーション管理フレームワーク614は、ポリシー情報をクライアントエージェント604に要求し、次に、クライアントエージェント604は、それをゲートウェイサーバ606に要求する。アプリケーション管理フレームワーク614は認証を要求し、クライアントエージェント604はゲートウェイサーバ606の(NetScalerアクセスゲートウェイとしても知られる)ゲートウェイサービス部分にログインする。クライアントエージェント604は、ローカルデータ保管庫616の暗号キーを導出するための入力資料を生成するゲートウェイサーバ606上のサポートサービスを呼び出すこともでき、以下でより詳細に説明するように、PKI保護リソースへの直接認証を可能にするクライアント証明書を提供することもできる。
【0075】
より詳細には、アプリケーション管理フレームワーク614は、各管理されたアプリケーション610を「ラップする」。これは、明示的なビルドステップ、またはビルド後の処理ステップを介して組み込むことができる。アプリケーション管理フレームワーク614は、アプリケーション610の最初の起動時にクライアントエージェント604と「ペアリング」して、セキュアなIPCチャネルを初期化し、そのアプリケーションのポリシ
ーを取得することができる。アプリケーション管理フレームワーク614は、クライアントエージェントのログイン依存性、及び、どのようにローカルOSサービスが使用され得るか、またはどのようにそれらがアプリケーション610との対話し得るかを制限するいくつかの包含ポリシーなど、ローカルに適用されるポリシーの関連部分を施行することができる。
【0076】
アプリケーション管理フレームワーク614は、Secure IPCチャネル612を越えてクライアントエージェント604により提供されるサービスを使用して、認証及び内部ネットワークアクセスを容易にすることができる。プライベート及び共有データ保管庫616(コンテナ)のキー管理は、管理されたアプリケーション610とクライアントエージェント604との間の適切な対話によっても管理することができる。保管庫616は、オンライン認証後にのみ利用可能であってもよく、ポリシーによって許可されている場合にはオフライン認証後に利用可能であり得る。保管庫616の第1の使用には、オンライン認証を必要とすることがあり、オフラインアクセスは、オンライン認証が再び必要とされる前に、せいぜいポリシーリフレッシュ期間までに制限することができる。
【0077】
内部リソースへのネットワークアクセスは、個々の管理されたアプリケーション610からAccess Gateway606を通じて直接発生することがある。アプリケーション管理フレームワーク614は、各アプリケーション610に代わってネットワークアクセスを編成する役割を担う。クライアントエージェント604は、オンライン認証の後に取得される適切な時間制限された第2の資格証明書を提供することによって、これらのネットワーク接続を容易にすることができる。リバースウェブプロキシ接続及びエンドツーエンドVPNスタイルのトンネル618など、複数のモードのネットワーク接続を使用することができる。
【0078】
Mail及びBrowser管理されたアプリケーション610は、特別な状態を有し、任意のラップされたアプリケーションに対して、概して利用可能ではない可能性があるファシリティを利用することができる。例えば、Mailアプリケーションは、完全なAGログオンを必要とせずに長時間にわたってExchangeにアクセスできる特別なバックグラウンドネットワークアクセスメカニズムを使用することができる。Browserアプリケーションは、複数のプライベートデータ保管庫を使用して、異なる種類のデータを分離することができる。
【0079】
このアーキテクチャは、様々な他のセキュリティ機能の組み込みをサポートする。例えば、(ゲートウェイサービスを含む)ゲートウェイサーバ606は、場合によっては、アクティブディレクトリ(AD)パスワードを検証する必要がないかもしれない。状況によっては、一部のユーザに対してADパスワードが認証要素として使用されるかどうかは、企業の裁量に委ねられる可能性がある。ユーザがオンラインまたはオフラインである(すなわち、ネットワークに接続されている、または接続されていない)場合、異なる認証方法を使用することができる。
【0080】
ステップアップ認証は、ゲートウェイサーバ606が強力な認証を使用してより機密性の高いデータにアクセスすることを許可されている管理されたネイティブアプリケーション610を識別し、かつ、たとえそれが以前のより弱いレベルのログイン後にユーザから再認証が要求されたことを意味したとしても、もっぱら適切な認証を行った後にこれらのアプリケーションへのアクセスが許可されていることを保証する機能である。
【0081】
この解決策の別のセキュリティ機能は、モバイルデバイス602上のデータ保管庫616(コンテナ)の暗号化である。保管庫616は、ファイル、データベースを含む全てのオンデバイスデータ、及び構成が保護されるように暗号化されてもよい。オンライン保管
庫の場合、キーはサーバ(ゲートウェイサーバ606)に記憶され、オフライン保管庫の場合、キーのローカルコピーはユーザパスワードまたはバイオメトリック検証によって保護されてもよい。データがセキュアなコンテナ616内のデバイス602にローカルに記憶されるとき、最小限のAES256暗号化アルゴリズムが利用されることが好ましい。
【0082】
他のセキュアなコンテナの機能も実装することができる。例えば、アプリケーション610内で起こっている全てのセキュリティイベントが記録され、バックエンドに報告されるロギング機能が含まれてもよい。アプリケーション610が改ざんを検出した場合、関連付けられた暗号化キーがランダムデータで上書きされ、ユーザデータが破壊されたというヒントがファイルシステムに残らないようにすることができるなど、データ消去がサポートされてもよい。スクリーンショットの保護は、アプリケーションによってスクリーンショットに少しのデータも記憶されないようにする別の機能である。例えば、キーウィンドウのヒドン(hidden)プロパティをYESに設定することができる。これにより、画面上に現在表示されているコンテンツを隠すことができるため、コンテンツが通常存在する空のスクリーンショットが表示されることになる。
【0083】
例えば、データをコピーし、または外部アプリケーションに送信するなど、アプリケーションコンテナの外部にデータがローカルに転送されないように、ローカルデータ転送を防止することができる。キーボードキャッシュ機能は、機密テキストフィールドの自動修正機能を無効にするように作用することがある。SSL証明書の検証は、サーバのSSL証明書がキーチェーンに記憶されているのではなく、アプリケーションが特別にサーバのSSL証明書を検証するように実施可能である。デバイス上のデータを暗号化するために使用されるキーが、(オフラインアクセスが必要な場合に)ユーザによって提供されるパスフレーズまたはバイオメトリックデータを使用して生成されるように、暗号化キー生成機能を使用することができる。オフラインアクセスが必要ない場合は、サーバ側でランダムに生成され、記憶された別のキーとXORされてもよい。キー導出関数は、ユーザパスワードから生成されたキーがその暗号ハッシュを作成するのではなく、KFD(キー導出関数、特にPassword−Based Key Derivation Function 2(PBKDF2))を使用するように作用する。後者は、キーを、ブルートフォース攻撃または辞書攻撃の影響を受けやすいものにする。
【0084】
さらに、1つ以上の初期化ベクトルを暗号化方法に使用することができる。初期化ベクトルは、同じ暗号化されたデータの複数のコピーが異なる暗号テキスト出力を生じ、再生攻撃と暗号解読攻撃の両方を防止する可能性がある。これにより、攻撃者が盗まれた暗号キーを用いても、どのようなデータも復号できない可能性がある。さらに、認証、次いで解読が使用されてもよく、アプリケーションデータは、ユーザがアプリケーション内で認証された後でのみ解読される。別の機能は、必要なときにのみ(ディスクではなく)メモリに記憶される、メモリ内の機密データに関係し得る。例えば、ログイン後にログイン証明書がメモリから消去され、暗号化キー及びオブジェクトCインスタンス変数内の他のデータは簡単に参照できるため記憶されない。その代わりに、これらにメモリを手動で割り当てることができる。
【0085】
非活動タイムアウトを実装することができ、非活動のポリシー定義期間後にユーザセッションが終了する。
【0086】
アプリケーション管理フレームワーク614からのデータ漏洩は、他の方法で防止することができる。例えば、アプリケーション610がバックグラウンドに置かれているときは、メモリは、(設定可能な)所定の時間後にクリアされてもよい。バックグラウンドになると、アプリケーションの最後に表示された画面のスナップショットをとって、フォアグランドプロセスを固定することができる。スクリーンショットには機密データが含まれ
ている可能性があるため、クリアする必要がある。
【0087】
別のセキュリティ機能は、1つ以上のアプリケーションへのアクセスにAD(アクティブディレクトリ)622パスワードを使用せず、OTP(ワンタイムパスワード)620を使用することに関する。場合によっては、ADパスワードを知らない(または知ることを許可されていない)ユーザもいるので、これらのユーザは、セキュアなアイデンティティのようなハードウェアOTPシステムを使用することなどによって、OTP620を使用して認証することができる(OTPは、 EntrustまたはGemaltoなどの異なるベンダによっても提供され得る)。場合によっては、ユーザがユーザアイデンティティで認証した後、テキストがOTP620でユーザに送信される。場合によっては、これは、プロンプトが単一のフィールドである、オンラインでの使用のためにのみ実装することができる。
【0088】
企業ポリシーを介してオフライン使用が許可されているそれらのアプリケーション610用のオフライン認証のために、オフラインパスワードを実装することができる。例えば、企業はStoreFrontにこのようにアクセスすることを望むことができる。この場合、クライアントエージェント604は、ユーザにカスタムオフラインパスワードを設定するよう要求し、ADパスワードは使用されない。ゲートウェイサーバ606は、これらの要件は可変される可能性があるが、標準的なWindows(登録商標) Serverのパスワードの複雑さの要件によって記載されるような、パスワードの最小の長さ、文字クラス構成、及び経過時間に関して、パスワード標準を制御及び強制するためのポリシーを提供することができる。
【0089】
別の特徴は、(アプリケーション管理フレームワークのマイクロVPN機能を介してPKI保護されたウェブリソースにアクセスする目的の)第2の資格証明書としての特定のアプリケーション610のためのクライアント側の証明書の有効化に関する。例えば、アプリケーションは、そのような証明書を利用することができる。この場合、ActiveSyncプロトコルを使用する証明書ベースの認証がサポートされてもよく、クライアントエージェント604からの証明書は、ゲートウェイサーバ606によって取り出され、キーチェーン内で使用されてもよい。各管理されたアプリケーションは、ゲートウェイサーバ606で規定されたラベルによって識別される1つの関連クライアント証明書を有することができる。
【0090】
ゲートウェイサーバ606は、企業専用ウェブサービスと対話して、クライアント証明書の発行をサポートし、関連する管理されたアプリケーションが内部PKI保護リソースを認証できるようにすることができる。
【0091】
クライアントエージェント604及びアプリケーション管理フレームワーク614は、内部PKI保護ネットワークリソースへの認証のためにクライアント証明書を取得及び使用することをサポートするように拡張することができる。様々なレベルのセキュリティ及び/または分離要件に一致するような複数の証明書をサポートすることができる。証明書は、Mail及びBrowser管理されたアプリケーションによって、かつ(それらのアプリケーションが、アプリケーション管理フレームワークがhttps要求を仲介するのに合理的なWebサービススタイルの通信パターンを使用する場合)最終的には任意のラップされたアプリケーションによって使用される。
【0092】
iOS上でのアプリケーション管理クライアント証明書のサポートは、各管理されたアプリケーションのiOSキーチェーンに公開キー暗号化標準(PKCS)12 BLOB(Binary Large Object)を各使用期間にインポートすることに依存する場合がある。アプリケーション管理フレームワークのクライアント証明書のサポート
では、プライベートなメモリ内キーストレージを用いるHTTPS実装が使用される場合がある。クライアント証明書は決してiOSキーチェーンに存在しない可能性があり、強く保護された「オンラインのみ」のデータ値においてを潜在的に除いては永続化されない可能性がある。
【0093】
相互SSLまたはTLSは、モバイルデバイス602が企業に対して認証されることを要求することによって、追加のセキュリティを提供するように実装されてもよく、その逆も可能である。ゲートウェイサーバ606への認証のための仮想スマートカードも実装することができる。
【0094】
Kerberosの制限付きサポート及び完全なサポートの両方は追加の機能である。完全サポート機能は、ADパスワードまたは信頼できるクライアント証明書を使用してActive Directory(AD)622に完全Kerberosログインし、HTTP Negotiate認証の挑戦に応じてKerberosサービスチケットを取得することができることに関する。制限付きサポート機能は、Citrix Access Gateway Enterprise Edition(AGEE)の制約付き委任に関し、AGEEは、Kerberosプロトコル移行を呼び出すことをサポートしているため、HTTP Negotiate認証の挑戦に応じて(制約付き委任の対象となる)Kerberosサービスチケットを取得して使用することができる。このメカニズムは、リバースWebプロキシ(別名、企業仮想プライベートネットワーク(CVPN)モード)モードで、かつhttp(ただしhttpsではない)接続がVPN及びMicroVPNモードでプロキシされているときに働く。
【0095】
別の特徴は、刑破または根止め検出時に自動的に発生し、管理コンソールからプッシュされたコマンドとして発生し、アプリケーション610が作動されていなくてもリモートワイプ機能を含む、アプリケーションコンテナのロック及びワイピングに関する。
【0096】
企業アプリケーションストア及びアプリケーションコントローラのマルチサイトアーキテクチャまたは構成は、ユーザが、障害発生時に複数の異なる場所の1つからサービスを受けることができることをサポートすることができる。
【0097】
場合によっては、管理されたアプリケーション610は、API(例えばOpenSSL)を介して証明書及びプライベートキーにアクセスすることが許可されてもよい。企業の信頼された管理されたアプリケーション610は、アプリケーションのクライアント証明書及びプライベートキーを用いて固有の公開キー動作を行うことを許可されてもよい。アプリケーションがブラウザのようにふるまって証明書アクセスが使用されないとき、アプリケーションが「私は誰か(who am I)」に関する証明書を読み取るとき、アプリケーションがその証明書を使用してセキュアなセッショントークンを構築するとき、アプリケーションが重要なデータ(例えば、取引ログ)のデジタル署名または一時的なデータ暗号化のためにプライベートキーを使用するときなど、様々なユースケースが識別され、それに応じて処理される場合がある。
【0098】
クライアントアプリケーションのシングルサイン及び/または条件付きアクセスの例示的な例
【0099】
本明細書では、モバイルアプリケーションなどのクライアントアプリケーションに対するシングルサインオン(SSO)及び/または条件付きアクセスを実装するシステムと方法について記載する。SSO及び/または条件付きアクセスのための1つ以上のシステム及び方法はセキュアであり得る。例えば、システムは、許可されたユーザを識別し、許可されたデバイスを識別し、及び/または許可されたアプリケーションを識別することがで
きる。本明細書に記載する1つ以上のSSO及び/または条件付きアクセス能力は、どのユーザ、デバイス、及び/またはアプリケーションがその機能にアクセスできるかをIT管理者が制御することができることを犠牲にすることなく、セキュアに達成することができる。いくつかの態様では、条件付きアクセス決定は、ユーザアイデンティティ、デバイスアイデンティティ、アプリケーションアイデンティティ、アクセスのロケーションなどの様々な要因に基づいて行われてもよい。
【0100】
本明細書に記載するSSO及び/または条件付きアクセスのための1つ以上のシステム及び方法は、アプリケーションに中立であり得る。例えば、本明細書に記載するシステム及び方法は、様々なタイプのモバイルアプリケーションを処理することができ、及び/または(例えば、SDKを使用せずに、アプリケーションをラッピングすることなく、など)アプリケーションに変更を必要としないことがある。本明細書に記載するSSO及び/または条件付きアクセスのための1つ以上のシステム及び方法は、アイデンティティプロバイダ(IDP)に中立であり得る。例えば、本明細書に記載する態様は、任意の標準ベースのIDPを利用し、サポートすることができる。本明細書に記載するSSO及び/または条件付きアクセスのための1つ以上のシステム及び方法は、プラットフォームに中立であり得る。例えば、ANDROID(登録商標)、iOS、WINDOWS(登録商標)、または任意の他のモバイルデバイスプラットフォームなど、任意の一般的なモバイルプラットフォームをサポートすることができる。
【0101】
いくつかの態様では、本明細書に記載するシステム及び方法のうちの1つ以上を使用して、許可されたデバイスからの許可されたアプリケーションを使用する許可されたユーザが、ユーザの対話を追加することなく認証できるゼロタッチモバイルSSOを達成することができる。
【0102】
図7は、本明細書に記載する1つ以上の例示的な態様による、クライアントアプリケーションのシングルサインオン及び/または条件付きアクセスのための例示的なシステム及び方法を示す。システムは、クライアントデバイス705を備えることができる。クライアントデバイス705は、例えば、携帯電話、タブレット、スマートウォッチ、仮想現実ないしは拡張リアリティヘッドセット、または任意の他のモバイルデバイスなどのモバイルデバイスとすることができる。クライアントデバイス705は、企業支給または管理デバイスでなくてもよく、例えばBYODデバイスであってもよい。いくつかの態様では、クライアントデバイス705は、図1に示したデバイス103、デバイス105、デバイス107、またはデバイス109、図2に示した端末240のうちの1つ、図4に示したクライアントコンピュータ411〜414のうちの1つ、図5に示したモバイルデバイス502、図6に示したモバイルデバイス602、または任意の他のクライアントデバイスを含むことができる。
【0103】
クライアントデバイス705は、1つ以上のクライアントアプリケーション710を備えることができる。いくつかの態様では、クライアントアプリケーションは、IDP735など特定のアイデンティティプロバイダ(IDP)を介して認証するように構成することができる。しかしながら、クライアントアプリケーションのバックエンドサービスは、IDPゲートウェイ725などのIDPゲートウェイに認証を連帯させるように再構成させることができる。連帯認証シナリオにおいて、企業が、クライアントデバイス705のユーザを認証し、(例えば、ユーザを認証するサービスプロバイダの代わりに)サービスプロバイダによって提供されるサービスへのアクセスを許可することができる。
【0104】
クライアントデバイス705は、1つ以上のVPNサービス715を備えることができる。各VPNサービスは、オンデマンドで起動することができるアプリごとのVPNを備えることができ、以下でさらに詳細に記載するように、クライアントデバイス705をI
DPゲートウェイ725に接続するために使用することができる。
【0105】
システムは、デバイス管理サーバ(例えば、企業モビリティ管理システムの企業モビリティ管理サーバ)などの1つ以上のサーバ730を備えることができる。サーバ730は、クライアントデバイス705などの許可されたクライアントデバイスにVPN(例えば、アプリケーションごとのVPN)をインストールするなど、クライアントデバイスを管理するように構成することができる。サーバ730(またはシステム内の他のデバイス)は、アプリケーションごとのVPNにクライアント証明書を配信してもよく、クライアント証明書により、(例えば、Subject AlternativeNamesのような)ユーザ識別情報、デバイス識別情報、または他のユーザないしはデバイス情報を符号化することができる。デバイス識別情報は、クライアントデバイス705を識別するための任意の一意の文字列を含むことができ、文字列は、システム内の構成に基づくことができる。ユーザ識別情報は、例えば、電子メールアドレス、ユーザ名、ユーザプリンシパル名、またはクライアントデバイス705のユーザを識別するための任意の他のアイデンティティを含むことができる。サーバ730(またはシステム内の別のデバイス)は、サーバ730(またはシステム内の別のデバイス)によって配信された証明書を用いてクライアント証明書の認証を使用するようにアプリごとのVPNを構成することができる。いくつかの態様では、サーバ730(またはシステム内の別のデバイス)は、許可されたアプリケーションからの要求を受け入れ、及び/またはIDPゲートウェイ725への要求をインターセプトするようにアプリごとのVPNを構成することができる。特定の要求のみをインターセプトすると、処理する要求の数を減らすことによって、処理リソース及び通信帯域幅をより効率的に使用することができる。サーバ730は、以下でさらに詳細に記載するように、リソースへのアクセスを要求するクライアントデバイス705がセキュリティポリシーに準拠しているかどうかを判定するために使用されてもよい。
【0106】
システムは、1つ以上のサービスプロバイダ720を備えることができる。サービスプロバイダ720は、クライアントデバイス705のユーザが利用できる1つ以上のリソース(例えば、ドキュメント編集リソース、顧客関係管理(CRM)リソース、電子メールサービス、銀行リソースなど)を作成することができる。いくつかの態様において、アプリケーション710は、サービスプロバイダ720またはサービスプロバイダ720の関連団体によって管理、提供、及び/または開発されてもよい。
【0107】
システムは、1つ以上のIDPゲートウェイ725を備えることができる。IDPゲートウェイ725は、バックエンドサービス(例えば、サービスプロバイダ720によって提供されるサービス)の元のIDP735に認証を連帯させるように構成されてもよい。IDPゲートウェイ725は、任意のサービスプロバイダのための標準ベースのIDPのようにふるまい得る。IDPゲートウェイ725は、任意の標準ベースのIDP(例えば、実際のIDP)のための標準ベースのサービスプロバイダのようにふるまうことができる。IDPゲートウェイ725は、追加的または代替的に、実際のIDPのようにふるまい得る。IDPゲートウェイ725は、直接または許可されたVPNトンネルを介してエンドポイント(例えば、クライアントデバイス705)によってアクセスされてもよい。
【0108】
システムは、クライアントデバイス705のユーザを認証するために使用される元のIDPであってもよい、1つ以上のアイデンティティプロバイダ735を備えることができる。以下でさらに詳細に記載するように、アイデンティティプロバイダ735は、管理されていないエンドポイント、デスクトップ、及び/または不正なアプリケーションからのアクセスのケースを処理することができる。
【0109】
図8A図8Bは、本明細書に記載する1つ以上の例示的な態様による、クライアントアプリケーションのシングルサインオン及び/または条件付きアクセスのための例示的な
システム及び方法を示す。
【0110】
ステップ810において、(例えば、モバイルアプリケーションなどのクライアントアプリケーション710を介して)クライアントデバイスは、サービスプロバイダ720からサービスにアクセスする要求を送信することができる。例えば、クライアントデバイスのユーザは、タッチスクリーン、キーボード、マウス、ジェスチャなど、クライアントデバイスの入力デバイスを介して、クライアントアプリケーション710のアイコンを選択し、クライアントアプリケーション710は、クライアントデバイスとサービスプロバイダ720との間の通信を開始することができる。
【0111】
ステップ812において、サービスプロバイダ720は、クライアントアプリケーション710からの要求を受信することができる。サービスプロバイダ710は、アイデンティティプロバイダ(IDP)ゲートウェイ725に認証をリダイレクトする要求を、クライアントデバイスのクライアントアプリケーション710に送信することができる。リダイレクトする要求は、サービスプロバイダ720がリクエスタであることを示すことができる。例えば、モバイルアプリケーションが認証するとき、そのバックエンドサービスは、サービスプロバイダ720と直接に認証するか、または認証を元のアイデンティティプロバイダ735にリダイレクトするのではなく、アイデンティティプロバイダゲートウェイ725にリダイレクトすることができる。以下にさらに詳細に記載するように、サービスプロバイダ720からの要求に応じて、認証要求をアイデンティティプロバイダゲートウェイ725にリダイレクトするために、アプリケーション710とアイデンティティプロバイダゲートウェイ725との間にセキュアな通信トンネルを確立することができる。
【0112】
ステップ814において、クライアントアプリケーション710は、アイデンティティプロバイダゲートウェイ725へのアクセスを要求することができる。ステップ816において、トンネリングアプリケーション(例えば、アプリケーションごとのVPNプラグインなどの仮想プライベートネットワーク(VPN)715)が、アイデンティティプロバイダゲートウェイ725へのアクセス要求をインターセプトすることができ、例えばクライアント証明書を使用して、クライアントアプリケーション710とアイデンティティプロバイダゲートウェイ725との間にセキュアな通信トンネル(例えばVPNトンネル)を確立する。セキュアな通信トンネルを確立することは、クライアントデバイスで作動しているアプリケーション710によって、アイデンティティプロバイダゲートウェイ725にアクセスする要求を(例えば、VPN715によって)検出することを含むことができる。例えば、アプリケーション710がアイデンティティプロバイダゲートウェイ725に到達しようと試みるとき、VPNエンドポイントへの認証のために、アプリごとのVPNは、設定されたクライアント証明書を使用してVPNトンネルを開始して確立することができる。トンネリングアプリケーションは、アイデンティティプロバイダゲートウェイ725にアクセスする要求、及び/またはクライアント証明書を使用してセキュアな通信トンネルを確立する要求をインターセプトすることができる。トンネリングアプリケーションは、要求内のユーザ識別情報及び/またはデバイス識別情報を符号化することができる。いくつかの態様において、トンネリングアプリケーションは、許可されたアプリケーションからの要求を受け入れることができるが、許可されていないアプリケーションからの要求は受け入れない可能性がある。追加的または代替的に、トンネリングアプリケーションは、アイデンティティプロバイダゲートウェイ725用の要求をインターセプトすることができるが、アイデンティティプロバイダゲートウェイ725用ではない要求を受け入れることはできない。
【0113】
ステップ818において、アイデンティティプロバイダゲートウェイ725は、クライアントアプリケーション710とアイデンティティプロバイダゲートウェイ725との間のセキュアな通信トンネルの確立を確認することができる。ステップ820において、V
PN715は確認を受信し、確認をクライアントアプリケーション710に転送することができる。クライアントアプリケーション710とアイデンティティプロバイダゲートウェイ725との間のセキュアな通信トンネルを確立することができる。
【0114】
ステップ822において、クライアントアプリケーション710は、セキュアな通信トンネルなどを介して、アイデンティティプロバイダゲートウェイ725に認証要求を送信することができる。アイデンティティプロバイダゲートウェイ725は、アプリケーション710から、セキュアな通信トンネルを介して、クライアント証明書を使用してもよい認証要求を受信することができる。クライアント証明書を使用して、トンネル自体を確立することができる。他の例において、認証要求はセキュアな通信トンネルを介して来ない可能性があり、かつ/またはクライアント証明書を使用しない可能性がある。
【0115】
ステップ824において、アイデンティティプロバイダゲートウェイ725は、その要求がクライアント証明書を使用して、認証されたトンネルを介して来たかどうかを判定することができる。クライアント証明書がトンネル(例えば、VPNトンネル)を確立するために使用されなかった場合、アイデンティティプロバイダゲートウェイ725は、クライアントデバイスが管理されていないクライアントデバイスであると判定することができる。アイデンティティプロバイダゲートウェイ725は、シングルサインオン及び条件付きアクセスがクライアント要求に対して利用可能ではないと判定し、アイデンティティプロバイダゲートウェイ725は、クライアントデバイスをアイデンティティプロバイダ735(例えば、元のアイデンティティプロバイダ)にリダイレクトすることができる。この機能は、管理されていないエンドポイント、デスクトップ、及び/または不正なアプリケーションからのアクセスの事例を処理することができる。これらのアクセスではシングルサインオン機能が得られない場合がある。新しい認証要求がクライアントデバイスによって構築され、クライアントデバイスは、アイデンティティプロバイダゲートウェイ725ではなく、新しい認証要求をアイデンティティプロバイダ735に転送することができる。
【0116】
他方で、(例えば、ステップ824で判定されたように)認証要求がトンネルを介して来て、クライアント証明書を使用した場合、ステップ826において、アイデンティティプロバイダゲートウェイ725は、クライアント証明書から、クライアントデバイス(例えば、モバイルデバイス)のデバイス識別子及び/またはユーザのユーザ識別子を抽出ことができる。ステップ828において、アイデンティティプロバイダゲートウェイ725は、クライアント(例えば、モバイル)デバイスがセキュリティポリシーに準拠しているかどうかを判定する要求を、(デバイス管理サーバを含み得る)サーバ730に送信することができる。モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定する要求は、モバイルデバイスに関連付けられたデバイス識別子を含むことができる。
【0117】
ステップ830において、サーバ730は、アイデンティティプロバイダゲートウェイ725に、クライアントデバイスが準拠しているかどうかを示す準拠情報を返すことができる。例えば、モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定する要求を送信することに応じて、アイデンティティプロバイダゲートウェイ725は、モバイルデバイスがセキュリティポリシーに準拠しているかどうかの指標をデバイス管理サーバ730から受信することができる。アイデンティティプロバイダゲートウェイ725は、モバイルデバイスがセキュリティポリシーに準拠しているかどうかの指標(例えば、サーバ730によって返される準拠情報であってもよい)に基づいて、クライアントデバイスが準拠しているかどうかを判定してもよい。アイデンティティプロバイダゲートウェイ725は、準拠情報に基づいて、クライアントデバイスで作動しているアプリケーション710に、クライアントデバイス及び/またはサービスプロバイダ720で作動しているアプリケーション710に関連付けられたサービスへのアクセスを許可するかどうか
を判定することができる。この機能は、デバイスセキュリティプロファイルに基づくような条件付きアクセスを提供する可能性がある。
【0118】
ステップ832において、クライアントデバイスが準拠していない場合、アイデンティティプロバイダゲートウェイ725は、クライアントデバイスへのアクセスを拒否し、及び/または認証を拒否する。そうでない場合、例えば、アイデンティティプロバイダゲートウェイ725がクライアントデバイスは準拠していると判定した場合、アイデンティティプロバイダゲートウェイ725はステップ834に進み、及び/または別の方法でクライアントデバイスにサービスプロバイダ720のサービスへのアクセスを許可し得る。
【0119】
ステップ834において、アイデンティティプロバイダゲートウェイ725は、期限切れでないキャッシュされた認証データ(例えば、クレームなどのSAMLコンテンツ)がクライアントデバイスに対して利用可能であるかどうかを判定してもよい。以下でさらに詳細に記載するように、アイデンティティプロバイダゲートウェイ725は、今後の認証要求のためにクライアントデバイスに関連付けられた認証データをキャッシュすることができる。キャッシュされた認証データには有効期限がある可能性がある。期限切れでないキャッシュされた認証コンテンツが利用可能である場合、アイデンティティプロバイダゲートウェイ725は、クライアントデバイスに関連付けられたキャッシュされた認証データを取り出すことができる。ステップ836において、アイデンティティプロバイダゲートウェイ725は、キャッシュされた認証データ(例えば、クレームなどのSAMLコンテンツ)を使用して、認証トークン(例えば、SAMLトークン)を生成し、かつ/またはそれに署名することができる。例えば、トークンは、ユーザの識別子、ルーツ及び/またはユーザに関する他のデータを有する、デジタル署名されたアサーションを含むことができる。アイデンティティプロバイダゲートウェイ725は、(例えば、アプリケーション710を介して)認証トークンをクライアントデバイスに送信することができる。ステップ838において、認証トークンは、モバイルデバイスで作動しているアプリケーション710に関連するサービス(例えば、サービスプロバイダ720によって提供されるサービス)にアクセスするために、クライアントデバイスによって使用されてもよい。これらの機能は、シングルサインオン能力を提供する。例えば、有効期限内の同じクライアントデバイスからの後続の認証要求は、ユーザ資格証明書の再入力を必要としない可能性がある。
【0120】
いくつかの態様において、アイデンティティプロバイダゲートウェイ725は、クライアントデバイスに関連付けられた認証データがアイデンティティプロバイダゲートウェイでキャッシュされていないと判定することができる。キャッシュされた認証コンテンツが利用可能でない場合、アイデンティティプロバイダゲートウェイ725は、クライアントデバイスを元のアイデンティティプロバイダ735にリダイレクトして、トークン(例えば、SAMLトークン)を認証及びフェッチすることができる。以下でさらに詳細に記載するように、アイデンティティプロバイダゲートウェイ725は、クレームのセットなどのトークン(例えば、SAMLトークン)のコンテンツを抽出し、今後の認証要求のためにそのコンテンツをキャッシュすることができる。いくつかの態様において、アイデンティティプロバイダゲートウェイ725は、コンテンツをそれ自体のメモリストアにキャッシュすることができる。
【0121】
ステップ840において、認証データがアイデンティティプロバイダゲートウェイ725でキャッシュされていないと判定することに応じて、アイデンティティプロバイダゲートウェイ725は、アイデンティティプロバイダゲートウェイ725をリクエスタとして新しい認証要求を要求どおりに構築することができる。ステップ842において、アイデンティティプロバイダゲートウェイ725は、アイデンティティプロバイダ735(例えば、元のアイデンティティプロバイダ)からの認証データに対する要求を(例えば、クラ
イアントアプリケーション710を介して)クライアントデバイスに送信することができる。この要求は、新しい認証要求をアイデンティティプロバイダ735にリダイレクトする要求を含むことができる。リダイレクトする要求は、アイデンティティプロバイダゲートウェイ725をリクエスタとして示すことができる。
【0122】
図8Bを参照すると、ステップ844において、クライアントアプリケーション710は、アイデンティティプロバイダゲートウェイ725をリクエスタとして示し得る新しい認証要求を、アイデンティティプロバイダ735に送信することができる。ステップ846において、アイデンティティプロバイダ735は、ユーザを認証することができる。
【0123】
ステップ848において、クライアントデバイスは、(例えば、クライアントアプリケーション710を介して)クライアントデバイスのユーザがユーザ資格証明書(例えば、パスコード、パスワード、PINなど)を入力することを要求することができる。構成に応じて、ステップ848において、複数の対話が発生することがある。資格証明書は、アイデンティティプロバイダ735に提出されてもよく、ユーザは、提示された資格証明書に基づいて認証され得る。
【0124】
ステップ850において、アイデンティティプロバイダ735は、アイデンティティプロバイダトークン(例えば、SAMLトークン)をリクエスタ(例えば、アイデンティティプロバイダゲートウェイ725)にポストする要求を送信することができる。要求は、例えば、アイデンティティプロバイダトークンを含むことができる。クライアントデバイスは、アイデンティティプロバイダ735から要求及び/またはトークンを受信することができる。
【0125】
ステップ852において、クライアントアプリケーション710は、アイデンティティプロバイダトークンを用いてアイデンティティプロバイダトークンをポストする要求をアイデンティティプロバイダゲートウェイ725に送信することができる。アイデンティティプロバイダゲートウェイ725は、モバイルデバイスから、トークンを受信することができ、トークンは、クライアントデバイスに関連付けられた認証データを含むことができる。
【0126】
ステップ854において、アイデンティティプロバイダゲートウェイ725は、アイデンティティプロバイダトークンを処理することができる。アイデンティティプロバイダゲートウェイ725は、トークンから、クライアントデバイスに関連付けられた認証データを抽出し、認証データをキャッシュすることができる。キャッシュされた認証データは、例えば、トークンのコンテンツ(例えば、SAMLトークンのコンテンツ)を含むことができる。クライアントアプリケーション710からのセキュアな通信トンネルを介した今後の認証要求に対して、アイデンティティプロバイダゲートウェイ725は、(例えば、ステップ834及びステップ836を参照して上記したように)キャッシュされた認証データを取り出し、キャッシュされた認証データを使用して認証トークンを生成し、及び/または認証トークンをクライアントアプリケーション710に送信する。所定の時間(例えば、満了時間)の後、アイデンティティプロバイダゲートウェイデバイス725は、クライアントデバイスに関連付けられたキャッシュされた認証データを除去することができる。
【0127】
ステップ856において、アイデンティティプロバイダゲートウェイ725は、新しいトークン(例えば、SAMLトークン)をサービスプロバイダ720に送信する要求をポストすることができる。ステップ858において、クライアントアプリケーション710は、新しいトークンをポストする要求をサービスプロバイダ720に送信することができる。アプリケーション710は、トークン(例えば、SAMLトークン)をサービスプロ
バイダ720に提示して、サービスプロバイダ720のリソースへのアクセスを取得することができる。ステップ860において、サービスプロバイダ720は、トークンを処理し、クライアントデバイスにリソースへのアクセスを許可することができる。
【0128】
非常に似た方法を使って、OpenID Connect及び他のフェデレーション標準をサポートすることもできる。例えば、トークン(例えば、SAMLトークン)の代わりにアクセスコードまたは認証コードを使用することができる。これらのシステムのうちの1つ以上のアイデンティティプロバイダは、トークンを発行することができ、トークンはSAMLクレームと同様のアサーションに署名することができる。
【0129】
図9は、本明細書に記載する1つ以上の例示的な態様によるクライアントアプリケーションのシングルサインオン及び/または条件付きアクセスのための別の例示的なシステム及び方法を示す。いくつかの態様において、ユーザは、サービスプロバイダ720を直接通じてではなく、図5に示したアプリケーションストア578などのアプリケーションストアを介してリソースにアクセスすることができる。アプリケーションストアは、アイデンティティプロバイダ735によって提供されてもよい。アプリケーションストアを介してユーザに利用可能なアプリケーションは、クライアントデバイス705のディスプレイ上に表示されてもよく、及び/または例えばウェブアプリケーションを含んでもよい。ユーザは、アプリケーションに関連付けられたリソースにアクセスしようと試みるために、アプリケーションストア内のアプリケーションの1つのアイコンを選択(例えばクリック)することができる。
【0130】
ステップ910において、ユーザは、アイデンティティプロバイダ735によって提供されるアプリケーションページにログインすることができる。例えば、ユーザは、ユーザ名、パスワード、パスコード、または他の資格証明書を提供してもよく、クライアントデバイスは、ユーザの入力した資格証明書をアイデンティティプロバイダ735に送信することができる。いくつかの態様においては、クライアントデバイスは、アイデンティティプロバイダ735で直接認証されるため、アイデンティティプロバイダゲートウェイ725で再認証する必要がない場合がある。ユーザは、アプリケーションアイコンを選択(例えば、クリック)することができる。
【0131】
ステップ912において、アイデンティティプロバイダ735は、アイデンティティプロバイダトークン(例えば、SAMLトークン)、及び/またはアイデンティティプロバイダトークンをアイデンティティプロバイダゲートウェイ725にポストするための要求を送信することができる。クライアントデバイスは、アイデンティティプロバイダ735から要求を受信することができる。
【0132】
ステップ914において、クライアントアプリケーション710は、アイデンティティプロバイダゲートウェイ725に、アイデンティティプロバイダトークンを送信することができる。アイデンティティプロバイダゲートウェイ725は、クライアントデバイスに関連付けられた認証データを含むトークンをクライアントデバイスから受信することができる。トークンは、アイデンティティプロバイダ735を用いてクライアントデバイス710を認証した後に受信することができる。
【0133】
ステップ916において、アイデンティティプロバイダゲートウェイ725は、アイデンティティプロバイダトークンを処理することができる。アイデンティティプロバイダゲートウェイ725は、先に記載したように、クライアントデバイスに関連付けられた認証データをキャッシュすることができる。キャッシュされた認証データは、例えば、トークンのコンテンツ(例えば、SAMLトークンのコンテンツ)を含むことができる。アイデンティティプロバイダゲートウェイ725は、キャッシュされた認証データを取り出し、
キャッシュされた認証データを使用して認証トークンを生成し、サービスプロバイダ720のトークンに署名し、及び/またはセキュアな通信トンネルを介して認証トークンをクライアントアプリケーション710に送信する。先に記載したように、アイデンティティプロバイダゲートウェイデバイス725は、所定の時間(例えば、満了時間)の後に、クライアントデバイスに関連付けられたキャッシュされた認証データを除去することができる。
【0134】
ステップ918において、アイデンティティプロバイダゲートウェイ725は、新しいトークン(例えば、SAMLトークン)をサービスプロバイダ720に送信する要求をクライアントアプリケーション710にポストすることができる。クライアントアプリケーション710は、アイデンティティプロバイダゲートウェイ725から要求を受信することができる。
【0135】
ステップ920において、クライアントアプリケーション710は、新しいトークンをポストする要求をサービスプロバイダ720に送信することができる。アプリケーション710は、トークン(例えば、SAMLトークン)をサービスプロバイダ720に提示して、サービスプロバイダ720のリソースへのアクセスを取得することができる。ステップ922において、サービスプロバイダ720は、トークンを処理し、クライアントデバイスにリソースへのアクセスを許可することができる。
【0136】
いくつかの態様において、アイデンティティプロバイダゲートウェイ725は、元のアイデンティティプロバイダ735の1つ以上の認証ステップであるように構成されてもよく、及び/または元のアイデンティティプロバイダ735の1つ以上の認証ステップを行ってもよい。これらの例では、エンドユーザ認証は、元のアイデンティティプロバイダ735ではなく、アイデンティティプロバイダゲートウェイ725で起きてもよい。VPN715によって提示され得るクライアント証明書は、エンドユーザからの何らの追加の入力を必要とせずに、ユーザを認証するためのファクタとして使用することができる。これらの例は、ゼロタッチモバイルSSOを達成することができる。
【0137】
図8Aに示すステップ830を簡潔に参照すると、アイデンティティプロバイダゲートウェイ725は、サーバ730から返された準拠情報に基づくなどして、クライアントデバイスが準拠しているかどうかを判定することができる。アイデンティティプロバイダゲートウェイ725が、クライアントデバイスは準拠していると判定する場合、及び/または別の方法でクライアントデバイスにサービスプロバイダ720のサービスへのアクセスを許可する場合、本明細書に記載されたシステムは、ユーザを認証するため、またはユーザにサービスへのアクセスを別の方法で与えるための1つ以上のステップを行うことができる。これらのステップは、元のアイデンティティプロバイダ735へのリダイレクトを伴わないかもしれない。代わりに、アイデンティティプロバイダゲートウェイ725は、ディレクトリ745(例えば、アクティブディレクトリ)から追加の情報を取得し得、ユーザ及び/またはクライアントデバイスを認証するために追加の情報を使用することができる。
【0138】
図10は、本明細書に記載する1つ以上の例示的な態様による、クライアントアプリケーションのシングルサインオン及び/または条件付きアクセスのためのさらに別の例示的なシステム及び方法を示す。アイデンティティプロバイダゲートウェイ725が、ステップ1010において、クライアントデバイスが(例えば、ステップ830で受信された準拠情報に基づいて)準拠していると判定した後、及び/または別の方法でクライアントデバイスにサービスへのアクセスを許可することを判定した後、アイデンティティプロバイダゲートウェイ725は、クライアント(例えば、モバイル)デバイスのユーザに関連付けられたユーザ識別子をクライアント証明書から抽出することができる。先に記載したように、クライアント証明書は、クライアントアプリケーション710とアイデンティティプロバイダゲートウェイ725との間にセキュアな通信トンネルを確立するために使用されていてもよい。
【0139】
ステップ1012において、アイデンティティプロバイダゲートウェイ725は、ディレクトリ745に、クライアントデバイスのユーザに関連付けられた追加のデータに対する要求を送信することができる。追加のユーザ情報は、例えば、グループメンバーシップ情報、ユーザが電子メールアカウントを有するかどうか、ユーザの電子メールアドレスなどを含むことができる。ディレクトリ745から利用可能な情報のタイプは構成可能であってもよい。
【0140】
ステップ1014において、ディレクトリ745は、アイデンティティプロバイダゲートウェイ725によって要求された追加のユーザ情報をアイデンティティプロバイダゲートウェイ725に送信することができる。アイデンティティプロバイダゲートウェイ725は、ディレクトリ745から追加のユーザ情報を受信することができる。いくつかの態様において、アイデンティティプロバイダゲートウェイ725は、追加のユーザ情報を有するデータベースを有する(及び/またはアクセスする)ことができる。これらの例では、アイデンティティプロバイダゲートウェイ725は、ユーザ情報についてディレクトリ745に要求を送信せず、その代わりにデータベースから情報にアクセスしてもよい。
【0141】
ステップ1016において、アイデンティティプロバイダゲートウェイ725は、ユーザ識別子及び/またはディレクトリ745からの追加のユーザ情報を使用して、SAMLトークンなどの認証トークンを生成する(例えば、構築する)ことができる。例えば、トークンは、ユーザの識別子、ルーツ及び/またはユーザに関する他のデータを有する、デジタル署名されたアサーションを含むことができる。
【0142】
ステップ1018において、アイデンティティプロバイダゲートウェイ725は、認証トークン(例えば、SAMLトークン)及び/またはトークンをサービスプロバイダ720にポストする要求を(例えば、アプリケーション710を作動している)クライアントデバイスに送信することができる。ステップ1018は、先に記載したステップ856と同様であってもよい。
【0143】
ステップ1020において、クライアントアプリケーション710は、トークンをポストする要求をサービスプロバイダ720に送信することができる。アプリケーション710は、トークン(例えば、SAMLトークン)をサービスプロバイダ720に提示して、サービスプロバイダ720のリソースへのアクセスを取得することができる。ステップ1020は、先に記載したステップ858と同様であってもよい。
【0144】
ステップ1022において、サービスプロバイダ720は、トークンを処理し、クライアントデバイスにリソースへのアクセスを許可することができる。ステップ1022は、先に記載したステップ860と同様であってもよい。
【0145】
主題は、構造的特徴及び/または方法論的行為に固有の言語で記載されているが、添付の特許請求の範囲に規定された主題は、必ずしも上記の固有の特徴または作用に限定されないことを理解するべきである。むしろ、上記の固有の特徴及び作用は、添付の特許請求の範囲の例示的な実装例として記載される。
【0146】
本発明の精神および範囲は、添付する特許請求の範囲の中に存在するが、分割出願である本願の親出願(特願2018-1750202号)の特許査定時に存在した特許請求の範囲を、以下に[予備的な特許請求の範囲]として掲載する。この[予備的な特許請求の範囲]の記載事項は、本願明細書の開示に含まれるものとする。
[予備的な特許請求の範囲]
[予備請求項1]
モバイルデバイスで作動しているアプリケーションとアイデンティティプロバイダゲートウェイデバイスとの間にセキュアな通信トンネルを確立することと、
前記モバイルデバイスで作動している前記アプリケーションから、前記セキュアな通信トンネルを介して、クライアント証明書を含む認証要求を前記アイデンティティプロバイダゲートウェイデバイスによって、受信することと、
前記アイデンティティプロバイダゲートウェイデバイスによって、前記クライアント証明書から、前記モバイルデバイスに関連付けられたデバイス識別子を抽出することと、
前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための要求を、前記アイデンティティプロバイダゲートウェイデバイスによってデバイス管理サーバに送信することであって、前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための前記要求が、前記モバイルデバイスに関連付けられた前記デバイス識別子を含む、送信することと、
前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための前記要求を送信することに応じて、前記アイデンティティプロバイダゲートウェイデバイスによって、前記デバイス管理サーバから、前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかの指標を受信することと、
前記アイデンティティプロバイダゲートウェイデバイスによって、前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかの前記指標に基づいて、前記モバイルデバイスで作動している前記アプリケーションに、前記モバイルデバイスで作動している前記アプリケーションに関連付けられたサービスへのアクセスを許可するかどうかを判定することと、を含む、方法。
[予備請求項2]
前記セキュアな通信トンネルを確立することが、
前記アイデンティティプロバイダゲートウェイデバイスにアクセスするための要求を、前記モバイルデバイスで作動している前記アプリケーションによって検出することと、
前記アイデンティティプロバイダゲートウェイデバイスにアクセスするための前記要求を、トンネリングアプリケーションによってインターセプトすることと、
前記モバイルデバイスで作動している前記アプリケーションと前記アイデンティティプロバイダゲートウェイデバイスとの間の前記セキュアな通信トンネルを、前記トンネリン
グアプリケーションによって、かつ前記クライアント証明書を使用して、確立することと、を含む、予備請求項1に記載の方法。
[予備請求項3]
前記セキュアな通信トンネルが、仮想プライベートネットワーク(VPN)トンネルを含む、予備請求項1に記載の方法。
[予備請求項4]
前記セキュアな通信トンネルを確立することが、前記認証要求を前記アイデンティティプロバイダゲートウェイデバイスにリダイレクトするための、前記サービスのサービスプロバイダからの要求に応じて行われる、予備請求項1に記載の方法。
[予備請求項5]
前記サービスへのアクセスを許可することを判定した後に、前記モバイルデバイスに関連付けられたキャッシュされた認証データを前記アイデンティティプロバイダゲートウェイデバイスによって取り出すことと、
前記アイデンティティプロバイダゲートウェイデバイスによって、かつ前記キャッシュされた認証データを使用して、認証トークンを生成することと、
前記アイデンティティプロバイダゲートウェイデバイスによって、かつ前記モバイルデバイスに、前記認証トークンを送信することと、をさらに含む、予備請求項1に記載の方法。
[予備請求項6]
前記認証トークンが、前記モバイルデバイスで作動している前記アプリケーションに関連付けられた前記サービスにアクセスするために、前記モバイルデバイスによって使用されるように構成されている、予備請求項5に記載の方法。
[予備請求項7]
前記モバイルデバイスに関連付けられた認証データが前記アイデンティティプロバイダゲートウェイデバイスでキャッシュされていないことを、前記アイデンティティプロバイダゲートウェイデバイスによって判定することと、
前記認証データが前記アイデンティティプロバイダゲートウェイデバイスでキャッシュされていないと判定することに応じて、前記アイデンティティプロバイダゲートウェイデバイスによって、かつ前記モバイルデバイスに、アイデンティティプロバイダデバイスからの前記認証データに対する要求を送信することと、
前記アイデンティティプロバイダゲートウェイデバイスによって、前記モバイルデバイスから、かつ前記アイデンティティプロバイダデバイスを介して、前記モバイルデバイスに関連付けられた前記認証データを受信することと、
前記アイデンティティプロバイダゲートウェイデバイスによって、前記モバイルデバイスに関連付けられた前記認証データをキャッシュすることと、をさらに含む、予備請求項1に記載の方法。
[予備請求項8]
前記アイデンティティプロバイダゲートウェイデバイスによって、前記モバイルデバイスに関連付けられた前記キャッシュされた認証データを取り出すことと、
前記アイデンティティプロバイダゲートウェイデバイスによって、かつ前記キャッシュされた認証データを使用して、認証トークンを生成することと、
前記アイデンティティプロバイダゲートウェイデバイスによって、かつ前記モバイルデバイスに、前記認証トークンを送信することと、をさらに含む、予備請求項7に記載の方法。
[予備請求項9]
所定の時間後に、前記モバイルデバイスに関連付けられた前記キャッシュされた認証データを、前記アイデンティティプロバイダゲートウェイデバイスによって削除することをさらに含む、予備請求項7に記載の方法。
[予備請求項10]
前記サービスへのアクセスを許可することを判定した後に、アイデンティティプロバイダゲートウェイデバイスによって、かつ前記クライアント証明書から、前記モバイルデバイスのユーザに関連付けられたユーザ識別子を抽出することと、
前記アイデンティティプロバイダゲートウェイデバイスによって、かつ前記ユーザ識別子を使用して、認証トークンを生成することと、
前記アイデンティティプロバイダゲートウェイデバイスによって、かつ前記モバイルデバイスに、前記認証トークンを送信することと、をさらに含む、予備請求項1に記載の方法。
[予備請求項11]
前記ユーザ識別子を抽出した後に、前記アイデンティティプロバイダゲートウェイデバイスによって、かつディレクトリサービスに、前記モバイルデバイスの前記ユーザに関連付けられた追加データに対する要求を送信することと、
前記アイデンティティプロバイダゲートウェイデバイスによって、かつ前記ディレクトリサービスから、前記モバイルデバイスの前記ユーザに関連付けられた前記追加データを受信することであって、前記認証トークンを生成することが、前記ディレクトリサービスから受信した前記ユーザに関連付けられた前記ユーザ識別子及び前記追加データを使用して前記認証トークンを生成することを含む、受信することと、をさらに含む、予備請求項10に記載の方法。
[予備請求項12]
装置であって、
プロセッサと、
メモリであって、前記プロセッサによって実行されると、前記装置に、
モバイルデバイスで作動しているアプリケーションから、かつ前記装置と、前記モバイルデバイスで作動している前記アプリケーションとの間のセキュアな通信トンネルを介して、クライアント証明書を含む認証要求を受信させ、
前記クライアント証明書から、前記モバイルデバイスに関連付けられたデバイス識別子を抽出させ、
前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための要求を、デバイス管理サーバへ送信させ、前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための前記要求は、前記モバイルデバイスに関連付けられた前記デバイス識別子を含み、
前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための前記要求を送信することに応じて、前記デバイス管理サーバから、前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかの指標を受信させ、
前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかの前記指標に基づいて、前記モバイルデバイスで作動している前記アプリケーションに前記モバイルデバイスで作動している前記アプリケーションに関連付けられたサービスへのアクセスを許可するかどうかを判定させる、コンピュータ実行可能命令を記憶するメモリと、を備える、装置。
[予備請求項13]
前記メモリが、前記プロセッサによって実行されると、前記装置に、
前記サービスへのアクセスを許可することを判定した後に、前記モバイルデバイスに関連付けられたキャッシュされた認証データを取り出させ、
前記キャッシュされた認証データを使用して、認証トークンを生成させ、
前記モバイルデバイスへ前記認証トークンを送信させる、コンピュータ実行可能命令を記憶する、予備請求項12に記載の装置。
[予備請求項14]
前記認証トークンが、前記モバイルデバイスで作動している前記アプリケーションに関連付けられた前記サービスにアクセスするために、前記モバイルデバイスによって使用されるように構成されている、予備請求項13に記載の装置。
[予備請求項15]
前記メモリが、前記プロセッサによって実行されると、前記装置に、
前記モバイルデバイスに関連付けられた認証データが前記装置でキャッシュされていないことを判定させ、
前記認証データが前記装置でキャッシュされていないと判定することに応じて、前記モバイルデバイスへアイデンティティプロバイダデバイスからの前記認証データに対する要求を送信させ、
前記モバイルデバイスから、かつ前記アイデンティティプロバイダデバイスを介して、前記モバイルデバイスに関連付けられた前記認証データを受信させ、
前記モバイルデバイスに関連付けられた前記認証データをキャッシュさせる、コンピュータ実行可能命令を記憶する、予備請求項12に記載の装置。
[予備請求項16]
前記メモリが、前記プロセッサによって実行されると、前記装置に、
前記モバイルデバイスに関連付けられた前記キャッシュされた認証データを取り出させ、
前記キャッシュされた認証データを使用して認証トークンを生成させ、
前記モバイルデバイスへ前記認証トークンを送信させる、コンピュータ実行可能命令を記憶する、予備請求項15に記載の装置。
[予備請求項17]
前記メモリが、前記プロセッサによって実行されると、前記装置に、
前記サービスへのアクセスを許可することを判定した後に、前記クライアント証明書から、前記モバイルデバイスのユーザに関連付けられたユーザ識別子を抽出させ、
前記ユーザ識別子を使用して認証トークンを生成させ、
前記モバイルデバイスへ前記認証トークンを送信させる、コンピュータ実行可能命令を記憶する、予備請求項12に記載の装置。
[予備請求項18]
システムであって、
モバイルデバイスであって、
第1のプロセッサと、
メモリであって、前記モバイルデバイスの前記第1のプロセッサによって実行されると、前記モバイルデバイスに、
前記モバイルデバイスで作動しているアプリケーションとコンピューティングデバイスとの間にセキュアな通信トンネルを確立させ、
前記モバイルデバイスで作動している前記アプリケーションから、かつ前記セキュアな通信トンネルを介して、前記コンピューティングデバイスへクライアント証明書を含む認証要求を送信させる、コンピュータ実行可能命令を記憶する、メモリと、を備える、
モバイルデバイスを備え、
前記コンピューティングデバイスが、
第2のプロセッサと、
メモリであって、前記コンピューティングデバイスの前記第2のプロセッサによって実行されると、前記コンピューティングデバイスに、
前記モバイルデバイスで作動している前記アプリケーションから、かつ前記セキュアな通信トンネルを介して、前記クライアント証明書を含む前記認証要求を受信させ、
前記クライアント証明書から、前記モバイルデバイスに関連付けられたデバイス識別子を抽出させ、
前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための要求を、デバイス管理サーバへ送信させ、前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための前記要求は、前記モバイルデバイスに関連付けられた前記デバイス識別子を含み、
前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかを判定するための前記要求を送信することに応じて、前記デバイス管理サーバから、前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかの指標を受信させ、
前記モバイルデバイスがセキュリティポリシーに準拠しているかどうかの前記指標に基づいて、前記モバイルデバイスで作動している前記アプリケーションに前記モバイルデバ
イスで作動している前記アプリケーションに関連付けられたサービスへのアクセスを許可するかどうかを判定させる、コンピュータ実行可能命令を記憶する、メモリと、を備える、システム。
[予備請求項19]
前記セキュアな通信トンネルを確立することが、
前記コンピューティングデバイスにアクセスするための要求を、前記モバイルデバイスで作動している前記アプリケーションによって検出することと、
前記コンピューティングデバイスにアクセスするための前記要求を、トンネリングアプリケーションによってインターセプトすることと、
前記モバイルデバイスで作動している前記アプリケーションと前記コンピューティングデバイスとの間の前記セキュアな通信トンネルを、前記トンネリングアプリケーションによって、かつ前記クライアント証明書を使用して、確立することと、を含む、予備請求項18に記載のシステム。
[予備請求項20]
前記セキュアな通信トンネルを確立することが、前記認証要求を前記コンピューティングデバイスにリダイレクトするための、前記サービスのサービスプロバイダからの要求に応じて行われる、予備請求項18に記載のシステム。
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図9
図10