IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ グーグル インコーポレイテッドの特許一覧

<>
  • 特許-共有化されたリソース識別 図1A
  • 特許-共有化されたリソース識別 図1B
  • 特許-共有化されたリソース識別 図2
  • 特許-共有化されたリソース識別 図3
  • 特許-共有化されたリソース識別 図4
  • 特許-共有化されたリソース識別 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-13
(45)【発行日】2023-12-21
(54)【発明の名称】共有化されたリソース識別
(51)【国際特許分類】
   G06F 21/31 20130101AFI20231214BHJP
   G06F 21/62 20130101ALN20231214BHJP
【FI】
G06F21/31
G06F21/62
【請求項の数】 22
(21)【出願番号】P 2022578738
(86)(22)【出願日】2021-01-21
(65)【公表番号】
(43)【公表日】2023-06-08
(86)【国際出願番号】 US2021014476
(87)【国際公開番号】W WO2021262251
(87)【国際公開日】2021-12-30
【審査請求日】2022-12-19
(31)【優先権主張番号】16/910,344
(32)【優先日】2020-06-24
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】トゥルシバグウェール、アトゥル
(72)【発明者】
【氏名】パースワール、サチン
(72)【発明者】
【氏名】サッパ、キラン
(72)【発明者】
【氏名】バンガ、シプラ
(72)【発明者】
【氏名】シングラ、アミット
【審査官】青木 重徳
(56)【参考文献】
【文献】特表2008-514242(JP,A)
【文献】米国特許出願公開第2016/0080496(US,A1)
【文献】中国特許出願公開第102195957(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/31
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
方法(400)であって、
データ処理ハードウェア(144)上で動作するルックアップサービス(120)において、ユーザに関連付けられた特定のデバイス(10)上で動作する第1のアプリケーション(130a)から、前記特定のデバイス(10)を識別するリソース識別子(以下、リソースIDとする)(122)へのアクセスを前記第1のアプリケーション(130a)に提供するように前記ルックアップサービス(120)に要求するリソースID要求(132)を受信するステップと、
前記ルックアップサービス(120)が、前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されているかどうかを判定するステップと、
前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されている場合、
前記ルックアップサービス(120)が、前記リソースID(122)を取得するステップと、
前記ルックアップサービス(120)が、前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)に、前記リソースID(122)を送信するステップと、を含み、
前記リソースID要求(132)は、ユーザを認証する認証資格情報(210)と、前記第1のアプリケーション(130a)が前記ルックアップサービス(120)から前記リソースID(122)にアクセスするためにユーザによって付与された許可(220)とを含むリソースIDスコープ(202)を含み、
前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されているかどうかを判定するステップは、ユーザを認証する前記認証資格情報(210)と、前記第1のアプリケーション(130a)が前記ルックアップサービス(120)からの前記リソースID(122)にアクセスするためにユーザによって付与された承認(220)とに基づいて、前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されていると判定することを含む、方法(400)。
【請求項2】
方法(400)であって、
ータ処理ハードウェア(144)上で動作する認証/承認サービス(230)において、特定のデバイス(10)から、ユーザを認証する認証資格情報(210)と、第1のアプリケーション(130a)が前記データ処理ハードウェア(144)上で動作するルックアップサービス(120)からリソース識別子(以下、リソースIDとする)(122)にアクセスするためにユーザによって付与された許可(220)とを含むリソースIDスコープ(202)を受信するステップと、
前記認証/承認サービス(230)が、前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)に、前記リソースIDスコープ(202)を含むアクセストークン(232)を送信するステップと、
前記データ処理ハードウェア(144)上で動作する前記ルックアップサービス(120)において、ユーザに関連付けられた前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)から、前記特定のデバイス(10)を識別する前記リソースID(122)へのアクセスを前記第1のアプリケーション(130a)に提供するように前記ルックアップサービス(120)に要求するリソースID要求(132)を受信するステップと、前記リソースID要求(132)は、前記アクセストークン(232)を含んでおり、
前記ルックアップサービス(120)が、前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されているかどうかを判定するステップと、
前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されている場合、
前記ルックアップサービス(120)が、前記リソースID(122)を取得するステップと、
前記ルックアップサービス(120)が、前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)に、前記リソースID(122)を送信するステップと、を含む方法(400)。
【請求項3】
前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)は、前記特定のデバイス(10)上の認証/承認ユーザインタフェース(204)を呼び出すように構成され、前記認証/承認ユーザインタフェース(204)は、前記リソースIDスコープ(202)を前記認証/承認サービス(230)に提供するようにユーザに促す、請求項に記載の方法(400)。
【請求項4】
ユーザに関連付けられた前記特定のデバイス(10)は、物理デバイス(10a)を含む、請求項1乃至のいずれか一項に記載の方法(400)。
【請求項5】
ユーザに関連付けられた前記特定のデバイス(10)は、仮想デバイス(10b)を含む、請求項1乃至のいずれか一項に記載の方法(400)。
【請求項6】
前記リソースID(122)は、前記ルックアップサービス(120)のエンティティによって割り当てられ、かつ前記特定のデバイス(10)を識別するために前記ルックアップサービス(120)の1つまたは複数のコンピューティングインタフェースによって共有される、請求項1乃至のいずれか一項に記載の方法(400)。
【請求項7】
前記ルックアップサービス(120)が前記リソースID(122)を前記第1のアプリケーション(130a)に送信した後、
前記第1のアプリケーション(130a)は、前記第1のアプリケーション(130a)に関連付けられた第1のリモートサービス(134a)に前記リソースID(122)を送信するように構成され、
前記第1のリモートサービス(134a)は、前記リソースID(122)を使用して、第2のリモートサービス(134b)から前記特定のデバイス(10)に関する情報を取り出すように構成されている、請求項1乃至のいずれか一項に記載の方法(400)。
【請求項8】
前記第1のリモートサービス(134a)は、前記第2のリモートサービス(134b)とは異なるエンティティに関連付けられる、請求項に記載の方法(400)。
【請求項9】
前記第2のリモートサービス(134b)は、前記特定のデバイス(10)上で動作可能な第2のアプリケーション(130b)に関連付けられる、請求項またはに記載の方法(400)。
【請求項10】
前記第1のリモートサービス(134a)が前記第2のリモートサービス(134b)から前記特定のデバイス(10)に関する前記情報を取り出す前に、前記第2のリモートサービス(134b)が、前記特定のデバイス(10)上で動作可能な前記第2のアプリケーション(130b)から前記リソースID(122)を受信する、請求項に記載の方法(400)。
【請求項11】
前記第1のアプリケーション(130a)は第1の動作環境(131a)で動作し、前記第2のアプリケーション(130b)は第2の動作環境(131b)で動作し、前記第1の動作環境(131a)は前記第2の動作環境(131b)から分離されている、請求項または10に記載の方法(400)。
【請求項12】
システム(100)であって、
ルックアップサービス(120)を実行するデータ処理ハードウェア(144)と、
前記データ処理ハードウェア(144)と通信するメモリハードウェア(146)と、を備え、前記メモリハードウェア(146)は、命令を格納し、前記命令は、前記データ処理ハードウェア(144)上での実行時に、前記データ処理ハードウェア(144)に、
ユーザに関連付けられた特定のデバイス(10)上で動作する第1のアプリケーション(130a)から、前記特定のデバイス(10)を識別するリソース識別子(以下、リソースIDとする)(122)へのアクセスを前記第1のアプリケーション(130a)に提供するように前記ルックアップサービス(120)に要求するリソースID要求(132)を受信するステップと、
前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されているかどうかを判定するステップと、
前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されている場合、
前記リソースID(122)を取得するステップと、
前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)に、前記リソースID(122)を送信するステップと、を含む動作を実行させ、
前記リソースID要求(132)は、ユーザを認証する認証資格情報(210)と、前記第1のアプリケーション(130a)が前記ルックアップサービス(120)から前記リソースID(122)にアクセスするためにユーザによって付与された許可(220)とを含むリソースIDスコープ(202)を含み、
前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されているかどうかを判定するステップは、ユーザを認証する前記認証資格情報(210)と、前記第1のアプリケーション(130a)が前記ルックアップサービス(120)からの前記リソースID(122)にアクセスするためにユーザによって付与された承認(220)とに基づいて、前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されていると判定することを含む、システム(100)。
【請求項13】
システム(100)であって、
ルックアップサービス(120)を実行するデータ処理ハードウェア(144)と、
前記データ処理ハードウェア(144)と通信するメモリハードウェア(146)と、を備え、前記メモリハードウェア(146)は、命令を格納し、前記命令は、前記データ処理ハードウェア(144)上での実行時に、前記データ処理ハードウェア(144)に、
前記データ処理ハードウェア(144)上で動作する認証/承認サービス(230)において、特定のデバイス(10)から、ユーザを認証する認証資格情報(210)と、第1のアプリケーション(130a)が前記データ処理ハードウェア(144)上で動作するルックアップサービス(120)からリソース識別子(以下、リソースIDとする)(122)にアクセスするためにユーザによって付与された許可(220)とを含むリソースIDスコープ(202)を受信するステップと、
前記認証/承認サービス(230)が、前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)に、前記リソースIDスコープ(202)を含むアクセストークン(232)を送信するステップと、
ユーザに関連付けられた前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)から、前記特定のデバイス(10)を識別する前記リソースID(122)へのアクセスを前記第1のアプリケーション(130a)に提供するように前記ルックアップサービス(120)に要求するリソースID要求(132)を受信するステップと、前記リソースID要求(132)は、前記アクセストークン(232)を含んでおり、
前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されているかどうかを判定するステップと、
前記第1のアプリケーション(130a)が前記リソースID(122)にアクセスすることを承認されている場合、
前記リソースID(122)を取得するステップと、
前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)に、前記リソースID(122)を送信するステップと、を含む動作を実行させる、システム(100)。
【請求項14】
前記特定のデバイス(10)上で動作する前記第1のアプリケーション(130a)は、前記特定のデバイス(10)上の認証/承認ユーザインタフェース(204)を呼び出すように構成され、前記認証/承認ユーザインタフェース(204)は、前記リソースIDスコープ(202)を前記認証/承認サービス(230)に提供するようにユーザに促す、請求項13に記載のシステム(100)。
【請求項15】
ユーザに関連付けられた前記特定のデバイス(10)は、物理デバイス(10a)を含む、請求項12乃至14のいずれか一項に記載のシステム(100)。
【請求項16】
ユーザに関連付けられた前記特定のデバイス(10)は、仮想デバイス(10b)を含む、請求項12乃至15のいずれか一項に記載のシステム(100)。
【請求項17】
前記リソースID(122)は、前記ルックアップサービス(120)のエンティティによって割り当てられ、かつ前記特定のデバイス(10)を識別するために前記ルックアップサービス(120)の1つまたは複数のコンピューティングインタフェースによって共有される、請求項12乃至16のいずれか一項に記載のシステム(100)。
【請求項18】
前記ルックアップサービス(120)が前記リソースID(122)を前記第1のアプリケーション(130a)に送信した後、
前記第1のアプリケーション(130a)は、前記第1のアプリケーション(130a)に関連付けられた第1のリモートサービス(134a)に前記リソースID(122)を送信するように構成され、
前記第1のリモートサービス(134a)は、前記リソースID(122)を使用して、第2のリモートサービス(134b)から前記特定のデバイス(10)に関する情報を取り出すように構成されている、請求項12乃至17のいずれか一項に記載のシステム(100)。
【請求項19】
前記第1のリモートサービス(134a)は、前記第2のリモートサービス(134b)とは異なるエンティティに関連付けられる、請求項18に記載のシステム(100)。
【請求項20】
前記第2のリモートサービス(134b)は、前記特定のデバイス(10)上で動作可能な第2のアプリケーション(130b)に関連付けられる、請求項18または19に記載のシステム(100)。
【請求項21】
前記第1のリモートサービス(134a)が前記第2のリモートサービス(134b)から前記特定のデバイス(10)に関する前記情報を取り出す前に、前記第2のリモートサービス(134b)が、前記特定のデバイス(10)上で動作可能な前記第2のアプリケーション(130b)から前記リソースID(122)を受信する、請求項20に記載のシステム(100)。
【請求項22】
前記第1のアプリケーション(130a)は第1の動作環境(131a)で動作し、前記第2のアプリケーション(130b)は第2の動作環境(131b)で動作し、前記第1の動作環境(131a)は前記第2の動作環境(131b)から分離されている、請求項20または21に記載のシステム(100)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、2つ以上のデバイス間でリソース識別を共有することに関する。
【背景技術】
【0002】
リプレゼンテーショナルステイトトランスファ(REST:Representational State Transfer)アプリケーションプログラミングインタフェース(API)は、独立したシステムが共通の関心のあるリソースについて通信することを可能にするために頻繁に使用されるコンピューティングインタフェースである。例えば、2つの独立したシステムは、ユーザセッションまたはユーザによって使用されているデバイス(例えば、モバイルユーザデバイス)について通信することが多い。これらのリソースは、通常、そのリソース内のアプリケーションの存在を呼び出すAPIによって識別される。API呼び出し元が、そのような存在なしに共有リソースをアドレス指定したい場合、API呼び出し元は、APIサーバに格納され、かつユーザに関連付けられたユーザアカウントを識別するなどの、代替手段を使用する必要がある。
【発明の概要】
【0003】
本開示の一態様は、リソース識別を共有するための方法を提供する。本方法は、データ処理ハードウェア上で動作するルックアップサービスにおいて、ユーザに関連付けられた特定のデバイス上で動作する第1のアプリケーションから、特定のデバイスを識別するリソース識別子(ID)へのアクセスを第1のアプリケーションに提供するようにルックアップサービスに要求するリソースID要求を受信することを含む。本方法は、ルックアップサービスが、特定のデバイス上で動作する第1のアプリケーションがリソースIDにアクセスすることを承認されているかどうかを判定することも含む。本方法は、第1のアプリケーションがリソースIDにアクセスすることを承認されている場合、ルックアップサービスが、リソースIDを取得することと、ルックアップサービスが、特定のデバイス上で動作する第1のアプリケーションにリソースIDを送信することとを含む。
【0004】
本開示の実施形態は、以下の任意の特徴のうちの1つまたは複数を含み得る。いくつかの実施形態では、リソースID要求は、ユーザを認証する認証資格情報(authentication credentials)と、第1のアプリケーションがルックアップサービスからのリソースIDにアクセスするためにユーザによって付与された許可とを含むリソースIDスコープを含む。第1のアプリケーションがリソースIDに対して承認されているかどうかを判定することは、ユーザを認証する認証資格情報と、第1のアプリケーションがルックアップサービスからのリソースIDにアクセスするためにユーザによって付与された許可とに基づいて、第1のアプリケーションがリソースIDにアクセスすることを承認されていると判定することを含み得る。
【0005】
いくつかの実施形態では、本方法は、データ処理ハードウェア上で動作する認証/承認サービスにおいて、特定のデバイスから、ユーザを認証する認証資格情報と、第1のアプリケーションがルックアップサービスからリソースIDにアクセスするためにユーザによって付与された許可とを含むリソースIDスコープを受信することを含む。本方法は、認証/承認サービスが、特定のデバイス上で動作する第1のアプリケーションに、リソースIDスコープを含むアクセストークンを送信することも含む。リソースID要求は、アクセストークンを含み得る。
【0006】
いくつかの例では、特定のデバイス上で動作する第1のアプリケーションは、特定のデバイス上の認証/承認ユーザインタフェースを呼び出すように構成される。認証/承認ユーザインタフェースは、リソースIDスコープを認証/承認サービスに提供し、かつ第1のアプリケーションによるリソースIDの使用を承認するようにユーザに促す。いくつかの例では、ユーザに関連付けられた特定のデバイスは、物理デバイスを含む。他の例では、ユーザに関連付けられた特定のデバイスは、仮想デバイスを含む。
【0007】
いくつかの実施形態では、リソースIDは、ルックアップサービスのエンティティによって割り当てられ、かつ特定のデバイスを識別するためにルックアップサービスの1つまたは複数のコンピューティングインタフェースによって共有される。ルックアップサービスがリソースIDを第1のアプリケーションに送信した後、第1のアプリケーションは、第1のアプリケーションに関連付けられた第1のリモートサービスにリソースIDを送信するように構成され、第1のリモートサービスは、リソースIDを使用して、第2のリモートサービスから特定のデバイスに関する情報を取り出すように構成されている。第1のリモートサービスは、第2のリモートサービスとは異なるエンティティに関連付けられ得る。任意選択的に、第2のリモートサービスは、特定のデバイス上で動作可能な第2のアプリケーションに関連付けられる。
【0008】
第1のリモートサービスが第2のリモートサービスから特定のデバイスに関する情報を取り出す前に、第2のリモートサービスは、特定のデバイス上で動作可能な第2のアプリケーションからリソースIDを受信し得る。いくつかの実施形態では、第1のアプリケーションは第1の動作環境で動作し、第2のアプリケーションは第2の動作環境で動作する。第1の動作環境は、第2の動作環境から分離されている。
【0009】
本開示の別の態様は、リソース識別を共有するためのシステムを提供する。システムは、ルックアップサービスを実行するデータ処理ハードウェアと、データ処理ハードウェアと通信するメモリハードウェアとを含む。メモリハードウェアは、データ処理ハードウェアによる実行時に、データ処理ハードウェアに動作を実行させる命令を格納する。動作は、ユーザに関連付けられた特定のデバイス上で動作する第1のアプリケーションから、特定のデバイスを識別するリソース識別子(ID)へのアクセスを第1のアプリケーションに提供するようにルックアップサービスに要求するリソースID要求を受信することを含む。動作は、ルックアップサービスが、特定のデバイス上で動作する第1のアプリケーションがリソースIDにアクセスすることを承認されているかどうかを判定することも含む。動作は、第1のアプリケーションがリソースIDにアクセスすることを承認されている場合、ルックアップサービスが、リソースIDを取得することと、ルックアップサービスが、特定のデバイス上で動作する第1のアプリケーションにリソースIDを送信することとをも含む。
【0010】
この態様は、以下の任意の特徴のうちの1つまたは複数を含み得る。本開示の実施形態は、以下の任意の特徴のうちの1つまたは複数を含み得る。いくつかの実施形態では、リソースID要求は、ユーザを認証する認証資格情報と、第1のアプリケーションがルックアップサービスからのリソースIDにアクセスするためにユーザによって付与された許可とを含むリソースIDスコープを含む。いくつかの実施形態では、リソースID要求は、リソースIDルックアップスコープを使用することが承認されているアクセストークンを含む。アクセストークンは、ユーザの認証資格情報を検証してユーザを認証すること、および第1のアプリケーションが、リソースIDルックアップスコープであるルックアップサービスからリソースIDにアクセスすることへのユーザによる同意に基づく。第1のアプリケーションがリソースIDに対して承認されているかどうかを判定することは、ユーザを認証する認証資格情報と、第1のアプリケーションがルックアップサービスからのリソースIDにアクセスするためにユーザによって付与された許可とに基づいて、第1のアプリケーションがリソースIDにアクセスすることを承認されていると判定することを含み得る。
【0011】
いくつかの実施形態では、データ処理ハードウェアは、認証/承認サービスをさらに実行する。動作は、リソースID要求を受信する前に、特定のデバイスから、ユーザを認証する認証資格情報と、第1のアプリケーションがルックアップサービスからリソースIDにアクセスするためにユーザによって付与された許可とを含むリソースIDスコープを受信することをさらに含む。動作は、認証/承認サービスが、特定のデバイス上で動作する第1のアプリケーションに、リソースIDスコープを含むアクセストークンを送信することも含む。リソースID要求は、アクセストークンを含み得る。
【0012】
いくつかの例では、特定のデバイス上で動作する第1のアプリケーションは、特定のデバイス上の認証/承認ユーザインタフェースを呼び出すように構成される。認証/承認ユーザインタフェースは、リソースIDスコープを認証/承認サービスに提供し、かつ第1のアプリケーションによるリソースIDの使用を承認するようにユーザに促す。いくつかの例では、ユーザに関連付けられた特定のデバイスは、物理デバイスを含む。他の例では、ユーザに関連付けられた特定のデバイスは、仮想デバイスを含む。
【0013】
いくつかの実施形態では、リソースIDは、ルックアップサービスのエンティティによって割り当てられ、かつ特定のデバイスを識別するためにルックアップサービスの1つまたは複数のコンピューティングインタフェースによって共有される。ルックアップサービスがリソースIDを第1のアプリケーションに送信した後、第1のアプリケーションは、第1のアプリケーションに関連付けられた第1のリモートサービスにリソースIDを送信するように構成され、第1のリモートサービスは、リソースIDを使用して、第2のリモートサービスから特定のデバイスに関する情報を取り出すように構成されている。第1のリモートサービスは、第2のリモートサービスとは異なるエンティティに関連付けられ得る。任意選択的に、第2のリモートサービスは、特定のデバイス上で動作可能な第2のアプリケーションに関連付けられる。
【0014】
第1のリモートサービスが第2のリモートサービスから特定のデバイスに関する情報を取り出す前に、第2のリモートサービスは、特定のデバイス上で動作可能な第2のアプリケーションからリソースIDを受信し得る。いくつかの実施形態では、第1のアプリケーションは第1の動作環境で動作し、第2のアプリケーションは第2の動作環境で動作する。第1の動作環境は、第2の動作環境から分離されている。
【0015】
本開示の1つまたは複数の実施形態の詳細は、添付の図面および以下の詳細な説明に記載されている。他の態様、特徴、および利点は、詳細な説明および図面、ならびに特許請求の範囲から明らかになる。
【図面の簡単な説明】
【0016】
図1A】リソース識別を共有するための例示的なシステムの概略図である。
図1B】リソース識別を共有するための例示的なシステムの概略図である。
図2】ユーザデバイスのユーザから認証資格情報および許可を取得するための認証サービスの概略図である。
図3】リソース識別を共有するための動作のシーケンス図の概略図である。
図4】リソース識別を共有する方法のための動作の例示的な構成のフローチャートである。
図5】本明細書で説明されるシステムおよび方法を実施するために使用され得る例示的なコンピューティングデバイスの概略図である。
【発明を実施するための形態】
【0017】
様々な図面の同様の参照記号は、同様の構成要素を示す。
リプレゼンテーショナルステイトトランスファ(REST)アプリケーションプログラミングインタフェース(API)は、独立したシステムが共通の関心のあるリソースについて通信することを可能にするために使用されるコンピューティングインタフェースである。一例として、2つの独立したシステムが、ユーザセッションまたはユーザによって使用されているデバイス(例えば、携帯電話または他のユーザデバイス)について通信することが多い。これらのリソースは、通常、そのリソース内のアプリケーションの存在を呼び出すAPIによって識別される。API呼び出し元が、そのような存在なしに共有リソースをアドレス指定したい場合、API呼び出し元は、APIサーバに格納され、ユーザに関連付けられたユーザアカウントを識別するなど、代替手段を使用する必要がある。しかしながら、プライバシーの問題から、API呼び出し元がそのような情報を発見することができない場合がある。
【0018】
いくつかの状況では、同じ動作環境(例えば、携帯電話などのユーザデバイス上)で動作する2つのアプリケーションが、互いに通信することを求める。例えば、第1のアプリケーションは、ユーザのためのサービスを実行する前に、ユーザデバイス上で同様に動作する第2のアプリケーションからユーザデバイスのセキュリティリスク体制(posture)を取得することを求める場合がある。しかしながら、いくつかのユーザデバイス上に存在する複数のアプリケーションは、プライバシーまたはセキュリティの問題のために、ユーザデバイスに対する固有のデバイス識別子を取得することができない。従って、2つの独立したアプリケーションが、各々が同じ動作環境において(即ち、同じユーザデバイス上で)動作していることを判定することは困難であり得る。
【0019】
本明細書の実施形態は、アプリケーションおよび/またはサービスがそれらの動作環境を相互に関連付けるために不透明な共有リソース識別子(ID)を取得することを可能にする、共有リソース識別のためのシステムに関する。特定のデバイス上で動作するアプリケーションは、ルックアップサービスからリソースIDへのアクセスを要求する。ルックアップサービスは、アプリケーションがリソースIDにアクセスすることを承認されているかどうかを判定し、アプリケーションがリソースIDにアクセスすることを承認されている場合、ルックアップサービスは、リソースIDを取得し、特定のデバイス上で動作するアプリケーションにリソースIDを送信する。他の利点の中でも、本システムは、個人識別可能な情報を共有する必要がなく、発生する任意の共有がユーザの同意によって認可されるため、信頼されないアプリケーションに関するプライバシー問題(即ち、信頼されないデバイスとデバイス識別を共有すること)を軽減するのに役立つ。
【0020】
ここで図1Aを参照すると、いくつかの実施形態では、例示的なシステム100、100aは、ネットワーク112、112aを介してリモートシステム140と通信する、個々のユーザ12に関連付けられたユーザデバイス10、10aを含む。ユーザデバイス10は、デスクトップワークステーション、ラップトップワークステーション、またはモバイルデバイス(即ち、スマートフォン)等の任意のコンピューティングデバイスに相当し得る。ユーザデバイス10は、コンピューティングリソース18(例えば、データ処理ハードウェア)および/またはストレージリソース16(例えば、メモリハードウェア)を含む。
【0021】
リモートシステム140は、コンピューティングリソース144(例えば、データ処理ハードウェア)および/またはストレージリソース146(例えば、メモリハードウェア)を含むスケーラブル/エラスティックコンピューティングリソース142を有する単一のコンピュータ、複数のコンピュータ、または分散システム(例えば、クラウド環境)であり得る。リモートシステム140は、ルックアップサービス120を実行する。
【0022】
ルックアップサービス120は、ユーザデバイス10上で動作する第1のアプリケーション130、130aからリソースID要求132を受信する。第1のアプリケーション130aは、ユーザデバイス10上で同様に動作する任意の他のアプリケーションから独立および/または分離された動作環境131、131a内で動作することができる。第1のアプリケーション130a(即ち、ソフトウェアリソース)は、コンピューティングデバイスにタスクを実行させるコンピュータソフトウェアを指すことができる。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」と呼ばれ得る。アプリケーションの例には、これらに限定されないが、システム診断アプリケーション、システム管理アプリケーション、システムメンテナンスアプリケーション、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、およびゲームアプリケーションが含まれる。
【0023】
リソースID要求132は、特定のデバイス10を識別するリソースID122へのアクセスを第1のアプリケーション130に提供するように、ルックアップサービス120に要求する。リソースID122は、いくつかの実施形態では、ユーザデバイス10に関する情報を直接提供しない不透明な(opaque)識別子である。即ち、リソースID122は、ユーザデバイス10に関するいかなる識別情報も含まないが、その代わりに、リモートシステム140のエンティティが特定のユーザデバイス10を識別するための識別子として機能する。例えば、リソースID122は、リモートシステム140のエンティティに関連付けられたコンピューティングインタフェース、例えば、アプリケーションプログラミングインタフェース(API)が特定のユーザデバイス10を識別するために使用する、数字および/または文字のランダムストリングを含み得る。
【0024】
ルックアップサービス120は、第1のアプリケーション130aがリソースID122にアクセスすることを承認されているかどうかを判定する。いくつかの実施形態では、リソースID要求132は、ユーザ12を認証する認証資格情報210(図2)と、第1のアプリケーション130aがルックアップサービス120からリソースID122にアクセスするためにユーザ12によって付与された許可220(図2)とを含むリソースIDスコープ202を含む。以下でより詳細に説明するように、ルックアップサービス120は、ユーザ12を認証する認証資格情報210と、第1のアプリケーション130aがルックアップサービス120からリソースID122にアクセスするためにユーザによって付与された許可220とに基づいて、第1のアプリケーション130aがリソースID122にアクセスすることを承認されているかどうかを判定し得る。
【0025】
第1のアプリケーションがリソースID122にアクセスすることを承認されている場合、ルックアップサービス120はリソースID122を取得する。いくつかの例では、リソースID122は、ルックアップサービス120に格納されている。他の例では、ルックアップサービス120は、リモートシステム140または他の場所で動作する別のサービス(例えば、識別サービス)からリソースID122を取り出す。
【0026】
いくつかの実施形態では、ルックアップサービス120またはルックアップサービス120と通信する別のサービスが、リソースID122を生成する。ルックアップサービス120は、リソースID要求132に応答して、または任意のリソースID要求132の前に(例えば、ユーザデバイス10上のアプリケーション130のインストール中に)、リソースID122を生成し得る。他の例では、ルックアップサービス120またはルックアップサービスと同じエンティティに関連付けられた他のサービスは、ユーザデバイス10がエンティティによって提供されるサービスに最初にアクセスするときに、ユーザデバイス10に関するリソースID122を生成する。リソースID122を生成するために、ルックアップサービスは、ユーザデバイス10から、1つまたは複数の共通コンポーネント14を取得する。1つまたは複数の共通コンポーネント14は、ユーザデバイス10上で動作する各アプリケーション130に共通のユーザデバイス10に関する情報を表す。共通コンポーネント14は、ユーザデバイス10にインストールされたブラウザに関する情報(例えば、バージョン情報)、ユーザデバイス10に格納されているライブラリ、ユーザデバイス10にインストールされている別のアプリケーションに関する情報、デバイスのオペレーティングシステム(OS)に関する情報などを含み得るが、これらに限定されない。共通コンポーネント14は、分離された動作環境131内で動作する際に、各アプリケーションがアクセスする情報を含み得る。
【0027】
これらの共通コンポーネント14のうちの1つまたは複数の組み合わせは、ルックアップサービス120が、ユーザデバイス10を、同じユーザ12に属し得る他のユーザデバイス10から区別するのに十分であり得る。ルックアップサービス120は、ユーザデバイス10から受信したこれらの共通コンポーネント14を、生成されたリソースID122に関連付ける。例えば、ルックアップサービスは、ランダムに生成されたリソースID122と共通コンポーネント14との間の関連付けを格納する。各リソースID要求132は、個々のアプリケーション130によって収集された複数の共通コンポーネント14を含むことができ、ルックアップサービス120は、どのリソースID122がリソースID要求132の複数の共通コンポーネントに対応するかを判定する。
【0028】
第1のアプリケーション130aがリソースID122にアクセスすることを承認されている場合、かつリソースID122を取得した後、ルックアップサービス120は、リソースID122を、ユーザデバイス10上で動作する第1のアプリケーション130aに送信する。リソースID122は、共有リソース(この例では、ユーザデバイス10)の不透明な識別子(例えば、乱数)であるため、リソースID122は、第1のアプリケーション130aに対してプライベート情報または識別情報を一切明らかにしない。さらに、リソースID要求132は、ユーザ12を認証する認証資格情報210と、第1のアプリケーション130aがルックアップサービス120aからリソースID122にアクセスするためにユーザによって付与された許可220とを提供するリソースIDスコープ202を含み得る。
【0029】
いくつかの例では、リソースID122は、ルックアップサービスおよび/またはリモートシステム140に関連付けられたエンティティ(図示せず)によって割り当てられる。リソースID122は、ユーザデバイス10を識別するために、エンティティ/リモートシステム140の1つまたは複数のコンピューティングインタフェース(例えば、アプリケーションプログラミングインタフェース(API))によって共有され得る。第1のアプリケーション130aは、ルックアップサービス120のコンピューティングインタフェースのうちの1つに対して「API呼び出し」を実行することによって、リソースID要求132をルックアップサービス120に送信し得る。
【0030】
いくつかの実施形態では、第2のアプリケーション130bも、第1のアプリケーション130aと同時にユーザデバイス10上で動作する。第2のアプリケーション130bは、個々の分離された動作環境131b内で動作することができる。分離された動作環境131b内から、第2のアプリケーション130bは、ユーザデバイス上で動作する他のアプリケーション130(例えば、第1のアプリケーション130a)と通信しなくてもよい。即ち、第1のアプリケーション130aおよび第2のアプリケーション130bの両方が同じ共有リソース内で(即ち、同じユーザデバイス10上で)動作することを判定するための直接的な手段はない。
【0031】
いくつかの例では、第2のアプリケーション130bは、第1のアプリケーション130aと同様に、リソースID要求132をルックアップサービス120に送信し、同様に、ユーザデバイス10に対応するリソースID122をルックアップサービス120から受信する。即ち、第2のアプリケーション130bは、第1のアプリケーション130aと同じユーザデバイス10上で動作するため(かつリソースID要求132を介して同じ共通コンポーネント14を送信するため)、第2のアプリケーション130bは、第1のアプリケーション130aと同じリソースID122を受信する。ユーザ12はまた、第2のアプリケーション130bがリソースID122にアクセスする許可を付与することができる。
【0032】
ルックアップサービス120がリソースID122を第1のアプリケーション130aに送信した後、いくつかの実施形態では、第1のアプリケーション130aは、リソースID122を第1のアプリケーション130aに関連付けられた第1のリモートサービス134、134aに送信するように構成される。第1のリモートサービス134aは、リソースID122を使用して、第2のリモートサービス134bからユーザデバイス10に関する情報を取り出すように構成される。第2のリモートサービス134bは、第2のアプリケーション130bに関連付けられ得る。各リモートサービス134a、134bは、エンティティ(図示せず)に関連付けられており、第1のリモートサービス134aに関連付けられたエンティティは、第2のリモートサービス134bに関連付けられたエンティティと異なっていてもよい。
【0033】
第1のアプリケーション130aおよび第2のアプリケーション130bの両方がルックアップサービス120からリソースID122を受信した後、および各アプリケーション130a、130bが受信したリソースID122を個々のリモートサービス134a、134bに送信した後、リモートサービス134a、134bは、(ネットワーク112aと同じであっても異なっていてもよい)別のネットワーク112、112bを介して通信して、ユーザデバイス10に関する情報を共有することができる。両方のリモートサービス134a、134bが同じリソースID122を受信したため、各リモートサービス134a、134bは、個々のリソースID122を比較し、第1のアプリケーション130aおよび第2のアプリケーション130bが同じユーザデバイス10上で動作することを相互に関連付けることができる。
【0034】
例えば、第1のアプリケーション130aがクラウドに格納されたファイルストレージシステムへのアクセスを許可しており、第2のアプリケーション130bがユーザデバイス10のセキュリティ体制を決定するセキュリティアプリケーションであると仮定する。第1のアプリケーション130aは、ユーザ12がユーザデバイス10を介してファイルストレージシステムにアクセスすることを可能にする前に、第2のアプリケーション130bからユーザデバイス10のセキュリティ体制を受信する必要がある。しかしながら、アプリケーション130a、130bの両方が個々の分離された動作環境131a、131bで動作するため、アプリケーション130a、130bのいずれも互いに直接通信することができない。しかしながら、両方のアプリケーション130a、130bは、個々のリモートサービス134a、134bと通信することができる。第1のリモートサービス134aおよび第2のリモートサービス134bの両方がリソースID122を受信した後、それらリモートサービスは、第1のアプリケーション130aおよび第2のアプリケーション130bの両方が同じユーザデバイス上で動作することを相互に関連付ける。その後、第2のアプリケーション130b(即ち、この例では、セキュリティ体制アプリケーション)は、ユーザデバイス10のセキュリティ体制を第2のリモートサービス134bに伝達することができ、第2のリモートサービス134bは、セキュリティ体制を第1のリモートサービス134aに伝達することができる。次いで、第1のリモートサービス134aは、ユーザデバイス10のセキュリティ体制を第1のアプリケーション130aに伝達することができる。このように、両方のアプリケーション130a、130bは、ユーザ12から同意を受信した後、アプリケーション130a、130bのいずれかが情報を直接識別することを許可しない不透明リソースID122を使用して、共有リソースに関して伝達することができる。第1のアプリケーション130aおよび第1のリモートサービス134aは、(即ち、ユーザデバイス10または他の共有リソースのコンテキスト内だけではない)任意の場所からリソースID122を利用することができる。
【0035】
図1Aは、物理デバイス10aとしてユーザデバイス10(即ち、共有リソース)を示すが、ユーザデバイス10は、リソースID122へのアクセスを求めるアプリケーション130の動作を可能にする任意のユーザデバイス10に対応し得る。ユーザデバイス10は、(例えば、コンテナ化されたシステムの)仮想デバイス10bを含み得る。例えば、図2Bにおいて、システム100、100bは、第1のアプリケーション130aを動作させる第1の仮想マシン(VM)11aと、第2のアプリケーション130bを動作させる第2のVM11bとを含むユーザデバイス10bを含む。ここで、各アプリケーション130a、130bは別個のVM11a、11b上で動作するため、アプリケーション130a、130bは、容易に通信することができず、従って、ユーザデバイス10bに関連付けられた情報を相互に関連付けるとともに、共有するためにリソースID122に依存する。ここで、ユーザデバイス10bは、リモートシステム140上で動作するように示されているが、ユーザデバイス10bは、リモートシステム140とは独立した任意の動作環境で動作し、ネットワーク112aを介してリモートシステム140と通信することもできる。
【0036】
ここで図2を参照すると、いくつかの実施形態では、リソースID要求132を受信する前に、リモートシステム140上(または代替的にユーザデバイス10上)で動作する認証サービス230(即ち、承認/認証サービス)は、ユーザ12を認証する認証資格情報210と、第1のアプリケーションがルックアップサービス120からリソースID122にアクセスするためにユーザ12によって付与された許可220とを含むリソースIDスコープ202を受信する。認証サービスは、ライブラリ、API、ブラウザなどを含むことができる。任意選択的に、認証サービス230は、アクセストークン232(例えば、サインオンクッキー)を、ユーザデバイス10上で動作する第1のアプリケーション130aに送信する。アクセストークン232は、リソースIDスコープ202を含み得、リソースID要求132は、アクセストークン232を含み得る。
【0037】
図2に示すように、いくつかの例では、ユーザデバイス10上で動作する第1のアプリケーション130aは、リソースIDスコープ202を認証サービス230に提供するようにユーザ12に促す認証/承認ユーザインタフェース204をユーザデバイス10上に呼び出すように構成される。ここで、認証ユーザインタフェース204は、ユーザ12に対して「このアプリケーションは、識別情報を別のアプリケーションと共有することを求めています。この共有に同意する場合は、以下にサインインしてください。」というメッセージ222を含む。このメッセージ222は、ユーザ12がリソースID122をアプリケーションと共有することに同意していることを保証し、従って、アプリケーションがリソースID122にアクセスするためにユーザ12が付与した許可として機能する。ここで、認証ユーザインタフェース204は、ユーザ12にユーザのアイデンティティを検証するためのインタフェースを提供する認証資格情報入力領域212をも含む。例えば、認証資格情報入力領域212は、ユーザ名およびパスワードのための入力テキストボックス、生体認証入力(例えば、指紋センサ)、二要素認証コード入力ボックス、またはユーザ12から認証および/または認証資格情報210および許可220を取得するための任意の他の技法を含む。
【0038】
図示の例では、ユーザ12がユーザ名およびパスワードを入力する場合、ユーザ12は、リソースID122を他のアプリケーション130および関連するリモートサービス134と共有することにも同意しているため、ユーザ名およびパスワードの入力は、認証資格情報210および許可220の両方を含む。しかしながら、認証ユーザインタフェース204は、(例えば、チェックボックスをマークするようにユーザ12に促すことにより)許可220を別個に促すようにしてもよい。従って、許可220は、ユーザ12がリソースID122を共有することに同意することを認証サービスに示し、一方、認証資格情報210は、同意するユーザ12が同意する権限を有していることを認証サービス230に示す。いくつかの実施形態では、ユーザデバイス10および/またはシステム100の管理者は、ユーザ12に代わって同意を提供する。即ち、いくつかのシステム100では、ルックアップサービス120およびユーザデバイス10に関してシステム100の管理者によって確立されたポリシーが、ユーザ12に対して自動的に同意を提供する。
【0039】
認証サービス230は、(認証資格情報210および許可220を含む)リソースIDスコープ202を、リモートシステム140上で動作するルックアップサービス120に伝達する。ルックアップサービス120(または識別サービスなど、リモートシステム140上で動作する別のサービス)は、リソースIDスコープ202に基づいてユーザ12を承認および/または認証し、対応するアクセストークン232を生成する。ルックアップサービス120は、アクセストークン232を認証サービス230に送信し、認証サービス230は、アクセストークン232を第1のアプリケーション130aに渡す。第1のアプリケーション130aが、ルックアップサービス120からリソースID122へのアクセスを要求する後続のリソースID要求132を(例えば、API呼び出しによって)発行する際、第1のアプリケーション130aは、第1のアプリケーション130aがリソースID122にアクセスすることを承認されている、即ち、認証/承認されたユーザ12がリソースID122を共有することに同意しているという証明として、アクセストークン232をルックアップサービス120に提供し得る。いくつかの例では、アクセストークン232はサインオンクッキーを含む。
【0040】
いくつかの実施形態では、認証サービス230は、以前に取得されたアクセストークン232を第1のアプリケーション130aに提供する。例えば、ユーザ12が現在の時間の閾値期間内に認証資格情報210および/または許可220を提供した場合、認証サービス230は、追加の許可220および/または認証資格情報210をユーザ12に促して第2のアクセストークン232を取得することなく、ルックアップサービス120によって以前に生成されたアクセストークン232を使用する。いくつかの例では、認証サービス230は、(認証資格情報220を要求することなく)ユーザに許可220を促すだけであり、他の例では、認証サービス230は、(許可210を要求することなく)ユーザに認証資格情報210を促すだけである。
【0041】
次に図3を参照すると、例示的なシーケンス図300は、システム100による動作を時系列で配列している。動作310において、第1のアプリケーション130aは、(例えば、図2のユーザログインを介して)認証サービス230に認証を要求する。認証サービス230は、動作312において、ルックアップサービス120(および/またはアイデンティティサービス124)と通信して、認証ユーザインタフェース204を介してユーザ12から取得された認証資格情報210および許可220によりユーザ12を承認および/または認証する。例えば、認証サービス230は、ルックアップサービス120からアクセストークン232を取得する。動作314において、認証サービス230は、アクセストークン232を第1のアプリケーション130aに送信する。動作316において、第1のアプリケーション130aは、(例えば、リソースID要求132により)リソースID122へのアクセスを要求する。第1のアプリケーション130aは、リソースID要求132にアクセストークン232を含ませてもよい。
【0042】
動作318において、アクセストークン232に基づいて、ルックアップサービス120は、リソースID122を第1のアプリケーション130aに提供する。この例では、ルックアップサービス120は、共通コンポーネント14に基づいてリソースID122を以前に生成していた。動作320において、第1のアプリケーション130aは、第1のアプリケーション130aに関連付けられた第1のリモートサービス134aにリソースID122を送信する。
【0043】
動作322~332は、第1のアプリケーション130aの代わりに第2のアプリケーション130bに対する動作310~320の複製である。即ち、動作322において、第2のアプリケーション130bは、認証サービス230に認証を要求する。認証サービス230は、動作324において、ルックアップサービス120からアクセストークン232を取得する。動作326において、認証サービス230は、アクセストークン232を第2のアプリケーション130bに送信する。動作328において、第2のアプリケーション130bは、アクセストークン232を使用して、(例えば、リソースID要求132により)リソースID122へのアクセスを要求する。動作330において、アクセストークン232に基づいて、ルックアップサービス120は、リソースID122を第2のアプリケーション130bに提供し、動作332において、第2のアプリケーション130bは、リソースID122を第2のアプリケーション130bに関連付けられた第2のリモートサービス134bに送信する。
【0044】
この時点で、第1のリモートサービス134aおよび第2のリモートサービス134bの両方は、それぞれ、ユーザデバイス10に関連付けられたリソースID122へのアクセスを有する。動作336において、第1のリモートサービス134aは、共有リソースID122を使用して、第2のリモートサービス134bからユーザデバイス10に関連付けられた共有リソースに関する情報(例えば、ユーザデバイス10のセキュリティ体制)を取得する。動作338において、第1のリモートサービス134aは、第2のリモートサービス134bから取得された情報を第1のアプリケーション130aに送信する。これらの動作310~338の順序は例示的なものであり、任意の順序で行われ得る。例えば、リモートサービス134a、134bは、(動作334において)第1のアプリケーション130aから情報の要求を受信する前に、(動作336において)情報を共有する。
【0045】
いくつかの例では、第1のリモートサービス134aおよび第2のリモートサービス134bがリソースID122を比較したときに、リモートサービス134a、134bは、アプリケーション130a、130bが同じユーザデバイス10上で動作していないと判定する。このシナリオでは、第1のリモートサービス134aは、エラーメッセージを第1のアプリケーション130aに伝達することができる。第1のアプリケーション130aは、第1のリモートサービス134aからのエラーメッセージに応答して、エラーメッセージを(例えば、ユーザデバイス10のグラフィカルユーザインタフェースにより)ユーザ12に表示する。いくつかの実施形態では、エラーメッセージは、(例えば、リンクを提供することによって、またはユーザ12をアプリケーションインストールサイトにリダイレクトすることによって)第2のアプリケーション130bをインストールする手段をユーザ12に提供する。
【0046】
図4は、リソース識別を共有するための方法400の動作の例示的な構成のフローチャートである。方法400は、動作402において、データ処理ハードウェア144上で動作するルックアップサービス120において、ユーザ12に関連付けられた特定のデバイス10上で動作する第1のアプリケーション130aから、特定のデバイス10を識別するリソース識別子(ID)122へのアクセスを第1のアプリケーション130aに提供するようにルックアップサービス120に要求するリソースID要求132を受信することを含む。動作404において、方法400は、ルックアップサービス120が、特定のデバイス10上で動作する第1のアプリケーション130aがリソースID122にアクセスすることを承認されているかどうかを判定することを含む。第1のアプリケーション130aがリソースID122にアクセスすることを承認されている場合、方法400は、動作404において、ルックアップサービス120が、リソースID122を取得することと、動作406において、ルックアップサービス120が、特定のデバイス10上で動作する第1のアプリケーション130aにリソースID122を送信することとを含む。
【0047】
図5は、本明細書で説明されるシステムおよび方法を実施するために使用され得る例示的なコンピューティングデバイス500の概略図である。コンピューティングデバイス500は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの様々な形態のデジタルコンピュータを代表することが意図されている。本明細書に示された構成要素、それらの接続および関係、およびそれらの機能は、例示的なものに過ぎず、本明細書に記載および/または特許請求の範囲に記載される本発明の実施形態を限定するものではない。
【0048】
コンピューティングデバイス500は、プロセッサ510、メモリ520、ストレージデバイス530、メモリ520および高速拡張ポート550に接続する高速インタフェース/コントローラ540、および低速バス570およびストレージデバイス530に接続する低速インタフェース/コントローラ560を含む。構成要素510、520、530、540、550、および560の各々は、様々なバスを使用して相互接続され、かつ共通のマザーボード上に、または適切な他の方法で搭載され得る。プロセッサ510は、メモリ520またはストレージデバイス530に格納された命令を含むコンピューティングデバイス500内での実行のための命令を処理して、高速インタフェース540に接続されたディスプレイ580などの外部入力/出力デバイス上にグラフィカルユーザインタフェース(GUI)用のグラフィカル情報を表示する。他の実施形態では、複数のメモリおよび複数のタイプのメモリと共に、複数のプロセッサおよび/または複数のバスが適宜使用されてもよい。また、複数のコンピューティングデバイス500が接続され、各デバイスが(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な処理の一部を提供してもよい。
【0049】
メモリ520は、コンピューティングデバイス500内に非一時的に情報を記憶する。メモリ520は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであってもよい。非一時的メモリ520は、コンピューティングデバイス500による使用のための一時的または永久的な基準でプログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を格納するために使用される物理デバイスであってもよい。不揮発性メモリの例には、これらに限定されないが、フラッシュメモリおよび読み出し専用メモリ(ROM)/プログラム可能読み出し専用メモリ(PROM)/消去可能プログラム可能読み出し専用メモリ(EPROM)/電子消去可能プログラム可能読み出し専用メモリ(EEPROM)(例えば、通常、ブートプログラムなどのファームウェアに使用される)が含まれる。揮発性メモリの例には、これらに限定されないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、およびディスクまたはテープが含まれる。
【0050】
ストレージデバイス530は、コンピューティングデバイス500の大容量ストレージデバイスを提供することができる。いくつかの実施形態では、ストレージデバイス530は、コンピュータ可読媒体である。種々の異なる実施形態では、ストレージデバイス530は、フロッピーディスク(登録商標)デバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリまたは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークまたはその他の構成におけるデバイスを含むデバイスのアレイであり得る。追加の実施形態では、コンピュータプログラム製品は、情報媒体に有形的に具体化される。コンピュータプログラム製品は、実行時に、上記したような1つまたは複数の方法を実行する命令を含む。情報媒体は、メモリ520、ストレージデバイス530、またはプロセッサ510上のメモリなどの、コンピュータ可読媒体または機械可読媒体である。
【0051】
高速コントローラ540は、コンピューティングデバイス500の帯域幅を大量に使用する処理を管理し、低速コントローラ560は、より低い帯域幅を大量に使用する処理を管理する。このような役割の配分は、例示的なものに過ぎない。いくつかの実施形態では、高速コントローラ540は、メモリ520、ディスプレイ580(例えば、グラフィックプロセッサまたはアクセラレータを介する)、および各種拡張カード(図示せず)を受け入れる高速拡張ポート550に接続される。いくつかの実施形態では、低速コントローラ560は、ストレージデバイス530および低速拡張ポート590に接続される。様々な通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット(登録商標))を含む低速拡張ポート590は、キーボード、ポインティングデバイス、スキャナ、または例えばネットワークアダプターを介するスイッチまたはルータなどのネットワークデバイスなどの1つまたは複数の入力/出力デバイスに接続され得る。
【0052】
コンピューティングデバイス500は、図面に示されるように、いくつかの異なる形態で実施することができる。例えば、標準サーバ500aとして、またはそのようなサーバ500aのグループ内で複数回、ラップトップコンピュータ500bとして、またはラックサーバシステム500cの一部として実施することができる。
【0053】
本明細書に記載のシステムおよび技術の様々な実施形態は、デジタル電子回路および/または光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせにおいて実現することができる。これらの様々な実施形態は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、それらにデータおよび命令を送信するように接続された、特別または一般的な目的であってもよい、少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能および/または解釈可能な1つまたは複数のコンピュータプログラムにおける実施形態を含むことができる。
【0054】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られている)は、プログラマブルプロセッサ用の機械命令を含み、高水準の手続き型言語および/またはオブジェクト指向のプログラミング言語、および/またはアセンブリ言語/機械語で実施することができる。本明細書で使用する場合、「機械可読媒体」および「コンピュータ可読媒体」という用語は、任意のコンピュータプログラム製品、非一時的なコンピュータ可読媒体、機械命令を機械可読信号として受信する機械可読媒体を含む、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される装置および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指す。「機械可読信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
【0055】
本明細書で説明するプロセスおよび論理フローは、入力データを処理して出力を生成することによって機能を実行する1つまたは複数のコンピュータプログラムを実行するデータ処理ハードウェアとも呼ばれる1つまたは複数のプログラマブルプロセッサによって実行することができる。プロセスおよび論理フローは、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの特定用途論理回路によっても実行することができる。コンピュータプログラムの実行に適したプロセッサは、一例として、汎用マイクロプロセッサおよび専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。概して、プロセッサは、読み出し専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実行するプロセッサと、命令およびデータを格納するための1つまたは複数のメモリデバイスとである。概して、コンピュータは、データを格納するための1つまたは複数の大容量ストレージデバイス(例えば、磁気ディスク、光磁気ディスク、または光ディスク)からのデータを受信するか、またはデータを転送するか、あるいはその両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを格納するのに適したコンピュータ可読媒体には、半導体メモリデバイス(例えば、EPROM、EEPROM、およびフラッシュメモリデバイス)、磁気ディスク(例えば、内蔵ハードディスクまたはリムーバブルディスク)、光磁気ディスク、およびCDROMおよびDVD-ROMディスクを含む全ての形態の不揮発性メモリ、媒体およびメモリデバイスが含まれる。プロセッサおよびメモリは、特定用途論理回路によって補完または特定用途論理回路に組み込むことができる。
【0056】
ユーザとのインタラクションを提供するために、本開示の1つまたは複数の態様は、例えば、CRT(陰極線管)、LDC(液晶ディスプレイ)モニタ、またはタッチスクリーンなどのユーザに情報を表示するためのディスプレイデバイスと、任意選択的にユーザがコンピュータに入力を提供するキーボードおよびポインティングデバイス(例えば、マウスやトラックボール)とを有するコンピュータ上で実施することができる。他の種類の装置を使用して、例えば、任意の形態の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であり得るユーザに提供されるフィードバックとともにユーザとのインタラクションを提供することもでき、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することができる。さらに、コンピュータは、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって(例えば、ウェブブラウザから受信した要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって)、ユーザとインタラクションすることができる。
【0057】
いくつかの実施形態が説明されている。それにもかかわらず、本開示の技術思想および範囲から逸脱することなく、様々な変更がなされ得ることが理解されるであろう。従って、他の実施形態も以下の特許請求の範囲内にある。
図1A
図1B
図2
図3
図4
図5