(57)【要約】  コンピュータシステムがクライアントクレデンシャルセットにアクセスして宛先コンピュータシステムとの間で認証することに関する手法について開示する。コンピュータシステムは、特定のユーザに対してアプリケーションを利用可能にする指標を受け取った後、キー値への参照を指定する構成データを取り出すことができる。コンピュータシステムは、特定のユーザのクライアントクレデンシャルセットを含むデータオブジェクトを維持することができる。アプリケーションに関連づけられたイベントの発生に応答して、コンピュータシステムは、キー値と特定のユーザの指標を使用して、データオブジェクトからの特定のユーザのクライアントクレデンシャルセットにアクセスすることができる。コンピュータシステムは、次いで、宛先コンピュータシステムに、宛先コンピュータシステムでの認証のためにクライアントクレデンシャルセットを含む要求を送信し、コンピュータシステムが認証されたかどうかを示す応答を受信することができる。
2021530043.tif 000002
【特許請求の範囲】
【請求項１】
複数のユーザがアクセス可能なサーバベースのプラットフォームを提供することであり、前記サーバベースのプラットフォームは、前記複数のユーザのうち１ユーザにより開発されたアプリケーションが前記複数のユーザのうち他ユーザにより利用されることを可能にする、ことと、
前記複数のユーザのうち特定の１ユーザに対してアプリケーションを利用可能にする指標を受け取った後、異なるコンピュータシステムから構成データを取り出すことであり、前記構成データはキー値への参照を指定する、ことと、
前記特定のユーザのクライアントクレデンシャルセットを含むデータオブジェクトを維持することと、
前記アプリケーションに関連づけられたイベントの発生に応答して、
前記データオブジェクトからの前記特定のユーザの前記クライアントクレデンシャルセットにアクセスすることであり、前記特定のユーザの前記クライアントクレデンシャルセットは、前記キー値と前記特定のユーザの指標とを使用してアクセスされる、ことと、
宛先コンピュータシステムに、前記宛先コンピュータシステムで認証する要求を送信することであり、前記要求は前記クライアントクレデンシャルセットを含む、ことと、
前記宛先コンピュータシステムから、前記コンピュータシステムが前記宛先コンピュータシステムで認証されたかどうかを示す応答を受信することと、
を含む方法。
【請求項２】
前記複数のユーザのうち異なる１ユーザに対して前記アプリケーションを利用可能にする指標を受け取ることと、
前記異なるユーザのクライアントクレデンシャルセットを含む第２のデータオブジェクトを維持することと、
前記アプリケーション及び前記異なるユーザに関連づけられたイベントの発生に応答して、
前記第２のデータオブジェクトからの前記異なるユーザの前記クライアントクレデンシャルセットにアクセスすることであり、前記異なるユーザの前記クライアントクレデンシャルセットは、前記キー値と前記異なるユーザの指標とを使用してアクセスされる、ことと、
異なる宛先コンピュータシステムに、前記異なる宛先コンピュータシステムで認証する第２の要求を送信することであり、前記第２の要求は前記異なるユーザの前記クライアントクレデンシャルセットを含む、ことと、
をさらに含む請求項１に記載の方法。
【請求項３】
前記宛先コンピュータシステムで認証する前記要求を送信する前に、前記特定のユーザから、前記キー値から前記クライアントクレデンシャルセットへのマッピングを定義する情報を受け取ること
をさらに含む請求項１又は２に記載の方法。
【請求項４】
前記特定のユーザの前記指標は、前記データオブジェクトが維持されるアカウントに対応し、前記クライアントクレデンシャルセットにアクセスすることは、前記アカウントの前記データオブジェクトにアクセスすることを含む、請求項１乃至３のうちいずれか１項に記載の方法。
【請求項５】
前記アプリケーションを利用可能にすることは、前記特定のユーザのアカウント下で前記アプリケーションをインストールすることと、前記特定のユーザが前記アプリケーションに対応するステップをワークフロープロセスに追加できるようにすることを含む、請求項１乃至４のうちいずれか１項に記載の方法。
【請求項６】
前記イベントの発生は、前記ワークフロープロセスにおいて前記ステップに到達することを含む、請求項５に記載の方法。
【請求項７】
前記宛先コンピュータシステムで認証する前記要求を送信する前に、前記特定のユーザから、前記宛先コンピュータシステムに対応するユニフォームリソースロケータ（ＵＲＬ）を指定する情報を受け取ることであり、前記認証する要求は前記指定されたＵＲＬに基づいて送信される、こと
をさらに含む請求項１乃至６のうちいずれか１項に記載の方法。
【請求項８】
前記アプリケーションを利用可能にする要求は、前記サーバベースのプラットフォームにおける前記特定のユーザのアカウントに関連して前記アプリケーションをインストールする要求であり、前記データオブジェクトは、前記特定のユーザの前記アカウントに関連して維持される、請求項１に記載の方法。
【請求項９】
前記宛先コンピュータシステムからの前記応答は認証トークンを含み、当該方法は、
前記アプリケーションのために前記宛先コンピュータシステムに対して認証されたアプリケーションプログラミングインターフェース（ＡＰＩ）コールを行うことであり、前記ＡＰＩコールは前記認証トークンを含む、こと
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記アプリケーションに関連づけられた前記イベントの発生に応答して、前記インストールされたアプリケーションを実行して、前記アクセスすることと前記送信することと前記受信することとを開始する動作のセットを実行する、請求項８又は９に記載の方法。
【請求項１１】
前記サーバベースのプラットフォームは、前記複数のユーザのデータをそれぞれのテナント特有のストレージエリアに記憶するマルチテナントデータベースシステムを含み、前記特定のユーザの前記クライアントクレデンシャルセットは、前記特定のユーザに対応するテナント特有のストレージエリアに記憶される、請求項１に記載の方法。
【請求項１２】
前記クライアントクレデンシャルセットは、クライアント識別子及びクライアントシークレットを含む、請求項１に記載の方法。
【請求項１３】
前記キー値は、前記アプリケーションの開発者により指定されたグローバル一意識別子である、請求項１に記載の方法。
【請求項１４】
コンピュータシステムに請求項１乃至１３のうち１項に記載の方法のステップを含む動作を実行させることができるプログラム命令を記憶した非一時的コンピュータ読取可能媒体。
【請求項１５】
少なくとも１つのプロセッサと、プログラム命令を記憶したメモリと、を備えたシステムであって、前記プログラム命令は、当該システムに請求項１乃至１３のうち１項に記載の方法のステップを含む動作を実行させるために前記少なくとも１つのプロセッサにより実行可能である、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にコンピュータシステムに関し、より具体的には、宛先コンピュータシステムで認証するためのクライアントクレデンシャルセットのアクセスに関する。
【背景技術】
【０００２】
クラウドベースのプラットフォームなどのコンピュータシステムは、しばしば、それらのシステムによりユーザのために記憶されたデータと対話するアプリケーションを実行する。これらのコンピュータシステムのプロバイダでないユーザは、コンピュータシステム上で実行するためにダウンロード及びインストールされるアプリケーションを開発することがある。これらのアプリケーションは、コンピュータシステムがアクセス可能なデータベースからユーザのデータを取り出し、次いでそのデータに対して動作を実行するように設計され得る。しかしながら、いくつかの場合、ユーザは、これらのコンピュータシステム上で実行されているアプリケーションによりサポートされていない特定の方法で自分のデータを取り扱いたい場合がある。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、クライアントクレデンシャルセットにアクセスするシステムの例示的な要素を示すブロック図である。
【図２】いくつかの実施形態による、複数のクライアントクレデンシャルセットにキーをマッピングする例示的なアプローチを示すブロック図である。
【図３】いくつかの実施形態による、キーを使用してクライアントクレデンシャルセットにアクセスするコンピュータシステムの例示的な要素を示すブロック図である。
【図４】いくつかの実施形態による、認証サービスを実施する宛先コンピュータシステムの例示的な要素を示すブロック図である。
【図５】いくつかの実施形態による、キーを使用したクレデンシャルのアクセスに関する例示的な方法を示すフロー図である。
【図６】いくつかの実施形態による、キーを使用したクレデンシャルのアクセスに関する例示的な方法を示すフロー図である。
【図７】いくつかの実施形態による、キーを使用したクレデンシャルのアクセスに関する例示的な方法を示すフロー図である。
【図８】いくつかの実施形態による、マルチテナントデータベースシステムの例示的な環境を示すブロック図である。
【図９】いくつかの実施形態による、マルチテナントデータベースシステムの例示的な環境を示すブロック図である。
【図１０】いくつかの実施形態による、一例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【０００４】
本開示は、「１つの実施形態」又は「一実施形態」への参照を含む。「１つの実施形態において」又は「一実施形態において」というフレーズの出現は、必ずしも同じ実施形態を参照するものではない。特定の特徴、構造、又は特徴を、本開示と矛盾しない任意の適切な方法で組み合わせることができる。
【０００５】
本開示の範囲内において、異なるエンティティ（これらは様々に「ユニット」、「回路」、他のコンポーネント等と呼ばれることがある）は、１つ以上のタスク又は動作を実行するように「構成されている」として記載又は請求されることがある。この定式化−［１つ又は複数のタスクを実行する］ように構成された［エンティティ］−は、本明細書において、構造（すなわち、電子回路などの物理的なもの）を参照するために用いられる。より具体的には、この定式化は、この構造が動作の間に１つ以上のタスクを実行するようにアレンジされていることを示すために用いられる。構造は、該構造が現在動かされていないとしても、何らかのあるタスクを実行するように構成されていると言うことができる。「ネットワークを通じて通信するように構成されたネットワークインターフェース」は、例えば、集積回路であって、問題となっている該集積回路が現在使用されていない（例えば、それに電源が接続されていない）としても動作中にこの機能を実行する回路を有する集積回路をカバーすることを意図している。したがって、何らかのタスクを実行する「ように構成されている」と説明又は記載されたエンティティは、タスクを実施するために実行可能なプログラム命令を記憶するデバイス、回路、メモリなどの物理的なものを指す。このフレーズは、本明細書では、無形のものを指すのには用いられない。したがって、構築する「ように構成される」は、本明細書では、アプリケーションプログラミングインターフェース（ＡＰＩ）などのソフトウェアエンティティを指すことには用いられない。
【０００６】
「ように構成される」という用語は、「ように構成可能である」を意味する意図はない。例えば、プログラムされていないＦＰＧＡは、特定の機能を実行する「ように構成されている」とはみなされないが、その機能を実行する「ように構成可能で」あり得、プログラミングの後に機能を実行する「ように構成され」得る。
【０００７】
本明細書で用いられるとき、「第１の」、「第２の」等の用語は、それらが先行する名詞のラベルとして用いられ、具体的に示されない限り、何らかのタイプの順序付け（例えば、空間的、時間的、論理的など）を暗に示すものではない。例えば、複数の部分を有するワンタイムパスワードにおいて、「第１の」部分及び「第２の」部分という用語を使用して、ワンタイムパスワードの任意の部分を参照することができる。言い換えれば、第１の部分と第２の部分は、ワンタイムパスワードのうち最初の２つの部分に限定されない。
【０００８】
本明細書で用いられるとき、用語「に基づく」は、決定に影響を及ぼす１つ以上の要因を記述するために用いられる。この用語は、さらなる要因が決定に影響を及ぼし得る可能性を除外するものではない。すなわち、決定は、専ら指定された要因に基づく可能性があり、あるいは指定された要因と他の指定されていない要因とに基づく可能性がある。「Ｂに基づいてＡを決定する」というフレーズについて考える。このフレーズは、ＢがＡを決定するために使用されること、又はＡの決定に影響を及ぼすことを規定している。この用語は、Ａの決定がＣなどの何らかの他の要因にさらに基づいてもよいことを除外するものではない。このフレーズは、Ａが専らＢに基づいて決定される実施形態をカバーすることも意図している。したがって、本明細書で用いられるとき、「に基づく」というフレーズは、「に少なくとも部分的に基づく」というフレーズと同義である。
【０００９】
特定のコンピュータシステム上で実行されるアプリケーションは特定のタスクを実行することができない可能性があるため、データをリモートに配置された別のコンピュータシステムにプッシュする（又は、タスクが別のコンピュータシステムにより実行されることを要求する）ことが望ましい可能性があり、この別のコンピュータシステムは「宛先コンピュータシステム」と呼ぶことができる。データを宛先コンピュータシステムにプッシュするために、アプリケーションは最初、（所与のユーザのために）宛先コンピュータシステムとの間で、ユーザに属するクライアントクレデンシャルを提供することにより認証する必要があり得る。いくつかの場合、コンピュータシステムは、アプリケーションにより指定されたクライアントクレデンシャルを使用して、アプリケーションのために宛先コンピュータシステムで認証することができる。しかしながら、このようなアプリケーションは、異なるユーザにわたる複数の一意のクライアントクレデンシャルをサポートするように、又は、コンピュータシステムに、アプリケーションを使用するユーザに依存して異なる宛先コンピュータシステムへの要求を発行させるように設計されていない可能性がある。したがって、アプリケーションをコンピュータシステムの異なるユーザによりインストール可能にし、ユーザに依存して複数のクライアントクレデンシャルへのアクセスを容易にできることが望ましい可能性がある。
【００１０】
本開示は、それぞれの宛先コンピュータシステムで認証するために使用可能な１つ以上のクライアントクレデンシャルセットへのアクセスを可能にする様々な手法について記載する。以下に記載される様々な実施形態において、コンピュータシステムは、それが特定のアプリケーションに関連して受け取るキーを使用して、異なるユーザアカウントに対して記憶されたクライアントクレデンシャルセットをルックアップする。特に、様々な実施形態において、コンピュータシステムは、複数のユーザがアクセス可能なサーバベースのプラットフォームを提供し、これは、１ユーザにより開発されたアプリケーションを他のユーザによりインストール及び使用できるようにする。したがって、いくつかの実施形態において、ユーザは、いくつかの場合にはコンピュータシステムにより提供される機能を使用して、宛先コンピュータシステムに対して要求を送信させることができる特定のアプリケーションを（コンピュータシステムに）インストールすることができる。ユーザがアプリケーションをセットアップしたいとき、様々な実施形態において、コンピュータシステムは、異なるコンピュータシステムから構成データを取り出す。この構成データは、異なるユーザアカウントに対して記憶された１つ以上のクライアントクレデンシャルセットにアクセスするためのキーを指定することができる。様々なケースにおいて、ユーザは、キーから自身のクライアントクレデンシャルセットへのマッピングを独立して提供することができる。したがって、様々な実施形態において、アプリケーションでイベントが発生したとき、コンピュータシステムは、キーとユーザにより提供されたマッピングとを使用することにより、ユーザのクライアントクレデンシャルセットにアクセスする。その後、様々な実施形態において、コンピュータシステムは、宛先コンピュータシステムで認証する要求を送信し、この要求はクライアントクレデンシャルセットを含む。様々なケースにおいて、別のユーザが、アプリケーションをインストールし、キーから自身のクライアントクレデンシャルセットへのマッピングを提供することができる。したがって、そのアプリケーションでイベントが発生したとき、コンピュータシステムは、キーを使用してそのユーザのアカウント内のそのユーザのクライアントクレデンシャルセットにアクセスすることができる。したがって、キーは、１つ以上のクライアントクレデンシャルセットへのアクセスを可能にし得る。
【００１１】
いくつかの実施形態において、特定のアプリケーションは、より大きいフレームワークの一部として実装され得る。例えば、ある文脈において、特定のアプリケーションは、ワークフロープロセスの開発を可能にするツール内で選択可能なものでもよい。（そのようなツールは、ユーザがコンピュータにより実施される方法を開発できるようにし得、該方法のうち１つのステップが特定のアプリケーションの実行であり得る。）したがって、ユーザは、コンピュータシステムでの自身のアカウント下にアプリケーションをインストールすることができる。次いで、ユーザは、ステップをワークフロープロセスに追加することができ、このステップはアプリケーションに対応する。そのような環境において、このワークフロープロセス内のステップに到達したとき、様々な実施形態において、コンピュータシステムは、インストールされたアプリケーションを実行して、宛先システムに通知を送信するなどの所望の動作を実行する。
【００１２】
このようなアプローチの態様を例示する多くの可能な例の１つとして、認証を必要とする第三者（third-party）システムにメッセージを送信する通信アプリケーションについて考える。例えば、ＴＷＩＴＴＥＲにメッセージ（ツイートと呼ばれる）を送信するために、異なるアプリケーションインスタンスが異なるユーザによりインストール可能であり得る。これらの通信を送信するために、通信アプリケーションは最初、それがメッセージを送信できる前に、第三者システムとの間で認証する必要があり得る。従来のアプローチでは、認証するために、通信アプリケーションは、アプリケーションの作成中に認証クレデンシャルを埋め込まれる必要があり得る。言い換えれば、このタイプの実装では、通信アプリケーションを複数のユーザによりインストール及び使用するために（これは多くのアプリケーションの要件である）、各ユーザに対して異なるアプリケーションインスタンスが構築される必要があり、各インスタンスは対応するユーザのクレデンシャルを含む。しかし、本明細書に記載される手法を用いることにより、開発者は、例えば、アプリケーションをインストールして使用する多くのユーザのうち各々の適切なクレデンシャルにアクセスすることができる単一の通信アプリケーションを作成することができる。いくつかの実装において、通信アプリケーションは、キー値を使用して、通信アプリケーションがインストールされているアカウントのクライアントクレデンシャルセットをルックアップし得る。
【００１３】
これらの手法は、１以上のユーザのための宛先コンピュータシステム（いくつかの場合、複数のシステム）への認証された要求を容易にする単一のマルチテナントアプリケーションの作成を可能にするので、従来のアプローチよりも有利であり得る。すなわち、キー（上述の）は、アプリケーションが、１）異なるユーザアカウントにインストールされ、２）認証された要求をそのアカウントのユーザのために宛先コンピュータシステムに対して行うときにそれぞれのユーザアカウントのクライアントクレデンシャルセットにアクセスすることを、可能にし得る。次に、図１から始め、これらの手法を実施するシステムについて以下で論じる。
【００１４】
次に、図１を参照し、システム１００のブロック図を示す。システム１００は、ハードウェア又はハードウェアとソフトウェアルーチンの組み合わせを介して実装されるコンポーネントのセットである。図示の実施形態において、システム１００は、コンピュータシステム１１０、周辺コンピュータシステム１２０、及び宛先コンピュータシステム１３０を含む。さらに図示されるように、コンピュータシステム１１０は、アプリケーション１１２と、クライアントクレデンシャルセット１１５を有するデータオブジェクト１１４を含む。また、図示のように、周辺コンピュータシステム１２０は、キー１２５を有する構成データ１２４を含む。いくつかの例において、アプリケーション１１２は、周辺コンピュータシステム１２０により維持され得る。いくつかの実施形態において、システム１００は、図示のものと別様に実装され、例えば、システム１２０及び１３０は、同じコンポーネントの一部でもよい（すなわち、組み合わせられてもよい）。
【００１５】
様々な実施形態において、コンピュータシステム１１０はサーバベースのプラットフォームを実装し、該プラットフォームにより、そのサービスのユーザは、アプリケーション１１２などのワークフロープロセスに関連づけられたものを含むアプリケーションを開発、実行、及び管理することができる。コンピュータシステム１１０は、例えば、以下で図８及び図９に関して詳細に論じるマルチテナントデータベースシステムなどのマルチテナントデータベースシステムでもよい。したがって、コンピュータシステム１１０は、ユーザ、アプリケーション、データベース、及び他のシステム（例えば、システム１２０及び１３０）と対話して、データを記憶し、分析し、操作し、扱うことができる。
【００１６】
様々な実施形態において、コンピュータシステム１１０は、サーバベースのプラットフォームを通じてサービスを提供し、該プラットフォームにより、そのサービスのテナント（すなわち、会社又は会社内のグループに属するものなどの、指定されたユーザのグループ）は、プロセスのフローを制御し、かつテナントに関連づけられたユーザ（例えば、顧客）との対話を発生させるように設計された、様々なステップを有するワークフロープロセスを作成することができる。このようなワークフローサービスの１つの可能な例は、ＳＡＬＥＳＦＯＲＣＥ（登録商標）のＪＯＵＲＮＥＹ  ＢＵＩＬＤＥＲであり、これにより、ＳＡＬＥＳＦＯＲＣＥのプラットフォームのユーザは、可能性としてモバイルデバイス及びＷｅｂなどの異なるチャネルにわたる、顧客との一連の対話を追跡することができる。
【００１７】
ワークフロープロセスのステップには、例えば、ワークフロープロセスにおいてどのパスをとるかの判断、テキスト又は電子メールのユーザへの送信、ユーザのデータベースレコードの更新などを含むことができる。様々な実施形態において、ワークフロープロセスにおけるステップは、下層のアプリケーション（例えば、アプリケーション１１２）により実施される。通信アプリケーションの例に戻ると、アプリケーションをインストールしたユーザは、対応するワークフロープロセスに、ユーザ（又は、他のエンティティ）に対して１つ以上の電子メールを送信させるステップ（例えば、アイコンなどのステップの指標）を追加することができる。そのステップに到達したとき、コンピュータシステム１１０は、通信アプリケーションを実行し又はその実行をさせて、ユーザに通知を送信することができる。（ワークフロープロセスの文脈でアプリケーション１１２を含む対話について記載しているが、他の文脈が考えられることに留意する。例えば、コンピュータシステム１１０は、単に、ユーザからのアプリケーションを実行する要求に応答してアプリケーション１１２を実行してもよい。）
【００１８】
いくつかの例において、ワークフロープロセスにおいてステップに到達したとき、宛先コンピュータシステム１３０（例えば、ユーザの独自のサーバシステムなどのエンドポイントシステム、又は、関心のあるサービスを提供するＴＷＩＴＴＥＲなどの第三者システム）と通信することが望ましい場合がある。したがって、様々な実施形態において、アプリケーション１１２は、宛先コンピュータシステム１３０へのアプリケーションプログラミングインターフェース（ＡＰＩ）コールを行わせることができる。いくつかの場合、アプリケーション１１２は、これらのコールを宛先コンピュータシステム１３０に対して直接行うことができるが、他の場合に、アプリケーション１１２は、コンピュータシステム１１０の機能性を利用してそのようなＡＰＩコールを行うように設計されてもよく、例えば、アプリケーション１１２は、コンピュータシステム１１０上で実行されている別のプログラムに対して、ＡＰＩコールを行う要求を発行することができる。いずれの場合も、コンピュータシステム１１０は宛先コンピュータシステム１３０に対してＡＰＩコールを行うと言える。宛先コンピュータシステム１３０に対してこれらのＡＰＩコールを行うために、コンピュータシステム１１０は、最初、宛先コンピュータシステム１３０との間で認証する必要があり得る。様々な実施形態において、コンピュータシステム１１０は、宛先コンピュータシステム１３０で認証するために、データオブジェクト１１４内に維持されるクライアントクレデンシャルセット１１５を使用する。特に、コンピュータシステム１１０は、宛先コンピュータシステム１３０により提供される認証サービスにクライアントクレデンシャルセット１１５を渡して、認証されたＡＰＩコールを可能にし得る認証トークンを受信することができる。様々な実施形態において、クライアントクレデンシャルセット１１５は、コンピュータシステム１１０で自身のアカウント下にアプリケーション１１２をインストールするユーザにより提供される。
【００１９】
アプリケーション１１２は、コンピュータシステム１１０のユーザ（すなわち、テナント）により開発及びインストールされ、次いで、それらのユーザ（又は、他のユーザ）により、それら自身のワークフロープロセスにおいて使用され得る。アプリケーション１１２は、コンピュータシステム１１０に存在するものとして示されているが、様々な実施形態において、アプリケーション１１２は、周辺コンピュータシステム１２０などの異なるシステムに存在する。このような実施形態において、アプリケーション１１２を実行する必要があるとき、コンピュータシステム１１０は、周辺コンピュータシステム１２０にアプリケーション１１２を実行するよう指示することにより、アプリケーション１１２の実行をさせることができる。アプリケーション１１２が、周辺コンピュータシステム１２０で実行されて宛先コンピュータシステム１３０に対して直接ＡＰＩコールを行う場合、周辺コンピュータシステム１２０は、そのようなコールを行うものと言うことができる。いくつかの実施形態において、アプリケーション１１２は、少なくとも２つのコンポーネント、すなわち、コンピュータシステム１１０により実行されるプログラム命令と、周辺コンピュータシステム１２０により実行されるプログラム命令に分割することができる。一例として、コンピュータシステム１１０は、ワークフロープロセスにおけるステップを構成するためのユーザインターフェースをユーザに提示するプログラム命令を実行することができ、一方、周辺コンピュータシステム１２０は、そのステップの機能性を実行するプログラム命令を実行することができる。
【００２０】
アプリケーション１１２をインストールするとき、いくつかの実施形態において、コンピュータシステム１１０は、周辺コンピュータシステム１２０からアプリケーション１１２を取り出す（例えば、ダウンロードする）ことができる。すなわち、アプリケーション１１２は、他のエンティティによるダウンロードのために周辺コンピュータシステム１２０により開発及び提供される第三者アプリケーションでもよい。例えば、コンピュータシステム１１０は、アプリケーションを作成した会社のサーバシステムから通信アプリケーションをダウンロードすることができる。いくつかの実施形態において、アプリケーション１１２は、コンピュータシステム１１０により提供され得るアプリケーションストアの一部としてコンピュータシステム１１０に維持される。ひとたびインストールされると、様々な実施形態において、アプリケーション１１２は、（それをインストールした）ユーザに対し、自身のワークフロープロセスに含めるのに利用可能にされる。したがって、ユーザは、自身のワークフロープロセスに、インストールされたアプリケーション１１２に対応する指標（例えば、ステップ）を追加することができる。
【００２１】
アプリケーション１１２をインストールした後（又は、いくつかの場合には、その前）、様々な実施形態において、ユーザは、キー１２５とクライアントクレデンシャルセット１１５との間のマッピングを提供することができ、このマッピングは、データオブジェクト１１４に、又はデータオブジェクト１１４として記憶することができる。様々なケースにおいて、そのユーザは、アプリケーション１１２のプロバイダ（例えば、開発者）からキー１２５を取得することができ、宛先コンピュータシステム１３０のプロバイダからクライアントクレデンシャルセット１１５を取得することができる。様々な実施形態において、キー１２５はさらに、構成データ１２４に別個に含まれ、構成データ１２４は、周辺コンピュータシステム１２０によりコンピュータシステム１１０に提供され得る。特に、ユーザが（アプリケーション１１２に対応する）ステップを自身のワークフロープロセスに追加するとき、コンピュータシステム１１０は、そのアプリケーション１１２を構成するために周辺コンピュータシステム１２０から構成データ１２４を取り出すことができる。
【００２２】
ワークフロープロセス内でそのステップに到達したとき、様々な実施形態において、コンピュータシステム１１０は、キー１２５を使用してデータオブジェクト１１４内のクライアントクレデンシャルセット１１５をルックアップする。特に、クライアントクレデンシャルセット１１５は、コンピュータシステム１１０における特定のアカウントに関連して記憶されてもよく、したがって、システム１１０は、キー１２５を使用してそのアカウントのために記憶されたクライアントクレデンシャルセット１１５をルックアップすることができる。その後、様々な実施形態において、コンピュータシステム１１０は、宛先コンピュータシステム１３０で認証する認証要求１３２を発行する。要求１３２は、取り出されたクライアントクレデンシャルセット１１５を含むことができる。次いで、コンピュータシステム１１０は、コンピュータシステム１１０が認証されたかどうかを示す認証応答１３４を受信することができる。
【００２３】
周辺コンピュータシステム１２０は、様々な実施形態において、コンピュータシステム１１０のユーザによりインストールされ、次いでそれらユーザにより自身のワークフロープロセスにおいて使用され得る特定のアプリケーション１１２（及び、対応する構成データ１２４）を提供する。周辺コンピュータシステム１２０は、例えば、コンピュータシステム１１０におけるインストール／登録のためにアプリケーション１１２を開発する第三者プロバイダにより維持されるコンピュータシステムでもよい。いくつかの実施形態において、周辺コンピュータシステム１２０は、アプリケーション１１２と構成データ１２４とをコンピュータシステム１１０に別個に提供する。特に、周辺コンピュータシステム１２０は、特定のアプリケーション１１２を、コンピュータシステム１１０により提供されるアプリケーションストアサービスにアップロードしてもよい。したがって、コンピュータシステム１１０のユーザは、アプリケーションストアサービスにアクセスすることにより特定のアプリケーション１１２をダウンロードし、インストールすることができる。ひとたびユーザが、インストールされたアプリケーション１１２に対応するステップを自身のワークフロープロセスに追加すると、そのユーザは、そのアプリケーション１１２を構成することができる。したがって、コンピュータシステム１１０は、周辺コンピュータシステム１２０から構成データ１２４を取り出すことができる。
【００２４】
様々な実施形態において、周辺コンピュータシステム１２０は、ウェブページを介して構成データ１２４を提供する。特に、いくつかの実施態様において、周辺コンピュータシステム１２０は、アプリケーション１１２に関連づけられたウェブアプリケーションをホストする。したがって、コンピュータシステム１１０が構成データ１２４を取り出したいとき、コンピュータシステム１１０は、ハイパーテキストトランスファープロトコル（ＨＴＴＰ）要求のセットを周辺コンピュータシステム１２０に送信し、応答において構成データ１２４を含むウェブページを受信することができる。いくつかの実施形態において、コンピュータシステム１１０は、ｉｆｒａｍｅを通じてウェブページをユーザに提示する。次いで、ユーザは、アプリケーション１１２を処理するときに使用することができるさらなる情報を（ウェブページのフォーム及び他の要素に）提供することができる。いくつかの実施形態において、ユーザは、提示されたウェブページを介してキー１２５とクライアントクレデンシャルセット１１５との間のマッピングを提供してもよい。
【００２５】
宛先コンピュータシステム１３０は、様々な実施形態において、所望の機能性を提供するエンドポイントコンピュータシステムである。特に、特定のアプリケーション１１２によりサポートされない特定のデータ及び／又は機能にアクセスすることが望ましい場合がある。例えば、ユーザは、後のデータ処理のために、コンピュータシステム１１０から宛先コンピュータシステム１３０にデータをプッシュしたい場合がある。いくつかの実施形態において、宛先コンピュータシステム１３０の機能性は、保護されたＡＰＩを介してアクセス可能である。そのため、様々な実施形態において、コンピュータシステム１１０は最初、保護されたＡＰＩを使用して何らかの所望の機能性にアクセスする前に、宛先コンピュータシステム１３０で認証する必要があり得る。したがって、コンピュータシステム１１０は、宛先コンピュータシステム１３０にクライアントクレデンシャルセット１１５を提供して、そのクライアントクレデンシャルセットに対応する特定のユーザのために宛先コンピュータシステム１３０で認証することができる。認証された後、コンピュータシステム１１０は、次いで、宛先コンピュータシステム１３０にデータを送信するか又はシステム１３０により提供される特定の機能にアクセスするためのＡＰＩコールを行うことができる。いくつかの実施形態において、コンピュータシステム１１０は、ＡＰＩコールに対する応答を受信する。応答は、例えば成功（又は失敗）を示してもよく、あるいは要求されたデータを含んでもよい。
【００２６】
システム１００の一例示的な実装において、コンピュータシステム１１０は、複数のユーザがアクセス可能なサーバベースのプラットフォーム（例えば、マルチテナントデータベースシステム）を提供する。この例において、サーバベースのプラットフォームは、通信アプリケーションなどのアプリケーション１１２をコンピュータシステム１１０のユーザによりインストールできるようにする。通信アプリケーションは、第三者プロバイダにより提供され、ワークフロープロセスで使用されてもよい。したがって、この例において、この通信アプリケーションをインストールしたユーザは、自身のワークフロープロセスに、該アプリケーションに対応するステップを追加することができる。ユーザがステップを追加した後、この例において、コンピュータシステム１１０は、第三者プロバイダのシステム（周辺コンピュータシステム１２０）から構成データ１２４を取り出す。この構成データ１２４は、キー１２５を指定することができる。別個に、ユーザは、そのキー１２５と、宛先コンピュータシステム１３０で認証するために使用可能なクライアントクレデンシャルセット１１５との間のマッピングを提供することができる。ユーザは、そのキー１２５を第三者プロバイダから入手することができる。ワークフロープロセスのステップがトリガされたとき、この例において、コンピュータシステム１１０は、特定のキー１２５を使用して、ユーザにより提供されるクライアントクレデンシャルセット１１５にアクセスする。ひとたびクライアントクレデンシャルセット１１５がアクセスされると、コンピュータシステム１１０は、宛先コンピュータシステム１３０で認証し、それに通知を提供することができる。
【００２７】
例示的な実装で続けると、コンピュータシステム１１０は、別のユーザから、この別のユーザが自身のワークフロープロセスにステップを追加できるように、通信アプリケーションをインストールする要求を受け取ることができる。したがって、この別のユーザは、キー１２５と自身のクライアントクレデンシャルセット１１５との間のマッピングを提供することができる。このマッピングは、この別のユーザのアカウント下で維持されるデータオブジェクト１１４内に指定することができる。したがって、この別のユーザのワークフローにおいてステップがトリガされたとき、コンピュータシステム１１０は、同じキー１２５を使用するが、クライアントクレデンシャルセット１１５を（元のユーザのアカウントの代わりに）この別のユーザのアカウント下で探す。ひとたびこの別のユーザのためにクライアントクレデンシャルセット１１５がアクセスされると、コンピュータシステム１１０は、同じ（又は、別の）宛先コンピュータシステム１３０で認証し、それに通知を提供することができる。
【００２８】
このようにしてシステム１００を実装することは、アプリケーションをインストールする異なるユーザのクライアントクレデンシャルセットへのアクセスを容易にし得るアプリケーションを開発できるようにし得るので、有利であり得る。次に、図２に関して、キー１２５とクライアントクレデンシャルセット１１５との間のマッピングの一例示的な高レベル図について論じる。
【００２９】
次に、図２を参照し、キー１２５を異なるクライアントクレデンシャルセット１１５にマッピングする一例示的なアプローチのブロック図を示す。図示の実施形態において、アプローチ２００は、複数のアカウント２１０を有するコンピュータシステム１１０を含む。複数のアカウント２１０はコンピュータシステム１１０に存在するように示されているが、いくつかの実施形態において、１つ以上のアカウント２１０が別の場所に維持されてもよい。
【００３０】
前述のように、コンピュータシステム１１０は、サーバベースのプラットフォームを複数ユーザに提供することができるマルチテナントデータベースシステムでもよい。したがって、様々な実施形態において、コンピュータシステム１１０は、そのユーザのためのアカウント２１０を維持し、該アカウント２１０により、ユーザは、アカウント２１０に関連するデータの記憶を含む、コンピュータシステム１１０により提供される機能にアクセスすることができる。いくつかの実施形態において、コンピュータシステム１１０は、所与のアカウント２１０について、キー１２５からクライアントクレデンシャルセット１１５へのマッピングを定義するデータオブジェクト１１４（及び、いくつかの場合、宛先コンピュータシステム１３０のロケーション（例えば、ＵＲＬ）などのさらなる情報）を記憶することができる。
【００３１】
キー１２５は、様々な実施形態において、アカウント２１０のデータオブジェクト１１４内のクライアントクレデンシャルセット１１５をルックアップするために使用可能な識別子である。いくつかの実施態様において、キー１２５は、グローバルに一意（globally  unique）であり、かつ関連づけられたアプリケーション１１２の開発者により定義される値である。キー１２５は、例えば、ランダムなキャラクタ（例えば、数字、文字等）のストリング値でもよい。様々な実施形態において、キー１２５は２つの異なるポイントで、すなわち、１）ユーザがキー１２５のクライアントクレデンシャルセット１１５へのマッピングを提供するとき、及び２）コンピュータシステム１１０が構成データ１２４を取り出すときに、コンピュータシステム１１０に提供される。いくつかの例において、コンピュータシステム１１０は、それが構成データ１２４を受信するときのみ、キー１２５を受信することができる。このような例において、コンピュータシステム１１０は、次いで、コンピュータシステム１１０がキー１２５をマッピングすることになるクライアントクレデンシャルセット１１５をユーザが提供することを要求することができる。キー１２５は、複数のクライアントクレデンシャルセット１１５にアクセスするために使用可能であり得る。特に、データオブジェクト１１４がアカウント２１０に関連して記憶されているとき、キー１２５とアカウント２１０の組み合わせは、コンピュータシステム１１０が特定のユーザに関連づけられた特定のクライアントクレデンシャルセット１１５にアクセスすることを可能にし得る。
【００３２】
クライアントクレデンシャルセット１１５は、様々な実施形態において、コンピュータシステム１１０などのシステムが（これらクレデンシャルのユーザのために）宛先コンピュータシステム１３０で認証されることを可能にする値のセットである。クライアントクレデンシャルセット１１５は、例えば、クライアント識別子及びクライアントシークレット（client  secret）（例えば、ＯＡＵＴＨで使用されるものなど）でもよく、あるいはユーザ名とパスワードでもよい。様々な実施形態において、クライアントクレデンシャルセット１１５は、アプリケーション１１２のユーザにより提供される。例えば、ユーザは、クライアントクレデンシャルセット１１５を、キー１２５とそのクライアントクレデンシャルセット１１５との間のマッピングを提供するときに提供してもよい。
【００３３】
様々な実施形態において、有効サービスユニフォームリソースロケータ（uniform  resource  locators、ＵＲＬ）が、クライアントクレデンシャルセット１１５と共に記憶され、キー１２５を使用してアクセスされ得る。有効サービスＵＲＬは、リソースにアクセスするために（認証応答１３４を介して受信した）トークンが使用され得るロケーションのセットを識別することができる。例えば、ｗｗｗ．ｔｗｉｔｔｅｒ．ｃｏｍ／＊の有効サービスＵＲＬパターンが指定されている場合、トークン応答ペイロードで受信したトークンは、全てのＴＷＩＴＴＥＲエンドポイント（例えば、ｗｗｗ．ｔｗｉｔｔｅｒ．ｃｏｍ／ａｐｉ）に送信されるが、他のエンドポイント（例えば、ｗｗｗ．ｆａｋｅｅｎｄｐｏｉｎｔ．ｃｏｍ／ａｐｉなど）には送信されない。
【００３４】
図２に示すように、キー１２５は、アカウント２１０内に記憶されたクライアントクレデンシャルセット１１５にアクセスするために使用することができる。したがって、コンピュータシステム１１０がクライアントクレデンシャルセット１１５をルックアップするよう試みたとき、コンピュータシステム１１０は、関連アカウント２１０に記憶されたデータオブジェクト１１４にアクセスすることができ、その関連アカウントは、アプリケーション１１２に対応するステップを含むワークフロープロセスに関連づけることができる。すなわち、様々な実施形態において、ワークフロープロセスにおいてアプリケーション１１２に対応するステップに到達したとき、コンピュータシステム１１０は、そのワークフロープロセスに関連づけられた特定のアカウント２１０に記憶されたクライアントクレデンシャルセット１１５に（キー１２５を使用して）アクセスすることができる。したがって、アプリケーション１１２は、複数のユーザによりインストールされ、複数のワークフロープロセスにおいて使用され得るが、各ワークフロープロセス及びユーザに関連する特定のクライアントクレデンシャルセット１１５へのアクセスを依然として容易にすることができる。次に、図３に関して、コンピュータシステム１１０の一例について論じる。
【００３５】
次に、図３を参照し、コンピュータシステム１１０のブロック図を示す。図示の実施形態において、コンピュータシステム１１０は、アカウント２１０とワークフローエンジン３１０を含む。図示のように、ワークフローエンジン３１０は、２つのワークフロープロセス３１５とキー１２５を含む。さらに図示のように、各アカウント２１０は、クライアントクレデンシャルセット１１５を有する対応するデータオブジェクト１１４を含む。いくつかの実施形態において、コンピュータシステム１１０は、図示のものと別様に実装される。例えば、コンピュータシステム１１０は、ワークフローエンジン３１０を含まなくてもよいが、代わりに、ワークフロープロセスなしで、すなわち、ワークフロープロセスとは異なる文脈でアプリケーション１１２を実行し、キー１２５を使用することができる。
【００３６】
ワークフローエンジン３１０は、様々な実施形態において、ワークフロープロセス３１５の管理を可能にし、これらのプロセスの作成及び実行を含む。したがって、ユーザは、ワークフロープロセス３１５を、そのプロセスの実行中に実行されるべきアクションを示す様々なステップを追加することにより作成することができる。ワークフローエンジン３１０は、ステップのデフォルトセット（例えば、コンピュータシステム１１０のプロバイダにより供給されるステップ）を提供する（又は、サポートする）ことができるが、様々な実施形態において、エンジン３１０は、ユーザが、そのユーザ又は別のエンティティにより設計されたカスタムステップを追加できるようにする。カスタムステップを追加するために、ユーザは、前述したようにアプリケーション１１２を登録／インストールすることができる。いくつかの場合、特定のアプリケーション１１２のインストールの一部として、ユーザは、その特定のアプリケーション１１２がどこで維持されているかの指標（例えば、エンドポイントＵＲＬ）、例えば、周辺コンピュータシステム１２０のＵＲＬを提供してもよい。したがって、コンピュータシステム１１０は、その特定のアプリケーション１１２を取り出し、それを要求したユーザに関連づけられたワークフロープロセス３１５でそれを使用可能にすることができる。ひとたび特定のアプリケーション１１２がワークフロープロセス３１５で使用可能になると、ユーザは、そのアプリケーションに対応するステップを自身のワークフロープロセスに追加することができる。いくつかの実施形態において、そのようなステップは、コンピュータシステム１１０により提供されるグラフィカルユーザインターフェース内に表示されるキャンバス上にステップをドラッグアンドドロップすることにより、ワークフロープロセス３１５に追加される。
【００３７】
いくつかの実施形態において、ワークフロープロセス３１５は、様々なステップを通じての移動を制御するイベント駆動トリガに関連づけられる。例えば、製品を購入するユーザがワークフロープロセス３１５を開始することがあり、これにおいて、最初のステップは、購入に関する電子メールをユーザの電子メールに送信することである。したがって、アプリケーション１１２に対応するステップの発生は、イベント１１７に応答してトリガされ得る。一例として、前のステップが実行されてから１か月の経過に応答して、ワークフローエンジン３１０は、アプリケーション１１２に対応するステップであり得る次のステップを開始することができる。そのようなステップがトリガされたことに応答して、コンピュータシステム１１０は、様々な実施形態において、対応するアプリケーション１１２を実行し、あるいは対応するアプリケーション１１２の実行をさせる（例えば、周辺コンピュータシステム１２０に、実行するように指示する）。
【００３８】
アプリケーション１１２の実行は、様々な実施形態において、コンピュータシステム１１０に、キー１２５を使用して特定のクライアントクレデンシャルセット１１５を取り出させる。前述のように、ワークフロープロセス３１５は、アカウント２１０に関連づけることができる。図示のように、例えば、ワークフロープロセス３１５Ａはアカウント２１０Ａに関連づけられ、ワークフロープロセス３１５Ｂはアカウント２１０Ｂに関連づけられる。したがって、ワークフロープロセス３１５Ａに関連したアプリケーション１１２の実行は、コンピュータシステム１１０に、クライアントクレデンシャルセット１１５Ａがアカウント２１０Ａのために記憶されているときそれにアクセスさせることができる。クライアントクレデンシャルセット１１５にアクセスすることに追加で、いくつかの実施形態において、コンピュータシステム１１０は、宛先コンピュータシステム１３０を識別する、適切なアカウント２１０のために記憶された情報（例えば、ＵＲＬ）にさらにアクセスする。このような情報は、データオブジェクト１１４に記憶することができる。その後、様々な実施形態において、コンピュータシステム１１０は、宛先コンピュータシステム１３０で認証する要求１３２を発行し、コンピュータシステム１１０が宛先コンピュータシステム１３０で認証されているかどうかを示す応答１３４を受信する。応答１３４は、認証トークンを含んでもよい。したがって、コンピュータシステム１１０は、特定の動作を実行するために宛先コンピュータシステム１３０に対して（受信した認証トークンを含む）さらなるＡＰＩコールを行うことができる。次に、図４に関して、宛先コンピュータシステム１３０の一例について論じる。
【００３９】
次に、図４を参照し、宛先コンピュータシステム１３０のブロック図を示す。図示の実施形態において、宛先コンピュータシステム１３０は、認証サービス４１０及びＡＰＩ４２０を含む。いくつかの実施形態において、宛先コンピュータシステム１３０は、図示のものと別様に実装され、例えば、宛先コンピュータシステム１３０は、周辺コンピュータシステム１２０と組み合わせられてもよい。前述のように、宛先コンピュータシステム１３０は、コンピュータシステム１１０を認証し、次いで、コンピュータシステム１１０が認証されたＡＰＩコールを行うことを可能にする。
【００４０】
認証サービス４１０は、様々な実施形態において、コンピュータシステム１１０などのコンピュータシステムの認証を容易にする。コンピュータシステム１１０を認証するために、サービス４１０は、要求１３２で供給されたクライアントクレデンシャルセット１１５を、それを宛先コンピュータシステム１３０により記憶された有効なクライアントクレデンシャルセット１１５に対して比較することにより検証することができる。様々な実施形態において、要求１３２で供給されたクライアントクレデンシャルセット１１５が有効である場合、サービス４１０は応答１３４で認証トークンを返す。トークンは、コンピュータシステム１１０が宛先コンピュータシステム１３０に対して認証されたＡＰＩコールを行うことを可能にし得る。クライアントクレデンシャルセット１１５が有効でない場合、サービス４１０は、コンピュータシステム１１０が認証されていないという指標を返すことができる。
【００４１】
アプリケーションプログラミングインターフェース４２０は、様々な実施形態において、コンピュータシステム１１０が宛先コンピュータシステム１３０により提供される機能性と対話することを可能にする。一例として、コンピュータシステムは、宛先コンピュータシステム１３０にデータを提供し、あるいはＡＰＩ４２０を介してコマンドを発行することができる。ＡＰＩ４２０を利用するために、コンピュータシステム１１０は、サービス４１０を通じて認証トークンを取得する必要があり得る。ひとたびコンピュータシステム１１０が認証トークンを有すると、コンピュータシステム１１０は、ＡＰＩ４２０を通じてＡＰＩコール４２２を行うことができる。いくつかの実施形態において、宛先コンピュータシステム１３０は、コンピュータシステム１１０にＡＰＩ応答４２４を提供する。ＡＰＩ応答４２４は、例えば、要求されたデータ、又は特定の動作が実行されたという指標を含んでもよい。
【００４２】
次に、図５を参照し、方法５００のフロー図を示す。方法５００は、宛先コンピュータシステム（例えば、宛先コンピュータシステム１３０）との間で認証するためにコンピュータシステム１１０などのコンピュータシステムにより実行される方法の一実施形態である。方法５００は、コンピュータシステムがアプリケーション（例えば、アプリケーション１１２）をインストールするためのデータストアへのユーザアクセスを提供するなどのさらなるステップを含んでもよい。
【００４３】
方法５００はステップ５１０で開始し、ステップ５１０において、コンピュータシステムは、複数のユーザがアクセス可能なサーバベースのプラットフォームを提供する。このサーバベースのプラットフォームは、複数のユーザのうち１ユーザにより開発されたアプリケーションが複数のユーザのうち他ユーザにより利用されることを可能にし得る。
【００４４】
ステップ５２０において、複数のユーザのうち特定のユーザに対してアプリケーションを利用可能にする指標を受け取った後、コンピュータシステムは、異なるコンピュータシステム（例えば、周辺コンピュータシステム１２０）から構成データ（例えば、構成データ１２４）を取り出す。この構成データは、キー値（例えば、キー１２５）への参照（reference）を指定することができる。いくつかの実施形態において、アプリケーションを利用可能にすることは、特定のユーザのアカウント（例えば、アカウント２１０）下でアプリケーションをインストール又は登録することと、特定のユーザがアプリケーションに対応するステップをワークフロープロセス（例えば、プロセス３１５）に追加できるようにすることを含む。
【００４５】
ステップ５３０において、コンピュータシステムは、特定のユーザのクライアントクレデンシャルセット（例えば、クライアントクレデンシャルセット１１５）を含むデータオブジェクト（例えば、データオブジェクト１１４）を維持する（maintains）。
【００４６】
ステップ５４０において、アプリケーションに関連づけられたイベント（例えば、イベント１１７）の発生に応答して、コンピュータシステムは、キー値と特定のユーザの指標（例えば、アカウント識別子）とを使用して、データオブジェクトからの特定のユーザのクライアントクレデンシャルセットにアクセスする。いくつかの実施形態において、特定のユーザの指標は、データオブジェクトが維持されるアカウントに対応する。したがって、クライアントクレデンシャルセットにアクセスすることは、そのアカウントのデータオブジェクトにアクセスすることを含んでもよい。イベントの発生は、ワークフロープロセスにおいてステップに到達することを含んでもよい。
【００４７】
ステップ５５０において、コンピュータシステムは、宛先コンピュータシステムに、宛先コンピュータシステムで認証する要求（例えば、要求１３２）を送信する。要求は、クライアントクレデンシャルセットを含むことができる。様々な実施形態において、宛先コンピュータシステムで認証する要求を送信する前に、コンピュータシステムは、特定のユーザから、キー値からクライアントクレデンシャルセットへのマッピングを定義する情報を受け取る。データオブジェクトは、マッピングを指定することができる。いくつかの実施形態において、宛先コンピュータシステムで認証する要求を送信する前に、コンピュータシステムは、特定のユーザから、宛先コンピュータシステムに対応するユニフォームリソースロケータ（ＵＲＬ）を指定する情報を受け取る。したがって、認証する要求は、指定されたＵＲＬに基づいて送信されてもよい。
【００４８】
ステップ５６０において、コンピュータシステムは、宛先コンピュータシステムから、コンピュータシステムが宛先コンピュータシステムで認証されたかどうかを示す応答（例えば、応答１３４）を受信する。
【００４９】
いくつかの実施形態において、コンピュータシステムは、複数のユーザのうち異なるユーザに対してアプリケーションを利用可能にする指標を受け取る。コンピュータシステムは、異なるユーザのクライアントクレデンシャルセット（例えば、セット１１５Ｂ）を含む第２のデータオブジェクト（例えば、データオブジェクト１１４Ｂ）を維持することができる。アプリケーション及び異なるユーザに関連づけられたイベントの発生に応答して（例えば、イベントは、異なるユーザのアカウント２１０下でインストールされたアプリケーションに関連して発生する）、いくつかの実施形態において、コンピュータシステムは、キー値と異なるユーザの指標とを使用して、第２のデータオブジェクトからの異なるユーザのクライアントクレデンシャルセットにアクセスする。次いで、コンピュータシステムは、異なる（又は、同じ）宛先コンピュータシステムに、その宛先コンピュータシステムで認証する要求を送ることができる。要求は、異なるユーザのクライアントクレデンシャルセットを含むことができる。
【００５０】
次に、図６を参照し、方法６００のフロー図を示す。方法６００は、宛先コンピュータシステム（例えば、宛先コンピュータシステム１３０）との間で認証するためにクライアントクレデンシャルセット（例えば、クライアントクレデンシャルセット１１５）にアクセスするコンピュータシステム１１０などのコンピュータシステムにより実行される方法の一実施形態である。方法５００は、コンピュータシステムがアプリケーション（例えば、アプリケーション１１２）をインストールするためのデータストアへのユーザアクセスを提供するなどのさらなるステップを含んでもよい。
【００５１】
方法６００はステップ６１０で開始し、ステップ６１０において、コンピュータシステムは、複数のユーザがアクセス可能なサーバベースのプラットフォームを提供する。サーバベースのプラットフォームは、複数のユーザのうち１ユーザにより開発されたアプリケーション（例えば、アプリケーション１１２）が複数のユーザのうち他ユーザによりインストールされることを可能にし得る。
【００５２】
ステップ６２０において、コンピュータシステムは、特定のユーザから、サーバベースのプラットフォームにおける特定のユーザのアカウント（例えば、アカウント２１０）に関連してアプリケーションをインストールする要求を受け取る。
【００５３】
ステップ６３０において、特定のユーザのためにアプリケーションをインストールした後、コンピュータシステムは、キー値（例えば、キー１２５）への参照を指定する構成データ（例えば、構成データ１２４）を取り出す。特定のユーザのためにアプリケーションをインストールした後、様々な実施形態において、コンピュータシステムは、特定のユーザから、アプリケーションに対応するステップを追加するようにワークフロープロセス（例えば、ワークフロープロセス３１５）を修正する要求を受け取る。追加ステップを構成する要求を受け取ったことに応答して、コンピュータシステムは、構成データを取り出すことができる。
【００５４】
ステップ６４０において、コンピュータシステムは、特定のユーザのアカウントに関連してデータオブジェクト（例えば、データオブジェクト１１４）を維持する。様々な実施形態において、データオブジェクトは、特定のユーザのクライアントクレデンシャルセット（例えば、クライアントクレデンシャルセット１１５）を含む。
【００５５】
ステップ６５０において、アプリケーションに関連づけられたイベントの発生に応答して、コンピュータシステムは、データオブジェクトからの特定のユーザのクライアントクレデンシャルセットにアクセスする。特定のユーザのクライアントクレデンシャルセットは、キー値と特定のユーザの指標とを使用してアクセスされ得る。特定のユーザの指標は、データオブジェクトが維持されるアカウントに対応するアカウント識別子でもよい。様々な実施形態において、アプリケーションに関連づけられたイベントの発生に応答して、コンピュータシステムは、インストールされたアプリケーションを実行して、ステップ６６０及び６７０を開始する動作のセットを実行する。
【００５６】
ステップ６６０において、コンピュータシステムは、宛先コンピュータシステムに、宛先コンピュータシステムで認証する要求（例えば、要求１３２）を送信する。様々な実施形態において、要求は、クライアントクレデンシャルセットを含む。様々な実施形態において、コンピュータシステムは、特定のユーザから、ユニフォームリソースロケータ（ＵＲＬ）とクライアントクレデンシャルセットとキー値及びクライアントクレデンシャルセット間のマッピングとを指定する認証情報を受け取る。ＵＲＬは、宛先コンピュータシステムに実装された認証サービス（例えば、サービス４１０）に対応してもよく、データオブジェクトは、上記マッピングに対応してもよい。
【００５７】
ステップ６７０において、コンピュータシステムは、宛先コンピュータシステムから、コンピュータシステムが宛先コンピュータシステムで認証されたかどうかを示す応答（例えば、応答１３４）を受信する。様々な実施形態において、宛先コンピュータシステムからの応答は、認証トークンを含む。したがって、コンピュータシステムは、アプリケーションのために宛先コンピュータシステムに対して認証されたアプリケーションプログラミングインターフェース（ＡＰＩ）コールを行うことができる。このようなＡＰＩコールは、認証トークンを含んでもよい。
【００５８】
様々な実施形態において、コンピュータシステムは、異なるユーザから、サーバベースのプラットフォームにおける異なるユーザのアカウント（例えば、アカウント２１０Ｂ）に関連してアプリケーションをインストールする要求を受け取る。いくつかの実施形態において、コンピュータシステムは、異なるユーザのアカウントに関連して第２のデータオブジェクト（例えば、データオブジェクト１１４Ｂ）を維持する。このデータオブジェクトは、異なるユーザのクライアントクレデンシャルセットを含み得る。したがって、アプリケーションに関連づけられたイベントの発生に応答して、コンピュータシステムは、キー値と異なるユーザの指標とを使用して、第２のデータオブジェクトからの異なるユーザのクライアントクレデンシャルセットにアクセスすることができる。いくつかの実施形態において、コンピュータシステムは、宛先コンピュータシステムに、宛先コンピュータシステムで認証する要求を送信する。要求は、異なるユーザのクライアントクレデンシャルセットを含むことができる。
【００５９】
次に、図７を参照し、方法７００のフロー図を示す。方法７００は、宛先コンピュータシステム（例えば、宛先コンピュータシステム１３０）との間で認証するためにクライアントクレデンシャルセット（例えば、クライアントクレデンシャルセット１１５）にアクセスするコンピュータシステム１１０などのコンピュータシステムにより実行される方法の一実施形態である。いくつかの実施形態において、方法７００は、コンピュータシステムがアプリケーション（例えば、アプリケーション１１２）をインストールするためのデータストアへのユーザアクセスを提供するなどのさらなるステップを含む。
【００６０】
方法７００はステップ７１０で開始し、ステップ７１０において、コンピュータシステムは、特定のユーザから、コンピュータシステムにアプリケーションを登録する要求を受け取る。様々な実施形態において、アプリケーションの登録は、アプリケーションをワークフロープロセス（例えば、ワークフロープロセス３１５）において使用可能にさせることができる。様々な実施形態において、アプリケーションの実行は、コンピュータシステムに、宛先コンピュータシステムに対して１つ以上の要求（例えば、要求１３２）を送信させる。いくつかの実施形態において、コンピュータシステムは、複数のユーザのためのデータをそれぞれのテナント特有のストレージエリアに記憶するマルチテナントデータベースシステムを含む。
【００６１】
ステップ７２０において、コンピュータシステムは、特定のユーザから、特定のワークフロープロセスにステップを追加する要求を受け取る。このステップは、登録されたアプリケーションに対応してもよく、特定のワークフロープロセスにおけるステップへの到達は、登録されたアプリケーションが実行される結果をもたらし得る。
【００６２】
ステップ７３０において、特定のワークフロープロセスにステップを追加した後、コンピュータシステムは、異なるコンピュータシステム（例えば、周辺コンピュータシステム１２０）から構成データ（例えば、構成データ１２４）を取り出す。様々な実施形態において、構成データは、キー値（例えば、キー１２５）を指定する。キー値は、アプリケーションの開発者により指定されたグローバル一意識別子（globally  unique  identifier）でもよい。
【００６３】
ステップ７４０において、コンピュータシステムは、特定のユーザから、宛先コンピュータシステムで認証するために使用可能なクライアントクレデンシャルセットへのキー値のマッピングを示すマッピング情報を受け取る。いくつかの実施形態において、マッピング情報は、特定のユーザの指標に関連して記憶され、例えば、データオブジェクト１１４に、又はデータオブジェクト１１４として記憶される。クライアントクレデンシャルセットは、クライアント識別子及びクライアントシークレットを含んでもよい。いくつかの実施形態において、クライアントクレデンシャルセットは、特定のユーザに対応するテナント特有のストレージエリアに記憶される。
【００６４】
ステップ７５０において、ステップに到達し、キー値と（例えば、特定のユーザのアカウント下の）特定のユーザの指標とを使用してクライアントクレデンシャルセットにアクセスした後、コンピュータシステムは、宛先コンピュータシステムに、宛先コンピュータシステムで認証する要求（例えば、要求１３２）を送信する。様々な実施形態において、要求は、クライアントクレデンシャルセットを含む。いくつかの実施形態において、コンピュータシステムは、特定のユーザから、宛先コンピュータシステムのアドレスを示す情報を受け取る。したがって、宛先コンピュータシステムで認証する要求は、上記アドレスに送られてもよい。
【００６５】
ステップ７６０において、コンピュータシステムは、宛先コンピュータシステムから、コンピュータシステムが宛先コンピュータシステムで認証されたかどうかを示す応答（例えば、応答１３４）を受信する。
【００６６】
様々な実施形態において、コンピュータシステムは、異なるユーザから、アプリケーションに対応するステップを異なるワークフロープロセスに追加する要求を受け取る。コンピュータシステムは、いくつかの実施形態において、異なるユーザから、宛先コンピュータシステムで認証するために使用可能な、キー値の異なるクライアントクレデンシャルセットへのマッピングを示すマッピング情報を受け取る。異なるユーザからのマッピング情報は、異なるユーザの指標に関連して記憶することができる。ワークフロープロセスにおいてステップに到達した後、様々な実施形態において、コンピュータシステムは、キー値と異なるユーザの指標とを使用して、異なるクライアントクレデンシャルセットにアクセスする。コンピュータシステムは、いくつかの実施形態において、宛先コンピュータシステムに、宛先コンピュータシステムで認証する要求を送信し、この要求は、異なるクライアントクレデンシャルセットを含む。いくつかの実施形態において、コンピュータシステムは、宛先コンピュータシステムから、コンピュータシステムが宛先コンピュータシステムで認証されたかどうかを示す応答を受信する。
【００６７】
［例示的なマルチテナントデータベースシステム］
図８は、マルチテナントデータベース及びキャッシュシステムが実装され得る一例示的な環境を示す。開示のマルチテナントシステムは例示目的に含まれるが、本開示の範囲を制限する意図はないことに留意する。他の実施形態において、様々なクライアント／サーバ環境、クラウドコンピューティング環境、クラスタ化コンピュータなどの非マルチテナント環境において同様の手法が実施されてもよい。図８に（及び、図９でより詳細に）示すように、１つ以上のユーザシステム８１２は、ネットワーク８１４を介してマルチテナントデータベースシステム（ＭＴＳ）８１６と対話することができ、ＭＴＳ８１６は、コンピュータシステム１１０でもよい。これらのユーザシステム８１２のユーザは、異なるキャパシティのユーザでもよく、特定のユーザシステム８１２のキャパシティは、現在のユーザにより決定されてもよい。例えば、販売員が特定のユーザシステム８１２を使用してＭＴＳ８１６と対話しているとき、そのユーザシステム８１２は、その販売員に割り振られたキャパシティを有し得る。しかしながら、管理者が同じユーザシステム８１２を使用してＭＴＳ８１６と対話している間、それは、その管理者に割り振られたキャパシティを有する。したがって、様々な実施形態において、システム８１６を実装するシステム（例えば、コンピュータシステム１１０）により維持される情報（例えば、データオブジェクト１１４）は、適切なキャパシティ（例えば、許可）を有するユーザによってのみ修正することができる。
【００６８】
ネットワーク８１４は、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の任意の適切な構成でもよい。大文字の「Ｉ」を有する「インターネット」としてしばしば参照されるネットワークのグローバルインターネットワークは、本明細書の例の多くで使用され、ＴＣＰ／ＩＰ（トランスファーコントロールプロトコル及びインターネットプロトコル）ネットワークの一例である。しかしながら、本発明が使用し得るネットワークは様々な他のタイプのネットワークのうち任意のものであることを理解されたい。
【００６９】
ユーザシステム８１２は、ＴＣＰ／ＩＰを使用してＭＴＳ８１６と通信し、より高いネットワークレベルでは、ＨＴＴＰ、ＦＴＰ、ＡＦＳ、ＷＡＰなどの他の一般的なインターネットプロトコルを通信するのに使用することができる。一例として、ＨＴＴＰが使用される場合、ユーザシステム８１２は、ＭＴＳ８１６のＨＴＴＰサーバからＨＴＴＰメッセージを送受信するために、一般に「ブラウザ」と呼ばれるＨＴＴＰクライアントを含んでもよい。そのようなサーバは、ＭＴＳ８１６とネットワーク８１４との間の唯一のネットワークインターフェースとして実装されてもよいが、他の手法が同様に又は代わりに使用されてもよい。いくつかの実装において、ＭＴＳ８１６とネットワーク８１４との間のインターフェースは、負荷共有機能を含み、例えば、負荷のバランスをとり、入ってくるＨＴＴＰ要求を複数のサーバ上に均等に分配するラウンドロビンＨＴＴＰ要求分配器などである。好ましくは、複数のサーバの各々は、少なくともサーバにアクセスしているユーザのために、ＭＴＳのデータへのアクセスを有する。
【００７０】
いくつかの実施形態において、図８に示すシステムは、ウェブベースの顧客関係管理（customer  relationship  management、ＣＲＭ）システムを実施する。例えば、いくつかの実施形態において、ＭＴＳ８１６は、ＣＲＭソフトウェアアプリケーションを実装及び実行するとともに、ユーザシステム８１２との間で関連データ、コード、フォーム、ウェブページ、及び他の情報を提供し、関連データ、オブジェクト、及びウェブページコンテンツをデータベースシステムに記憶し、データベースシステムから取り出すことができるアプリケーションサーバを含む。マルチテナントシステムの実施形態において、テナントデータは、好ましくは、１つのテナントのデータが他のテナントのデータと別個に保持され、それにより、その１つのテナントが別のテナントのデータへのアクセスを当該データが明示的に共有されない限り有さないように構成される。
【００７１】
ＭＴＳ８１６の要素に関する１つの構成が図８に示されており、ネットワークインターフェース８２０と、テナントデータのストレージ８２２と、ＭＴＳ８１６と可能性として複数のテナントがアクセス可能なシステムデータのストレージ８２４と、ＭＴＳ８１６の様々な機能を実施するプログラムコード８２６と、ＭＴＳシステムプロセス及びテナント特有プロセスを実行し、例えばアプリケーションサービスの一部としてアプリケーションを実行するプロセス空間８２８が含まれる。
【００７２】
図８に示すシステム内のいくつかの要素は、ここで詳細に説明する必要のない従来の周知の要素を含み得る。例えば、各ユーザシステム８１２は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、ＰＤＡ、セルフォン、又は任意のＷＡＰ対応デバイス、又はインターネット又は他のネットワーク接続と直接又は間接的にインターフェースすることが可能な任意の他のコンピューティングデバイスでもよい。ユーザシステム８１２は、ＨＴＴＰクライアント、例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＩｎｔｅｒｎｅｔ  ＥｘｐｌｏｒｅｒＴＭブラウザ、Ｎｅｔｓｃａｐｅ（登録商標）のＮａｖｉｇａｔｏｒＴＭブラウザ、Ｏｐｅｒａ（登録商標）のブラウザ、又はセルフォン、ＰＤＡ、又は他の無線デバイスの場合のＷＡＰ対応ブラウザなどのブラウジングプログラムを実行することができ、ユーザシステム８１２のユーザ（例えば、ＣＲＭシステムの加入者）が、ネットワーク８１４を通じてＭＴＳ８１６からそれに利用可能な情報及びページにアクセス、処理、閲覧できるようにする。各ユーザシステム８１２は、ＭＴＳ８１６又は他のシステム若しくはサーバにより提供されるページ、フォーム、及び他の情報と関連してディスプレイモニタ画面、ＬＣＤディスプレイ等にブラウザにより提供されるグラフィカルユーザインターフェース（ＧＵＩ）と対話する１つ以上のユーザインターフェースデバイス、例えば、キーボード、マウス、タッチスクリーン、ペンなどを含む。上で論じたように、本発明は、ネットワークの特定のグローバルインターネットワークを参照するインターネットでの使用に適している。しかしながら、イントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、非ＴＣＰ／ＩＰベースのネットワーク、任意のＬＡＮ又はＷＡＮなどの他のネットワークがインターネットの代わりに使用されてもよいことを理解されたい。
【００７３】
いくつかの実施形態において、各ユーザシステム８１２及びそのコンポーネントは、１つ以上の処理要素上で実行可能なコンピュータコードを含むブラウザなどのアプリケーションを使用してオペレータにより構成可能である。同様に、いくつかの実施形態において、ＭＴＳ８１６（及び、複数のＭＴＳが存在する場合にはさらなるＭＴＳインスタンス）及びそれらのコンポーネントは、１つ以上の処理要素上で実行可能なコンピュータコードを含むアプリケーションを使用してオペレータにより構成可能である。したがって、本明細書に記載の様々な動作は、非一時的コンピュータ読取可能媒体に記憶され、かつ１つ以上の処理要素により実行されるプログラム命令を実行することにより実行することができる。プログラム命令は、ハードディスクなどの不揮発性媒体に記憶されてもよく、あるいはＲＯＭ又はＲＡＭなどの周知である任意の他の揮発性又は不揮発性メモリ媒体又はデバイスに記憶されてもよく、あるいはコンパクトディスク（ＣＤ）媒体、デジタル多用途ディスク（ＤＶＤ）媒体、フロッピーディスクなどのプログラムコードを記憶することができる任意の媒体で提供されてもよい。さらに、プログラムコード全体又はその一部は、ソフトウェアソースから例えばインターネットを通じて、又は別のサーバから周知のとおり、伝送及びダウンロードされてもよく、あるいは周知の任意の通信媒体及びプロトコル（例えば、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＨＴＴＰＳ、イーサネットなど）を使用して、周知の任意の他の従来のネットワーク接続（例えば、エクストラネット、ＶＰＮ、ＬＡＮなど）を通じて伝送されてもよい。さらに、本発明の態様を実施するコンピュータコードは、サーバ又はサーバシステム上で実行可能な任意のプログラミング言語で、例えば、Ｃ、Ｃ＋、ＨＴＭＬ、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、又はＶＢＳｃｒｉｐｔなどの任意の他のスクリプト言語で実施可能であることが理解されよう。
【００７４】
一実施形態によれば、各ＭＴＳ８１６は、ユーザシステム８１２によるＭＴＳ８１６のテナントとしてのアクセスをサポートするために、ウェブページ、フォーム、アプリケーション、データ、及び／又はメディアコンテンツをユーザシステム８１２に提供するように構成される。したがって、この実施形態において、ＭＴＳ８１６は、各テナントのデータを該データが共有されない限り別個に保持するセキュリティ機構を提供する。複数のＭＴＳが使用される場合、それらは、互いにかなり近接して（例えば、単一の建物又はキャンパス内に位置するサーバファーム内に）位置してもよく、あるいは、それらは、互いから遠隔の場所に分散されてもよい（例えば、１つ以上のサーバがＡ市内に位置し、１つ以上のサーバがＢ市内に位置する）。本明細書で用いられるとき、ＭＴＳは、ローカルに、又は１つ以上の地理的位置にわたり分散された、１つ以上の論理的及び／又は物理的に接続されたサーバを含み得る。さらに、「サーバ」という用語は、処理ハードウェア及びプロセス空間を含むコンピュータシステムと、当該分野で周知の関連するストレージシステム及びデータベースアプリケーションを含む。「サーバシステム」及び「サーバ」は、本明細書でしばしば互換的に使用されることも理解されたい。同様に、本明細書に記載のデータベースは、単一のデータベース、分散データベース、分散データベースの集合、冗長オンライン又はオフラインバックアップ又は他の冗長性を有するデータベースなどとして実装することができ、分散データベース又はストレージネットワーク及び関連する処理インテリジェンスを含むことができる。
【００７５】
図９は、ＭＴＳ８１６及び様々な相互接続の例示的な実施形態をより詳細に示す。この例において、ネットワークインターフェースは、１つ以上のＨＴＴＰアプリケーションサーバ９００として実装される。さらに、個々のテナントプロセス空間９０４を含むシステムプロセス空間９０２、システムデータベース９０６、テナントデータベース９０８、及びテナント管理プロセス空間９１０が示されている。テナントデータベース９０８は、アプリケーションサーバ９００にわたり共有することができ、物理的配置又は論理的配置のいずれかであり得る個々のテナントストレージエリア９１２に分割することができる。各テナントストレージエリア９１２内で、各ユーザに対してユーザストレージ９１４を割り当てることができる。図示されていないが、ＭＴＳ８１６のテナントにより提供される１つ以上のアプリケーション１１２が、アプリケーションサーバ９００上で動作していてもよい。
【００７６】
図示の実施形態において、各アプリケーションサーバ９００は、キャッシュ９１８の少なくとも一部をさらに含む。いくつかの実施形態において、ウェブアプリケーションを利用するユーザシステム８１２は、データが（例えば、「ｐｕｔ」操作を使用して）キャッシュ９１８に記憶されることを要求し、後に、データを再生成するのでなくデータを（例えば、「ｇｅｔ」操作を使用して）取り出すことができる。いくつかの実施形態において、キャパシティ制限が、異なるユーザ／テナント／パーティションなどに割り当てられてもよく、キャッシュされたデータは、割り振られたキャパシティ未満に留まるように追い出されてもよい。いくつかの実施形態において、特定のテナントのためのキャッシュされたデータは、他のテナントから秘密に保持される。さらに、特定のテナント内のキャッシュされたデータの可視範囲は、構成可能でもよい。
【００７７】
いくつかの実施形態において、キャッシュ９１８は、複数のアプリケーションサーバ９００にわたり分けられる。いくつかの実施形態において、複数のインスタンスにわたり分割することにより、キャッシュ９１８内のデータをシステムメモリ空間に適合させることができ、これは、例えば、ディスクストレージにキャッシュ９１８のデータを記憶することに比べて応答時間を改善し得る。本明細書で用いられるとき、「インメモリキャッシュ」は、（例えば、従来のディスクストレージで典型的に必要とされるような）ストレージのページングを必要とせずにシステムメモリ空間にデータを記憶するキャッシュである（これは典型的には、データをＲＡＭに記憶できることを意味する）。キャッシュ９１８は、単一のキャッシュが複数の異なるテナントエンティティに別個の仮想キャッシュを提供するために使用されるという意味で「マルチテナント」キャッシュでもよい。異なるテナントは、同じデータ構造を使用してデータを記憶してもよく、あるいは異なるテナントは、キャッシュ内に異なるデータ構造を有してもよい。様々な実施形態において、マルチテナントキャッシュは、テナント間のデータセキュリティを強制し、１つのテナントからのデータが他のテナントには利用できないようにする。したがって、本明細書で用いられるとき、マルチテナントキャッシュの文脈における「テナント」という用語は、異なるテナントが互いのデータにアクセスできないようにキャッシュエントリが別個に維持されるエンティティを指す。いくつかの実施形態において、テナントは、他のテナントがキャッシュを介してそれらのデータにアクセスすることを認可してもよく、一方、他の実施形態において、所与のテナントのデータが、マルチテナントキャッシュを介してそのテナントのみがアクセス可能でもよい（ただし、そのテナントは、後に、そのテナントの所望に応じて、キャッシュから取り出されたデータを共有してもよい）。
【００７８】
さらに、各アプリケーションサーバ９００は、異なるネットワーク接続を介して、データベースシステム、例えばシステムデータベース９０６及びテナントデータベース９０８に通信上結合され得ることを理解されたい。例えば、あるサーバ９００Ｉは、ネットワーク８１４を介して結合されてもよく、別のサーバ９００Ｎ−１は、直接ネットワークリンクを介して結合されてもよく、別のサーバ９００Ｎは、さらに異なるネットワーク接続により結合されてもよい。トランスファーコントロールプロトコル及びインターネットプロトコル（ＴＣＰ／ＩＰ）は、サーバ９００とデータベースシステムとの間で通信するための好ましいプロトコルであるが、使用されるネットワーク相互接続に依存して、システムを最適化するために他のトランスポートプロトコルが使用されてもよいことが当業者に明らかであろう。
【００７９】
好ましい態様において、各アプリケーションサーバ９００は、任意のユーザ／組織に対する要求を取り扱うことができる。任意の理由で任意の時点にサーバプールからアプリケーションサーバを追加及び除去できることが望ましいため、好ましくは、特定のアプリケーションサーバ９００に対するユーザ及び／又は組織のサーバアフィニティは存在しない。したがって、一実施形態において、ロードバランシング機能（例えば、Ｆ５  Ｂｉｇ‐ＩＰロードバランサ）を実装するインターフェースシステム（図示せず）は、サーバ９００とユーザシステム８１２との間で通信上結合され、サーバ９００への要求を分配する。一態様において、ロードバランサは、最小接続アルゴリズムを使用して、ユーザ要求をサーバ９００にルーティングする。ラウンドロビン及び観測応答時間などのロードバランシングアルゴリズムの他の例がさらに使用されてもよい。例えば、特定の態様において、同じユーザからの３つの連続した要求が３つの異なるサーバに当たることがあり、異なるユーザからの３つの要求が同じサーバに当たることがある。このようにして、ＭＴＳ８１６はマルチテナントであり、ＭＴＳ８１６は、異なるユーザ及び組織にわたる異なるオブジェクト、データ、及びアプリケーションの記憶を取り扱う。
【００８０】
ストレージの一例として、１つのテナントが、各販売員がＭＴＳ８１６を使用してその販売プロセスを管理する販売陣（sales  force）を採用する会社であり得る。したがって、ユーザは、全てがそのユーザの個人的販売プロセスに適用可能なコンタクトデータ、リードデータ、顧客フォローアップデータ、パフォーマンスデータ、目標及び進捗データ等を（例えば、テナントデータベース９０８に）維持することができる。いくつかのＭＴＳ実施形態において、アクセス、閲覧、修正、報告、送信、計算等すべきこのデータ及びアプリケーションの全てが、ネットワークアクセス以上のものを有さないユーザシステムにより維持及びアクセスできるため、ユーザは、多くの異なるユーザシステムのいずれかから自身の販売努力及びサイクルを管理することができる。例えば、販売員が顧客を訪問し、顧客がそのロビーにインターネットアクセスを有する場合、販売員は、顧客がロビーに到着するのを待つ間、その顧客に関する重要なアップデートを得ることができる。
【００８１】
各ユーザの販売データは、各ユーザの雇用者にかかわらず他のユーザの販売データとは別個であり得るが、いくつかのデータは、テナントである所与の組織に対する複数の販売員又は全販売員により共有され又はアクセス可能な組織全体のデータでもよい。したがって、ＭＴＳ８１６により管理される、テナントレベルで割り振られるいくつかのデータ構造があり得、一方、他のデータ構造はユーザレベルで管理される。ＭＴＳは、あり得る競合者を含む複数のテナントをサポートする可能性があるため、ＭＴＳは、データ、アプリケーション、及びアプリケーション使用を別個に保つセキュリティプロトコルを有するべきである。さらに、多くのテナントが、その独自のシステムを維持するのでなくＭＴＳへのアクセスを選択する可能性があるため、セキュリティ、冗長性、アップタイム、及びバックアップは、さらなる重要機能であり、ＭＴＳで実装される必要がある。
【００８２】
ユーザ特有のデータ及びテナント特有のデータに追加で、ＭＴＳ８１６は、複数のテナントにより使用可能なシステムレベルのデータをさらに維持してもよい。このようなシステムレベルのデータには、テナント間で共有可能な産業レポート、ニュース、投稿などを含んでもよい。
【００８３】
特定の態様において、クライアントシステム８１２は、アプリケーションサーバ９００と通信してＭＴＳ８１６からのシステムレベル及びテナントレベルのデータを要求及び更新し、これは、データベースシステム９０６及び／又はデータベースシステム９０８への１つ以上のクエリを必要としてもよい。したがって、サーバ９００は、ＭＴＳ８１６のプロバイダにより供給されたアプリケーション１１２を実行して、１つ以上の特定の動作を実行することができる。いくつかの実施態様において、ＭＴＳ８１６は、所望の情報にアクセスするように設計された１つ以上のＳＱＬ文（ＳＱＬクエリ）を自動的に生成する。
【００８４】
各データベースは、一般に、予め定義されたカテゴリに適合されたデータを含む論理テーブルのセットとして見ることができる。各テーブルは通常、物理的な列に論理的に配置された１つ以上のデータカテゴリを含む。テーブルの各行は通常、列により定義された各カテゴリのデータのインスタンスを含む。例えば、ＣＲＭデータベースは、名前、住所、電話番号、ファックス番号などの基本コンタクト情報のための列を有する顧客を記述するテーブルを含み得る。別のテーブルが、顧客、プロダクト、販売価格、日付などの情報の列を含む購入注文を記述してもよい。
【００８５】
次に、図１０を参照し、コンピュータシステム１１０、周辺コンピュータシステム１２０、及び／又は宛先コンピュータシステム１３０を実装することができる一例示的なコンピュータシステム１０００のブロック図を示す。コンピュータシステム１０００は、インターコネクト１０６０（例えば、システムバス）を介してシステムメモリ１０２０及びＩ／Ｏインターフェース１０４０に結合されるプロセッササブシステム１０８０を含む。Ｉ／Ｏインターフェース１０４０は、１つ以上のＩ／Ｏデバイス１０５０に結合される。コンピュータシステム１０００は、これらに限られないがサーバシステム、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップコンピュータ又はノートブックコンピュータ、メインフレームコンピュータシステム、タブレットコンピュータ、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、モバイルフォン、音楽プレーヤ、又はパーソナルデータアシスタント（ＰＤＡ）などのコンシューマデバイスを含む様々なタイプのデバイスのうち任意のものでもよい。図１０には、便宜上、単一のコンピュータシステム１０００が示されているが、システム１０００は、一緒に動作する２つ以上のコンピュータシステムとして実装されてもよい。
【００８６】
プロセッササブシステム１０８０は、１つ以上のプロセッサ又は処理ユニットを含んでもよい。コンピュータシステム１０００の様々な実施形態において、プロセッササブシステム１０８０の複数のインスタンスが、インターコネクト１０６０に結合されてもよい。様々な実施形態において、プロセッササブシステム１０８０（又は、１０８０内の各プロセッサユニット）は、キャッシュ又は他の形態のオンボードメモリを含んでもよい。
【００８７】
システムメモリ１０２０は、システム１０００に本明細書に記載の様々な動作を実行させるためにプロセッササブシステム１０８０により実行可能なプログラム命令を記憶するのに使用可能である。システムメモリ１０２０は、ハードディスクストレージ、フロッピーディスクストレージ、リムーバブルディスクストレージ、フラッシュメモリ、ランダムアクセスメモリ（ＲＡＭ−ＳＲＡＭ、ＥＤＯ  ＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＡＭＢＵＳ  ＲＡＭ等）、読取専用メモリ（ＰＲＯＭ、ＥＥＰＲＯＭ等）などの、異なる物理メモリ媒体を使用して実装することができる。コンピュータシステム１０００内のメモリは、メモリ１０２０などの一次記憶装置に限定されない。むしろ、コンピュータシステム１０００は、プロセッササブシステム１０８０内のキャッシュメモリ及びＩ／Ｏデバイス１０５０上の二次記憶装置（例えば、ハードドライブ、ストレージアレイ等）などの、他の形態の記憶装置をさらに含んでもよい。いくつかの実施形態において、これらの他の形態の記憶装置もまた、プロセッササブシステム１０８０により実行可能なプログラム命令を記憶してもよい。上述のアプリケーション１１２は、システムメモリ１０２０内に含まれてもよい。
【００８８】
Ｉ／Ｏインターフェース１０４０は、様々な実施形態による、他のデバイスに結合し、他のデバイスと通信するように構成された様々なタイプのインターフェースのうち任意のものでもよい。一実施形態において、Ｉ／Ｏインターフェース１０４０は、フロントサイドから１つ以上のバックサイドバスへのブリッジチップ（例えば、サウスブリッジ）である。Ｉ／Ｏインターフェース１０４０は、１つ以上の対応するバス又は他のインターフェースを介して１つ以上のＩ／Ｏデバイス１０５０に結合されてもよい。Ｉ／Ｏデバイス１０５０の例には、記憶デバイス（ハードドライブ、光学ドライブ、リムーバブルフラッシュドライブ、ストレージアレイ、ＳＡＮ、又はそれらに関連づけられたコントローラ）、ネットワークインターフェースデバイス（例えば、ローカル又はワイドエリアネットワークへ）、又は他のデバイス（例えば、グラフィックス、ユーザインターフェースデバイス等）が含まれる。一実施形態において、コンピュータシステム１０００は、ネットワークインターフェースデバイス１０５０を介してネットワークに結合される（例えば、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、イーサネットなどを通じて通信するように構成される）。
【００８９】
本出願の主題事項の実現は、これらに限られないが以下の例１〜２０を含む。
［例１］
コンピュータシステムにより、複数のユーザがアクセス可能なサーバベースのプラットフォームを提供することであり、上記サーバベースのプラットフォームは、上記複数のユーザのうち１ユーザにより開発されたアプリケーションが上記複数のユーザのうち他ユーザにより利用されることを可能にする、ことと、
上記複数のユーザのうち特定の１ユーザに対してアプリケーションを利用可能にする指標を受け取った後、上記コンピュータシステムが、異なるコンピュータシステムから構成データを取り出すことであり、上記構成データはキー値への参照を指定する、ことと、
上記コンピュータシステムにより、上記特定のユーザのクライアントクレデンシャルセットを含むデータオブジェクトを維持することと、
上記アプリケーションに関連づけられたイベントの発生に応答して、上記コンピュータシステムが、
上記データオブジェクトからの上記特定のユーザの上記クライアントクレデンシャルセットにアクセスすることであり、上記特定のユーザの上記クライアントクレデンシャルセットは、上記キー値と上記特定のユーザの指標とを使用してアクセスされる、ことと、
宛先コンピュータシステムに、上記宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記クライアントクレデンシャルセットを含む、ことと、
上記宛先コンピュータシステムから、上記コンピュータシステムが上記宛先コンピュータシステムで認証されたかどうかを示す応答を受信することと、
を含む方法。
［例２］
上記コンピュータシステムにより、上記複数のユーザのうち異なる１ユーザに対して上記アプリケーションを利用可能にする指標を受け取ることと、
上記コンピュータシステムにより、上記異なるユーザのクライアントクレデンシャルセットを含む第２のデータオブジェクトを維持することと、
上記アプリケーション及び上記異なるユーザに関連づけられたイベントの発生に応答して、上記コンピュータシステムが、
上記第２のデータオブジェクトからの上記異なるユーザの上記クライアントクレデンシャルセットにアクセスすることであり、上記異なるユーザの上記クライアントクレデンシャルセットは、上記キー値と上記異なるユーザの指標とを使用してアクセスされる、ことと、
異なる宛先コンピュータシステムに、上記異なる宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記異なるユーザの上記クライアントクレデンシャルセットを含む、ことと、
をさらに含む例１に記載の方法。
［例３］
上記宛先コンピュータシステムで認証する上記要求を送信する前に、上記コンピュータシステムが、上記特定のユーザから、上記キー値から上記クライアントクレデンシャルセットへのマッピングを定義する情報を受け取ること
をさらに含む例１に記載の方法。
［例４］
上記特定のユーザの上記指標は、上記データオブジェクトが維持されるアカウントに対応し、上記クライアントクレデンシャルセットにアクセスすることは、上記アカウントの上記データオブジェクトにアクセスすることを含む、例１に記載の方法。
［例５］
上記アプリケーションを利用可能にすることは、上記特定のユーザのアカウント下で上記アプリケーションをインストールすることと、上記特定のユーザが上記アプリケーションに対応するステップをワークフロープロセスに追加できるようにすることを含む、例１に記載の方法。
［例６］
上記イベントの発生は、上記ワークフロープロセスにおいて上記ステップに到達することを含む、例５に記載の方法。
［例７］
上記宛先コンピュータシステムで認証する上記要求を送信する前に、上記コンピュータシステムが、上記特定のユーザから、上記宛先コンピュータシステムに対応するユニフォームリソースロケータ（ＵＲＬ）を指定する情報を受け取ることであり、上記認証する要求は上記指定されたＵＲＬに基づいて送信される、こと
をさらに含む例１に記載の方法。
［例８］
コンピュータシステムに動作を実行させることができるプログラム命令を記憶した非一時的コンピュータ読取可能媒体であって、上記動作は、
複数のユーザがアクセス可能なサーバベースのプラットフォームを提供することであり、上記サーバベースのプラットフォームは、上記複数のユーザのうち１ユーザにより開発されたアプリケーションが上記複数のユーザのうち他ユーザによりインストールされることを可能にする、ことと、
特定のユーザから、上記サーバベースのプラットフォームにおける上記特定のユーザのアカウントに関連して上記アプリケーションをインストールする要求を受け取ることと、
上記特定のユーザのために上記アプリケーションをインストールした後、キー値への参照を指定する構成データを取り出すことと、
上記特定のユーザの上記アカウントに関連してデータオブジェクトを維持することであり、上記データオブジェクトは上記特定のユーザのクライアントクレデンシャルセットを含む、ことと、
上記アプリケーションに関連づけられたイベントの発生に応答して、
上記データオブジェクトからの上記特定のユーザの上記クライアントクレデンシャルセットにアクセスすることであり、上記特定のユーザの上記クライアントクレデンシャルセットは、上記キー値と上記特定のユーザの指標とを使用してアクセスされる、ことと、
宛先コンピュータシステムに、上記宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記クライアントクレデンシャルセットを含む、ことと、
上記宛先コンピュータシステムから、上記コンピュータシステムが上記宛先コンピュータシステムで認証されたかどうかを示す応答を受信することと、
を含む、非一時的コンピュータ読取可能媒体。
［例９］
上記動作は、
異なるユーザから、上記サーバベースのプラットフォームにおける上記異なるユーザのアカウントに関連して上記アプリケーションをインストールする要求を受け取ることと、
上記異なるユーザの上記アカウントに関連して第２のデータオブジェクトを維持することであり、上記データオブジェクトは上記異なるユーザのクライアントクレデンシャルセットを含む、ことと、
上記アプリケーションに関連づけられたイベントの発生に応答して、
上記第２のデータオブジェクトからの上記異なるユーザの上記クライアントクレデンシャルセットにアクセスすることであり、上記異なるユーザの上記クライアントクレデンシャルセットは、上記キー値と上記異なるユーザの指標とを使用してアクセスされる、ことと、
上記宛先コンピュータシステムに、上記宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記異なるユーザの上記クライアントクレデンシャルセットを含む、ことと、
をさらに含む、例８に記載の非一時的コンピュータ読取可能媒体。
［例１０］
上記動作は、
上記特定のユーザのために上記アプリケーションをインストールした後、上記特定のユーザから、上記アプリケーションに対応するステップを追加するようにワークフロープロセスを修正する要求を受け取ることと、
上記追加されたステップを構成する要求を受け取ったことに応答して、上記構成データの取り出しを実行することと、
をさらに含む、例８に記載の非一時的コンピュータ読取可能媒体。
［例１１］
上記動作は、
上記特定のユーザから、ユニフォームリソースロケータ（ＵＲＬ）と上記クライアントクレデンシャルセットと上記キー値及び上記クライアントクレデンシャルセット間のマッピングとを指定する認証情報を受け取ることであり、上記ＵＲＬは、上記宛先コンピュータシステムに実装された認証サービスに対応し、上記データオブジェクトは、上記マッピングに対応する、こと
をさらに含む、例８に記載の非一時的コンピュータ読取可能媒体。
［例１２］
上記宛先コンピュータシステムからの上記応答は認証トークンを含み、上記動作は、
上記アプリケーションのために上記宛先コンピュータシステムに対して認証されたアプリケーションプログラミングインターフェース（ＡＰＩ）コールを行うことであり、上記ＡＰＩコールは上記認証トークンを含む、こと
をさらに含む、例８に記載の非一時的コンピュータ読取可能媒体。
［例１３］
上記アプリケーションに関連づけられた上記イベントの発生に応答して、上記インストールされたアプリケーションを実行して、上記アクセスすることと上記送信することと上記受信することとを開始する動作のセットを実行する、例８に記載の非一時的コンピュータ読取可能媒体。
［例１４］
上記特定のユーザの上記指標は、上記データオブジェクトが維持される上記アカウントに対応するアカウント識別子である、例８に記載の非一時的コンピュータ読取可能媒体。
［例１５］
コンピュータシステムにより、特定のユーザから、上記コンピュータシステムにアプリケーションを登録する要求を受け取ることであり、上記アプリケーションの登録は、上記アプリケーションをワークフロープロセスにおいて使用可能にさせ、上記アプリケーションの実行は、上記コンピュータシステムに、宛先コンピュータシステムに対して１つ以上の要求を送信させる、ことと、
上記コンピュータシステムにより、上記特定のユーザから、特定のワークフロープロセスにステップを追加する要求を受け取ることであり、上記ステップは、上記登録されたアプリケーションに対応し、上記特定のワークフロープロセスにおける上記ステップへの到達は、上記登録されたアプリケーションが実行される結果をもたらす、ことと、
上記特定のワークフロープロセスに上記ステップを追加した後、上記コンピュータシステムが、異なるコンピュータシステムから構成データを取り出すことであり、上記構成データはキー値を指定する、ことと、
上記コンピュータシステムにより、上記特定のユーザから、上記宛先コンピュータシステムで認証するために使用可能なクライアントクレデンシャルセットへの上記キー値のマッピングを示すマッピング情報を受け取ることであり、上記マッピング情報は、上記特定のユーザの指標に関連して記憶される、ことと、
上記ステップに到達し、上記キー値と上記特定のユーザの上記指標とを使用して上記クライアントクレデンシャルセットにアクセスした後、上記コンピュータシステムが、
上記宛先コンピュータシステムに、上記宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記クライアントクレデンシャルセットを含む、ことと、
上記宛先コンピュータシステムから、上記コンピュータシステムが上記宛先コンピュータシステムで認証されたかどうかを示す応答を受信することと、
を含む方法。
［例１６］
上記コンピュータシステムにより、異なるユーザから、上記アプリケーションに対応するステップを異なるワークフロープロセスに追加する要求を受け取ることと、
上記コンピュータシステムにより、上記異なるユーザから、上記宛先コンピュータシステムで認証するために使用可能な異なるクライアントクレデンシャルセットへの上記キー値のマッピングを示すマッピング情報を受け取ることであり、上記異なるユーザからの上記マッピング情報は、上記異なるユーザの指標に関連して記憶される、ことと、
上記異なるワークフロープロセスに追加された上記ステップに到達した後、上記コンピュータシステムが、
上記キー値と上記異なるユーザの上記指標とを使用して上記異なるクライアントクレデンシャルセットにアクセスすることと、
上記宛先コンピュータシステムに、上記宛先コンピュータシステムで認証する要求を送信することであり、上記要求は上記異なるクライアントクレデンシャルセットを含む、ことと、
上記宛先コンピュータシステムから、上記コンピュータシステムが上記宛先コンピュータシステムで認証されたかどうかを示す応答を受信することと、
をさらに含む例１５に記載の方法。
［例１７］
上記コンピュータシステムにより、上記特定のユーザから、上記宛先コンピュータシステムのアドレスを示す情報を受け取ることであり、上記宛先コンピュータシステムで認証する上記要求は上記アドレスに送られる、こと
をさらに含む例１５に記載の方法。
［例１８］
上記クライアントクレデンシャルセットは、クライアント識別子及びクライアントシークレットを含む、例１５に記載の方法。
［例１９］
上記キー値は、上記アプリケーションの開発者により指定されたグローバル一意識別子である、例１５に記載の方法。
［例２０］
上記コンピュータシステムは、複数のユーザのデータをそれぞれのテナント特有のストレージエリアに記憶するマルチテナントデータベースシステムを含み、上記クライアントクレデンシャルセットは、上記特定のユーザに対応するテナント特有のストレージエリアに記憶される、例１５に記載の方法。
＊＊＊
【００９０】
特定の実施形態が上述されたが、これらの実施形態は、特定の特徴に関して単一の実施形態のみが記載されている場合でも、本開示の範囲を制限する意図はない。本開示において提供される特徴の例は、別段示されない限り、限定的でなく例示的であることを意図している。上記の説明は、本開示の利益を有する当業者に明らかなような代替、修正、及び同等物をカバーすることを意図している。
【００９１】
本開示の範囲は、本明細書に（明示的又は暗黙的のいずれかで）開示されている任意の特徴若しくは特徴の組み合わせ又はその任意の一般化を、それが本明細書に記載されている問題のいずれか又は全てを緩和するか否かにかかわらず含む。したがって、新しい請求項が、本出願（又は、その優先権を主張する出願）の手続き中に任意のそのような特徴組み合わせへまとめられてもよい。特に、別記の特許請求の範囲を参照し、従属請求項の特徴は、独立請求項の特徴と組み合わせることができ、それぞれの独立請求項の特徴は、別記の特許請求の範囲に列挙された特定の組み合わせのみでなく、任意の適切な方法で組み合わせることができる。
【図１】
2021530043.tif 000003
【図２】
2021530043.tif 000004
【図３】
2021530043.tif 000005
【図４】
2021530043.tif 000006
【図５】
2021530043.tif 000007
【図６】
2021530043.tif 000008
【図７】
2021530043.tif 000009
【図８】
2021530043.tif 000010
【図９】
2021530043.tif 000011
【図１０】
2021530043.tif 000012
【国際調査報告】
2021530043.tif 000013
2021530043.tif 000014