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

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

7122402キーを使用したクライアントクレデンシャルセットへのアクセス
<>
  • -キーを使用したクライアントクレデンシャルセットへのアクセス 図1
  • -キーを使用したクライアントクレデンシャルセットへのアクセス 図2
  • -キーを使用したクライアントクレデンシャルセットへのアクセス 図3
  • -キーを使用したクライアントクレデンシャルセットへのアクセス 図4
  • -キーを使用したクライアントクレデンシャルセットへのアクセス 図5
  • -キーを使用したクライアントクレデンシャルセットへのアクセス 図6
  • -キーを使用したクライアントクレデンシャルセットへのアクセス 図7
  • -キーを使用したクライアントクレデンシャルセットへのアクセス 図8
  • -キーを使用したクライアントクレデンシャルセットへのアクセス 図9
  • -キーを使用したクライアントクレデンシャルセットへのアクセス 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-10
(45)【発行日】2022-08-19
(54)【発明の名称】キーを使用したクライアントクレデンシャルセットへのアクセス
(51)【国際特許分類】
   H04L 67/00 20220101AFI20220812BHJP
   G06F 21/31 20130101ALI20220812BHJP
【FI】
H04L67/00
G06F21/31
【請求項の数】 15
(21)【出願番号】P 2020572872
(86)(22)【出願日】2019-06-28
(65)【公表番号】
(43)【公表日】2021-11-04
(86)【国際出願番号】 US2019039822
(87)【国際公開番号】W WO2020006407
(87)【国際公開日】2020-01-02
【審査請求日】2021-02-22
(31)【優先権主張番号】16/022,241
(32)【優先日】2018-06-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース ドット コム インコーポレイティッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ヘルドマン,カイル エドワード
(72)【発明者】
【氏名】ウィルソン,ドーグラス クリストファー
(72)【発明者】
【氏名】リード,ジャクソン グレゴリー
(72)【発明者】
【氏名】アップル,カイル ワレン
(72)【発明者】
【氏名】リッチワイン,ジェイコブ アンドリュー
【審査官】岩田 玲彦
(56)【参考文献】
【文献】米国特許出願公開第2016/0065555(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/00
G06F 21/31
(57)【特許請求の範囲】
【請求項1】
複数のユーザがアクセス可能なサーバベースのプラットフォームを提供することであり、前記サーバベースのプラットフォームは、前記複数のユーザのうち1ユーザにより開発されたアプリケーションが前記複数のユーザのうち他ユーザにより利用されることを可能にする、ことと、
前記複数のユーザのうち特定の1ユーザに対してアプリケーションを利用可能にする指標を受け取った後、異なるコンピュータシステムから構成データを取り出すことであり、前記構成データはキー値への参照を指定する、ことと、
前記特定のユーザのクライアントクレデンシャルセットを含むデータオブジェクトを維持することと、
前記アプリケーションに関連づけられたイベントの発生に応答して、
前記データオブジェクトからの前記特定のユーザの前記クライアントクレデンシャルセットにアクセスすることであり、前記特定のユーザの前記クライアントクレデンシャルセットは、前記キー値と前記特定のユーザの指標とを使用してアクセスされる、ことと、
宛先コンピュータシステムに、前記宛先コンピュータシステムで認証する要求を送信することであり、前記要求は前記クライアントクレデンシャルセットを含む、ことと、
前記宛先コンピュータシステムから、前記コンピュータシステムが前記宛先コンピュータシステムで認証されたかどうかを示す応答を受信することと、
を含む方法。
【請求項2】
前記複数のユーザのうち異なる1ユーザに対して前記アプリケーションを利用可能にする指標を受け取ることと、
前記異なるユーザのクライアントクレデンシャルセットを含む第2のデータオブジェクトを維持することと、
前記アプリケーション及び前記異なるユーザに関連づけられたイベントの発生に応答して、
前記第2のデータオブジェクトからの前記異なるユーザの前記クライアントクレデンシャルセットにアクセスすることであり、前記異なるユーザの前記クライアントクレデンシャルセットは、前記キー値と前記異なるユーザの指標とを使用してアクセスされる、ことと、
異なる宛先コンピュータシステムに、前記異なる宛先コンピュータシステムで認証する第2の要求を送信することであり、前記第2の要求は前記異なるユーザの前記クライアントクレデンシャルセットを含む、ことと、
をさらに含む請求項1に記載の方法。
【請求項3】
前記宛先コンピュータシステムで認証する前記要求を送信する前に、前記特定のユーザから、前記キー値から前記クライアントクレデンシャルセットへのマッピングを定義する情報を受け取ること
をさらに含む請求項1又は2に記載の方法。
【請求項4】
前記特定のユーザの前記指標は、前記データオブジェクトが維持されるアカウントに対応し、前記クライアントクレデンシャルセットにアクセスすることは、前記アカウントの前記データオブジェクトにアクセスすることを含む、請求項1乃至3のうちいずれか1項に記載の方法。
【請求項5】
前記アプリケーションを利用可能にすることは、前記特定のユーザのアカウント下で前記アプリケーションをインストールすることと、前記特定のユーザが前記アプリケーションに対応するステップをワークフロープロセスに追加できるようにすることを含む、請求項1乃至4のうちいずれか1項に記載の方法。
【請求項6】
前記イベントの発生は、前記ワークフロープロセスにおいて前記ステップに到達することを含む、請求項5に記載の方法。
【請求項7】
前記宛先コンピュータシステムで認証する前記要求を送信する前に、前記特定のユーザから、前記宛先コンピュータシステムに対応するユニフォームリソースロケータ(URL)を指定する情報を受け取ることであり、前記認証する要求は前記指定されたURLに基づいて送信される、こと
をさらに含む請求項1乃至6のうちいずれか1項に記載の方法。
【請求項8】
前記アプリケーションを利用可能にする要求は、前記サーバベースのプラットフォームにおける前記特定のユーザのアカウントに関連して前記アプリケーションをインストールする要求であり、前記データオブジェクトは、前記特定のユーザの前記アカウントに関連して維持される、請求項1に記載の方法。
【請求項9】
前記宛先コンピュータシステムからの前記応答は認証トークンを含み、当該方法は、
前記アプリケーションのために前記宛先コンピュータシステムに対して認証されたアプリケーションプログラミングインターフェース(API)コールを行うことであり、前記APIコールは前記認証トークンを含む、こと
をさらに含む、請求項8に記載の方法。
【請求項10】
前記アプリケーションに関連づけられた前記イベントの発生に応答して、前記インストールされたアプリケーションを実行して、前記アクセスすることと前記送信することと前記受信することとを開始する動作のセットを実行する、請求項8又は9に記載の方法。
【請求項11】
前記サーバベースのプラットフォームは、前記複数のユーザのデータをそれぞれのテナント特有のストレージエリアに記憶するマルチテナントデータベースシステムを含み、前記特定のユーザの前記クライアントクレデンシャルセットは、前記特定のユーザに対応するテナント特有のストレージエリアに記憶される、請求項1に記載の方法。
【請求項12】
前記クライアントクレデンシャルセットは、クライアント識別子及びクライアントシークレットを含む、請求項1に記載の方法。
【請求項13】
前記キー値は、前記アプリケーションの開発者により指定されたグローバル一意識別子である、請求項1に記載の方法。
【請求項14】
コンピュータシステムに請求項1乃至13のうち1項に記載の方法のステップを含む動作を実行させるコンピュータプログラム
【請求項15】
少なくとも1つのプロセッサと、プログラム命令を記憶したメモリと、を備えたシステムであって、前記プログラム命令は、当該システムに請求項1乃至13のうち1項に記載の方法のステップを含む動作を実行させるために前記少なくとも1つのプロセッサにより実行可能である、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般にコンピュータシステムに関し、より具体的には、宛先コンピュータシステムで認証するためのクライアントクレデンシャルセットのアクセスに関する。
【背景技術】
【0002】
クラウドベースのプラットフォームなどのコンピュータシステムは、しばしば、それらのシステムによりユーザのために記憶されたデータと対話するアプリケーションを実行する。これらのコンピュータシステムのプロバイダでないユーザは、コンピュータシステム上で実行するためにダウンロード及びインストールされるアプリケーションを開発することがある。これらのアプリケーションは、コンピュータシステムがアクセス可能なデータベースからユーザのデータを取り出し、次いでそのデータに対して動作を実行するように設計され得る。しかしながら、いくつかの場合、ユーザは、これらのコンピュータシステム上で実行されているアプリケーションによりサポートされていない特定の方法で自分のデータを取り扱いたい場合がある。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、クライアントクレデンシャルセットにアクセスするシステムの例示的な要素を示すブロック図である。
図2】いくつかの実施形態による、複数のクライアントクレデンシャルセットにキーをマッピングする例示的なアプローチを示すブロック図である。
図3】いくつかの実施形態による、キーを使用してクライアントクレデンシャルセットにアクセスするコンピュータシステムの例示的な要素を示すブロック図である。
図4】いくつかの実施形態による、認証サービスを実施する宛先コンピュータシステムの例示的な要素を示すブロック図である。
図5】いくつかの実施形態による、キーを使用したクレデンシャルのアクセスに関する例示的な方法を示すフロー図である。
図6】いくつかの実施形態による、キーを使用したクレデンシャルのアクセスに関する例示的な方法を示すフロー図である。
図7】いくつかの実施形態による、キーを使用したクレデンシャルのアクセスに関する例示的な方法を示すフロー図である。
図8】いくつかの実施形態による、マルチテナントデータベースシステムの例示的な環境を示すブロック図である。
図9】いくつかの実施形態による、マルチテナントデータベースシステムの例示的な環境を示すブロック図である。
図10】いくつかの実施形態による、一例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0004】
本開示は、「1つの実施形態」又は「一実施形態」への参照を含む。「1つの実施形態において」又は「一実施形態において」というフレーズの出現は、必ずしも同じ実施形態を参照するものではない。特定の特徴、構造、又は特徴を、本開示と矛盾しない任意の適切な方法で組み合わせることができる。
【0005】
本開示の範囲内において、異なるエンティティ(これらは様々に「ユニット」、「回路」、他のコンポーネント等と呼ばれることがある)は、1つ以上のタスク又は動作を実行するように「構成されている」として記載又は請求されることがある。この定式化-[1つ又は複数のタスクを実行する]ように構成された[エンティティ]-は、本明細書において、構造(すなわち、電子回路などの物理的なもの)を参照するために用いられる。より具体的には、この定式化は、この構造が動作の間に1つ以上のタスクを実行するようにアレンジされていることを示すために用いられる。構造は、該構造が現在動かされていないとしても、何らかのあるタスクを実行するように構成されていると言うことができる。「ネットワークを通じて通信するように構成されたネットワークインターフェース」は、例えば、集積回路であって、問題となっている該集積回路が現在使用されていない(例えば、それに電源が接続されていない)としても動作中にこの機能を実行する回路を有する集積回路をカバーすることを意図している。したがって、何らかのタスクを実行する「ように構成されている」と説明又は記載されたエンティティは、タスクを実施するために実行可能なプログラム命令を記憶するデバイス、回路、メモリなどの物理的なものを指す。このフレーズは、本明細書では、無形のものを指すのには用いられない。したがって、構築する「ように構成される」は、本明細書では、アプリケーションプログラミングインターフェース(API)などのソフトウェアエンティティを指すことには用いられない。
【0006】
「ように構成される」という用語は、「ように構成可能である」を意味する意図はない。例えば、プログラムされていないFPGAは、特定の機能を実行する「ように構成されている」とはみなされないが、その機能を実行する「ように構成可能で」あり得、プログラミングの後に機能を実行する「ように構成され」得る。
【0007】
本明細書で用いられるとき、「第1の」、「第2の」等の用語は、それらが先行する名詞のラベルとして用いられ、具体的に示されない限り、何らかのタイプの順序付け(例えば、空間的、時間的、論理的など)を暗に示すものではない。例えば、複数の部分を有するワンタイムパスワードにおいて、「第1の」部分及び「第2の」部分という用語を使用して、ワンタイムパスワードの任意の部分を参照することができる。言い換えれば、第1の部分と第2の部分は、ワンタイムパスワードのうち最初の2つの部分に限定されない。
【0008】
本明細書で用いられるとき、用語「に基づく」は、決定に影響を及ぼす1つ以上の要因を記述するために用いられる。この用語は、さらなる要因が決定に影響を及ぼし得る可能性を除外するものではない。すなわち、決定は、専ら指定された要因に基づく可能性があり、あるいは指定された要因と他の指定されていない要因とに基づく可能性がある。「Bに基づいてAを決定する」というフレーズについて考える。このフレーズは、BがAを決定するために使用されること、又はAの決定に影響を及ぼすことを規定している。この用語は、Aの決定がCなどの何らかの他の要因にさらに基づいてもよいことを除外するものではない。このフレーズは、Aが専らBに基づいて決定される実施形態をカバーすることも意図している。したがって、本明細書で用いられるとき、「に基づく」というフレーズは、「に少なくとも部分的に基づく」というフレーズと同義である。
【0009】
特定のコンピュータシステム上で実行されるアプリケーションは特定のタスクを実行することができない可能性があるため、データをリモートに配置された別のコンピュータシステムにプッシュする(又は、タスクが別のコンピュータシステムにより実行されることを要求する)ことが望ましい可能性があり、この別のコンピュータシステムは「宛先コンピュータシステム」と呼ぶことができる。データを宛先コンピュータシステムにプッシュするために、アプリケーションは最初、(所与のユーザのために)宛先コンピュータシステムとの間で、ユーザに属するクライアントクレデンシャルを提供することにより認証する必要があり得る。いくつかの場合、コンピュータシステムは、アプリケーションにより指定されたクライアントクレデンシャルを使用して、アプリケーションのために宛先コンピュータシステムで認証することができる。しかしながら、このようなアプリケーションは、異なるユーザにわたる複数の一意のクライアントクレデンシャルをサポートするように、又は、コンピュータシステムに、アプリケーションを使用するユーザに依存して異なる宛先コンピュータシステムへの要求を発行させるように設計されていない可能性がある。したがって、アプリケーションをコンピュータシステムの異なるユーザによりインストール可能にし、ユーザに依存して複数のクライアントクレデンシャルへのアクセスを容易にできることが望ましい可能性がある。
【0010】
本開示は、それぞれの宛先コンピュータシステムで認証するために使用可能な1つ以上のクライアントクレデンシャルセットへのアクセスを可能にする様々な手法について記載する。以下に記載される様々な実施形態において、コンピュータシステムは、それが特定のアプリケーションに関連して受け取るキーを使用して、異なるユーザアカウントに対して記憶されたクライアントクレデンシャルセットをルックアップする。特に、様々な実施形態において、コンピュータシステムは、複数のユーザがアクセス可能なサーバベースのプラットフォームを提供し、これは、1ユーザにより開発されたアプリケーションを他のユーザによりインストール及び使用できるようにする。したがって、いくつかの実施形態において、ユーザは、いくつかの場合にはコンピュータシステムにより提供される機能を使用して、宛先コンピュータシステムに対して要求を送信させることができる特定のアプリケーションを(コンピュータシステムに)インストールすることができる。ユーザがアプリケーションをセットアップしたいとき、様々な実施形態において、コンピュータシステムは、異なるコンピュータシステムから構成データを取り出す。この構成データは、異なるユーザアカウントに対して記憶された1つ以上のクライアントクレデンシャルセットにアクセスするためのキーを指定することができる。様々なケースにおいて、ユーザは、キーから自身のクライアントクレデンシャルセットへのマッピングを独立して提供することができる。したがって、様々な実施形態において、アプリケーションでイベントが発生したとき、コンピュータシステムは、キーとユーザにより提供されたマッピングとを使用することにより、ユーザのクライアントクレデンシャルセットにアクセスする。その後、様々な実施形態において、コンピュータシステムは、宛先コンピュータシステムで認証する要求を送信し、この要求はクライアントクレデンシャルセットを含む。様々なケースにおいて、別のユーザが、アプリケーションをインストールし、キーから自身のクライアントクレデンシャルセットへのマッピングを提供することができる。したがって、そのアプリケーションでイベントが発生したとき、コンピュータシステムは、キーを使用してそのユーザのアカウント内のそのユーザのクライアントクレデンシャルセットにアクセスすることができる。したがって、キーは、1つ以上のクライアントクレデンシャルセットへのアクセスを可能にし得る。
【0011】
いくつかの実施形態において、特定のアプリケーションは、より大きいフレームワークの一部として実装され得る。例えば、ある文脈において、特定のアプリケーションは、ワークフロープロセスの開発を可能にするツール内で選択可能なものでもよい。(そのようなツールは、ユーザがコンピュータにより実施される方法を開発できるようにし得、該方法のうち1つのステップが特定のアプリケーションの実行であり得る。)したがって、ユーザは、コンピュータシステムでの自身のアカウント下にアプリケーションをインストールすることができる。次いで、ユーザは、ステップをワークフロープロセスに追加することができ、このステップはアプリケーションに対応する。そのような環境において、このワークフロープロセス内のステップに到達したとき、様々な実施形態において、コンピュータシステムは、インストールされたアプリケーションを実行して、宛先システムに通知を送信するなどの所望の動作を実行する。
【0012】
このようなアプローチの態様を例示する多くの可能な例の1つとして、認証を必要とする第三者(third-party)システムにメッセージを送信する通信アプリケーションについて考える。例えば、TWITTERにメッセージ(ツイートと呼ばれる)を送信するために、異なるアプリケーションインスタンスが異なるユーザによりインストール可能であり得る。これらの通信を送信するために、通信アプリケーションは最初、それがメッセージを送信できる前に、第三者システムとの間で認証する必要があり得る。従来のアプローチでは、認証するために、通信アプリケーションは、アプリケーションの作成中に認証クレデンシャルを埋め込まれる必要があり得る。言い換えれば、このタイプの実装では、通信アプリケーションを複数のユーザによりインストール及び使用するために(これは多くのアプリケーションの要件である)、各ユーザに対して異なるアプリケーションインスタンスが構築される必要があり、各インスタンスは対応するユーザのクレデンシャルを含む。しかし、本明細書に記載される手法を用いることにより、開発者は、例えば、アプリケーションをインストールして使用する多くのユーザのうち各々の適切なクレデンシャルにアクセスすることができる単一の通信アプリケーションを作成することができる。いくつかの実装において、通信アプリケーションは、キー値を使用して、通信アプリケーションがインストールされているアカウントのクライアントクレデンシャルセットをルックアップし得る。
【0013】
これらの手法は、1以上のユーザのための宛先コンピュータシステム(いくつかの場合、複数のシステム)への認証された要求を容易にする単一のマルチテナントアプリケーションの作成を可能にするので、従来のアプローチよりも有利であり得る。すなわち、キー(上述の)は、アプリケーションが、1)異なるユーザアカウントにインストールされ、2)認証された要求をそのアカウントのユーザのために宛先コンピュータシステムに対して行うときにそれぞれのユーザアカウントのクライアントクレデンシャルセットにアクセスすることを、可能にし得る。次に、図1から始め、これらの手法を実施するシステムについて以下で論じる。
【0014】
次に、図1を参照し、システム100のブロック図を示す。システム100は、ハードウェア又はハードウェアとソフトウェアルーチンの組み合わせを介して実装されるコンポーネントのセットである。図示の実施形態において、システム100は、コンピュータシステム110、周辺コンピュータシステム120、及び宛先コンピュータシステム130を含む。さらに図示されるように、コンピュータシステム110は、アプリケーション112と、クライアントクレデンシャルセット115を有するデータオブジェクト114を含む。また、図示のように、周辺コンピュータシステム120は、キー125を有する構成データ124を含む。いくつかの例において、アプリケーション112は、周辺コンピュータシステム120により維持され得る。いくつかの実施形態において、システム100は、図示のものと別様に実装され、例えば、システム120及び130は、同じコンポーネントの一部でもよい(すなわち、組み合わせられてもよい)。
【0015】
様々な実施形態において、コンピュータシステム110はサーバベースのプラットフォームを実装し、該プラットフォームにより、そのサービスのユーザは、アプリケーション112などのワークフロープロセスに関連づけられたものを含むアプリケーションを開発、実行、及び管理することができる。コンピュータシステム110は、例えば、以下で図8及び図9に関して詳細に論じるマルチテナントデータベースシステムなどのマルチテナントデータベースシステムでもよい。したがって、コンピュータシステム110は、ユーザ、アプリケーション、データベース、及び他のシステム(例えば、システム120及び130)と対話して、データを記憶し、分析し、操作し、扱うことができる。
【0016】
様々な実施形態において、コンピュータシステム110は、サーバベースのプラットフォームを通じてサービスを提供し、該プラットフォームにより、そのサービスのテナント(すなわち、会社又は会社内のグループに属するものなどの、指定されたユーザのグループ)は、プロセスのフローを制御し、かつテナントに関連づけられたユーザ(例えば、顧客)との対話を発生させるように設計された、様々なステップを有するワークフロープロセスを作成することができる。このようなワークフローサービスの1つの可能な例は、SALESFORCE(登録商標)のJOURNEY BUILDERであり、これにより、SALESFORCEのプラットフォームのユーザは、可能性としてモバイルデバイス及びWebなどの異なるチャネルにわたる、顧客との一連の対話を追跡することができる。
【0017】
ワークフロープロセスのステップには、例えば、ワークフロープロセスにおいてどのパスをとるかの判断、テキスト又は電子メールのユーザへの送信、ユーザのデータベースレコードの更新などを含むことができる。様々な実施形態において、ワークフロープロセスにおけるステップは、下層のアプリケーション(例えば、アプリケーション112)により実施される。通信アプリケーションの例に戻ると、アプリケーションをインストールしたユーザは、対応するワークフロープロセスに、ユーザ(又は、他のエンティティ)に対して1つ以上の電子メールを送信させるステップ(例えば、アイコンなどのステップの指標)を追加することができる。そのステップに到達したとき、コンピュータシステム110は、通信アプリケーションを実行し又はその実行をさせて、ユーザに通知を送信することができる。(ワークフロープロセスの文脈でアプリケーション112を含む対話について記載しているが、他の文脈が考えられることに留意する。例えば、コンピュータシステム110は、単に、ユーザからのアプリケーションを実行する要求に応答してアプリケーション112を実行してもよい。)
【0018】
いくつかの例において、ワークフロープロセスにおいてステップに到達したとき、宛先コンピュータシステム130(例えば、ユーザの独自のサーバシステムなどのエンドポイントシステム、又は、関心のあるサービスを提供するTWITTERなどの第三者システム)と通信することが望ましい場合がある。したがって、様々な実施形態において、アプリケーション112は、宛先コンピュータシステム130へのアプリケーションプログラミングインターフェース(API)コールを行わせることができる。いくつかの場合、アプリケーション112は、これらのコールを宛先コンピュータシステム130に対して直接行うことができるが、他の場合に、アプリケーション112は、コンピュータシステム110の機能性を利用してそのようなAPIコールを行うように設計されてもよく、例えば、アプリケーション112は、コンピュータシステム110上で実行されている別のプログラムに対して、APIコールを行う要求を発行することができる。いずれの場合も、コンピュータシステム110は宛先コンピュータシステム130に対してAPIコールを行うと言える。宛先コンピュータシステム130に対してこれらのAPIコールを行うために、コンピュータシステム110は、最初、宛先コンピュータシステム130との間で認証する必要があり得る。様々な実施形態において、コンピュータシステム110は、宛先コンピュータシステム130で認証するために、データオブジェクト114内に維持されるクライアントクレデンシャルセット115を使用する。特に、コンピュータシステム110は、宛先コンピュータシステム130により提供される認証サービスにクライアントクレデンシャルセット115を渡して、認証されたAPIコールを可能にし得る認証トークンを受信することができる。様々な実施形態において、クライアントクレデンシャルセット115は、コンピュータシステム110で自身のアカウント下にアプリケーション112をインストールするユーザにより提供される。
【0019】
アプリケーション112は、コンピュータシステム110のユーザ(すなわち、テナント)により開発及びインストールされ、次いで、それらのユーザ(又は、他のユーザ)により、それら自身のワークフロープロセスにおいて使用され得る。アプリケーション112は、コンピュータシステム110に存在するものとして示されているが、様々な実施形態において、アプリケーション112は、周辺コンピュータシステム120などの異なるシステムに存在する。このような実施形態において、アプリケーション112を実行する必要があるとき、コンピュータシステム110は、周辺コンピュータシステム120にアプリケーション112を実行するよう指示することにより、アプリケーション112の実行をさせることができる。アプリケーション112が、周辺コンピュータシステム120で実行されて宛先コンピュータシステム130に対して直接APIコールを行う場合、周辺コンピュータシステム120は、そのようなコールを行うものと言うことができる。いくつかの実施形態において、アプリケーション112は、少なくとも2つのコンポーネント、すなわち、コンピュータシステム110により実行されるプログラム命令と、周辺コンピュータシステム120により実行されるプログラム命令に分割することができる。一例として、コンピュータシステム110は、ワークフロープロセスにおけるステップを構成するためのユーザインターフェースをユーザに提示するプログラム命令を実行することができ、一方、周辺コンピュータシステム120は、そのステップの機能性を実行するプログラム命令を実行することができる。
【0020】
アプリケーション112をインストールするとき、いくつかの実施形態において、コンピュータシステム110は、周辺コンピュータシステム120からアプリケーション112を取り出す(例えば、ダウンロードする)ことができる。すなわち、アプリケーション112は、他のエンティティによるダウンロードのために周辺コンピュータシステム120により開発及び提供される第三者アプリケーションでもよい。例えば、コンピュータシステム110は、アプリケーションを作成した会社のサーバシステムから通信アプリケーションをダウンロードすることができる。いくつかの実施形態において、アプリケーション112は、コンピュータシステム110により提供され得るアプリケーションストアの一部としてコンピュータシステム110に維持される。ひとたびインストールされると、様々な実施形態において、アプリケーション112は、(それをインストールした)ユーザに対し、自身のワークフロープロセスに含めるのに利用可能にされる。したがって、ユーザは、自身のワークフロープロセスに、インストールされたアプリケーション112に対応する指標(例えば、ステップ)を追加することができる。
【0021】
アプリケーション112をインストールした後(又は、いくつかの場合には、その前)、様々な実施形態において、ユーザは、キー125とクライアントクレデンシャルセット115との間のマッピングを提供することができ、このマッピングは、データオブジェクト114に、又はデータオブジェクト114として記憶することができる。様々なケースにおいて、そのユーザは、アプリケーション112のプロバイダ(例えば、開発者)からキー125を取得することができ、宛先コンピュータシステム130のプロバイダからクライアントクレデンシャルセット115を取得することができる。様々な実施形態において、キー125はさらに、構成データ124に別個に含まれ、構成データ124は、周辺コンピュータシステム120によりコンピュータシステム110に提供され得る。特に、ユーザが(アプリケーション112に対応する)ステップを自身のワークフロープロセスに追加するとき、コンピュータシステム110は、そのアプリケーション112を構成するために周辺コンピュータシステム120から構成データ124を取り出すことができる。
【0022】
ワークフロープロセス内でそのステップに到達したとき、様々な実施形態において、コンピュータシステム110は、キー125を使用してデータオブジェクト114内のクライアントクレデンシャルセット115をルックアップする。特に、クライアントクレデンシャルセット115は、コンピュータシステム110における特定のアカウントに関連して記憶されてもよく、したがって、システム110は、キー125を使用してそのアカウントのために記憶されたクライアントクレデンシャルセット115をルックアップすることができる。その後、様々な実施形態において、コンピュータシステム110は、宛先コンピュータシステム130で認証する認証要求132を発行する。要求132は、取り出されたクライアントクレデンシャルセット115を含むことができる。次いで、コンピュータシステム110は、コンピュータシステム110が認証されたかどうかを示す認証応答134を受信することができる。
【0023】
周辺コンピュータシステム120は、様々な実施形態において、コンピュータシステム110のユーザによりインストールされ、次いでそれらユーザにより自身のワークフロープロセスにおいて使用され得る特定のアプリケーション112(及び、対応する構成データ124)を提供する。周辺コンピュータシステム120は、例えば、コンピュータシステム110におけるインストール/登録のためにアプリケーション112を開発する第三者プロバイダにより維持されるコンピュータシステムでもよい。いくつかの実施形態において、周辺コンピュータシステム120は、アプリケーション112と構成データ124とをコンピュータシステム110に別個に提供する。特に、周辺コンピュータシステム120は、特定のアプリケーション112を、コンピュータシステム110により提供されるアプリケーションストアサービスにアップロードしてもよい。したがって、コンピュータシステム110のユーザは、アプリケーションストアサービスにアクセスすることにより特定のアプリケーション112をダウンロードし、インストールすることができる。ひとたびユーザが、インストールされたアプリケーション112に対応するステップを自身のワークフロープロセスに追加すると、そのユーザは、そのアプリケーション112を構成することができる。したがって、コンピュータシステム110は、周辺コンピュータシステム120から構成データ124を取り出すことができる。
【0024】
様々な実施形態において、周辺コンピュータシステム120は、ウェブページを介して構成データ124を提供する。特に、いくつかの実施態様において、周辺コンピュータシステム120は、アプリケーション112に関連づけられたウェブアプリケーションをホストする。したがって、コンピュータシステム110が構成データ124を取り出したいとき、コンピュータシステム110は、ハイパーテキストトランスファープロトコル(HTTP)要求のセットを周辺コンピュータシステム120に送信し、応答において構成データ124を含むウェブページを受信することができる。いくつかの実施形態において、コンピュータシステム110は、iframeを通じてウェブページをユーザに提示する。次いで、ユーザは、アプリケーション112を処理するときに使用することができるさらなる情報を(ウェブページのフォーム及び他の要素に)提供することができる。いくつかの実施形態において、ユーザは、提示されたウェブページを介してキー125とクライアントクレデンシャルセット115との間のマッピングを提供してもよい。
【0025】
宛先コンピュータシステム130は、様々な実施形態において、所望の機能性を提供するエンドポイントコンピュータシステムである。特に、特定のアプリケーション112によりサポートされない特定のデータ及び/又は機能にアクセスすることが望ましい場合がある。例えば、ユーザは、後のデータ処理のために、コンピュータシステム110から宛先コンピュータシステム130にデータをプッシュしたい場合がある。いくつかの実施形態において、宛先コンピュータシステム130の機能性は、保護されたAPIを介してアクセス可能である。そのため、様々な実施形態において、コンピュータシステム110は最初、保護されたAPIを使用して何らかの所望の機能性にアクセスする前に、宛先コンピュータシステム130で認証する必要があり得る。したがって、コンピュータシステム110は、宛先コンピュータシステム130にクライアントクレデンシャルセット115を提供して、そのクライアントクレデンシャルセットに対応する特定のユーザのために宛先コンピュータシステム130で認証することができる。認証された後、コンピュータシステム110は、次いで、宛先コンピュータシステム130にデータを送信するか又はシステム130により提供される特定の機能にアクセスするためのAPIコールを行うことができる。いくつかの実施形態において、コンピュータシステム110は、APIコールに対する応答を受信する。応答は、例えば成功(又は失敗)を示してもよく、あるいは要求されたデータを含んでもよい。
【0026】
システム100の一例示的な実装において、コンピュータシステム110は、複数のユーザがアクセス可能なサーバベースのプラットフォーム(例えば、マルチテナントデータベースシステム)を提供する。この例において、サーバベースのプラットフォームは、通信アプリケーションなどのアプリケーション112をコンピュータシステム110のユーザによりインストールできるようにする。通信アプリケーションは、第三者プロバイダにより提供され、ワークフロープロセスで使用されてもよい。したがって、この例において、この通信アプリケーションをインストールしたユーザは、自身のワークフロープロセスに、該アプリケーションに対応するステップを追加することができる。ユーザがステップを追加した後、この例において、コンピュータシステム110は、第三者プロバイダのシステム(周辺コンピュータシステム120)から構成データ124を取り出す。この構成データ124は、キー125を指定することができる。別個に、ユーザは、そのキー125と、宛先コンピュータシステム130で認証するために使用可能なクライアントクレデンシャルセット115との間のマッピングを提供することができる。ユーザは、そのキー125を第三者プロバイダから入手することができる。ワークフロープロセスのステップがトリガされたとき、この例において、コンピュータシステム110は、特定のキー125を使用して、ユーザにより提供されるクライアントクレデンシャルセット115にアクセスする。ひとたびクライアントクレデンシャルセット115がアクセスされると、コンピュータシステム110は、宛先コンピュータシステム130で認証し、それに通知を提供することができる。
【0027】
例示的な実装で続けると、コンピュータシステム110は、別のユーザから、この別のユーザが自身のワークフロープロセスにステップを追加できるように、通信アプリケーションをインストールする要求を受け取ることができる。したがって、この別のユーザは、キー125と自身のクライアントクレデンシャルセット115との間のマッピングを提供することができる。このマッピングは、この別のユーザのアカウント下で維持されるデータオブジェクト114内に指定することができる。したがって、この別のユーザのワークフローにおいてステップがトリガされたとき、コンピュータシステム110は、同じキー125を使用するが、クライアントクレデンシャルセット115を(元のユーザのアカウントの代わりに)この別のユーザのアカウント下で探す。ひとたびこの別のユーザのためにクライアントクレデンシャルセット115がアクセスされると、コンピュータシステム110は、同じ(又は、別の)宛先コンピュータシステム130で認証し、それに通知を提供することができる。
【0028】
このようにしてシステム100を実装することは、アプリケーションをインストールする異なるユーザのクライアントクレデンシャルセットへのアクセスを容易にし得るアプリケーションを開発できるようにし得るので、有利であり得る。次に、図2に関して、キー125とクライアントクレデンシャルセット115との間のマッピングの一例示的な高レベル図について論じる。
【0029】
次に、図2を参照し、キー125を異なるクライアントクレデンシャルセット115にマッピングする一例示的なアプローチのブロック図を示す。図示の実施形態において、アプローチ200は、複数のアカウント210を有するコンピュータシステム110を含む。複数のアカウント210はコンピュータシステム110に存在するように示されているが、いくつかの実施形態において、1つ以上のアカウント210が別の場所に維持されてもよい。
【0030】
前述のように、コンピュータシステム110は、サーバベースのプラットフォームを複数ユーザに提供することができるマルチテナントデータベースシステムでもよい。したがって、様々な実施形態において、コンピュータシステム110は、そのユーザのためのアカウント210を維持し、該アカウント210により、ユーザは、アカウント210に関連するデータの記憶を含む、コンピュータシステム110により提供される機能にアクセスすることができる。いくつかの実施形態において、コンピュータシステム110は、所与のアカウント210について、キー125からクライアントクレデンシャルセット115へのマッピングを定義するデータオブジェクト114(及び、いくつかの場合、宛先コンピュータシステム130のロケーション(例えば、URL)などのさらなる情報)を記憶することができる。
【0031】
キー125は、様々な実施形態において、アカウント210のデータオブジェクト114内のクライアントクレデンシャルセット115をルックアップするために使用可能な識別子である。いくつかの実施態様において、キー125は、グローバルに一意(globally unique)であり、かつ関連づけられたアプリケーション112の開発者により定義される値である。キー125は、例えば、ランダムなキャラクタ(例えば、数字、文字等)のストリング値でもよい。様々な実施形態において、キー125は2つの異なるポイントで、すなわち、1)ユーザがキー125のクライアントクレデンシャルセット115へのマッピングを提供するとき、及び2)コンピュータシステム110が構成データ124を取り出すときに、コンピュータシステム110に提供される。いくつかの例において、コンピュータシステム110は、それが構成データ124を受信するときのみ、キー125を受信することができる。このような例において、コンピュータシステム110は、次いで、コンピュータシステム110がキー125をマッピングすることになるクライアントクレデンシャルセット115をユーザが提供することを要求することができる。キー125は、複数のクライアントクレデンシャルセット115にアクセスするために使用可能であり得る。特に、データオブジェクト114がアカウント210に関連して記憶されているとき、キー125とアカウント210の組み合わせは、コンピュータシステム110が特定のユーザに関連づけられた特定のクライアントクレデンシャルセット115にアクセスすることを可能にし得る。
【0032】
クライアントクレデンシャルセット115は、様々な実施形態において、コンピュータシステム110などのシステムが(これらクレデンシャルのユーザのために)宛先コンピュータシステム130で認証されることを可能にする値のセットである。クライアントクレデンシャルセット115は、例えば、クライアント識別子及びクライアントシークレット(client secret)(例えば、OAUTHで使用されるものなど)でもよく、あるいはユーザ名とパスワードでもよい。様々な実施形態において、クライアントクレデンシャルセット115は、アプリケーション112のユーザにより提供される。例えば、ユーザは、クライアントクレデンシャルセット115を、キー125とそのクライアントクレデンシャルセット115との間のマッピングを提供するときに提供してもよい。
【0033】
様々な実施形態において、有効サービスユニフォームリソースロケータ(uniform resource locators、URL)が、クライアントクレデンシャルセット115と共に記憶され、キー125を使用してアクセスされ得る。有効サービスURLは、リソースにアクセスするために(認証応答134を介して受信した)トークンが使用され得るロケーションのセットを識別することができる。例えば、www.twitter.com/*の有効サービスURLパターンが指定されている場合、トークン応答ペイロードで受信したトークンは、全てのTWITTERエンドポイント(例えば、www.twitter.com/api)に送信されるが、他のエンドポイント(例えば、www.fakeendpoint.com/apiなど)には送信されない。
【0034】
図2に示すように、キー125は、アカウント210内に記憶されたクライアントクレデンシャルセット115にアクセスするために使用することができる。したがって、コンピュータシステム110がクライアントクレデンシャルセット115をルックアップするよう試みたとき、コンピュータシステム110は、関連アカウント210に記憶されたデータオブジェクト114にアクセスすることができ、その関連アカウントは、アプリケーション112に対応するステップを含むワークフロープロセスに関連づけることができる。すなわち、様々な実施形態において、ワークフロープロセスにおいてアプリケーション112に対応するステップに到達したとき、コンピュータシステム110は、そのワークフロープロセスに関連づけられた特定のアカウント210に記憶されたクライアントクレデンシャルセット115に(キー125を使用して)アクセスすることができる。したがって、アプリケーション112は、複数のユーザによりインストールされ、複数のワークフロープロセスにおいて使用され得るが、各ワークフロープロセス及びユーザに関連する特定のクライアントクレデンシャルセット115へのアクセスを依然として容易にすることができる。次に、図3に関して、コンピュータシステム110の一例について論じる。
【0035】
次に、図3を参照し、コンピュータシステム110のブロック図を示す。図示の実施形態において、コンピュータシステム110は、アカウント210とワークフローエンジン310を含む。図示のように、ワークフローエンジン310は、2つのワークフロープロセス315とキー125を含む。さらに図示のように、各アカウント210は、クライアントクレデンシャルセット115を有する対応するデータオブジェクト114を含む。いくつかの実施形態において、コンピュータシステム110は、図示のものと別様に実装される。例えば、コンピュータシステム110は、ワークフローエンジン310を含まなくてもよいが、代わりに、ワークフロープロセスなしで、すなわち、ワークフロープロセスとは異なる文脈でアプリケーション112を実行し、キー125を使用することができる。
【0036】
ワークフローエンジン310は、様々な実施形態において、ワークフロープロセス315の管理を可能にし、これらのプロセスの作成及び実行を含む。したがって、ユーザは、ワークフロープロセス315を、そのプロセスの実行中に実行されるべきアクションを示す様々なステップを追加することにより作成することができる。ワークフローエンジン310は、ステップのデフォルトセット(例えば、コンピュータシステム110のプロバイダにより供給されるステップ)を提供する(又は、サポートする)ことができるが、様々な実施形態において、エンジン310は、ユーザが、そのユーザ又は別のエンティティにより設計されたカスタムステップを追加できるようにする。カスタムステップを追加するために、ユーザは、前述したようにアプリケーション112を登録/インストールすることができる。いくつかの場合、特定のアプリケーション112のインストールの一部として、ユーザは、その特定のアプリケーション112がどこで維持されているかの指標(例えば、エンドポイントURL)、例えば、周辺コンピュータシステム120のURLを提供してもよい。したがって、コンピュータシステム110は、その特定のアプリケーション112を取り出し、それを要求したユーザに関連づけられたワークフロープロセス315でそれを使用可能にすることができる。ひとたび特定のアプリケーション112がワークフロープロセス315で使用可能になると、ユーザは、そのアプリケーションに対応するステップを自身のワークフロープロセスに追加することができる。いくつかの実施形態において、そのようなステップは、コンピュータシステム110により提供されるグラフィカルユーザインターフェース内に表示されるキャンバス上にステップをドラッグアンドドロップすることにより、ワークフロープロセス315に追加される。
【0037】
いくつかの実施形態において、ワークフロープロセス315は、様々なステップを通じての移動を制御するイベント駆動トリガに関連づけられる。例えば、製品を購入するユーザがワークフロープロセス315を開始することがあり、これにおいて、最初のステップは、購入に関する電子メールをユーザの電子メールに送信することである。したがって、アプリケーション112に対応するステップの発生は、イベント117に応答してトリガされ得る。一例として、前のステップが実行されてから1か月の経過に応答して、ワークフローエンジン310は、アプリケーション112に対応するステップであり得る次のステップを開始することができる。そのようなステップがトリガされたことに応答して、コンピュータシステム110は、様々な実施形態において、対応するアプリケーション112を実行し、あるいは対応するアプリケーション112の実行をさせる(例えば、周辺コンピュータシステム120に、実行するように指示する)。
【0038】
アプリケーション112の実行は、様々な実施形態において、コンピュータシステム110に、キー125を使用して特定のクライアントクレデンシャルセット115を取り出させる。前述のように、ワークフロープロセス315は、アカウント210に関連づけることができる。図示のように、例えば、ワークフロープロセス315Aはアカウント210Aに関連づけられ、ワークフロープロセス315Bはアカウント210Bに関連づけられる。したがって、ワークフロープロセス315Aに関連したアプリケーション112の実行は、コンピュータシステム110に、クライアントクレデンシャルセット115Aがアカウント210Aのために記憶されているときそれにアクセスさせることができる。クライアントクレデンシャルセット115にアクセスすることに追加で、いくつかの実施形態において、コンピュータシステム110は、宛先コンピュータシステム130を識別する、適切なアカウント210のために記憶された情報(例えば、URL)にさらにアクセスする。このような情報は、データオブジェクト114に記憶することができる。その後、様々な実施形態において、コンピュータシステム110は、宛先コンピュータシステム130で認証する要求132を発行し、コンピュータシステム110が宛先コンピュータシステム130で認証されているかどうかを示す応答134を受信する。応答134は、認証トークンを含んでもよい。したがって、コンピュータシステム110は、特定の動作を実行するために宛先コンピュータシステム130に対して(受信した認証トークンを含む)さらなるAPIコールを行うことができる。次に、図4に関して、宛先コンピュータシステム130の一例について論じる。
【0039】
次に、図4を参照し、宛先コンピュータシステム130のブロック図を示す。図示の実施形態において、宛先コンピュータシステム130は、認証サービス410及びAPI420を含む。いくつかの実施形態において、宛先コンピュータシステム130は、図示のものと別様に実装され、例えば、宛先コンピュータシステム130は、周辺コンピュータシステム120と組み合わせられてもよい。前述のように、宛先コンピュータシステム130は、コンピュータシステム110を認証し、次いで、コンピュータシステム110が認証されたAPIコールを行うことを可能にする。
【0040】
認証サービス410は、様々な実施形態において、コンピュータシステム110などのコンピュータシステムの認証を容易にする。コンピュータシステム110を認証するために、サービス410は、要求132で供給されたクライアントクレデンシャルセット115を、それを宛先コンピュータシステム130により記憶された有効なクライアントクレデンシャルセット115に対して比較することにより検証することができる。様々な実施形態において、要求132で供給されたクライアントクレデンシャルセット115が有効である場合、サービス410は応答134で認証トークンを返す。トークンは、コンピュータシステム110が宛先コンピュータシステム130に対して認証されたAPIコールを行うことを可能にし得る。クライアントクレデンシャルセット115が有効でない場合、サービス410は、コンピュータシステム110が認証されていないという指標を返すことができる。
【0041】
アプリケーションプログラミングインターフェース420は、様々な実施形態において、コンピュータシステム110が宛先コンピュータシステム130により提供される機能性と対話することを可能にする。一例として、コンピュータシステムは、宛先コンピュータシステム130にデータを提供し、あるいはAPI420を介してコマンドを発行することができる。API420を利用するために、コンピュータシステム110は、サービス410を通じて認証トークンを取得する必要があり得る。ひとたびコンピュータシステム110が認証トークンを有すると、コンピュータシステム110は、API420を通じてAPIコール422を行うことができる。いくつかの実施形態において、宛先コンピュータシステム130は、コンピュータシステム110にAPI応答424を提供する。API応答424は、例えば、要求されたデータ、又は特定の動作が実行されたという指標を含んでもよい。
【0042】
次に、図5を参照し、方法500のフロー図を示す。方法500は、宛先コンピュータシステム(例えば、宛先コンピュータシステム130)との間で認証するためにコンピュータシステム110などのコンピュータシステムにより実行される方法の一実施形態である。方法500は、コンピュータシステムがアプリケーション(例えば、アプリケーション112)をインストールするためのデータストアへのユーザアクセスを提供するなどのさらなるステップを含んでもよい。
【0043】
方法500はステップ510で開始し、ステップ510において、コンピュータシステムは、複数のユーザがアクセス可能なサーバベースのプラットフォームを提供する。このサーバベースのプラットフォームは、複数のユーザのうち1ユーザにより開発されたアプリケーションが複数のユーザのうち他ユーザにより利用されることを可能にし得る。
【0044】
ステップ520において、複数のユーザのうち特定のユーザに対してアプリケーションを利用可能にする指標を受け取った後、コンピュータシステムは、異なるコンピュータシステム(例えば、周辺コンピュータシステム120)から構成データ(例えば、構成データ124)を取り出す。この構成データは、キー値(例えば、キー125)への参照(reference)を指定することができる。いくつかの実施形態において、アプリケーションを利用可能にすることは、特定のユーザのアカウント(例えば、アカウント210)下でアプリケーションをインストール又は登録することと、特定のユーザがアプリケーションに対応するステップをワークフロープロセス(例えば、プロセス315)に追加できるようにすることを含む。
【0045】
ステップ530において、コンピュータシステムは、特定のユーザのクライアントクレデンシャルセット(例えば、クライアントクレデンシャルセット115)を含むデータオブジェクト(例えば、データオブジェクト114)を維持する(maintains)。
【0046】
ステップ540において、アプリケーションに関連づけられたイベント(例えば、イベント117)の発生に応答して、コンピュータシステムは、キー値と特定のユーザの指標(例えば、アカウント識別子)とを使用して、データオブジェクトからの特定のユーザのクライアントクレデンシャルセットにアクセスする。いくつかの実施形態において、特定のユーザの指標は、データオブジェクトが維持されるアカウントに対応する。したがって、クライアントクレデンシャルセットにアクセスすることは、そのアカウントのデータオブジェクトにアクセスすることを含んでもよい。イベントの発生は、ワークフロープロセスにおいてステップに到達することを含んでもよい。
【0047】
ステップ550において、コンピュータシステムは、宛先コンピュータシステムに、宛先コンピュータシステムで認証する要求(例えば、要求132)を送信する。要求は、クライアントクレデンシャルセットを含むことができる。様々な実施形態において、宛先コンピュータシステムで認証する要求を送信する前に、コンピュータシステムは、特定のユーザから、キー値からクライアントクレデンシャルセットへのマッピングを定義する情報を受け取る。データオブジェクトは、マッピングを指定することができる。いくつかの実施形態において、宛先コンピュータシステムで認証する要求を送信する前に、コンピュータシステムは、特定のユーザから、宛先コンピュータシステムに対応するユニフォームリソースロケータ(URL)を指定する情報を受け取る。したがって、認証する要求は、指定されたURLに基づいて送信されてもよい。
【0048】
ステップ560において、コンピュータシステムは、宛先コンピュータシステムから、コンピュータシステムが宛先コンピュータシステムで認証されたかどうかを示す応答(例えば、応答134)を受信する。
【0049】
いくつかの実施形態において、コンピュータシステムは、複数のユーザのうち異なるユーザに対してアプリケーションを利用可能にする指標を受け取る。コンピュータシステムは、異なるユーザのクライアントクレデンシャルセット(例えば、セット115B)を含む第2のデータオブジェクト(例えば、データオブジェクト114B)を維持することができる。アプリケーション及び異なるユーザに関連づけられたイベントの発生に応答して(例えば、イベントは、異なるユーザのアカウント210下でインストールされたアプリケーションに関連して発生する)、いくつかの実施形態において、コンピュータシステムは、キー値と異なるユーザの指標とを使用して、第2のデータオブジェクトからの異なるユーザのクライアントクレデンシャルセットにアクセスする。次いで、コンピュータシステムは、異なる(又は、同じ)宛先コンピュータシステムに、その宛先コンピュータシステムで認証する要求を送ることができる。要求は、異なるユーザのクライアントクレデンシャルセットを含むことができる。
【0050】
次に、図6を参照し、方法600のフロー図を示す。方法600は、宛先コンピュータシステム(例えば、宛先コンピュータシステム130)との間で認証するためにクライアントクレデンシャルセット(例えば、クライアントクレデンシャルセット115)にアクセスするコンピュータシステム110などのコンピュータシステムにより実行される方法の一実施形態である。方法500は、コンピュータシステムがアプリケーション(例えば、アプリケーション112)をインストールするためのデータストアへのユーザアクセスを提供するなどのさらなるステップを含んでもよい。
【0051】
方法600はステップ610で開始し、ステップ610において、コンピュータシステムは、複数のユーザがアクセス可能なサーバベースのプラットフォームを提供する。サーバベースのプラットフォームは、複数のユーザのうち1ユーザにより開発されたアプリケーション(例えば、アプリケーション112)が複数のユーザのうち他ユーザによりインストールされることを可能にし得る。
【0052】
ステップ620において、コンピュータシステムは、特定のユーザから、サーバベースのプラットフォームにおける特定のユーザのアカウント(例えば、アカウント210)に関連してアプリケーションをインストールする要求を受け取る。
【0053】
ステップ630において、特定のユーザのためにアプリケーションをインストールした後、コンピュータシステムは、キー値(例えば、キー125)への参照を指定する構成データ(例えば、構成データ124)を取り出す。特定のユーザのためにアプリケーションをインストールした後、様々な実施形態において、コンピュータシステムは、特定のユーザから、アプリケーションに対応するステップを追加するようにワークフロープロセス(例えば、ワークフロープロセス315)を修正する要求を受け取る。追加ステップを構成する要求を受け取ったことに応答して、コンピュータシステムは、構成データを取り出すことができる。
【0054】
ステップ640において、コンピュータシステムは、特定のユーザのアカウントに関連してデータオブジェクト(例えば、データオブジェクト114)を維持する。様々な実施形態において、データオブジェクトは、特定のユーザのクライアントクレデンシャルセット(例えば、クライアントクレデンシャルセット115)を含む。
【0055】
ステップ650において、アプリケーションに関連づけられたイベントの発生に応答して、コンピュータシステムは、データオブジェクトからの特定のユーザのクライアントクレデンシャルセットにアクセスする。特定のユーザのクライアントクレデンシャルセットは、キー値と特定のユーザの指標とを使用してアクセスされ得る。特定のユーザの指標は、データオブジェクトが維持されるアカウントに対応するアカウント識別子でもよい。様々な実施形態において、アプリケーションに関連づけられたイベントの発生に応答して、コンピュータシステムは、インストールされたアプリケーションを実行して、ステップ660及び670を開始する動作のセットを実行する。
【0056】
ステップ660において、コンピュータシステムは、宛先コンピュータシステムに、宛先コンピュータシステムで認証する要求(例えば、要求132)を送信する。様々な実施形態において、要求は、クライアントクレデンシャルセットを含む。様々な実施形態において、コンピュータシステムは、特定のユーザから、ユニフォームリソースロケータ(URL)とクライアントクレデンシャルセットとキー値及びクライアントクレデンシャルセット間のマッピングとを指定する認証情報を受け取る。URLは、宛先コンピュータシステムに実装された認証サービス(例えば、サービス410)に対応してもよく、データオブジェクトは、上記マッピングに対応してもよい。
【0057】
ステップ670において、コンピュータシステムは、宛先コンピュータシステムから、コンピュータシステムが宛先コンピュータシステムで認証されたかどうかを示す応答(例えば、応答134)を受信する。様々な実施形態において、宛先コンピュータシステムからの応答は、認証トークンを含む。したがって、コンピュータシステムは、アプリケーションのために宛先コンピュータシステムに対して認証されたアプリケーションプログラミングインターフェース(API)コールを行うことができる。このようなAPIコールは、認証トークンを含んでもよい。
【0058】
様々な実施形態において、コンピュータシステムは、異なるユーザから、サーバベースのプラットフォームにおける異なるユーザのアカウント(例えば、アカウント210B)に関連してアプリケーションをインストールする要求を受け取る。いくつかの実施形態において、コンピュータシステムは、異なるユーザのアカウントに関連して第2のデータオブジェクト(例えば、データオブジェクト114B)を維持する。このデータオブジェクトは、異なるユーザのクライアントクレデンシャルセットを含み得る。したがって、アプリケーションに関連づけられたイベントの発生に応答して、コンピュータシステムは、キー値と異なるユーザの指標とを使用して、第2のデータオブジェクトからの異なるユーザのクライアントクレデンシャルセットにアクセスすることができる。いくつかの実施形態において、コンピュータシステムは、宛先コンピュータシステムに、宛先コンピュータシステムで認証する要求を送信する。要求は、異なるユーザのクライアントクレデンシャルセットを含むことができる。
【0059】
次に、図7を参照し、方法700のフロー図を示す。方法700は、宛先コンピュータシステム(例えば、宛先コンピュータシステム130)との間で認証するためにクライアントクレデンシャルセット(例えば、クライアントクレデンシャルセット115)にアクセスするコンピュータシステム110などのコンピュータシステムにより実行される方法の一実施形態である。いくつかの実施形態において、方法700は、コンピュータシステムがアプリケーション(例えば、アプリケーション112)をインストールするためのデータストアへのユーザアクセスを提供するなどのさらなるステップを含む。
【0060】
方法700はステップ710で開始し、ステップ710において、コンピュータシステムは、特定のユーザから、コンピュータシステムにアプリケーションを登録する要求を受け取る。様々な実施形態において、アプリケーションの登録は、アプリケーションをワークフロープロセス(例えば、ワークフロープロセス315)において使用可能にさせることができる。様々な実施形態において、アプリケーションの実行は、コンピュータシステムに、宛先コンピュータシステムに対して1つ以上の要求(例えば、要求132)を送信させる。いくつかの実施形態において、コンピュータシステムは、複数のユーザのためのデータをそれぞれのテナント特有のストレージエリアに記憶するマルチテナントデータベースシステムを含む。
【0061】
ステップ720において、コンピュータシステムは、特定のユーザから、特定のワークフロープロセスにステップを追加する要求を受け取る。このステップは、登録されたアプリケーションに対応してもよく、特定のワークフロープロセスにおけるステップへの到達は、登録されたアプリケーションが実行される結果をもたらし得る。
【0062】
ステップ730において、特定のワークフロープロセスにステップを追加した後、コンピュータシステムは、異なるコンピュータシステム(例えば、周辺コンピュータシステム120)から構成データ(例えば、構成データ124)を取り出す。様々な実施形態において、構成データは、キー値(例えば、キー125)を指定する。キー値は、アプリケーションの開発者により指定されたグローバル一意識別子(globally unique identifier)でもよい。
【0063】
ステップ740において、コンピュータシステムは、特定のユーザから、宛先コンピュータシステムで認証するために使用可能なクライアントクレデンシャルセットへのキー値のマッピングを示すマッピング情報を受け取る。いくつかの実施形態において、マッピング情報は、特定のユーザの指標に関連して記憶され、例えば、データオブジェクト114に、又はデータオブジェクト114として記憶される。クライアントクレデンシャルセットは、クライアント識別子及びクライアントシークレットを含んでもよい。いくつかの実施形態において、クライアントクレデンシャルセットは、特定のユーザに対応するテナント特有のストレージエリアに記憶される。
【0064】
ステップ750において、ステップに到達し、キー値と(例えば、特定のユーザのアカウント下の)特定のユーザの指標とを使用してクライアントクレデンシャルセットにアクセスした後、コンピュータシステムは、宛先コンピュータシステムに、宛先コンピュータシステムで認証する要求(例えば、要求132)を送信する。様々な実施形態において、要求は、クライアントクレデンシャルセットを含む。いくつかの実施形態において、コンピュータシステムは、特定のユーザから、宛先コンピュータシステムのアドレスを示す情報を受け取る。したがって、宛先コンピュータシステムで認証する要求は、上記アドレスに送られてもよい。
【0065】
ステップ760において、コンピュータシステムは、宛先コンピュータシステムから、コンピュータシステムが宛先コンピュータシステムで認証されたかどうかを示す応答(例えば、応答134)を受信する。
【0066】
様々な実施形態において、コンピュータシステムは、異なるユーザから、アプリケーションに対応するステップを異なるワークフロープロセスに追加する要求を受け取る。コンピュータシステムは、いくつかの実施形態において、異なるユーザから、宛先コンピュータシステムで認証するために使用可能な、キー値の異なるクライアントクレデンシャルセットへのマッピングを示すマッピング情報を受け取る。異なるユーザからのマッピング情報は、異なるユーザの指標に関連して記憶することができる。ワークフロープロセスにおいてステップに到達した後、様々な実施形態において、コンピュータシステムは、キー値と異なるユーザの指標とを使用して、異なるクライアントクレデンシャルセットにアクセスする。コンピュータシステムは、いくつかの実施形態において、宛先コンピュータシステムに、宛先コンピュータシステムで認証する要求を送信し、この要求は、異なるクライアントクレデンシャルセットを含む。いくつかの実施形態において、コンピュータシステムは、宛先コンピュータシステムから、コンピュータシステムが宛先コンピュータシステムで認証されたかどうかを示す応答を受信する。
【0067】
[例示的なマルチテナントデータベースシステム]
図8は、マルチテナントデータベース及びキャッシュシステムが実装され得る一例示的な環境を示す。開示のマルチテナントシステムは例示目的に含まれるが、本開示の範囲を制限する意図はないことに留意する。他の実施形態において、様々なクライアント/サーバ環境、クラウドコンピューティング環境、クラスタ化コンピュータなどの非マルチテナント環境において同様の手法が実施されてもよい。図8に(及び、図9でより詳細に)示すように、1つ以上のユーザシステム812は、ネットワーク814を介してマルチテナントデータベースシステム(MTS)816と対話することができ、MTS816は、コンピュータシステム110でもよい。これらのユーザシステム812のユーザは、異なるキャパシティのユーザでもよく、特定のユーザシステム812のキャパシティは、現在のユーザにより決定されてもよい。例えば、販売員が特定のユーザシステム812を使用してMTS816と対話しているとき、そのユーザシステム812は、その販売員に割り振られたキャパシティを有し得る。しかしながら、管理者が同じユーザシステム812を使用してMTS816と対話している間、それは、その管理者に割り振られたキャパシティを有する。したがって、様々な実施形態において、システム816を実装するシステム(例えば、コンピュータシステム110)により維持される情報(例えば、データオブジェクト114)は、適切なキャパシティ(例えば、許可)を有するユーザによってのみ修正することができる。
【0068】
ネットワーク814は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の任意の適切な構成でもよい。大文字の「I」を有する「インターネット」としてしばしば参照されるネットワークのグローバルインターネットワークは、本明細書の例の多くで使用され、TCP/IP(トランスファーコントロールプロトコル及びインターネットプロトコル)ネットワークの一例である。しかしながら、本発明が使用し得るネットワークは様々な他のタイプのネットワークのうち任意のものであることを理解されたい。
【0069】
ユーザシステム812は、TCP/IPを使用してMTS816と通信し、より高いネットワークレベルでは、HTTP、FTP、AFS、WAPなどの他の一般的なインターネットプロトコルを通信するのに使用することができる。一例として、HTTPが使用される場合、ユーザシステム812は、MTS816のHTTPサーバからHTTPメッセージを送受信するために、一般に「ブラウザ」と呼ばれるHTTPクライアントを含んでもよい。そのようなサーバは、MTS816とネットワーク814との間の唯一のネットワークインターフェースとして実装されてもよいが、他の手法が同様に又は代わりに使用されてもよい。いくつかの実装において、MTS816とネットワーク814との間のインターフェースは、負荷共有機能を含み、例えば、負荷のバランスをとり、入ってくるHTTP要求を複数のサーバ上に均等に分配するラウンドロビンHTTP要求分配器などである。好ましくは、複数のサーバの各々は、少なくともサーバにアクセスしているユーザのために、MTSのデータへのアクセスを有する。
【0070】
いくつかの実施形態において、図8に示すシステムは、ウェブベースの顧客関係管理(customer relationship management、CRM)システムを実施する。例えば、いくつかの実施形態において、MTS816は、CRMソフトウェアアプリケーションを実装及び実行するとともに、ユーザシステム812との間で関連データ、コード、フォーム、ウェブページ、及び他の情報を提供し、関連データ、オブジェクト、及びウェブページコンテンツをデータベースシステムに記憶し、データベースシステムから取り出すことができるアプリケーションサーバを含む。マルチテナントシステムの実施形態において、テナントデータは、好ましくは、1つのテナントのデータが他のテナントのデータと別個に保持され、それにより、その1つのテナントが別のテナントのデータへのアクセスを当該データが明示的に共有されない限り有さないように構成される。
【0071】
MTS816の要素に関する1つの構成が図8に示されており、ネットワークインターフェース820と、テナントデータのストレージ822と、MTS816と可能性として複数のテナントがアクセス可能なシステムデータのストレージ824と、MTS816の様々な機能を実施するプログラムコード826と、MTSシステムプロセス及びテナント特有プロセスを実行し、例えばアプリケーションサービスの一部としてアプリケーションを実行するプロセス空間828が含まれる。
【0072】
図8に示すシステム内のいくつかの要素は、ここで詳細に説明する必要のない従来の周知の要素を含み得る。例えば、各ユーザシステム812は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、PDA、セルフォン、又は任意のWAP対応デバイス、又はインターネット又は他のネットワーク接続と直接又は間接的にインターフェースすることが可能な任意の他のコンピューティングデバイスでもよい。ユーザシステム812は、HTTPクライアント、例えば、Microsoft(登録商標)のInternet ExplorerTMブラウザ、Netscape(登録商標)のNavigatorTMブラウザ、Opera(登録商標)のブラウザ、又はセルフォン、PDA、又は他の無線デバイスの場合のWAP対応ブラウザなどのブラウジングプログラムを実行することができ、ユーザシステム812のユーザ(例えば、CRMシステムの加入者)が、ネットワーク814を通じてMTS816からそれに利用可能な情報及びページにアクセス、処理、閲覧できるようにする。各ユーザシステム812は、MTS816又は他のシステム若しくはサーバにより提供されるページ、フォーム、及び他の情報と関連してディスプレイモニタ画面、LCDディスプレイ等にブラウザにより提供されるグラフィカルユーザインターフェース(GUI)と対話する1つ以上のユーザインターフェースデバイス、例えば、キーボード、マウス、タッチスクリーン、ペンなどを含む。上で論じたように、本発明は、ネットワークの特定のグローバルインターネットワークを参照するインターネットでの使用に適している。しかしながら、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、非TCP/IPベースのネットワーク、任意のLAN又はWANなどの他のネットワークがインターネットの代わりに使用されてもよいことを理解されたい。
【0073】
いくつかの実施形態において、各ユーザシステム812及びそのコンポーネントは、1つ以上の処理要素上で実行可能なコンピュータコードを含むブラウザなどのアプリケーションを使用してオペレータにより構成可能である。同様に、いくつかの実施形態において、MTS816(及び、複数のMTSが存在する場合にはさらなるMTSインスタンス)及びそれらのコンポーネントは、1つ以上の処理要素上で実行可能なコンピュータコードを含むアプリケーションを使用してオペレータにより構成可能である。したがって、本明細書に記載の様々な動作は、非一時的コンピュータ読取可能媒体に記憶され、かつ1つ以上の処理要素により実行されるプログラム命令を実行することにより実行することができる。プログラム命令は、ハードディスクなどの不揮発性媒体に記憶されてもよく、あるいはROM又はRAMなどの周知である任意の他の揮発性又は不揮発性メモリ媒体又はデバイスに記憶されてもよく、あるいはコンパクトディスク(CD)媒体、デジタル多用途ディスク(DVD)媒体、フロッピーディスクなどのプログラムコードを記憶することができる任意の媒体で提供されてもよい。さらに、プログラムコード全体又はその一部は、ソフトウェアソースから例えばインターネットを通じて、又は別のサーバから周知のとおり、伝送及びダウンロードされてもよく、あるいは周知の任意の通信媒体及びプロトコル(例えば、TCP/IP、HTTP、HTTPS、イーサネットなど)を使用して、周知の任意の他の従来のネットワーク接続(例えば、エクストラネット、VPN、LANなど)を通じて伝送されてもよい。さらに、本発明の態様を実施するコンピュータコードは、サーバ又はサーバシステム上で実行可能な任意のプログラミング言語で、例えば、C、C+、HTML、Java(登録商標)、JavaScript(登録商標)、又はVBScriptなどの任意の他のスクリプト言語で実施可能であることが理解されよう。
【0074】
一実施形態によれば、各MTS816は、ユーザシステム812によるMTS816のテナントとしてのアクセスをサポートするために、ウェブページ、フォーム、アプリケーション、データ、及び/又はメディアコンテンツをユーザシステム812に提供するように構成される。したがって、この実施形態において、MTS816は、各テナントのデータを該データが共有されない限り別個に保持するセキュリティ機構を提供する。複数のMTSが使用される場合、それらは、互いにかなり近接して(例えば、単一の建物又はキャンパス内に位置するサーバファーム内に)位置してもよく、あるいは、それらは、互いから遠隔の場所に分散されてもよい(例えば、1つ以上のサーバがA市内に位置し、1つ以上のサーバがB市内に位置する)。本明細書で用いられるとき、MTSは、ローカルに、又は1つ以上の地理的位置にわたり分散された、1つ以上の論理的及び/又は物理的に接続されたサーバを含み得る。さらに、「サーバ」という用語は、処理ハードウェア及びプロセス空間を含むコンピュータシステムと、当該分野で周知の関連するストレージシステム及びデータベースアプリケーションを含む。「サーバシステム」及び「サーバ」は、本明細書でしばしば互換的に使用されることも理解されたい。同様に、本明細書に記載のデータベースは、単一のデータベース、分散データベース、分散データベースの集合、冗長オンライン又はオフラインバックアップ又は他の冗長性を有するデータベースなどとして実装することができ、分散データベース又はストレージネットワーク及び関連する処理インテリジェンスを含むことができる。
【0075】
図9は、MTS816及び様々な相互接続の例示的な実施形態をより詳細に示す。この例において、ネットワークインターフェースは、1つ以上のHTTPアプリケーションサーバ900として実装される。さらに、個々のテナントプロセス空間904を含むシステムプロセス空間902、システムデータベース906、テナントデータベース908、及びテナント管理プロセス空間910が示されている。テナントデータベース908は、アプリケーションサーバ900にわたり共有することができ、物理的配置又は論理的配置のいずれかであり得る個々のテナントストレージエリア912に分割することができる。各テナントストレージエリア912内で、各ユーザに対してユーザストレージ914を割り当てることができる。図示されていないが、MTS816のテナントにより提供される1つ以上のアプリケーション112が、アプリケーションサーバ900上で動作していてもよい。
【0076】
図示の実施形態において、各アプリケーションサーバ900は、キャッシュ918の少なくとも一部をさらに含む。いくつかの実施形態において、ウェブアプリケーションを利用するユーザシステム812は、データが(例えば、「put」操作を使用して)キャッシュ918に記憶されることを要求し、後に、データを再生成するのでなくデータを(例えば、「get」操作を使用して)取り出すことができる。いくつかの実施形態において、キャパシティ制限が、異なるユーザ/テナント/パーティションなどに割り当てられてもよく、キャッシュされたデータは、割り振られたキャパシティ未満に留まるように追い出されてもよい。いくつかの実施形態において、特定のテナントのためのキャッシュされたデータは、他のテナントから秘密に保持される。さらに、特定のテナント内のキャッシュされたデータの可視範囲は、構成可能でもよい。
【0077】
いくつかの実施形態において、キャッシュ918は、複数のアプリケーションサーバ900にわたり分けられる。いくつかの実施形態において、複数のインスタンスにわたり分割することにより、キャッシュ918内のデータをシステムメモリ空間に適合させることができ、これは、例えば、ディスクストレージにキャッシュ918のデータを記憶することに比べて応答時間を改善し得る。本明細書で用いられるとき、「インメモリキャッシュ」は、(例えば、従来のディスクストレージで典型的に必要とされるような)ストレージのページングを必要とせずにシステムメモリ空間にデータを記憶するキャッシュである(これは典型的には、データをRAMに記憶できることを意味する)。キャッシュ918は、単一のキャッシュが複数の異なるテナントエンティティに別個の仮想キャッシュを提供するために使用されるという意味で「マルチテナント」キャッシュでもよい。異なるテナントは、同じデータ構造を使用してデータを記憶してもよく、あるいは異なるテナントは、キャッシュ内に異なるデータ構造を有してもよい。様々な実施形態において、マルチテナントキャッシュは、テナント間のデータセキュリティを強制し、1つのテナントからのデータが他のテナントには利用できないようにする。したがって、本明細書で用いられるとき、マルチテナントキャッシュの文脈における「テナント」という用語は、異なるテナントが互いのデータにアクセスできないようにキャッシュエントリが別個に維持されるエンティティを指す。いくつかの実施形態において、テナントは、他のテナントがキャッシュを介してそれらのデータにアクセスすることを認可してもよく、一方、他の実施形態において、所与のテナントのデータが、マルチテナントキャッシュを介してそのテナントのみがアクセス可能でもよい(ただし、そのテナントは、後に、そのテナントの所望に応じて、キャッシュから取り出されたデータを共有してもよい)。
【0078】
さらに、各アプリケーションサーバ900は、異なるネットワーク接続を介して、データベースシステム、例えばシステムデータベース906及びテナントデータベース908に通信上結合され得ることを理解されたい。例えば、あるサーバ900は、ネットワーク814を介して結合されてもよく、別のサーバ900N-1は、直接ネットワークリンクを介して結合されてもよく、別のサーバ900は、さらに異なるネットワーク接続により結合されてもよい。トランスファーコントロールプロトコル及びインターネットプロトコル(TCP/IP)は、サーバ900とデータベースシステムとの間で通信するための好ましいプロトコルであるが、使用されるネットワーク相互接続に依存して、システムを最適化するために他のトランスポートプロトコルが使用されてもよいことが当業者に明らかであろう。
【0079】
好ましい態様において、各アプリケーションサーバ900は、任意のユーザ/組織に対する要求を取り扱うことができる。任意の理由で任意の時点にサーバプールからアプリケーションサーバを追加及び除去できることが望ましいため、好ましくは、特定のアプリケーションサーバ900に対するユーザ及び/又は組織のサーバアフィニティは存在しない。したがって、一実施形態において、ロードバランシング機能(例えば、F5 Big‐IPロードバランサ)を実装するインターフェースシステム(図示せず)は、サーバ900とユーザシステム812との間で通信上結合され、サーバ900への要求を分配する。一態様において、ロードバランサは、最小接続アルゴリズムを使用して、ユーザ要求をサーバ900にルーティングする。ラウンドロビン及び観測応答時間などのロードバランシングアルゴリズムの他の例がさらに使用されてもよい。例えば、特定の態様において、同じユーザからの3つの連続した要求が3つの異なるサーバに当たることがあり、異なるユーザからの3つの要求が同じサーバに当たることがある。このようにして、MTS816はマルチテナントであり、MTS816は、異なるユーザ及び組織にわたる異なるオブジェクト、データ、及びアプリケーションの記憶を取り扱う。
【0080】
ストレージの一例として、1つのテナントが、各販売員がMTS816を使用してその販売プロセスを管理する販売陣(sales force)を採用する会社であり得る。したがって、ユーザは、全てがそのユーザの個人的販売プロセスに適用可能なコンタクトデータ、リードデータ、顧客フォローアップデータ、パフォーマンスデータ、目標及び進捗データ等を(例えば、テナントデータベース908に)維持することができる。いくつかのMTS実施形態において、アクセス、閲覧、修正、報告、送信、計算等すべきこのデータ及びアプリケーションの全てが、ネットワークアクセス以上のものを有さないユーザシステムにより維持及びアクセスできるため、ユーザは、多くの異なるユーザシステムのいずれかから自身の販売努力及びサイクルを管理することができる。例えば、販売員が顧客を訪問し、顧客がそのロビーにインターネットアクセスを有する場合、販売員は、顧客がロビーに到着するのを待つ間、その顧客に関する重要なアップデートを得ることができる。
【0081】
各ユーザの販売データは、各ユーザの雇用者にかかわらず他のユーザの販売データとは別個であり得るが、いくつかのデータは、テナントである所与の組織に対する複数の販売員又は全販売員により共有され又はアクセス可能な組織全体のデータでもよい。したがって、MTS816により管理される、テナントレベルで割り振られるいくつかのデータ構造があり得、一方、他のデータ構造はユーザレベルで管理される。MTSは、あり得る競合者を含む複数のテナントをサポートする可能性があるため、MTSは、データ、アプリケーション、及びアプリケーション使用を別個に保つセキュリティプロトコルを有するべきである。さらに、多くのテナントが、その独自のシステムを維持するのでなくMTSへのアクセスを選択する可能性があるため、セキュリティ、冗長性、アップタイム、及びバックアップは、さらなる重要機能であり、MTSで実装される必要がある。
【0082】
ユーザ特有のデータ及びテナント特有のデータに追加で、MTS816は、複数のテナントにより使用可能なシステムレベルのデータをさらに維持してもよい。このようなシステムレベルのデータには、テナント間で共有可能な産業レポート、ニュース、投稿などを含んでもよい。
【0083】
特定の態様において、クライアントシステム812は、アプリケーションサーバ900と通信してMTS816からのシステムレベル及びテナントレベルのデータを要求及び更新し、これは、データベースシステム906及び/又はデータベースシステム908への1つ以上のクエリを必要としてもよい。したがって、サーバ900は、MTS816のプロバイダにより供給されたアプリケーション112を実行して、1つ以上の特定の動作を実行することができる。いくつかの実施態様において、MTS816は、所望の情報にアクセスするように設計された1つ以上のSQL文(SQLクエリ)を自動的に生成する。
【0084】
各データベースは、一般に、予め定義されたカテゴリに適合されたデータを含む論理テーブルのセットとして見ることができる。各テーブルは通常、物理的な列に論理的に配置された1つ以上のデータカテゴリを含む。テーブルの各行は通常、列により定義された各カテゴリのデータのインスタンスを含む。例えば、CRMデータベースは、名前、住所、電話番号、ファックス番号などの基本コンタクト情報のための列を有する顧客を記述するテーブルを含み得る。別のテーブルが、顧客、プロダクト、販売価格、日付などの情報の列を含む購入注文を記述してもよい。
【0085】
次に、図10を参照し、コンピュータシステム110、周辺コンピュータシステム120、及び/又は宛先コンピュータシステム130を実装することができる一例示的なコンピュータシステム1000のブロック図を示す。コンピュータシステム1000は、インターコネクト1060(例えば、システムバス)を介してシステムメモリ1020及びI/Oインターフェース1040に結合されるプロセッササブシステム1080を含む。I/Oインターフェース1040は、1つ以上のI/Oデバイス1050に結合される。コンピュータシステム1000は、これらに限られないがサーバシステム、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップコンピュータ又はノートブックコンピュータ、メインフレームコンピュータシステム、タブレットコンピュータ、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、モバイルフォン、音楽プレーヤ、又はパーソナルデータアシスタント(PDA)などのコンシューマデバイスを含む様々なタイプのデバイスのうち任意のものでもよい。図10には、便宜上、単一のコンピュータシステム1000が示されているが、システム1000は、一緒に動作する2つ以上のコンピュータシステムとして実装されてもよい。
【0086】
プロセッササブシステム1080は、1つ以上のプロセッサ又は処理ユニットを含んでもよい。コンピュータシステム1000の様々な実施形態において、プロセッササブシステム1080の複数のインスタンスが、インターコネクト1060に結合されてもよい。様々な実施形態において、プロセッササブシステム1080(又は、1080内の各プロセッサユニット)は、キャッシュ又は他の形態のオンボードメモリを含んでもよい。
【0087】
システムメモリ1020は、システム1000に本明細書に記載の様々な動作を実行させるためにプロセッササブシステム1080により実行可能なプログラム命令を記憶するのに使用可能である。システムメモリ1020は、ハードディスクストレージ、フロッピーディスクストレージ、リムーバブルディスクストレージ、フラッシュメモリ、ランダムアクセスメモリ(RAM-SRAM、EDO RAM、SDRAM、DDR SDRAM、RAMBUS RAM等)、読取専用メモリ(PROM、EEPROM等)などの、異なる物理メモリ媒体を使用して実装することができる。コンピュータシステム1000内のメモリは、メモリ1020などの一次記憶装置に限定されない。むしろ、コンピュータシステム1000は、プロセッササブシステム1080内のキャッシュメモリ及びI/Oデバイス1050上の二次記憶装置(例えば、ハードドライブ、ストレージアレイ等)などの、他の形態の記憶装置をさらに含んでもよい。いくつかの実施形態において、これらの他の形態の記憶装置もまた、プロセッササブシステム1080により実行可能なプログラム命令を記憶してもよい。上述のアプリケーション112は、システムメモリ1020内に含まれてもよい。
【0088】
I/Oインターフェース1040は、様々な実施形態による、他のデバイスに結合し、他のデバイスと通信するように構成された様々なタイプのインターフェースのうち任意のものでもよい。一実施形態において、I/Oインターフェース1040は、フロントサイドから1つ以上のバックサイドバスへのブリッジチップ(例えば、サウスブリッジ)である。I/Oインターフェース1040は、1つ以上の対応するバス又は他のインターフェースを介して1つ以上のI/Oデバイス1050に結合されてもよい。I/Oデバイス1050の例には、記憶デバイス(ハードドライブ、光学ドライブ、リムーバブルフラッシュドライブ、ストレージアレイ、SAN、又はそれらに関連づけられたコントローラ)、ネットワークインターフェースデバイス(例えば、ローカル又はワイドエリアネットワークへ)、又は他のデバイス(例えば、グラフィックス、ユーザインターフェースデバイス等)が含まれる。一実施形態において、コンピュータシステム1000は、ネットワークインターフェースデバイス1050を介してネットワークに結合される(例えば、WiFi、Bluetooth(登録商標)、イーサネットなどを通じて通信するように構成される)。
【0089】
本出願の主題事項の実現は、これらに限られないが以下の例1~20を含む。
[例1]
コンピュータシステムにより、複数のユーザがアクセス可能なサーバベースのプラットフォームを提供することであり、上記サーバベースのプラットフォームは、上記複数のユーザのうち1ユーザにより開発されたアプリケーションが上記複数のユーザのうち他ユーザにより利用されることを可能にする、ことと、
上記複数のユーザのうち特定の1ユーザに対してアプリケーションを利用可能にする指標を受け取った後、上記コンピュータシステムが、異なるコンピュータシステムから構成データを取り出すことであり、上記構成データはキー値への参照を指定する、ことと、
上記コンピュータシステムにより、上記特定のユーザのクライアントクレデンシャルセットを含むデータオブジェクトを維持することと、
上記アプリケーションに関連づけられたイベントの発生に応答して、上記コンピュータシステムが、
上記データオブジェクトからの上記特定のユーザの上記クライアントクレデンシャルセットにアクセスすることであり、上記特定のユーザの上記クライアントクレデンシャルセットは、上記キー値と上記特定のユーザの指標とを使用してアクセスされる、ことと、
宛先コンピュータシステムに、上記宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記クライアントクレデンシャルセットを含む、ことと、
上記宛先コンピュータシステムから、上記コンピュータシステムが上記宛先コンピュータシステムで認証されたかどうかを示す応答を受信することと、
を含む方法。
[例2]
上記コンピュータシステムにより、上記複数のユーザのうち異なる1ユーザに対して上記アプリケーションを利用可能にする指標を受け取ることと、
上記コンピュータシステムにより、上記異なるユーザのクライアントクレデンシャルセットを含む第2のデータオブジェクトを維持することと、
上記アプリケーション及び上記異なるユーザに関連づけられたイベントの発生に応答して、上記コンピュータシステムが、
上記第2のデータオブジェクトからの上記異なるユーザの上記クライアントクレデンシャルセットにアクセスすることであり、上記異なるユーザの上記クライアントクレデンシャルセットは、上記キー値と上記異なるユーザの指標とを使用してアクセスされる、ことと、
異なる宛先コンピュータシステムに、上記異なる宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記異なるユーザの上記クライアントクレデンシャルセットを含む、ことと、
をさらに含む例1に記載の方法。
[例3]
上記宛先コンピュータシステムで認証する上記要求を送信する前に、上記コンピュータシステムが、上記特定のユーザから、上記キー値から上記クライアントクレデンシャルセットへのマッピングを定義する情報を受け取ること
をさらに含む例1に記載の方法。
[例4]
上記特定のユーザの上記指標は、上記データオブジェクトが維持されるアカウントに対応し、上記クライアントクレデンシャルセットにアクセスすることは、上記アカウントの上記データオブジェクトにアクセスすることを含む、例1に記載の方法。
[例5]
上記アプリケーションを利用可能にすることは、上記特定のユーザのアカウント下で上記アプリケーションをインストールすることと、上記特定のユーザが上記アプリケーションに対応するステップをワークフロープロセスに追加できるようにすることを含む、例1に記載の方法。
[例6]
上記イベントの発生は、上記ワークフロープロセスにおいて上記ステップに到達することを含む、例5に記載の方法。
[例7]
上記宛先コンピュータシステムで認証する上記要求を送信する前に、上記コンピュータシステムが、上記特定のユーザから、上記宛先コンピュータシステムに対応するユニフォームリソースロケータ(URL)を指定する情報を受け取ることであり、上記認証する要求は上記指定されたURLに基づいて送信される、こと
をさらに含む例1に記載の方法。
[例8]
コンピュータシステムに動作を実行させることができるプログラム命令を記憶した非一時的コンピュータ読取可能媒体であって、上記動作は、
複数のユーザがアクセス可能なサーバベースのプラットフォームを提供することであり、上記サーバベースのプラットフォームは、上記複数のユーザのうち1ユーザにより開発されたアプリケーションが上記複数のユーザのうち他ユーザによりインストールされることを可能にする、ことと、
特定のユーザから、上記サーバベースのプラットフォームにおける上記特定のユーザのアカウントに関連して上記アプリケーションをインストールする要求を受け取ることと、
上記特定のユーザのために上記アプリケーションをインストールした後、キー値への参照を指定する構成データを取り出すことと、
上記特定のユーザの上記アカウントに関連してデータオブジェクトを維持することであり、上記データオブジェクトは上記特定のユーザのクライアントクレデンシャルセットを含む、ことと、
上記アプリケーションに関連づけられたイベントの発生に応答して、
上記データオブジェクトからの上記特定のユーザの上記クライアントクレデンシャルセットにアクセスすることであり、上記特定のユーザの上記クライアントクレデンシャルセットは、上記キー値と上記特定のユーザの指標とを使用してアクセスされる、ことと、
宛先コンピュータシステムに、上記宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記クライアントクレデンシャルセットを含む、ことと、
上記宛先コンピュータシステムから、上記コンピュータシステムが上記宛先コンピュータシステムで認証されたかどうかを示す応答を受信することと、
を含む、非一時的コンピュータ読取可能媒体。
[例9]
上記動作は、
異なるユーザから、上記サーバベースのプラットフォームにおける上記異なるユーザのアカウントに関連して上記アプリケーションをインストールする要求を受け取ることと、
上記異なるユーザの上記アカウントに関連して第2のデータオブジェクトを維持することであり、上記データオブジェクトは上記異なるユーザのクライアントクレデンシャルセットを含む、ことと、
上記アプリケーションに関連づけられたイベントの発生に応答して、
上記第2のデータオブジェクトからの上記異なるユーザの上記クライアントクレデンシャルセットにアクセスすることであり、上記異なるユーザの上記クライアントクレデンシャルセットは、上記キー値と上記異なるユーザの指標とを使用してアクセスされる、ことと、
上記宛先コンピュータシステムに、上記宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記異なるユーザの上記クライアントクレデンシャルセットを含む、ことと、
をさらに含む、例8に記載の非一時的コンピュータ読取可能媒体。
[例10]
上記動作は、
上記特定のユーザのために上記アプリケーションをインストールした後、上記特定のユーザから、上記アプリケーションに対応するステップを追加するようにワークフロープロセスを修正する要求を受け取ることと、
上記追加されたステップを構成する要求を受け取ったことに応答して、上記構成データの取り出しを実行することと、
をさらに含む、例8に記載の非一時的コンピュータ読取可能媒体。
[例11]
上記動作は、
上記特定のユーザから、ユニフォームリソースロケータ(URL)と上記クライアントクレデンシャルセットと上記キー値及び上記クライアントクレデンシャルセット間のマッピングとを指定する認証情報を受け取ることであり、上記URLは、上記宛先コンピュータシステムに実装された認証サービスに対応し、上記データオブジェクトは、上記マッピングに対応する、こと
をさらに含む、例8に記載の非一時的コンピュータ読取可能媒体。
[例12]
上記宛先コンピュータシステムからの上記応答は認証トークンを含み、上記動作は、
上記アプリケーションのために上記宛先コンピュータシステムに対して認証されたアプリケーションプログラミングインターフェース(API)コールを行うことであり、上記APIコールは上記認証トークンを含む、こと
をさらに含む、例8に記載の非一時的コンピュータ読取可能媒体。
[例13]
上記アプリケーションに関連づけられた上記イベントの発生に応答して、上記インストールされたアプリケーションを実行して、上記アクセスすることと上記送信することと上記受信することとを開始する動作のセットを実行する、例8に記載の非一時的コンピュータ読取可能媒体。
[例14]
上記特定のユーザの上記指標は、上記データオブジェクトが維持される上記アカウントに対応するアカウント識別子である、例8に記載の非一時的コンピュータ読取可能媒体。
[例15]
コンピュータシステムにより、特定のユーザから、上記コンピュータシステムにアプリケーションを登録する要求を受け取ることであり、上記アプリケーションの登録は、上記アプリケーションをワークフロープロセスにおいて使用可能にさせ、上記アプリケーションの実行は、上記コンピュータシステムに、宛先コンピュータシステムに対して1つ以上の要求を送信させる、ことと、
上記コンピュータシステムにより、上記特定のユーザから、特定のワークフロープロセスにステップを追加する要求を受け取ることであり、上記ステップは、上記登録されたアプリケーションに対応し、上記特定のワークフロープロセスにおける上記ステップへの到達は、上記登録されたアプリケーションが実行される結果をもたらす、ことと、
上記特定のワークフロープロセスに上記ステップを追加した後、上記コンピュータシステムが、異なるコンピュータシステムから構成データを取り出すことであり、上記構成データはキー値を指定する、ことと、
上記コンピュータシステムにより、上記特定のユーザから、上記宛先コンピュータシステムで認証するために使用可能なクライアントクレデンシャルセットへの上記キー値のマッピングを示すマッピング情報を受け取ることであり、上記マッピング情報は、上記特定のユーザの指標に関連して記憶される、ことと、
上記ステップに到達し、上記キー値と上記特定のユーザの上記指標とを使用して上記クライアントクレデンシャルセットにアクセスした後、上記コンピュータシステムが、
上記宛先コンピュータシステムに、上記宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記クライアントクレデンシャルセットを含む、ことと、
上記宛先コンピュータシステムから、上記コンピュータシステムが上記宛先コンピュータシステムで認証されたかどうかを示す応答を受信することと、
を含む方法。
[例16]
上記コンピュータシステムにより、異なるユーザから、上記アプリケーションに対応するステップを異なるワークフロープロセスに追加する要求を受け取ることと、
上記コンピュータシステムにより、上記異なるユーザから、上記宛先コンピュータシステムで認証するために使用可能な異なるクライアントクレデンシャルセットへの上記キー値のマッピングを示すマッピング情報を受け取ることであり、上記異なるユーザからの上記マッピング情報は、上記異なるユーザの指標に関連して記憶される、ことと、
上記異なるワークフロープロセスに追加された上記ステップに到達した後、上記コンピュータシステムが、
上記キー値と上記異なるユーザの上記指標とを使用して上記異なるクライアントクレデンシャルセットにアクセスすることと、
上記宛先コンピュータシステムに、上記宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記異なるクライアントクレデンシャルセットを含む、ことと、
上記宛先コンピュータシステムから、上記コンピュータシステムが上記宛先コンピュータシステムで認証されたかどうかを示す応答を受信することと、
をさらに含む例15に記載の方法。
[例17]
上記コンピュータシステムにより、上記特定のユーザから、上記宛先コンピュータシステムのアドレスを示す情報を受け取ることであり、上記宛先コンピュータシステムで認証する上記要求は上記アドレスに送られる、こと
をさらに含む例15に記載の方法。
[例18]
上記クライアントクレデンシャルセットは、クライアント識別子及びクライアントシークレットを含む、例15に記載の方法。
[例19]
上記キー値は、上記アプリケーションの開発者により指定されたグローバル一意識別子である、例15に記載の方法。
[例20]
上記コンピュータシステムは、複数のユーザのデータをそれぞれのテナント特有のストレージエリアに記憶するマルチテナントデータベースシステムを含み、上記クライアントクレデンシャルセットは、上記特定のユーザに対応するテナント特有のストレージエリアに記憶される、例15に記載の方法。

***
【0090】
特定の実施形態が上述されたが、これらの実施形態は、特定の特徴に関して単一の実施形態のみが記載されている場合でも、本開示の範囲を制限する意図はない。本開示において提供される特徴の例は、別段示されない限り、限定的でなく例示的であることを意図している。上記の説明は、本開示の利益を有する当業者に明らかなような代替、修正、及び同等物をカバーすることを意図している。
【0091】
本開示の範囲は、本明細書に(明示的又は暗黙的のいずれかで)開示されている任意の特徴若しくは特徴の組み合わせ又はその任意の一般化を、それが本明細書に記載されている問題のいずれか又は全てを緩和するか否かにかかわらず含む。したがって、新しい請求項が、本出願(又は、その優先権を主張する出願)の手続き中に任意のそのような特徴組み合わせへまとめられてもよい。特に、別記の特許請求の範囲を参照し、従属請求項の特徴は、独立請求項の特徴と組み合わせることができ、それぞれの独立請求項の特徴は、別記の特許請求の範囲に列挙された特定の組み合わせのみでなく、任意の適切な方法で組み合わせることができる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10