(58)【調査した分野】(Int.Cl.,DB名)
コンピューティングデバイスにおいて実行される、プラグ可能なトークンプロバイダモデルを通じて複数のウェブサービスにわたってメッセージレベルの認証を行う方法であって、
クライアントアプリケーションのウェブサービスコンポーネントからウェブサービス要求を受け取るステップと、
前記要求されたウェブサービスに関連付けられたメタデータを突き止めるステップであって、前記メタデータが、前記要求されたウェブサービスの実行及び認証に関連付けられる情報を含む、ステップと、
前記メタデータを解析して複数のバインディングエントリにするステップと、
前記要求されたウェブサービスに資格情報が関連付けられているとき、前記資格情報を取得するステップと、
前記資格情報に基づいて、前記複数のバインディングエントリから適切なバインディングエントリを選択するステップであって、前記複数のバインディングエントリは、前記ウェブサービス要求が行われるリソースの識別子と、ウェブサービスメッセージに含まれるべき動作及び行為情報と、前記リソースによってサポートされる認証種類と、前記リソースに対応するセキュリティポリシー情報と、前記セキュリティポリシー内のトークン発行元識別子に基づくトークンプロバイダ識別情報とのうちの少なくとも1つを含む、ステップと、
前記取得した資格情報に関連付けられるトークンを取得するステップと、
前記取得したトークンと前記選択したバインディングエントリとに基づいて、前記要求されたウェブサービスを認証するステップと、
前記認証が成功したとき、前記要求されたウェブサービスを実施するステップと
を含む、方法。
前記クライアントアプリケーション内のウェブサービスコンポーネント及びトークンプロバイダコンポーネントは、前記要求されたウェブサービスを定式化し理解するビジネス論理を動作させるコンポーネントとは分離される、請求項1に記載の方法。
前記トークンプロバイダコンポーネントは、前記クライアントアプリケーションと対話するトークン発行元を表し、URIと名前とのうちの一方によって識別される、請求項2に記載の方法。
メタデータを維持するメタデータモデルコンポーネントは、前記ウェブサービスコンポーネントから取得されるウェブサービスメタデータとウェブサービスセキュリティ(WSS)ポリシー情報とのうちの一方を用いて、前記トークンプロバイダコンポーネントを参照する、請求項3に記載の方法。
前記メタデータモデルコンポーネントはさらに、メタデータ情報と、前記メタデータを供給するウェブサービスの識別子とのマッピングを維持する、請求項4に記載の方法。
前記メタデータモデルコンポーネントが、前記メタデータを解析して、前記複数のバインディングエントリを維持し、前記メタデータが一度だけ取得され解析されるように、前記解析されたメタデータを保持する請求項4に記載の方法。
資格情報マネージャコンポーネントは、前記ウェブサービスマネージャコンポーネントによって供給されるユーザ識別子に基づいて、前記要求されたウェブサービスに関連付けられた資格情報サービスを識別するように構成される、請求項7に記載の方法。
【発明を実施するための形態】
【0009】
上記で簡単に説明したように、複数のウェブサービスにわたってメッセージレベルの認証を行うプラグ可能なトークンプロバイダモデルは、クライアントアプリケーション内のウェブサービス実装、およびトークンプロバイダ実装を、ウェブ要求を定式化し理解するビジネス論理を動作させる実際のコンポーネントとは分離させることによって、実装することができる。以下の詳細な説明では、本明細書の一部を成す添付の図面を参照し、これらの図面には、特定の実施形態または例が例示によって示されている。本開示の趣旨または範囲から逸脱することなく、上記の態様を組み合わせること、他の態様を使用すること、および構造の変更を行うことができる。したがって、以下の詳細な説明は、限定の意味で理解すべきではなく、本発明の範囲は、添付の特許請求の範囲、およびそれらの等価物によって規定される。
【0010】
諸実施形態について、パーソナルコンピュータのオペレーティングシステムで実行するアプリケーションプログラムと共に実行するプログラムモジュールの一般的な例を取って説明するが、これらの態様は、他のプログラムモジュールと組み合わせて実装することもできることが、当業者には理解されよう。
【0011】
一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、および特定のタスクを実施する、または特定の抽象データ型を実装する他の種類の構造を含む。さらに、諸実施形態は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能なコンシューマエレクトロニクス、ミニコンピュータ、メインフレームコンピュータ、およびそれらに匹敵するコンピューティングデバイスを含めて、他のコンピュータシステム構成で実施することができることが、当業者には理解されよう。諸実施形態はまた、タスクが、通信ネットワークを介してリンクされたリモートプロセッシングデバイスによって実施される分散コンピューティング環境においても実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリ記憶装置、およびリモートメモリ記憶装置のどちらにも配置することができる。
【0012】
諸実施形態は、コンピュータ実施工程(方法)、コンピューティングシステム、またはコンピュータプログラム製品、もしくはコンピュータ可読媒体などの製造物品として実装することができる。コンピュータプログラム製品は、コンピュータシステムによって可読であり、かつコンピュータ、またはコンピューティングシステムに例示の工程(複数可)を実施させる命令を含むコンピュータプログラムを符合化するコンピュータ記憶媒体でよい。コンピュータ可読記憶媒体は、例えば、1つまたは複数の揮発性コンピュータメモリ、不揮発性メモリ、ハードドライブ、フラッシュドライブ、フロッピー(登録商標)ディスク、またはコンパクトディスク、およびそれらに匹敵する媒体を介して実装することができる。
【0013】
本明細書全体を通して、用語「プラットフォーム」とは、ウェブサービス、および関連するネットワーク通信を管理するソフトウェアコンポーネントと、ハードウェアコンポーネントとの組合せとすることができる。プラットフォームの例には、それだけに限られるものではないが、複数のサーバを介して実行されるホストサービス、単一のサーバで実行されるアプリケーション、およびそれらに匹敵するシステムが含まれる。用語「サーバ」とは、一般に、典型的にはネットワーク化された環境で1つまたは複数のソフトウェアプログラムを実行するコンピューティングデバイスを指す。しかし、サーバはまた、ネットワーク上でサーバとして見られる1つまたは複数のコンピューティングデバイスで実行される仮想サーバ(ソフトウェアプログラム)として実装することもできる。これらの技術、および例示の動作に関して、以下でより詳細に説明する。
【0014】
図1は、複数のウェブサービスにわたってメッセージレベルの認証を行う諸実施形態を実装することができる、例示の統合通信システム100を示す。統合通信システムは、加入者に、幅広い範囲の能力およびサービスを提供することができる、最新の通信システムの一例である。統合通信システムは、インスタントメッセージング、プレゼンス、音声ビデオ会議、ウェブ会議、および類似の機能を促進するリアルタイム通信システムである。
【0015】
統合通信(「UC」)システム100では、ユーザは、UCシステムのクライアントデバイスである、様々なエンドデバイス(102、104)を介して通信することができる。各クライアントデバイスは、音声通信、ビデオ通信、インスタントメッセージング、アプリケーション共有、データ共有などのための、1つまたは複数の通信アプリケーションを実行することが可能である。エンドデバイスは、その進歩した機能に加えて、ソーシャルネットワークへの参加、ウェブベースのドキュメント共有、検索、およびそれらに匹敵する機能など、様々なウェブサービスを促進するアプリケーションを実行することができる。さらに、これらのクライアントデバイスによって、PBXを介した「PSTN」(Public Switched Telephone Network)への接続など、外部接続を介することによって、従来の電話通話、および類似の通信もやはり促進することができる。クライアントデバイスには、任意の種類のスマートフォン、携帯電話、通信アプリケーションを実行する任意のコンピューティングデバイス、スマート自動車コンソール、および追加の機能を有する先進の電話装置が含まれ得る。
【0016】
UCネットワーク(複数可)110は、異なるタスクを実施するいくつかのサーバを含むことができる。例えば、UCサーバ114は、登録、プレゼンス、およびルーティングの機能を実現する。ルーティング機能では、システムは、ユーザに対するコールを、デフォルトおよび/またはユーザ設定のポリシーに基づいて、ユーザに割り当てられたクライアントデバイスのいずれにも回す(route)ことが可能である。例えば、ユーザが通常の電話を利用できない場合、そのコールをユーザの携帯電話に転送することができ、そのコールに応答できない場合は、いくつかのボイスメールから選択して使用することができる。エンドデバイスは、追加の通信モードを扱うことができるので、UCサーバ114は、アクセスサーバ112を介して、これらの追加の通信モード(例えば、インスタントメッセージング、ビデオ通信など)へのアクセスを実現することができる。アクセスサーバ112は、境界ネットワークに駐在し、UCネットワーク(複数可)110を介して、他のユーザと追加の通信モードのうちの1つで接続することが可能である。UCサーバ114は、上述の機能の組合せを実施するサーバ、または特定の機能だけを実現する専用サーバを含むことができる。例えば、プレゼンス機能を実現するホームサーバ、ルーティング機能を実現するルーティングサーバなどである。同様に、アクセスサーバ112は、ファイアウォール保護および接続などの複数の機能を実現する、または特定の機能だけを実現することができる。
【0017】
A/V(Audio/Video)会議サーバ118は、内部または外部ネットワークを介して、音声および/またはテレビ会議を促進することによって、そうした会議を実現する。仲介サーバ116は、シグナリングおよびメディアを、PSTNまたは携帯電話網など他の種類のネットワークに、またはそこから取り次ぐ。仲介サーバ116はまた、SIP(Session Initiation Protocol)のユーザエージェントとして働く。
【0018】
UCシステムでは、ユーザは、1つまたは複数のIDを有することができ、IDは必ずしも電話番号に限られるわけではない。IDは、統合されたネットワークに依存して、電話番号、SIP(Session Initiation Protocol)URI(Uniform Resource Identifier)、または他の任意の識別子など、いかなる形も取ることができる。UCシステムでは、いかなるプロトコルも使用することができるが、SIPが一般に使用されている方法である。
【0019】
SIPは、1人または複数の参加者とのセッションを確立、変更、および終了するための、アプリケーション層制御(シグナリング)プロトコルである。SIPを用いて、インターネット電話通話、マルチメディア配信、およびマルチメディア会議を含めた、2パーティ、マルチパーティ、またはマルチキャストセッションを確立することができる。SIPは、下位のトランスポート層とは独立して設計される。
【0020】
SIPクライアントは、「TCP」(Transport Control Protocol)を用いて、SIPサーバ、および他のSIPエンドポイントに接続することができる。SIPは主に、音声コールまたはビデオコールを開始または切断する際に使用される。しかし、SIPは、セッションの開始が要求されるいかなるアプリケーションにも使用することができる。これらのアプリケーションには、イベントサブスクリプションおよびイベント通知、ターミナルモビリティなどが含まれる。音声通信および/またはビデオ通信は、典型的には別個のセッションプロトコル、典型的には「RTP」(Real Time Protocol)を介して行われる。
【0021】
UCシステムは、ソーシャルネットワーク、マルチモード企業通信、ウェブベースの共有サービス、および類似の環境のためのプラットフォームを提供することができる。加入者がかかる環境に参加すると、加入者は、1つまたは複数の外部サーバ(例えば122、124、および126)によって、またはUCシステム内部のサーバの1つによって管理されているウェブサービスを利用することができる。これらのサービスのいくつかでは、資格情報(credential)に基づいた認証が要求されることがある。かかるサービスは、各クライアントアプリケーション内に実装されたウェブサービスコンポーネントによって促進することができる。諸実施形態によるシステムでは、クライアントアプリケーション内のウェブサービス実装、およびトークンプロバイダ実装は、ウェブサービスの実行を管理するウェブサービスマネージャコンポーネントとは分離させることができる。ウェブサービスマネージャコンポーネントは、ウェブサービスメタデータ、トークンプロバイダ実装、資格情報マネージャ、およびウェブ要求を実施するための関連するインターフェイスを維持する共通フレームワークの一部でよい。より詳細な例について、以下で論じる。
【0022】
図1の例示のシステムでは、仲介サーバ、A/Vサーバ、および類似の装置など、特定のコンポーネントを用いて説明してきたが、諸実施形態は、これらのコンポーネントまたはシステム構成に限られるものではなく、より少ない、または追加のコンポーネントを使用している他のシステム構成でも実装することができる。複数のウェブサービスにわたってメッセージレベルの認証を行うプラグ可能なモデルを使用したシステムの機能はまた、コンポーネントの能力、およびシステム構成に依存して、システムのコンポーネント間で異なるように分散させることもできる。さらに、諸実施形態は、統合通信システムに限られるものではない。本明細書で論じる手法は、ネットワーク化通信環境におけるいかなるデータ交換にも、本明細書に記載の原理を用いて応用することができる。
【0023】
図2は、複数のウェブサービスにわたってメッセージレベルの認証を行うプラグ可能なモデルを実装するために使用することができる、クライアントアプリケーション内の様々なコンポーネント、および例示のサーバを示す概念
図200である。
図2に示すように、諸実施形態によるシステムでは、ユーザ228は、クライアント230を介して様々なウェブサービスプロバイダと相互作用することができる。クライアント230は、1つまたは複数のアプリケーションを実行するコンピューティングデバイス、1つまたは複数のコンピューティングデバイスで実行されるアプリケーション、または分散された形で実行され、ユーザ228によってコンピューティングデバイスを介してアクセスされるサービスを指すことがある。典型的なシステムクライアント230は、そのクライアントのネットワーク内の通信を管理する1つまたは複数のサーバ(例えば、サーバ244)と通信することができる。ウェブサービスのいくつかは、サーバ244で利用可能なリソースを介して提供することができる。他のウェブサービスは、サーバ246で利用可能なリソースを介して提供することができ、これらのサーバ246は、ネットワークの内部にあっても、または外部にあってもよい。
【0024】
クライアント230が相互作用するトークン発行元は、このモデルでは、トークンプロバイダコンポーネント234によって表すことができる。トークンプロバイダコンポーネント234は、そのURI(Universal Resource Identifier)または名前で一意に識別することができ、これらのトークンプロバイダコンポーネント234は、メタデータモデルコンポーネント240によって、ウェブサービスコンポーネント232からフェッチされたウェブサービスメタデータ、またはWSSポリシー情報を用いて参照することができる。
【0025】
メタデータモデルコンポーネント240は、ウェブサービス(複数可)に関連付けられた情報を維持する働きをする。メタデータは、WSDL−メタデータまたはWS−MEXのような標準の機構を使用してフェッチすることができる。メタデータを取得すると、メタデータモデルコンポーネント240は、メタデータ情報と、そのメタデータを供給するウェブサービスの識別子(例えば、「URL」(Universal Resource Locator)とのマッピングを維持することができる。メタデータモデルコンポーネント240はまた、アプリケーションが開始する度に、解析および取得サイクルが繰り返されないように、メタデータ情報をファイル、または類似の保持記憶域に保持することができる。
【0026】
諸実施形態による、ウェブサービス要求およびウェブサービス応答を実施および/または消化する(consume)コンポーネントは、下位のトークンプロバイダ、およびメタデータフレームワークに依存しなくてもよい。これらのコンポーネントは、行われるウェブサービスコールのペイロード(例えば、ウェブサービスの「SOAP」(Simple Object Access Protocol)」では本体)を単に供給することができる。特定のコールが行われると、ウェブサービスマネージャコンポーネント238は、そのコールのベース識別子を抽出し、メタデータモデルコンポーネント240にコールして、ウェブサービスメタデータを要求する。メタデータを取得すると、ウェブサービスマネージャコンポーネント238は、メタデータ中の利用可能な完全なバインディングをサイクルし、要求された動作と、資格情報マネージャコンポーネント236によって供給される資格情報に依存した認証種類とに基づいて、適切なものを選択することができる。次いで、トークンプロバイダコールを行ってトークンをフェッチすることができ、ウェブサービスマネージャコンポーネント238は、これらの情報を組み合わせて、実際のウェブサービス要求(例えば、SOAP要求)を構築することができる。
【0027】
資格情報マネージャコンポーネント236は、ユーザ識別子を用いて、資格情報サービス(「ログオンサービス」としても知られる)を識別することができる。資格情報サービスを実装している他のコンポーネントによって、資格情報マネージャコンポーネント236に対して行われるコールは、コールが行われる状況において、識別子を特定することができる。資格情報マネージャコンポーネント236は、複数の種類の資格情報を扱うことができる。諸実施形態によるシステムで使用することができる資格情報の例には、それだけに限られるものではないが、ユーザ名/パスワード、証明書、個人識別番号、およびそれらに匹敵するものが含まれる。資格情報マネージャコンポーネント236は、ユーザに資格情報を照会するか、またはシステム内固有の資格情報の任意のものを発行することができる。システム内固有の資格情報には、その時点でオペレーティングシステムにログインしたユーザの資格情報が含まれ得、この資格情報は、システムコールによってフェッチすることができる。資格情報を照会すべき場合は、ユーザインターフェイスに、プロンプトを表示するコマンドを与えることができる。このプロンプトは、ユーザがキャンセルを実行可能にすることによって、または資格情報を供給して応答することによって解除することができる。
【0028】
資格情報マネージャコンポーネント236に資格情報が供給されると、この資格情報をコンポーネントのデータモデルに保存して、後に使用することができる。モデルへの保存は、揮発性でよく、アプリケーションをシャットダウンする、または別のユーザがそのアプリケーションにログインすると、消去される。資格情報は、暗号化後、不揮発性メモリに記憶することもでき、オペレーティングシステムコールが、この目的で使用される。資格情報マネージャコンポーネント236が利用可能なあらゆる資格情報について、このコンポーネントは、(識別子によって表される)各サービスと、そのサービスのサクセスレコード間のサクセスレコードマップの実行中コピーを維持することができる。サクセスレコードは、「不明」、「成功」、または「失敗」の3つの状態のうちの1つにあることになる。「不明」状態は、特定の資格情報が資格情報サービスによって使用されたことがない場合に、設定され得る。そのサービスからの資格情報マネージャに対するその後のいかなるコールも、この資格情報を与えることができる。「成功」状態のサクセスレコードは、資格情報に対するサービスの成功使用例を記録することができ、失敗が報告されるまで、そのサービスは、同じ資格情報を使用することができる。資格情報マネージャコンポーネント236に対して、成功したサービス識別子を求めてさらにコールすることによって、「成功」の資格情報を返すことができる。「失敗」状態は、サービスの資格情報に対するログオン失敗を記録することができる。かかる資格情報は、システムがリセットされるまで、そのサービスで再度使用することができない。
【0029】
さらに、資格情報マネージャコンポーネント236は、レジストリ、ファイル、および/または資格情報マネージャAPI(Application Programming Interface)のようなシステムリソースを使用することによって、アプリケーションを再起動しても、資格情報を保持することができる。資格情報は、セキュリティのために暗号化することができる。ウェブサービストランスポートコンポーネント242は、サーバ244で実行されるものなどの他のアプリケーション/サービスとの通信インターフェイスとなることができる。
【0030】
クライアント230のコンポーネントと、外部リソースとの間でメッセージ(コール)の交換について、SOAPおよびWSSなどの例示のプロトコルについて上記で説明してきた。SOAP(Simple Object Access Protocol)は、コンピュータネットワークにおいて、ウェブサービスの実装に関する構造化された情報を交換するためのプロトコル仕様である。このプロトコルは、XML(Extensible Markup Language)をそのメッセージ形式として利用し、通常は他のアプリケーション層プロトコルに依存し、最も顕著には、RPC(Remote Procedure Call)、およびHTTPを用いて、メッセージ交渉、およびメッセージ伝達を行う。SOAPメッセージは、以下の3つの部分、すなわちメッセージの内容、およびその内容をどのように処理するかを定義するエンベロープと、SOAPノードがメッセージ経路に沿って処理すべきアプリケーションに関連する情報を含むヘッダと、メッセージの最終的な受信者向けの情報を含む本体とを含むことができる。
【0031】
SOAPアーキテクチャは、メッセージ形式、メッセージ交換パターン、下位のトランスポートプロトコルのバインディング、メッセージ処理モデル、およびプロトコル拡張用のいくつかの仕様層を含む。WSS(Web Services Security)はフレキシブルであり、SOAPに対して、ウェブサービスにセキュリティ機構を適用する機能豊富な拡張性を有する。WSSは、以下の3つの主な機構、すなわちSOAPメッセージに署名して完全性を保証する方式、SOAPメッセージを暗号化して機密性を保証する方式、およびセキュリティトークンを付与する方式について記述している。この仕様では、様々な署名形式、暗号化アルゴリズム、信頼領域(trust domain)、およびセキュリティトークンモデル(例えば、X.509証明書、ケルベロスチケット、ユーザID/パスワード資格情報、SAMLアサーション、およびカスタム定義トークン)が可能となっている。
【0032】
図3を参照すると、諸実施形態による、クライアントアプリケーション内の関連するコンポーネント、インターフェイス、および相互作用の例300が示されている。先に論じたように、クライアントが相互作用するトークン発行元は、クライアントのトークンプロバイダコンポーネント366、368、370によって表すことができる。トークンプロバイダコンポーネント366、368、370は、メタデータモデルコンポーネント364によって、ウェブサービスコンポーネント352、354、356、および358からフェッチされたウェブサービスメタデータ、またはWSSポリシー情報を用いて参照することができる。
図3に示すように、特定の目的に特殊化できる汎用実装を持たせることによって、複数のトークンプロバイダを実装することができる。いくつかの実施形態によるクライアントアプリケーションでは、トークンプロバイダコンポーネント366、368、370は、トークンが与えられることになるターゲットが供給されたときに、そのターゲットに対応するトークンを供給するGetToken()インターフェイス(378、380、および382)を公開(expose)することができる。トークンは、有効である限り、キャッシュに入れることができ、有効期限後、トークンプロバイダに対するコールが行われたときに、自動的に更新することができる。トークンプロバイダコンポーネント366、368、370は、メタデータモデルコンポーネント364のRegisterTokenProvider()インターフェイス376にコールすることによって、メタデータモデルコンポーネント364に登録することができる。登録によって、トークン発行元の名前(例えば一意の名前)またはURIを供給することができる。
【0033】
メタデータモデルコンポーネント364は、ウェブサービス(複数可)に関連付けられた情報を維持する働きをする。メタデータ情報は、解析し、一連のバインディングエントリとして維持することができる。各バインディングエントリは、ウェブサービス要求が行われる実際のエンドポイントURI、ウェブサービスのSOAP動作情報および行為情報、エンドポイントで支持される認証種類、エンドポイントに対応するセキュリティポリシー情報、および/またはセキュリティポリシーのトークンプロバイダに基づいたトークン発行元URIを含むことができる。
【0034】
GetToken()インターフェイス(378、380、382)コールが行われると、トークンプロバイダコンポーネントが取得することができる異なる種類のトークンを支持するように、セキュリティポリシー情報を含めることができる。例えば、セキュリティポリシーは、トークンプロバイダコンポーネントが、トークン発行元に対してRequestSecurityTokenコールを実際に生成するために使用することができる動作環境キーを有することができる。メタデータを取得すると、メタデータモデルコンポーネント364は、アプリケーションが開始する度に、解析および取得サイクルが繰り返されないように、メタデータ情報をファイル、または類似の保持記憶域に保持することができる。
【0035】
ウェブサービスマネージャコンポーネント360は、そのExecuteWebRequest()インターフェイス372を介して、特定のウェブサービスを求めるコールを受け取り、そのコールのベース識別子を抽出することができる。次いで、ウェブサービスマネージャコンポーネント360は、メタデータモデルコンポーネント364のGetMetadata()インターフェイス374にコールして、ウェブサービスメタデータを要求することができる。メタデータを取得すると、ウェブサービスマネージャコンポーネント360は、メタデータ中の利用可能な完全なバインディングをサイクルし、要求された動作と、資格情報マネージャコンポーネントによって供給される資格情報に依存した認証種類とに基づいて、適切なものを選択することができる。次いで、トークンプロバイダコールを行って関連するトークンをフェッチすることができ、ウェブサービスマネージャコンポーネント360は、これらの情報を組み合わせて、実際のウェブサービス要求を構築することができる。特定の要求について、メタデータモデルコンポーネント364で利用可能なメタデータがない場合、メタデータモデルコンポーネント364は、関連するウェブサービスに対してダウンロードコールを行うことができる。先に論じたように、ウェブサービストランスポートコンポーネント362は、クライアント内のコンポーネントと、他のコンピューティングデバイスで実行される他のアプリケーション/サービスとの間のインターフェイスサービスを提供する。
【0036】
図1、2、および3の例示のシステムを、特定のサーバ、クライアントデバイス、ソフトウェアモジュール、および相互作用について説明してきた。諸実施形態は、これらの例示の構成によるシステムに限られるものではない。複数のウェブサービスにわたってメッセージレベルの認証を行うプラグ可能なトークンプロバイダモデルは、より少ない、または追加のコンポーネントを使用し、かつ他のタスクを実施する構成でも実装することができる。さらに、特定のプロトコル、コール、およびインターフェイスについて、上述の諸実施形態に関して論じてきた。諸実施形態はやはり、それらの例に限定されるものではない。他のプロトコル、交換、インターフェイスを、本明細書に記載の原理を用いて同様に実装することができる。
【0037】
図4は、諸実施形態を実装することができる、例示のネットワーク化された環境である。複数のウェブサービスにわたって認証を行うプラグ可能なトークンプロバイダモデルを実現するプラットフォームは、ホストサービスなど、1つまたは複数のサーバ414を介して実行されるソフトウェアを介して実装することができる。このプラットフォームは、ネットワーク(複数可)410を介して、スマートフォン413、ラップトップコンピュータ412、またはデスクトップコンピュータ411など(「クライアントデバイス」)の個々のコンピューティングデバイスのクライアントアプリケーションと通信することができる。
【0038】
上記で論じたように、クライアントデバイス411〜413のいずれかで実行されるクライアントアプリケーションは、別個のウェブサービスコンポーネント、トークンプロバイダコンポーネント、ウェブサービス管理コンポーネント、および資格情報管理コンポーネントを含むことができる。これらのコンポーネントは、上記で説明したように、メタデータモデルによって、ウェブサービス要求に関する認証を管理することができる。サーバ414の1つまたは複数のサーバ、あるいは単一のサーバ416で実行される通信サービスまたはアプリケーションは、クライアントデバイス411〜413を介して、ユーザからの要求(複数可)を受け取り、関連するデータをデータストア(複数可)419から直接、またはデータベースサーバ418を介して受け取り、要求されたウェブサービスをユーザ(複数可)に提供することができる。
【0039】
ネットワーク(複数可)410は、いかなるトポロジのサーバ、クライアント、インターネットサービスプロバイダ、および通信媒体も備えることができる。諸実施形態によるシステムは、静的トポロジ、または動的トポロジを有することができる。ネットワーク(複数可)410には、例えば企業ネットワークなどのセキュリティで保護されたネットワーク、無線オープンネットワーク、またはインターネットなどのセキュリティで保護されていないネットワークが含まれ得る。ネットワーク(複数可)410はまた、PSTN(Public Switched Telephone Network)または携帯電話網など、他のネットワークを介した通信をコーディネートすることができる。さらに、ネットワーク(複数可)410は、ブルートゥースまたは類似のものなどの近距離無線ネットワークを含むことができる。ネットワーク(複数可)410は、本明細書に記載のノード間での通信を実現する。限定ではなく、例によって示すものであるが、ネットワーク(複数可)410には、アコースティック、RF、赤外線、および他の無線媒体などの無線媒体が含まれ得る。
【0040】
他の多くの構成のコンピューティングデバイス、アプリケーション、データソース、およびデータ配信システムを使用して、複数のウェブサービスにわたてメッセージレベルの認証を行うフレームワークを実装することができる。さらに、
図4で論じるネットワーク化された環境は、単なる例示の目的のものにすぎない。諸実施形態は、例示のアプリケーション、モジュール、または工程に限られるものではない。
【0041】
図5および関連する考察は、諸実施形態を実装することができる適切なコンピューティング環境の簡潔で一般的な説明を行うためのものである。
図5を参照すると、コンピューティングデバイス500など、諸実施形態によるアプリケーション用の例示のコンピューティング動作環境のブロック図が示されている。基本の構成では、コンピューティングデバイス500は、諸実施形態によるクライアントアプリケーションを実行するクライアントデバイスでよく、少なくとも1つの処理装置502、およびシステムメモリ504を含む。コンピューティングデバイス500はまた、プログラムを実行する際に協働する複数の処理装置を含むことができる。コンピューティングデバイスの正確な構成、および種類に依存して、システムメモリ504は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またはそれら2つの何らかの組合せでよい。システムメモリ504は、典型的には、本件特許出願人によるWINDOWS(登録商標)オペレーティングシステムなど、プラットフォームの動作を制御するのに適したオペレーティングシステム505を含む。システムメモリ504はまた、プログラムモジュール506、通信クライアントアプリケーション522、およびコンポーネント524など、1つまたは複数のソフトウェアアプリケーションを含むことができる。
【0042】
通信クライアントアプリケーション522は、コンピューティングデバイス500の他のアプリケーションおよび/またはモジュールと、要求されたウェブサービスに関連するサーバとの間の通信を促進するいかなるアプリケーションでもよい。コンポーネント524には、先に論じたように、ウェブサービスコンポーネント、トークンプロバイダ、ウェブサービスマネージャ、資格情報マネージャ、およびメタデータモデルが含まれ得る。ウェブサービス要求は、コンポーネント間の相互作用によって遂行されるメッセージレベルの認証によって実施することができる。通信クライアントアプリケーション522は、別個のアプリケーションでも、またはクライアントデバイスに高機能の通信サービスを提供する、ホストサービスの一体型モジュールでもよい。この基本の構成を、破線508内のコンポーネントによって
図5に例示する。
【0043】
コンピューティングデバイス500は、追加の特徴または機能を有することができる。例えば、コンピューティングデバイス500はまた、例えば、磁気ディスク、光ディスク、またはテープなどの(取外し可能な、かつ/または取外し不可能な)追加のデータ記憶装置を含むことができる。かかる追加の記憶装置は、
図5では、取外し可能な記憶装置509、および取外し不可能な記憶装置510によって示してある。コンピュータ可読記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報を記憶する任意の方法または技術で実装される、揮発性、および不揮発性の、取外し可能な媒体、および取外し不可能な媒体が含まれ得る。システムメモリ504、取外し可能な記憶装置509、および取外し不可能な記憶装置510は全て、コンピュータ可読記憶媒体の例である。コンピュータ可読記憶媒体には、それだけに限られるものではないが、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、DVD(digital versatile disk)、または他の光記憶装置、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、あるいは所望の情報を記憶するために使用することができ、かつコンピューティングデバイス500によってアクセスすることができる他の任意の媒体が含まれる。かかるコンピュータ可読記憶媒体はいずれも、コンピューティングデバイス500の一部となることができる。コンピューティングデバイス500はまた、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、およびそれらに匹敵する入力装置などの入力装置(複数可)512を有することができる。ディスプレイ、スピーカ、プリンタ、および他の種類の出力装置などの出力装置(複数可)514もやはり、含めることができる。これらの装置は、当技術分野で周知であり、本明細書で詳細に論じる必要はない。
【0044】
コンピューティングデバイス500はまた、分散コンピューティング環境の有線または無線ネットワーク、衛星リンク、携帯電話リンク、近距離ネットワーク、およびそれらに匹敵する機構などを介して、このデバイスを他のデバイス518と通信可能とする通信接続部516を含むことができる。他のデバイス518には、通信アプリケーション実行するコンピュータデバイス(複数可)、他のウェブサーバ、およびそれらに匹敵する装置が含まれ得る。通信接続部(複数可)516は、通信媒体の一例である。通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータをその中に含むことができる。限定ではなく、例によって示すものであるが、通信媒体には、有線ネットワーク、または直接有線接続などの有線媒体、およびアコースティック、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。
【0045】
例示の諸実施形態はまた、方法を含む。これらの方法は、本明細書に記載の構造を含めて、多くの方策で実施することができる。かかる方策の1つは、本明細書に記載の種類の装置の機械動作によって実施される。
【0046】
任意選択による別の方策は、実施すべき方法の個々の操作の1つまたは複数のための方策であり、1人または複数の人間のオペレータがいくつかを実施する。これらの人間のオペレータは、互いに併存している(collocate)必要はなく、各自がプログラムの一部を実施する機械に向かっていればよい。
【0047】
図6は、諸実施形態による、メッセージレベルの認証によってウェブサービスを提供する工程(process)600の論理流れ図を示す。工程600は、高機能の通信システムに参加するクライアントアプリケーションの一部として実装することができる。
【0048】
工程600は、クライアントアプリケーション内のウェブサービスコンポーネントからのウェブサービス要求を、ウェブサービスマネージャコンポーネントで受け取る動作610から開始する。動作620で、ウェブサービスマネージャコンポーネントは、要求されたウェブサービスに関連付けられたメタデータを突き止めることができる。判定動作630で、ウェブサービスマネージャコンポーネントが、資格情報が必要であると判定した場合、処理は動作640に進み、ここで、資格情報マネージャコンポーネントから資格情報が取得される。そうでない場合には、処理は、動作670にスキップすることができ、ここで要求されたウェブサービスが、ウェブサービスマネージャコンポーネントの管理下で提供される。資格情報マネージャコンポーネントは、単一のユーザIDを複数ウェブサービスと関連付けることによって、または複数のユーザIDを単一のウェブサービスと関連付けることによって、複数種の資格情報を扱うことができる。
【0049】
資格情報(複数可)の取得後、動作650で、取得した資格情報(複数可)に関連付けられたトークンを、トークンプロバイダコンポーネントから要求することができる。メタデータは、サービスごとにトークンをフェッチするように設定可能に処理することができる。ウェブサービスごとにトークンプロバイダコンポーネントがあってもよく(サービスごとのトークンプロバイダ)、これらのトークンプロバイダコンポーネントと、ウェブサービスとは、静的にバインディングされるか、または動的にバインディングされる。この後、動作660が続き、ここで、ウェブサービスマネージャコンポーネントは、要求されたウェブサービスの認証を、受け取ったトークンに基づいて監督する。認証が成功した場合、動作670で、要求されたウェブサービスを提供することができる。
【0050】
工程600に含まれる動作は、例示の目的である。複数のウェブサービスにわたってメッセージレベルの認証を行うプラグ可能なトークンプロバイダモデルは、より少ない、または追加のステップを含む類似の工程によって実施することができ、また、本明細書に記載の原理を用いて、異なる動作順序でも同様に実施することができる。
【0051】
上述の仕様、例、およびデータは、諸実施形態の組成の製造および使用について完全に説明するためのものである。構造上の特徴および/または方法的行為に特定の言語で本主題を説明してきたが、添付の特許請求の範囲に規定される主題は、必ずしも上述の特定の特徴または行為に限られるものではないことを理解されたい。そうではなく、上述の特定の特徴および行為は、特許請求の範囲、および諸実施形態を実装する例示の形態として開示するものである。