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

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

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許6496404コンピュータサブネットワーク内のプロキシサーバ
<>
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000002
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000003
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000004
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000005
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000006
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000007
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000008
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000009
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000010
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000011
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000012
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000013
  • 特許6496404-コンピュータサブネットワーク内のプロキシサーバ 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6496404
(24)【登録日】2019年3月15日
(45)【発行日】2019年4月3日
(54)【発明の名称】コンピュータサブネットワーク内のプロキシサーバ
(51)【国際特許分類】
   H04L 12/66 20060101AFI20190325BHJP
   H04L 12/721 20130101ALI20190325BHJP
【FI】
   H04L12/66 B
   H04L12/721 Z
【請求項の数】15
【全頁数】40
(21)【出願番号】特願2017-514693(P2017-514693)
(86)(22)【出願日】2015年4月27日
(65)【公表番号】特表2017-529793(P2017-529793A)
(43)【公表日】2017年10月5日
(86)【国際出願番号】US2015027757
(87)【国際公開番号】WO2016048418
(87)【国際公開日】20160331
【審査請求日】2017年11月2日
(31)【優先権主張番号】62/054,613
(32)【優先日】2014年9月24日
(33)【優先権主張国】US
(31)【優先権主張番号】14/696,186
(32)【優先日】2015年4月24日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ハンダ,ニティン
(72)【発明者】
【氏名】カバンザス,ニコラス
(72)【発明者】
【氏名】スリバスタバ,ロイット
【審査官】 玉木 宏治
(56)【参考文献】
【文献】 特開2012−044283(JP,A)
【文献】 米国特許出願公開第2013/0227291(US,A1)
【文献】 特開2006−115059(JP,A)
【文献】 特開2005−217828(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00−955
(57)【特許請求の範囲】
【請求項1】
コンピュータネットワーク間で送信されるメッセージを処理する方法であって、前記方法は、
内部コンピュータネットワークのサブネットワーク内のプロキシサーバで第1のメッセージを受信するステップを含み、前記プロキシサーバは、前記内部コンピュータネットワークの一組のウェブアプリケーションまたはサービスを外部コンピュータネットワークに公開し、前記方法はさらに、
前記第1のメッセージのための意図された宛先を判断するステップと、
前記第1のメッセージのための前記意図された宛先に基づいて、前記プロキシサーバがフォワードプロキシとして作用すべきかリバースプロキシとして作用すべきかを判断するステップと、
前記プロキシサーバ内の前記第1のメッセージのための予め定められた処理フローにおける現在点を判断するステップと、
前記プロキシサーバ内でメッセージを処理するための複数のポリシーから、前記第1のメッセージを処理するためのポリシーを選択するステップとを含み、選択は、前記予め定められた処理フローにおける前記現在点、または、前記プロキシサーバがフォワードプロキシとして作用すべきかリバースプロキシとして作用すべきかの判断、のうちの少なくとも1つに基づいており、前記方法はさらに、
選択された前記ポリシーに従って前記第1のメッセージを処理するステップと、
前記第1のメッセージを処理した後で、前記第1のメッセージを前記意図された宛先に送信するステップとを含む、方法。
【請求項2】
前記プロキシサーバはセキュリティプロキシを含み、選択された前記ポリシーは、1つ以上のウェブサービスセキュリティポリシーを呼び出すマシン実行可能コードを含む、請求項1に記載の方法。
【請求項3】
前記プロキシサーバは、前記内部コンピュータネットワークの物理的サブネットワーク内で動作するコンピュータシステムを含む、請求項1または2に記載の方法。
【請求項4】
前記プロキシサーバは、前記内部コンピュータネットワークの論理的サブネットワーク内で実行されるプロキシサーバアプリケーションを含む、請求項1または2に記載の方法。
【請求項5】
前記第1のメッセージを処理するための前記ポリシーを選択するステップは、
前記第1のメッセージのための前記処理フロー中にエラーが起こったと判断するステップと、
前記エラーが起こったという判断に基づいて前記ポリシーを選択するステップとを含む、請求項1〜4のいずれか1項に記載の方法。
【請求項6】
前記第1のメッセージを処理するための前記ポリシーを選択するステップは、
前記第1のメッセージのための着信メッセージフォーマットを判断するステップと、
前記第1のメッセージは、前記着信メッセージフォーマットとは異なる、必要とされる発信メッセージフォーマットに変換されるべきであると判断するステップと、
前記第1のメッセージは変換されるべきであるという判断に基づいて前記ポリシーを選択するステップとを含む、請求項1〜4のいずれか1項に記載の方法。
【請求項7】
前記第1のメッセージのための前記処理フローにおける前記現在点を判断するステップは、
前記第1のメッセージは、前記外部コンピュータネットワークにおけるクライアント装置からの要求に対応していると判断するステップ、または
前記プロキシサーバは、前記内部コンピュータネットワークにおけるウェブアプリケーションまたはウェブサービスに前記要求を送信すべきであると判断するステップ、
のうちの少なくとも1つを含む、請求項1〜6のいずれか1項に記載の方法。
【請求項8】
前記第1のメッセージのための前記処理フローにおける前記現在点を判断するステップは、
前記第1のメッセージは、前記プロキシサーバによって送信された以前のメッセージに対する、前記内部コンピュータネットワークにおけるウェブアプリケーションまたはウェブサービスからの応答に対応していると判断するステップ、または
前記プロキシサーバは、前記外部コンピュータネットワークにおけるクライアント装置に前記応答を送信すべきであると判断するステップ、
のうちの少なくとも1つを含む、請求項1〜6のいずれか1項に記載の方法。
【請求項9】
前記第1のメッセージは、前記内部コンピュータネットワークの簡易オブジェクトアクセスプロトコル(SOAP)仮想サービス内の1つ以上のSOAP動作を呼び出すためのメッセージである、または当該1つ以上のSOAP動作からのメッセージの一部であると判断するステップと、
判断された前記SOAP動作および前記SOAP仮想サービスに基づいて、前記第1のメッセージを処理するための前記ポリシーを選択するステップと、
選択された前記ポリシーに従って前記第1のメッセージを処理した後で、前記第1のメッセージ内のデータを使用して、判断された前記1つ以上のSOAP動作を呼び出すステップとをさらに含む、請求項1〜8のいずれか1項に記載の方法。
【請求項10】
前記第1のメッセージは、前記内部コンピュータネットワークのレプリゼンテーショナル・ステート・トランスファー(REST)仮想サービスまたは仮想ウェブアプリケーションに関連付けられた1つ以上のハイパーテキスト転送プロトコル(HTTP)方法に対応していると判断するステップと、
判断された前記HTTP方法および前記REST仮想サービスまたは仮想ウェブアプリケーションに基づいて、前記第1のメッセージを処理するための前記ポリシーを選択するステップと、
選択された前記ポリシーに従って前記第1のメッセージを処理した後で、前記第1のメッセージ内のデータを使用して、判断された前記1つ以上のHTTP方法を呼び出すステップとをさらに含む、請求項1〜8のいずれか1項に記載の方法。
【請求項11】
前記第1のメッセージに関連付けられた1つ以上のユーザクレデンシャルを受信するステップをさらに含み、前記第1のメッセージは、前記外部コンピュータネットワークにおけるクライアント装置からの、前記内部コンピュータネットワークの第1のウェブサービスにアクセスしたいという要求に対応しており、前記方法はさらに、
前記ユーザクレデンシャルを使用して、前記要求に関連付けられた第1のユーザを認証するステップを含む、請求項1〜10のいずれか1項に記載の方法。
【請求項12】
前記第1のウェブサービスにアクセスするために、第1のトークンタイプの認証トークンが必要とされると判断するステップと、
前記内部コンピュータネットワークのウェブサービスから第1の認証トークンを検索するステップとをさらに含み、前記第1の認証トークンは前記第1のトークンタイプのもので、前記第1のユーザに関連付けられており、前記方法はさらに、
前記要求に従って前記第1のウェブサービスにアクセスするために前記第1の認証トークンを使用するステップを含む、請求項11に記載の方法。
【請求項13】
前記予め定められた処理フローにおける判断された前記現在点に基づいて、OnRequest()、OnInvoke()、OnResponse()、またはonError()方法を実行するステップをさらに含む、請求項1〜12のいずれか1項に記載の方法。
【請求項14】
システムであって、
1つ以上のプロセッサを含む処理部と、
前記処理部と結合され、前記処理部によって読取可能であるメモリとを含み、前記メモリは、前記処理部によって実行されると前記処理部に以下のステップを行なわせる一組の命令を格納しており、前記以下のステップは、
第1のメッセージを受信するステップを含み、前記システムは、内部コンピュータネットワークのサブネットワーク内で動作するように構成され、前記システムは、前記内部コンピュータネットワークの一組のウェブアプリケーションまたはサービスを外部コンピュータネットワークに公開し、前記以下のステップはさらに、
前記第1のメッセージのための意図された宛先を判断するステップと、
前記第1のメッセージのための前記意図された宛先に基づいて、前記システムがフォワードプロキシとして作用すべきかリバースプロキシとして作用すべきかを判断するステップと、
前記第1のメッセージのための予め定められた処理フローにおける現在点を判断するステップと、
メッセージを処理するための複数のポリシーから、前記第1のメッセージを処理するためのポリシーを選択するステップとを含み、選択は、前記予め定められた処理フローにおける前記現在点、または、前記システムがフォワードプロキシとして作用すべきかリバースプロキシとして作用すべきかの判断、のうちの少なくとも1つに基づいており、前記以下のステップはさらに、
選択された前記ポリシーに従って前記第1のメッセージを処理するステップと、
前記第1のメッセージを処理した後で、前記第1のメッセージを前記意図された宛先に送信するステップとを含む、システム。
【請求項15】
請求項1から13のいずれか1項に記載の方法をプロセッサに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本願は、2015年4月24日に出願された、「コンピュータサブネットワーク内のプロキシサーバ」(PROXY SERVERS WITHIN COMPUTER SUBNETWORKS)と題された米国非仮出願第14/696,186号の利益および優先権を主張し、当該非仮出願は、2014年9月24日に出願された、「モバイルセキュリティアクセスサーバ(MOBILE SECURITY ACCESS SERVER:MSAS)」と題された米国仮特許出願第62/054,613号の利益および優先権を主張する。上述の特許出願の内容全体は、あらゆる目的のために、ここに引用により援用される。
【背景技術】
【0002】
背景
この開示は一般に、セキュリティサービスを提供するためのシステム、方法、およびマシン読取可能媒体に関する。より特定的には、この開示は、とりわけ、認証、認可、監査、シングルサインオン、セキュリティポリシー実施、キー管理および分散、安全な通信、安全なデータ格納、および安全なデータ共有を含む、モバイル装置と企業アプリケーションとの接続のためのセキュリティサービスを提供するためのシステム、方法、およびマシン読取可能媒体に関する。
【発明の概要】
【課題を解決するための手段】
【0003】
簡単な概要
ここに説明される局面は、コンピュータネットワーク間で送信されるメッセージを処理するためのさまざまな手法を提供する。いくつかの実施形態では、さまざまなタイプのウェブサービス、アプリケーション、および他のウェブコンテンツに対する要求および応答といったメッセージが、複数のコンピュータネットワーク間で送信されてもよい。物理的または論理的サブネットワーク内に実装されたプロキシサーバといった、1つ以上の中間装置またはアプリケーションが、通信エンドポイント間でメッセージを受信し、処理し、送信してもよい。たとえば、プロキシサーバは、内部コンピュータネットワークのサブネットワーク内で動作するように構成されてもよく、内部コンピュータネットワークのさまざまなウェブアプリケーションおよび/またはサービスを外部コンピュータネットワークに公開する。
【0004】
ある実施形態では、プロキシサーバは、内部ネットワークにおけるエンドポイントから外部システムにおけるエンドポイントに送信されたメッセージを受信してもよく、または、その逆も同様である。メッセージは、メッセージの意図された宛先を判断するために、および/または、メッセージを処理する際にプロキシサーバがフォワードプロキシとして作用すべきかリバースプロキシとして作用すべきかを判断するために、分析されてもよい。加えて、プロキシサーバは、特定のメッセージを処理するためのエンドツーエンドポリシーモデルといった予め定められた処理フローにおける現在点(カレントポイント:current point)を判断してもよい。メッセージの分析および予め定められた処理フローにおける現在点に基づいて、プロキシサーバは、メッセージに適用されるべき1つ以上のポリシーを選択してもよい。そのようなポリシーは、たとえば、メッセージを認証する、セキュリティトークン仲介およびキー管理を提供する、プロトコルおよびペイロード仲介を行なう、装置ベースのセキュリティを行なう、非武装ゾーン(demilitarized zone:DMZ)脅威保護をサポートする、などのためのセキュリティポリシーおよび他の通信管理ポリシーを含んでいてもよい。メッセージに適用されるべき特定のポリシーを選択した後で、プロキシサーバは、ポリシーに従ってメッセージを処理し、メッセージをその意図された宛先に発送してもよい。
【0005】
また、ここに説明される例が示すように、さまざまな実施形態は、異なるセキュリティポリシーおよび他の通信管理ポリシーが、DMZもしくは他の論理的または物理的サブネットワーク内で、メッセージのエンドツーエンド処理フロー全体にわたるさまざまな異なる処理点で適用され得る、動的ポリシーモデルをサポートしてもよい。そのような動的ポリシーモデルフレームワークは、通信エンドポイント内では可能ではなかったかもしれない、または好ましくなかったかもしれない、さまざまなタイプのコンピュータネットワークおよびシステムセキュリティおよび他の通信ポリシーを構築し実現するために使用されてもよい。
【図面の簡単な説明】
【0006】
図1】この発明のさまざまな実施形態が実現され得る例示的な分散型システムのコンポーネントを示すブロック図である。
図2】この発明の実施形態によって提供されるサービスをクラウドサービスとして提供し得るシステム環境のコンポーネントを示すブロック図である。
図3】この発明の実施形態が実現され得る例示的なコンピュータシステムを示すブロック図である。
図4】この発明の1つ以上の実施形態に従った、コンピューティング装置および/またはシステム間でメッセージを処理して送信するためのプロキシサーバを含むコンピューティング環境を、高レベルで示すブロック図である。
図5】この発明の1つ以上の実施形態に従った、選択されたメッセージ処理ポリシーを使用してメッセージを受信して処理するためのプロセスを示すフローチャートである。
図6A】この発明の1つ以上の実施形態に従った、予め定められたメッセージ処理フローの例を示すマークアップ言語文書を示す図である。
図6B】この発明の1つ以上の実施形態に従った、予め定められたメッセージ処理フローの例を示すマークアップ言語文書を示す図である。
図7A】この発明の1つ以上の実施形態に従った、1つ以上のメッセージ処理フロー内の異なる点に対応するメッセージ処理ポリシーの例示的なテンプレートを示すマークアップ言語文書を示す図である。
図7B】この発明の1つ以上の実施形態に従った、1つ以上のメッセージ処理フロー内の異なる点に対応するメッセージ処理ポリシーの例示的なテンプレートを示すマークアップ言語文書を示す図である。
図7C】この発明の1つ以上の実施形態に従った、1つ以上のメッセージ処理フロー内の異なる点に対応するメッセージ処理ポリシーの例示的なテンプレートを示すマークアップ言語文書を示す図である。
図7D】この発明の1つ以上の実施形態に従った、1つ以上のメッセージ処理フロー内の異なる点に対応するメッセージ処理ポリシーの例示的なテンプレートを示すマークアップ言語文書を示す図である。
図8】この発明の1つ以上の実施形態に従った、外部クライアント装置から内部ウェブサービスに送信されたウェブサービス要求のエンドツーエンド処理フローを示すフロー図である。
図9】この発明の1つ以上の実施形態に従った、内部クライアント装置から外部ウェブサービスまたはアプリケーションに送信されたウェブサービスまたはアプリケーション要求のエンドツーエンド処理フローを示すフロー図である。
【発明を実施するための形態】
【0007】
詳細な説明
以下の記載では、説明の目的のため、多くの特定の詳細が、この発明のさまざまな実施形態の完全な理解を提供するために述べられる。しかしながら、これらの特定の詳細のうちのいくつかがなくてもこの発明の実施形態は実践され得る、ということは、当業者には明らかであろう。他の例では、周知の構造および装置は、ブロック図の形で示される。
【0008】
以下の記載は例示的な実施形態のみを提供しており、この開示の範囲、利用可能性、または構成を限定するよう意図されてはいない。むしろ、例示的な実施形態の以下の記載は、例示的な実施形態を実現するための実施可能な説明を当業者に提供するであろう。添付された請求項で述べられるようなこの発明の精神および範囲から逸脱することなく、要素の機能および配置においてさまざまな変更が行なわれてもよい、ということが理解されるべきである。
【0009】
以下の記載では、実施形態の完全な理解を提供するために、特定の詳細が与えられる。しかしながら、これらの特定の詳細がなくても実施形態は実践され得る、ということは、当業者には理解されるであろう。たとえば、実施形態を必要以上に詳細に記して不明瞭にすることがないように、回路、システム、ネットワーク、プロセス、および他のコンポーネントは、ブロック図の形のコンポーネントとして示されてもよい。他の例では、実施形態を不明瞭にしないように、周知の回路、プロセス、アルゴリズム、構造、および手法は、不要な詳細なしで示されてもよい。
【0010】
また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明され得ることに留意されたい。フローチャートは動作を順次プロセスとして説明し得るものの、動作の多くは並行してまたは同時に行なうことが可能である。加えて、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了すると終了するが、図に含まれない追加のステップを有していてもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応していてもよい。プロセスがある機能に対応している場合、その終了は、その機能が呼出し元の機能または主機能に戻ることに対応可能である。
【0011】
「コンピュータ読取可能媒体」という用語は、命令および/またはデータを格納し、含み、または担持することができる、携帯型または固定式記憶装置、光学記憶装置、ならびにさまざまな他の媒体といった非一時的媒体を含むものの、それらに限定されない。コードセグメントまたはコンピュータ実行可能命令が、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、もしくは、命令、データ構造またはプログラム文の任意の組合せを表わしてもよい。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡し、および/または受信することによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む任意の好適な手段を介して渡され、発送され、または送信されてもよい。
【0012】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、必要なタスクを行なうためのプログラムコードまたはコードセグメントが、マシン読取可能媒体に格納されてもよい。プロセッサが、必要なタスクを行なってもよい。
【0013】
コンピュータネットワーク間で送信されるメッセージを処理するために、さまざまな手法(たとえば、方法、システム、1つ以上のプロセッサによって実行可能な複数の命令を格納する非一時的なコンピュータ読取可能記憶メモリ、など)がここに説明される。いくつかの実施形態では、さまざまなタイプのウェブサービス、アプリケーション、および他のウェブコンテンツに対する要求および応答といったメッセージが、複数のコンピュータネットワーク間で送信されてもよい。物理的または論理的サブネットワーク内に実装されたプロキシサーバといった、1つ以上の中間装置またはアプリケーションが、通信エンドポイント間でメッセージを受信し、処理し、送信してもよい。たとえば、プロキシサーバは、内部コンピュータネットワークのサブネットワーク内で動作するように構成されてもよく、内部コンピュータネットワークのさまざまなウェブアプリケーションおよび/またはサービスを外部コンピュータネットワークに公開する。
【0014】
いくつかの実施形態では、プロキシサーバは、内部ネットワークにおけるエンドポイントから外部システムにおけるエンドポイントに送信されたメッセージを受信してもよく、または、その逆も同様である。メッセージは、メッセージの意図された宛先を判断するために、および/または、メッセージを処理する際にプロキシサーバがフォワードプロキシとして作用すべきかリバースプロキシとして作用すべきかを判断するために、分析されてもよい。加えて、プロキシサーバは、特定のメッセージを処理するためのエンドツーエンドポリシーモデルといった予め定められた処理フローにおける現在点を判断してもよい。メッセージの分析および予め定められた処理フローにおける現在点に基づいて、プロキシサーバは、メッセージに適用されるべき1つ以上のポリシーを選択してもよい。そのようなポリシーは、たとえば、メッセージを認証する、セキュリティトークン仲介およびキー管理を提供する、プロトコルおよびペイロード仲介を行なう、装置ベースのセキュリティを行なう、非武装ゾーン(DMZ)脅威保護をサポートする、などのためのセキュリティポリシーおよび他の通信管理ポリシーを含んでいてもよい。メッセージに適用されるべき特定のポリシーを選択した後で、プロキシサーバは、ポリシーに従ってメッセージを処理し、メッセージをその意図された宛先に発送してもよい。この発明の実施形態のさまざまな追加の詳細を、図を参照して以下に説明する。
【0015】
図1は、この発明のさまざまな実施形態が実現され得る例示的な分散型システムのコンポーネントを示すブロック図である。図示された実施形態では、分散型システム100は1つ以上のクライアントコンピューティング装置102、104、106、および108を含み、それらは、1つ以上のネットワーク110を通して、ウェブブラウザ、専用クライアント(たとえば、オラクル・フォームズ(Oracle Forms))などのクライアントアプリケーションを実行し、動作させるように構成される。サーバ112は、ネットワーク110を介して、リモートクライアントコンピューティング装置102、104、106、および108と通信可能に結合されてもよい。
【0016】
さまざまな実施形態では、サーバ112は、システムのコンポーネントのうちの1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。いくつかの実施形態では、これらのサービスは、ウェブベースのサービスまたはクラウドサービスとして、もしくはソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)モデルの下で、クライアントコンピューティング装置102、104、106、および/または108のユーザに提供されてもよい。クライアントコンピューティング装置102、104、106、および/または108を動作させるユーザは次に、これらのコンポーネントによって提供されるサービスを利用するためにサーバ112とやりとりするために、1つ以上のクライアントアプリケーションを利用してもよい。
【0017】
図に示す構成では、システム100のソフトウェアコンポーネント118、120および122は、サーバ112上で実現されるとして図示されている。他の実施形態では、システム100のコンポーネントおよび/またはこれらのコンポーネントによって提供されるサービスのうちの1つ以上も、クライアントコンピューティング装置102、104、106、および/または108のうちの1つ以上によって実現されてもよい。クライアントコンピューティング装置を動作させるユーザは次に、これらのコンポーネントによって提供されるサービスを使用するために、1つ以上のクライアントアプリケーションを利用してもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。分散型システム100とは異なり得るさまざまな異なるシステム構成が可能であることが理解されるべきである。図に示す実施形態はこのため、実施形態システムを実現するための分散型システムの一例であり、限定的であるよう意図されてはいない。
【0018】
クライアントコンピューティング装置102、104、106、および/または108は、携帯型ハンドヘルド装置(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))、またはウェアラブル装置(たとえば、グーグル・グラス(Google Glass)(登録商標)頭部装着型ディスプレイ)であってもよく、マイクロソフト・ウィンドウズ・モバイル(Microsoft Windows Mobile)(登録商標)などのソフトウェア、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)、ブラックベリー(登録商標)10、パームOSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(short message service:SMS)、ブラックベリー(登録商標)、または他の通信プロトコルに対応している。クライアントコンピューティング装置は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを例として含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティング装置は、たとえばグーグル・クロームOSなどのさまざまなGNU/Linuxオペレーティングシステムを何ら限定されることなく含む、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであり得る。それに代えて、またはそれに加えて、クライアントコンピューティング装置102、104、106、および108は、ネットワーク110を通して通信可能である、シンクライアントコンピュータ、インターネット対応ゲーミングシステム(たとえば、Kinect(登録商標)ジェスチャー入力装置を有する、または有さない、マイクロソフトXboxゲーミングコンソール)、および/またはパーソナルメッセージング装置といった、任意の他の電子装置であってもよい。
【0019】
例示的な分散型システム100は4つのクライアントコンピューティング装置を有して図示されているが、任意の数のクライアントコンピューティング装置がサポートされてもよい。センサを有する装置などの他の装置が、サーバ112とやりとりしてもよい。
【0020】
分散型システム100におけるネットワーク110は、TCP/IP(transmission control protocol/Internet protocol:伝送制御プロトコル/インターネットプロトコル)、SNA(systems network architecture:システムネットワークアーキテクチャ)、IPX(Internet packet exchange:インターネットパケット交換)、アップル・トーク(Apple Talk)などを何ら限定されることなく含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。単なる例として、ネットワーク110は、イーサネット(登録商標)、トークンリング(Token-Ring)などに基づくものといった、ローカルエリアネットワーク(local area network:LAN)であり得る。ネットワーク110は、ワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク(virtual private network:VPN)を何ら限定されることなく含む仮想ネットワーク、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、電気電子技術者協会(the Institute of Electrical and Electronics:IEEE)802.11プロトコルスイート、Bluetooth(登録商標)、および/または任意の他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/もしくは、これらのおよび/または他のネットワークの任意の組合せを含み得る。
【0021】
サーバ112は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを例として含む)、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せで構成されてもよい。さまざまな実施形態では、サーバ112は、前述の開示で説明された1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ112は、この開示の一実施形態に従った上述の処理を行なうためのサーバに対応していてもよい。
【0022】
サーバ112は、上述のもののうちのいずれかを含むオペレーティングシステム、および商業的に入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ112はまた、さまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行してもよく、HTTP(hypertext transport protocol:ハイパーテキスト伝送プロトコル)サーバ、FTP(file transfer protocol:ファイル転送プロトコル)サーバ、CGI(common gateway interface:コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース(Sybase)、IBM(International Business Machines:インターナショナル・ビジネス・マシーンズ)などから商業的に入手可能なものを何ら限定されることなく含む。
【0023】
いくつかの実現化例では、サーバ112は、クライアントコンピューティング装置102、104、106、および108のユーザから受信されたデータフィードおよび/またはイベント更新を分析して統合するための1つ以上のアプリケーションを含んでいてもよい。一例として、データフィードおよび/またはイベント更新は、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信されたツイッター(登録商標)フィード、フェースブック(登録商標)更新またはリアルタイム更新を含んでいてもよいが、それらに限定されない。サーバ112はまた、クライアントコンピューティング装置102、104、106、および108の1つ以上の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含んでいてもよい。
【0024】
分散型システム100はまた、1つ以上のデータベース114および116を含んでいてもよい。データベース114および116は、さまざまな位置に存在していてもよい。例として、データベース114および116のうちの1つ以上は、サーバ112に対してローカルな(および/または、サーバ112内にある)非一時的記憶媒体上に存在していてもよい。それに代えて、データベース114および116は、サーバ112からリモートであってもよく、ネットワークベースの接続または専用接続を介してサーバ112と通信してもよい。一組の実施形態では、データベース114および116は、ストレージエリアネットワーク(storage-area network:SAN)に存在していてもよい。同様に、サーバ112に帰する機能を行なうための任意の必要なファイルが適宜、サーバ112上にローカルに格納されてもよく、および/またはリモートに格納されてもよい。一組の実施形態では、データベース114および116は、SQLフォーマットのコマンドに応答してデータを格納し、更新し、検索するように適合された、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでいてもよい。
【0025】
図2は、この発明の実施形態によって提供されるサービスをクラウドサービスとして提供し得るシステム環境のコンポーネントを示すブロック図である。図示された実施形態では、システム環境200は、クラウドサービスを提供するクラウドインフラストラクチャシステム202とやりとりするためにユーザによって使用され得る1つ以上のクライアントコンピューティング装置204、206、および208を含む。クライアントコンピューティング装置は、クラウドインフラストラクチャシステム202によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム202とやりとりするためにクライアントコンピューティング装置のユーザによって使用され得る、ウェブブラウザ、専用クライアントアプリケーション(たとえば、オラクル・フォームズ)、または何らかの他のアプリケーションといったクライアントアプリケーションを動作させるように構成されてもよい。
【0026】
図に示すクラウドインフラストラクチャシステム202は、図示されたもの以外のコンポーネントを有していてもよい、ということが理解されるべきである。また、図に示す実施形態は、この発明の一実施形態を取入れ得るクラウドインフラストラクチャシステムの単なる一例である。いくつかの他の実施形態では、クラウドインフラストラクチャシステム202は、図に示すものよりも多い、または少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組合せてもよく、もしくは、異なる構成または配置のコンポーネントを有していてもよい。
【0027】
クライアントコンピューティング装置204、206、および208は、102、104、106、および108について上述したものと同様の装置であってもよい。
【0028】
例示的なシステム環境200は3つのクライアントコンピューティング装置を有して図示されているが、任意の数のクライアントコンピューティング装置がサポートされてもよい。センサを有する装置などの他の装置が、クラウドインフラストラクチャシステム202とやりとりしてもよい。
【0029】
ネットワーク210は、クライアント204、206、および208とクラウドインフラストラクチャシステム202との間のデータの通信および交換を容易にしてもよい。各ネットワークは、ネットワーク110について上述したものを含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。
【0030】
クラウドインフラストラクチャシステム202は、サーバ112について上述したものを含み得る1つ以上のコンピュータおよび/またはサーバを含んでいてもよい。
【0031】
ある実施形態では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスといった、クラウドインフラストラクチャシステムのユーザにとってオンデマンドで利用可能にされる多数のサービスを含んでいてもよい。クラウドインフラストラクチャシステムによって提供されるサービスは、そのユーザの必要性を満たすために動的にスケール変更され得る。クラウドインフラストラクチャシステムによって提供されるサービスの特定のインスタンス化は、ここに「サービスインスタンス」と呼ばれる。一般に、クラウドサービスプロバイダのシステムから、インターネットなどの通信ネットワークを介してユーザに利用可能とされる任意のサービスは、「クラウドサービス」と呼ばれる。典型的には、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを作り上げるサーバおよびシステムは、顧客自身の業務用サーバおよびシステムとは異なっている。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドでアプリケーションをオーダーし、使用してもよい。
【0032】
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、クラウドベンダーによってユーザに提供されるかまたは当該技術分野において他の態様で公知であるようなストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、もしくは他のサービスへの、保護されたコンピュータネットワークアクセスを含んでいてもよい。たとえば、サービスは、インターネットを通した、クラウド上のリモートストレージへの、パスワードで保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク化された開発者による私的使用のための、ウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含み得る。
【0033】
ある実施形態では、クラウドインフラストラクチャシステム202は、セルフサービスで、サブスクリプションベースで、弾力的にスケーラブルで、信頼でき、高可用性で、かつ安全な態様で顧客に配信される、アプリケーション、ミドルウェアおよびデータベースサービス提供物一式を含んでいてもよい。そのようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクル・パブリック・クラウド(Oracle Public Cloud)である。
【0034】
さまざまな実施形態では、クラウドインフラストラクチャシステム202は、クラウドインフラストラクチャシステム202によって提供されるサービスに顧客のサブスクリプションを自動的にプロビジョニングし、管理し、追跡するように適合されてもよい。クラウドインフラストラクチャシステム202は、異なるデプロイメントモデルを介してクラウドサービスを提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム202がクラウドサービスを販売する組織によって所有され(たとえば、オラクルによって所有され)、サービスが一般大衆または異なる産業企業にとって利用可能とされる、パブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム202が単一の組織のためにのみ動作され、その組織内の1つ以上のエンティティのためのサービスを提供し得る、プライベートクラウドモデルの下で提供されてもよい。クラウドサービスはまた、クラウドインフラストラクチャシステム202、およびクラウドインフラストラクチャシステム202によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有される、コミュニティクラウドモデルの下で提供されてもよい。クラウドサービスはまた、2つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
【0035】
いくつかの実施形態では、クラウドインフラストラクチャシステム202によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(SaaS)カテゴリー、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)カテゴリー、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)カテゴリー、または、ハイブリッドサービスを含むサービスの他のカテゴリーの下で提供される、1つ以上のサービスを含んでいてもよい。顧客は、クラウドインフラストラクチャシステム202によって提供される1つ以上のサービスを、サブスクリプションオーダーを介してオーダーしてもよい。クラウドインフラストラクチャシステム202は次に、顧客のサブスクリプションオーダーにおけるサービスを提供するために処理を行なう。
【0036】
いくつかの実施形態では、クラウドインフラストラクチャシステム202によって提供されるサービスは、アプリケーションサービス、プラットフォームサービス、およびインフラストラクチャサービスを、何ら限定されることなく含んでいてもよい。いくつかの例では、アプリケーションサービスは、SaaSプラットフォームを介して、クラウドインフラストラクチャシステムによって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。たとえば、SaaSプラットフォームは、統合された開発およびデプロイメントプラットフォーム上にオンデマンドアプリケーション一式を構築し、配信するための能力を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための基本ソフトウェアおよびインフラストラクチャを管理し、制御してもよい。SaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用できる。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得できる。さまざまな異なるSaaSサービスが提供されてもよい。例は、大型組織のための販売実績管理、企業統合、およびビジネス柔軟性についてのソリューションを提供するサービスを、何ら限定されることなく含む。
【0037】
いくつかの実施形態では、プラットフォームサービスは、PaaSプラットフォームを介して、クラウドインフラストラクチャシステムによって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスの例は、(オラクルなどの)組織が共有の共通アーキテクチャ上で既存のアプリケーションを統合できるようにするサービスと、プラットフォームによって提供される共有のサービスを活用する新しいアプリケーションを構築するための能力とを、何ら限定されることなく含んでいてもよい。PaaSプラットフォームは、PaaSサービスを提供するための基本ソフトウェアおよびインフラストラクチャを管理し、制御してもよい。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステムによって提供されるPaaSサービスを取得できる。プラットフォームサービスの例は、オラクルJava(登録商標)クラウドサービス(Java Cloud Service:JCS)、オラクル・データベース・クラウド・サービス(Database Cloud Service:DBCS)などを、何ら限定されることなく含む。
【0038】
PaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを採用するとともに、デプロイメントされたサービスを制御することができる。いくつかの実施形態では、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえば、オラクル・フュージョン・ミドルウェア(Oracle Fusion Middleware)サービス)、およびJavaクラウドサービスを含んでいてもよい。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、データベースクラウドの形をしたデータベース・アズ・ア・サービスを顧客に提供することを可能にする共有のサービスデプロイメントモデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発してデプロイメントするためのプラットフォームを提供してもよく、Javaクラウドサービスは、顧客がクラウドインフラストラクチャシステムにおいてJavaアプリケーションをデプロイメントするためのプラットフォームを提供してもよい。
【0039】
クラウドインフラストラクチャシステムにおいて、さまざまな異なるインフラストラクチャサービスが、IaaSプラットフォームによって提供されてもよい。これらのインフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のための、ストレージ、ネットワーク、ならびに他の基礎的コンピューティングリソースなどの基本コンピューティングリソースの管理および制御を容易にする。
【0040】
ある実施形態では、クラウドインフラストラクチャシステム202はまた、クラウドインフラストラクチャシステムの顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース230を含んでいてもよい。一実施形態では、インフラストラクチャリソース230は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージ、およびネットワーキングリソースなどのハードウェアの予め統合され最適化された組合せを含んでいてもよい。
【0041】
いくつかの実施形態では、クラウドインフラストラクチャシステム202におけるリソースは、複数のユーザによって共有され、要望ごとに動的に再割当てされてもよい。加えて、リソースは、異なる時間帯におけるユーザに割当てられてもよい。たとえば、クラウドインフラストラクチャシステム230は、第1の時間帯における第1の一組のユーザが、特定数の時間、クラウドインフラストラクチャシステムのリソースを利用することを可能にし、次に、異なる時間帯に位置する別の一組のユーザへの同じリソースの再割当てを可能にして、それによりリソースの利用を最大化してもよい。
【0042】
ある実施形態では、クラウドインフラストラクチャシステム202の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム202によって提供されるサービスによって共有される、多くの内部共有サービス232が提供されてもよい。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
【0043】
ある実施形態では、クラウドインフラストラクチャシステム202は、クラウドインフラストラクチャシステムにおけるクラウドサービス(たとえば、SaaS、PaaS、およびIaaSサービス)の包括的管理を提供してもよい。一実施形態では、クラウド管理機能性は、クラウドインフラストラクチャシステム202によって受信された顧客のサブスクリプションをプロビジョニングし、管理し、追跡するための能力などを含んでいてもよい。
【0044】
一実施形態では、図に示すように、クラウド管理機能性は、オーダー管理モジュール220、オーダーオーケストレーションモジュール222、オーダープロビジョニングモジュール224、オーダー管理および監視モジュール226、ならびにアイデンティティ管理モジュール228などの1つ以上のモジュールによって提供されてもよい。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せであり得る、1つ以上のコンピュータおよび/またはサーバを含んでいてもよく、もしくはそれらを使用して提供されてもよい。
【0045】
例示的な動作234では、クライアント装置204、206または208などのクライアント装置を使用する顧客は、クラウドインフラストラクチャシステム202によって提供される1つ以上のサービスを要求し、クラウドインフラストラクチャシステム202によって提供される1つ以上のサービスについてサブスクリプションオーダーを出すことにより、クラウドインフラストラクチャシステム202とやりとりしてもよい。ある実施形態では、顧客は、クラウドユーザインターフェイス(User Interface:UI)であるクラウドUI212、クラウドUI214および/またはクラウドUI216にアクセスし、これらのUIを介してサブスクリプションオーダーを出してもよい。顧客がオーダーを出したことに応答してクラウドインフラストラクチャシステム202が受信したオーダー情報は、顧客と、顧客が申し込むつもりである、クラウドインフラストラクチャシステム202によって提供される1つ以上のサービスとを識別する情報を含んでいてもよい。
【0046】
顧客によってオーダーが出された後で、オーダー情報がクラウドUI212、214および/または216を介して受信される。
【0047】
動作236で、オーダーがオーダーデータベース218に格納される。オーダーデータベース218は、クラウドインフラストラクチャシステム202によって動作され、他のシステム要素とともに動作される、いくつかのデータベースのうちの1つであり得る。
【0048】
動作238で、オーダー情報はオーダー管理モジュール220に発送される。場合によっては、オーダー管理モジュール220は、オーダーを検証し、検証後にオーダーを予約するといった、オーダーに関連する請求および課金機能を行なうように構成されてもよい。
【0049】
動作240で、オーダーに関する情報がオーダーオーケストレーションモジュール222に通信される。オーダーオーケストレーションモジュール222は、顧客によって出されたオーダーのためのサービスおよびリソースのプロビジョニングをオーケストレーションするために、オーダー情報を利用してもよい。場合によっては、オーダーオーケストレーションモジュール222は、オーダープロビジョニングモジュール224のサービスを使用して、申し込まれたサービスをサポートするようにリソースのプロビジョニングをオーケストレーションしてもよい。
【0050】
ある実施形態では、オーダーオーケストレーションモジュール222は、各オーダーに関連付けられたビジネスプロセスの管理を可能にし、オーダーがプロビジョニングに進むべきか否かを判断するためにビジネス論理を適用する。動作242で、新規サブスクリプションのオーダーを受信すると、オーダーオーケストレーションモジュール222は、リソースを割当ててサブスクリプションオーダーを遂行するために必要とされるリソースを構成するようにという要求を、オーダープロビジョニングモジュール224に送信する。オーダープロビジョニングモジュール224は、顧客によってオーダーされたサービスのためのリソースの割当てを可能にする。オーダープロビジョニングモジュール224は、クラウドインフラストラクチャシステム202によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間の抽象化のレベルを提供する。オーダーオーケストレーションモジュール222はこのため、サービスおよびリソースが実際にオンザフライでプロビジョニングされるか否か、または予めプロビジョニングされて要求時にのみ割当てられるか否かといった実装詳細から切り離されてもよい。
【0051】
動作244で、サービスおよびリソースが一旦プロビジョニングされると、提供されるサービスの通知が、クラウドインフラストラクチャシステム202のオーダープロビジョニングモジュール224によって、クライアント装置204、206および/または208上の顧客に送信されてもよい。
【0052】
動作246で、顧客のサブスクリプションオーダーが、オーダー管理および監視モジュール226によって管理され、追跡されてもよい。場合によっては、オーダー管理および監視モジュール226は、使用されるストレージの量、転送されるデータの量、ユーザの数、システムアップタイムおよびシステムダウンタイムの量といった、サブスクリプションオーダーにおけるサービスについての使用統計を収集するように構成されてもよい。
【0053】
ある実施形態では、クラウドインフラストラクチャシステム202は、アイデンティティ管理モジュール228を含んでいてもよい。アイデンティティ管理モジュール228は、クラウドインフラストラクチャシステム202においてアクセス管理および認証サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの実施形態では、アイデンティティ管理モジュール228は、クラウドインフラストラクチャシステム202によって提供されるサービスを利用したい顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報と、さまざまなシステムリソース(たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してそれらの顧客がどのアクションを行なうことが認可されているかを記述する情報とを含み得る。アイデンティティ管理モジュール228はまた、各顧客についての記述的情報と、その記述的情報が誰によってどのようにアクセスされ、修正され得るかについての記述的情報との管理を含んでいてもよい。
【0054】
図3は、この発明の実施形態が実現され得る例示的なコンピュータシステムを示すブロック図である。システム300は、上述のコンピュータシステムのうちのいずれかを実現するために使用されてもよい。図に示すように、コンピュータシステム300は、バスサブシステム302を介して多くの周辺サブシステムと通信する処理部304を含む。これらの周辺サブシステムは、処理加速部306と、I/Oサブシステム308と、記憶サブシステム318と、通信サブシステム324とを含んでいてもよい。記憶サブシステム318は、有形のコンピュータ読取可能記憶媒体322と、システムメモリ310とを含む。
【0055】
バスサブシステム302は、コンピュータシステム300のさまざまなコンポーネントおよびサブシステムを意図されるように互いに通信させるためのメカニズムを提供する。バスサブシステム302は単一のバスとして概略的に図示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用してもよい。バスサブシステム302は、さまざまなバスアーキテクチャのうちのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、IEEE P1386.1規格で製造されるメザニンバスとして実現可能な、産業標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、強化ISA(EISA)バス、ビデオエレクトロニクス標準組織(Video Electronics Standards Association:VESA)ローカルバス、および周辺コンポーネント相互接続(Peripheral Component Interconnect:PCI)バスを含んでいてもよい。
【0056】
1つ以上の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現され得る処理部304は、コンピュータシステム300の動作を制御する。処理部304には、1つ以上のプロセッサが含まれていてもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでいてもよい。ある実施形態では、処理部304は、各処理部にシングルまたはマルチコアプロセッサが含まれた、1つ以上の独立した処理部332および/または334として実現されてもよい。他の実施形態では、処理部304はまた、2つのデュアルコアプロセッサをシングルチップへと集積することによって形成されるクアッドコア処理部として実現されてもよい。
【0057】
さまざまな実施形態では、処理部304は、プログラムコードに応答してさまざまなプログラムを実行でき、同時に実行される複数のプログラムまたはプロセスを維持できる。任意の所与の時間において、実行されるべきプログラムコードのうちのいくつかまたはすべては、プロセッサ304に、および/または記憶サブシステム318にあり得る。好適なプログラミングを通して、プロセッサ304は、上述のさまざまな機能性を提供できる。コンピュータシステム300は加えて処理加速部306を含んでいてもよく、それは、デジタル信号プロセッサ(digital signal processor:DSP)、専用プロセッサなどを含み得る。
【0058】
I/Oサブシステム308は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含んでいてもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、ディスプレイに組込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システム付き音声入力装置、マイクロホン、および他のタイプの入力装置を含んでいてもよい。ユーザインターフェイス入力装置は、たとえば、ジェスチャーおよび口頭コマンドを使用したナチュラルユーザインターフェイスを通して、マイクロソフトXbox(登録商標)360ゲームコントローラなどの入力装置をユーザが制御し、それとやりとりすることを可能にする、マイクロソフトKinect(登録商標)運動センサなどの運動感知および/またはジェスチャー認識装置を含んでいてもよい。ユーザインターフェイス入力装置はまた、ユーザから目の活動(たとえば、写真撮影中および/またはメニュー選択中の「まばたき」)を検出し、アイジェスチャーを入力装置(たとえば、グーグル・グラス(登録商標))への入力として変換する、グーグル・グラス(登録商標)まばたき検出器などのアイジェスチャー認識装置を含んでいてもよい。加えて、ユーザインターフェイス入力装置は、ユーザが音声コマンドを通して音声認識システム(たとえば、Siri(登録商標)ナビゲータ)とやりとりできるようにする音声認識感知装置を含んでいてもよい。
【0059】
ユーザインターフェイス入力装置はまた、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルビデオカメラ、携帯型メディアプレイヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー測距器、および視線追跡装置などの音声/視覚装置を、何ら限定されることなく含んでいてもよい。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影装置、磁気共鳴撮像装置、ポジトロン放出断層撮影装置、医療用超音波検査装置などの医療用撮像入力装置を含んでいてもよい。ユーザインターフェイス入力装置はまた、たとえば、MIDIキーボード、デジタル楽器などの音声入力装置を含んでいてもよい。
【0060】
ユーザインターフェイス出力装置は、表示サブシステム、表示灯、または、音声出力装置などの非視覚的ディスプレイを含んでいてもよい。表示サブシステムは、陰極線管(cathode ray tube:CRT)、液晶ディスプレイ(liquid crystal display:LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム300からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置およびメカニズムを含むよう意図されている。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデムといった、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示装置を、何ら限定されることなく含んでいてもよい。
【0061】
コンピュータシステム300は、現在システムメモリ310内に位置するとして図示されたソフトウェア要素を含む記憶サブシステム318を含んでいてもよい。システムメモリ310は、処理部304上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されたデータとを格納してもよい。
【0062】
コンピュータシステム300の構成およびタイプに依存して、システムメモリ310は揮発性(ランダムアクセスメモリ(random access memory:RAM)など)であってもよく、および/または不揮発性(読出専用メモリ(read-only memory:ROM)、フラッシュメモリなど)であってもよい。RAMは典型的には、処理部304に直ちにアクセス可能であり、および/または処理部304によって現在動作および実行中のデータおよび/またはプログラムモジュールを含む。いくつかの実現化例では、システムメモリ310は、スタティックランダムアクセスメモリ(static random access memory:SRAM)またはダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)などの複数の異なるタイプのメモリを含んでいてもよい。いくつかの実現化例では、起動中などにコンピュータシステム300内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入力/出力システム(basic input/output system:BIOS)が、典型的にはROMに格納されていてもよい。限定のためではなく例として、システムメモリ310はまた、クライアントアプリケーション、ウェブブラウザ、中央層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)などを含み得るアプリケーションプログラム312と、プログラムデータ314と、オペレーティングシステム316とを示す。例として、オペレーティングシステム316は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはLinuxオペレーティングシステムのさまざまなバージョン、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、グーグル・クローム(登録商標)OSなどを何ら限定されることなく含む)、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)10OS、パーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含んでいてもよい。
【0063】
記憶サブシステム318はまた、いくつかの実施形態の機能性を提供する基本プログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されると上述の機能性を提供するソフトウェア(プログラム、コードモジュール、命令)が、記憶サブシステム318に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理部304によって実行されてもよい。記憶サブシステム318はまた、この発明に従って使用されるデータを格納するためのリポジトリを提供してもよい。
【0064】
記憶サブシステム300はまた、コンピュータ読取可能記憶媒体322にさらに接続され得るコンピュータ読取可能記憶媒体リーダ320を含んでいてもよい。システムメモリ310とともに、およびオプションでシステムメモリ310と組合わされて、コンピュータ読取可能記憶媒体322は、リモート、ローカル、固定および/またはリムーバブルの記憶装置に加えて、コンピュータ読取可能情報を一時的におよび/またはより永続的に含み、格納し、送信し、検索するための記憶媒体を包括的に表わしてもよい。
【0065】
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体322はまた、情報の格納および/または送信のためのあらゆる方法または技術で実現される揮発性および不揮発性でリムーバブルおよび非リムーバブルの媒体を含むがそれらに限定されない記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは使用されるあらゆる適切な媒体を含み得る。これは、RAM、ROM、電子的消去可能プログラマブルROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(digital versatile disk:DVD)または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、もしくは他の有形のコンピュータ読取可能媒体といった、非一時的で有形のコンピュータ読取可能記憶媒体を含み得る。これは、所望の情報を送信するために使用可能であり、コンピューティングシステム300によってアクセスされ得るデータ信号、データ送信、または任意の他の媒体といった、非有形のコンピュータ読取可能媒体も含み得る。
【0066】
例として、コンピュータ読取可能記憶媒体322は、非リムーバブルで不揮発性の磁気媒体から読出し、またはそれに書込むハードディスクドライブ、リムーバブルで不揮発性の磁気ディスクから読出し、またはそれに書込む磁気ディスクドライブ、ならびに、CD ROM、DVD、およびBlu−Ray(登録商標)ディスク、または他の光学媒体といった、リムーバブルで不揮発性の光ディスクから読出し、またはそれに書込む光ディスクドライブを含んでいてもよい。コンピュータ読取可能記憶媒体322は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digitalSD)カード、DVDディスク、デジタルビデオテープなどを含んでいてもよいが、それらに限定されない。コンピュータ読取可能記憶媒体322はまた、フラッシュメモリベースのソリッドステートドライブ(solid-state drive:SSD)、企業フラッシュドライブ、ソリッドステートROMといった、不揮発性メモリに基づいたSSD、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSDといった、揮発性メモリに基づいたSSD、および、DRAMベースのSSDとフラッシュメモリベースのSSDとの組合せを使用するハイブリッドSSDを含んでいてもよい。ディスクドライブおよびそれらの関連付けられたコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージをコンピュータシステム300に提供してもよい。
【0067】
通信サブシステム324は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム324は、コンピュータシステム300とは別のシステムからデータを受信し、別のシステムにデータを送信するためのインターフェイスとして機能する。たとえば、通信サブシステム324は、コンピュータシステム300がインターネットを介して1つ以上の装置に接続できるようにしてもよい。いくつかの実施形態では、通信サブシステム324は、(たとえば、3G、4G、またはEDGE(enhanced data rates for global evolution:エンハンスト・データレート・フォー・グローバル・エボリューション)、WiFi(IEEE802.11ファミリー規格)、または他の移動通信技術、またはそれらの任意の組合せといった携帯電話技術、高度なデータネットワーク技術を使用した)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)トランシーバコンポーネント、全地球測位システム(global positioning system:GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム324は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(たとえば、イーサネット)を提供できる。
【0068】
いくつかの実施形態では、通信サブシステム324はまた、コンピュータシステム300を使用し得る1人以上のユーザのために、構造化および/または非構造化データフィード326、イベントストリーム328、イベント更新330などのフォームを有した入力通信を受信してもよい。
【0069】
例として、通信サブシステム324は、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、リッチ・サイト・サマリー(Rich Site Summary:RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイム更新といった、ソーシャルネットワークおよび/または他の通信サービスのユーザからのデータフィード326をリアルタイムで受信するように構成されてもよい。
【0070】
加えて、通信サブシステム324はまた、リアルタイムイベントのイベントストリーム328および/またはイベント更新330を含み得る、明確な終わりがなく本質的に連続的または無限であり得る連続データストリームの形をしたデータを受信するように構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などを含んでいてもよい。
【0071】
通信サブシステム324はまた、構造化および/または非構造化データフィード326、イベントストリーム328、イベント更新330などを、コンピュータシステム300に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成されてもよい。
【0072】
コンピュータシステム300は、ハンドヘルド携帯装置(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(たとえば、グーグル・グラス(登録商標)頭部装着型ディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、さまざまなタイプのうちの1つであり得る。
【0073】
コンピュータおよびネットワークの絶えず変化する性質により、図に示すコンピュータシステム300の説明は、単に特定の一例として意図される。図に示すシステムよりも多い、または少ないコンポーネントを有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組合せで実現されてもよい。また、ネットワーク入力/出力装置などの他のコンピューティング装置への接続が採用されてもよい。ここに提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実現するための他のやり方および/または方法を理解するであろう。
【0074】
上に紹介されたように、この発明の実施形態は、コンピュータネットワーク間で送信されるメッセージを処理するための手法を提供する。より特定的には、ある実施形態は、さまざまなタイプのウェブサービス、アプリケーション、および他のウェブコンテンツに対する要求および応答といったメッセージを、複数のコンピュータネットワーク間で送信するための手法を提供する。物理的または論理的サブネットワーク内に実装されたプロキシサーバといった、1つ以上の中間装置またはアプリケーションが、通信エンドポイント間でメッセージを受信し、処理し、送信してもよい。いくつかの実施形態では、プロキシサーバは、内部ネットワークにおけるエンドポイントから外部システムにおけるエンドポイントに送信されたメッセージを受信してもよく、または、その逆も同様である。メッセージは、メッセージの意図された宛先を判断するために、および/または、メッセージを処理する際にプロキシサーバがフォワードプロキシとして作用すべきかリバースプロキシとして作用すべきかを判断するために、分析されてもよい。プロキシサーバはまた、特定のメッセージを処理するために使用されるエンドツーエンドポリシーモデルといった、メッセージのための予め定められた処理フローにおける現在点を判断してもよい。メッセージの分析および予め定められた処理フローにおける現在点に基づいて、プロキシサーバは、メッセージに適用されるべき1つ以上のポリシーを選択してもよい。そのようなポリシーは、たとえば、メッセージを認証する、セキュリティトークン仲介およびキー管理を提供する、プロトコルおよびペイロード仲介を行なう、装置ベースのセキュリティを行なう、非武装ゾーン(DMZ)脅威保護をサポートする、などのためのセキュリティポリシーおよび他の通信管理ポリシーを含んでいてもよい。メッセージに適用されるべき特定のポリシーを選択した後で、プロキシサーバは、ポリシーに従ってメッセージを処理し、メッセージをそれらの意図された宛先に発送してもよい。
【0075】
図4は、さまざまなコンピュータネットワークにおけるコンピューティング装置および/またはシステム間でメッセージを処理して送信するためのプロキシサーバ420を含むコンピューティング環境400のコンポーネントを示すブロック図である。この例に示すコンピューティング環境400は、ウェブアプリケーションおよびウェブサービスといったコンピューティングリソースへのアクセスをさまざまなクライアント装置に提供するように設計された高レベルコンピュータアーキテクチャに対応していてもよい。さまざまな実施形態では、コンピューティング環境400は、小さく単純なコンピューティングシステムから、大きく非常に複雑なシステムに及ぶ場合があり、当該システムは、さまざまな組織のコンピューティング需要をサポートするために他のそのようなシステムと統合するように設計されたハードウェア、ソフトウェア、およびネットワークコンポーネントを含む。コンピューティング環境400は、多層コンピュータアーキテクチャとして実現されてもよく、それはウェブベースの、および/またはクラウドベースの実装を含んでいてもよく、そこでは、さまざまなエンドポイント装置(たとえば、ユーザ装置410、ウェブアプリケーションまたはウェブサービスプロバイダ430など)が、1つ以上の中間層システムを介してやりとりする。加えて、コンピューティング環境400に示す各コンポーネントは、ハードウェア、ソフトウェア、および/またはネットワークコンポーネントのさまざまな組合せを含む、個々のコンピュータシステムとして実装されてもよい。他の場合、コンピューティング環境400に示す複数のコンポーネントは、組合わせたコンピュータシステムで動作する論理的サブコンポーネント(たとえば、コンピュータ読取可能媒体上で具現化されたソフトウェアアプリケーションなど)として実装されてもよい。
【0076】
図4に示すように、コンピューティング環境400は、クライアント装置410が、さまざまな通信ネットワーク415、ファイアウォール435、プロキシサーバ420、および/または他の中間装置を介して、1つ以上のバックエンドウェブアプリケーションまたはウェブサービス430に要求を送信し得る、クライアント−サーバシステムに対応していてもよい。ウェブアプリケーションまたはサービス430は、簡易オブジェクトアクセスプロトコル(Simple Object Access protocol:SOAP)ウェブサービスまたはAPI、レプリゼンテーショナル・ステート・トランスファー(REST)ウェブサービスまたはAPI、および/または、ハイパーテキスト転送プロトコル(HTTP)またはHTTPセキュアプロトコルを介して公開されたウェブコンテンツを何ら限定されることなく含む、さまざまなシステム430によって公開された任意のアプリケーションプログラムインターフェイス(application programming interface:API)、サービス、アプリケーション、および任意の他の情報資産を含んでいてもよい。そのような場合、プロキシサーバ420は、クライアント装置410とバックエンドサービス/アプリケーション430との間にセキュリティ層を提供するリバースプロキシサーバとして作用してもよい。リバースプロキシとして作用する場合、プロキシサーバ420は、バックエンドサービス/アプリケーション430のための中央アクセスポイントを、バックエンドサービス/アプリケーション430に関連付けられたさまざまなセキュリティおよび管理ポリシーのサービス仮想化および実施とともに提供してもよい。リバースプロキシとして作用する場合、プロキシサーバ420は、これらのバックエンドサービス/アプリケーション430を仮想化して不明瞭にしながら、バックエンドサービス/アプリケーション430を公開してもよい。たとえば、プロキシサーバ420は、信頼できないネットワーク上のクライアント装置410が基盤のバックエンドサービス/アプリケーション430を読み取らないように、またはバックエンドサービス/アプリケーション430についての知識を持たないように、仮想ユニフォームリソースロケータ(uniform resource locator:URL)のみを公開してもよい。
【0077】
それに加えて、またはそれに代えて、コンピューティング環境400は、逆方向に送信された要求−応答のためのクライアント−サーバシステムに対応していてもよい。たとえば、ウェブサービス/アプリケーション430と同じ内部コンピュータネットワーク460内で動作するクライアント装置440が、プロキシサーバ420およびファイアウォール435を超えて、さまざまな外部コンピュータシステムおよびネットワーク上で動作するウェブサービスまたはアプリケーション450に要求を送信してもよい。そのような場合、プロキシサーバ420は、内部ネットワーク460内のクライアント装置440と外部ネットワーク上のバックエンドサービス/アプリケーション450との間にセキュリティ層を提供するフォワードプロキシサーバとしても作用してもよい。リバースプロキシ動作と同様に、フォワードプロキシ動作における通信は、SOAPウェブサービス、RESTウェブサービス、HTTP/HTTPSウェブコンテンツなどへの要求、およびそれらからの応答を含んでいてもよい。プロキシサーバ420がフォワードプロキシサーバとして動作している場合、内部ネットワーク内のクライアント装置440は、バックエンドサービス/アプリケーション450について知っているかもしれず、それらのサービス/アプリケーション450は、クライアント側に構成されたプロキシサーバ420から直接送信を受信するかもしれない。そのような場合、プロキシサーバ420は、任意のセキュリティまたは通信管理ポリシーを使用して、フォワードプロキシユニフォームリソース識別子(uniform resource identifier:URI)エンドポイントのためのセキュリティを提供してもよい。
【0078】
フォワードプロキシモードまたはリバースプロキシモードのいずれであっても、プロキシサーバ420は、Kerberos Kinitベースの認証、Kerberos Pkinitベースの認証、オープン・スタンダード・フォー・オーソライゼーション・プロトコル・バージョン2.0(open standard for authorization protocol version 2.0:OAuth2)ベースの認証、TLPベースの認証といったさまざまなセキュリティおよび認証特徴をサポートし、単純で保護されたGSSAPIネゴシエーションメカニズム(Simple and Protected GSSAPI Negotiation Mechanism:SPNEGO)トークン、WINDOWS(登録商標)NT LANマネージャ(WINDOWS NT LAN Manager:NTLM)トークン、セキュリティアサーションマークアップ言語(Security Assertion Markup Language:SAML)トークンなどを使用してバックエンドサービスのセッショントークンおよび/またはチャレンジベースの認証を作成する。
【0079】
クライアント装置410および440は、図1〜3の例示的なコンピューティングシステムにおける上述のハードウェア、ソフトウェア、およびネットワーキングコンポーネントのうちのいくつかまたはすべてを含む、デスクトップまたはラップトップコンピュータ、モバイル装置、および他のさまざまなコンピューティング装置/システムを含んでいてもよい。いくつかの実施形態では、クライアント装置410および440は、バックエンドウェブサービス/アプリケーション430および450からデータを要求して受信するように構成された1つ以上のクライアントソフトウェアアプリケーション(たとえばウェブブラウザ)を含んでいてもよい。クライアント装置410および440はまた、ネットワークインターフェイス、セキュリティおよび認証能力、ならびに、ライブコンテンツを受信してそれをユーザにリアルタイムで(またはほぼリアルタイムで)提供するコンテンツキャッシング能力を確立するために、必要なハードウェアおよびソフトウェアコンポーネントを含んでいてもよい。
【0080】
通信ネットワーク415は、ここに説明されるコンピュータネットワークおよび他の通信ネットワークの任意の組合せを含んでいてもよい。たとえば、ネットワーク415は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(wide area network:WAN)(たとえばインターネット)、およびさまざまな無線通信ネットワークといった、TCP/IP(伝送制御プロトコル/インターネットプロトコル)ネットワークを含んでいてもよい。加えて、通信ネットワーク415は、バックエンドアプリケーション/サービス430からクライアント装置410を分離する多くの異なる物理的および論理的ネットワークの組合せを表わしてもよい、ということが理解されるべきである。1つ以上のファイアウォール435に加えて、ウェブサーバ、認証サーバなどのさまざまなサーバ、および/または、ファイアウォール、ルータ、ゲートウェイ、ロードバランサなどの特殊なネットワーキングコンポーネントが、クライアント装置410とバックエンドアプリケーション/サービス430との通信を容易にしてもよい。
【0081】
以下に説明されるように、プロキシサーバ420は、隔てられたコンピュータシステム(たとえばプロキシコンピュータサーバ)として、または、特殊なハードウェア、ソフトウェア、およびネットワークコンポーネントを含む、コンピュータが複数のコンピューティングシステムの組合せとして実装されてもよい。それに代えて、またはそれに加えて、プロキシサーバ420は、信頼できるネットワーク460内のネットワーク装置(たとえば、ウェブサーバまたはファイアウォール)またはコンピュータサーバ内で実行されるプロキシサーバソフトウェアアプリケーションであってもよい。このため、プロキシサーバ420は、内部コンピュータネットワーク460の物理的サブネットワークまたは論理的サブネットワーク465に存在していてもよく、いずれの場合も、信頼できる内部ネットワーク上のクライアント/サーバと、信頼できない外部ネットワーク上のクライアント/サーバとの間の仲介主体として作用してもよい。加えて、プロキシサーバ420内のコンポーネント421〜428の各々は、プロキシサーバ420と通信するように構成された別個のコンピューティングシステムとして実装されてもよく、または、プロキシサーバ420と同じコンピュータサーバ内に統合された論理的サブコンポーネントとして動作してもよい。いずれの場合も、各コンポーネント421〜428は、ここに説明される手法を行なうために、特殊なハードウェア、ソフトウェア、ネットワーク、およびメモリサブシステムを使用して実装されてもよい。
【0082】
この例では、プロキシサーバ420は、外部クライアント装置410から通信ネットワーク415および/またはファイアウォール435を介してメッセージを受信するように構成されたロードバランサ422を含む。いくつかの実施形態では、ロードバランサ422は、任意の外部ネットワークからバックエンドサービス/アプリケーション430へのすべてのTCP、UDP、HTTP、およびHTTPSトラフィックのためのエントリポイントであってもよい。ロードバランサ422はまた、バックエンドサーバと通信するように、および応答をクライアント装置410に送信するように構成されてもよい。メッセージを受信して構文解析した後で、ロードバランサ422は、(たとえば、Javaネーティブインターフェイス(Java Native Interface:JNI)または.NETプログラミングフレームワークなどを介して)メッセージを適切なウェブサービスフレームワークに送信してもよい。たとえば、クライアント装置からプロキシサーバ420で受信されたSOAP要求は、SOAPウェブサービスフレームワーク421に送信され、REST要求は、RESTウェブサービスフレームワーク423に送信されてもよい。ウェブコンテンツ要求は、要求を構文解析し、URL仮想化コンポーネントまたはサービスといったさまざまなコンポーネントに送信することによって同様に扱われてもよい。これらのウェブサービスおよびコンポーネントはまた、SOAPからRESTへの、およびRESTからSOAPへの、ならびに、JavaScript(登録商標)オブジェクト表記法(JavaScript Object Notation:JSON)からXMLへの、またはJSONからSOAPへの、およびその逆のメッセージ変換といったプロトコル変換を行なうように構成されてもよい。
【0083】
メッセージスロットリングシステム(またはメッセージスロットリングサブコンポーネント)424は、クライアント装置410および/またはバックエンドサービス/アプリケーション430から受信されたネットワークトラフィックを監視するように構成されてもよい。メッセージスロットリングシステム424は、特定のクライアント装置410および/または特定のウェブサービスまたはアプリケーション430のための設定可能なメッセージレート制限を有していてもよい。メッセージスロットリングシステム424は、特定されたクライアント410への/からの、または特定されたウェブサービス/アプリケーション430への/からのある数のメッセージを可能にする既存のポリシーを使用してもよい。メッセージの数がメッセージレート制限を超える場合、メッセージスロットリングシステム424は、警告送信、ロギング、または今後のメッセージ送信の中断といったアクションを行なうように構成されてもよい。
【0084】
プロキシサーバ420はまた、プロキシサーバ420内にさまざまなセキュリティポリシーを実装するように構成されたさまざまなセキュリティシステムまたはコンポーネントを含んでいてもよい。この例では、プロキシサーバ420は、キー管理システム425と、トークン仲介システム426と、認証および認可システム427とを含む。プロキシサーバ420内のこれらのシステムおよびセキュリティコンポーネントは、クライアント装置410からのメッセージを認証する、セキュリティトークン仲介を提供する、APIキー管理を行なう、きめの細かい認可および/またはデータ改訂を行なう、機密性および完全性をサポートする、リスクベースの認証を行なう、モバイルクライアント装置410のための装置ベースのセキュリティを行なう、非武装ゾーン(DMZ)脅威保護をサポートする、プロトコルおよびペイロード仲介を行なう、などといったことをしてもよい。たとえば、ロードバランサ422および/または認証/認可システム427は、サービス妨害(Denial of Service:DoS)攻撃を防止し、不正な形式のメッセージを検出してフィルタリングし、SQL、JavaScript、および/またはXPath/XQueryインジェクション攻撃を検出して防止し、悪意のあるコンテンツから保護するためにメッセージ確認を行なう(たとえば、メッセージ添付物内のウィルスを検出する、XMLおよびJSONデータ構造を確認する、形状およびクエリパラメータを確認するなど)ためのサブシステムを含んでいてもよい。トークン仲介システム426は、特定されたクライアント装置410とバックエンドウェブサービス/アプリケーション430との間で認証トークンを変換するように構成されてもよい。セキュリティシステム424〜427はまた、たとえば、複数のバックエンドAPIまたはサービスを集め、自動仲介または合成を行なうことによって、動作のオーケストレーションおよび除去をサポートしてもよい。
【0085】
加えて、この例では、プロキシサーバ420は、メッセージ処理ポリシー428のデータストアを含む。メッセージ処理ポリシーは、XML、JavaScript、または他のタイプの実行可能ソフトウェアコンポーネントといったさまざまな形のコンピュータ読取可能媒体に格納されてもよい。以下により詳細に説明されるように、メッセージ処理ポリシー428は、プロキシサーバ420内でセキュリティポリシーおよび他の通信管理ポリシーを実施するために使用されてもよい。データストア428は、個々のメッセージのためのエンドツーエンド処理フロー中のさまざまな段階で検索され、個々のメッセージに適用され得る、個々のメッセージ処理ポリシーを含んでいてもよい。メッセージ処理ポリシーデータストア428は、この例に示すようにプロキシサーバ420に存在していてもよく、もしくは、信頼できる内部コンピュータネットワークのバックエンドサーバ、または安全な第三者サーバなどの内部に存在していてもよい。
【0086】
図4に示すように、プロキシサーバ420は、2つ以上のコンピュータネットワーク間、たとえば、ウェブアプリケーション/サービス430を提供する第1の信頼できる内部ネットワークと、信頼できないさまざまなクライアント装置410が内部ウェブアプリケーション/サービス430にアクセスし得る第2の信頼できない外部ネットワーク415(たとえばインターネット)との間の、中間ネットワーク装置内に実装されてもよい。いくつかの実施形態では、プロキシサーバ420は、内部コンピュータネットワークのためのセキュリティおよび通信管理の初期層を提供するために、内部コンピュータネットワークのサブネットワーク内で動作してもよい。たとえば、安全な内部ネットワーク460は、複数のウェブサービス/アプリケーション430を、さまざまな他のサーバおよびクライアント装置440とともに含んでいてもよい。プロキシサーバ420および/または追加の装置は、同じ内部ネットワーク460の一部であってもよいが、ファイアウォール435bによって内部コンピュータネットワークから分離された、内部コンピュータネットワークの物理的サブネットワーク465内で動作してもよい。いくつかの例では、プロキシサーバ420は、内部コンピュータネットワーク460の(物理的サブネットワークではなく)論理的サブネットワーク465内で実行されるプロキシサーバアプリケーションとして実装されてもよい。このため、プロキシサーバ420は、ファイアウォール435bおよび/またはバックエンドウェブサービス/アプリケーション430のうちの1つ以上と同じコンピューティングシステム上に存在していてもよい。
【0087】
加えて、いくつかの実施形態では、プロキシサーバ420は、信頼できる内部ネットワーク460と信頼できない外部ネットワークとの間の非武装ゾーン(DMZ)ネットワーク内で動作してもよい。DMZは、クライアント装置410および440、ならびにバックエンドウェブサービス/アプリケーション430および450で提供されるエンドポイントセキュリティとは別の、セキュリティおよび通信管理の第1の層を提供する、物理的サブネットワーク465として実装されてもよい。図4に示すように、DMZは、2つのファイアウォール435aと435bとの間に実装されてもよい。他の実施形態では、DMZは、単一のファイアウォールを使用して、または、信頼できる内部ネットワーク460および信頼できない外部ネットワーク双方からサブネットワーク465を物理的にまたは論理的に分離するネットワーク装置の他のさまざまな構成を使用して、実装されてもよい。プロキシサーバ420など、DMZ内のすべてのコンピュータサーバおよび他の装置は、内部ネットワーク460内の装置のある特定の部分集合(たとえば、ウェブアプリケーション/サーバ430)への限定された接続性を有していてもよい。そのような接続性は、特定のホスト、ポート、プロトコルなどに基づいて限定されてもよい。同様に、信頼できない任意の外部ネットワーク(たとえば、ネットワーク415および装置410)と通信する際、限定された接続性のポリシーがDMZ内の装置に対して実施されてもよい。DMZ内でプロキシサーバ420を動作させることに加えて、ある実施形態では、DMZ内でバックエンドウェブサーバ/アプリケーション430のうちの1つ以上が動作してもよい。たとえば、外部システムからの攻撃をより受けやすいあるサーバ(たとえば、ウェブサーバ、電子メールサーバ、ドメイン名システム(Domain Name System:DNS)サーバなど)を、プロキシサーバ420とともにDMZ内に移動させてもよい。
【0088】
ここで図5を参照して、選択されたメッセージ処理ポリシーを使用してメッセージを受信して処理するためのプロセスを示すフローチャートが示される。以下に説明されるように、このプロセスにおけるステップは、コンピューティング環境400における1つ以上のコンポーネント、たとえば、プロキシサーバ420、およびそこに実装されたさまざまなサブシステム/サブコンポーネントによって行なわれてもよい。加えて、いくつかの実施形態では、このプロセスにおけるあるステップは、クライアント装置410、バックエンドウェブサービス/アプリケーション430内で、および/または他のさまざまな中間装置によって行なわれてもよい。メッセージを受信して分析すること、メッセージ処理ポリシーを選択すること、およびメッセージを処理することを含む、ここに説明される手法は、上述の特定のシステムおよびハードウェア実装に限定されなくてもよく、ハードウェア、ソフトウェア、およびネットワークコンポーネントの他の組合せを含む他のハードウェアおよびシステム環境内で行なわれてもよい、ということがさらに理解されるべきである。
【0089】
ステップ501で、ネットワークメッセージが、プロキシサーバ420といった中間コンピューティングシステムまたはアプリケーションによって受信されてもよい。上述のように、プロキシサーバ420は、信頼できる内部ネットワーク460と1つ以上の信頼できない外部ネットワークとの間の中間サーバ装置および/またはアプリケーションとして実装されてもよい。したがって、ステップ501で受信されたネットワークメッセージは、プロキシサーバ420に向けられていないかもしれない。代わりに、プロキシサーバ420は、第1のエンドポイント装置(たとえば、クライアント装置410)によって送信され、第2のエンドポイント装置(たとえば、バックエンドウェブサービスおよび/またはアプリケーション430をホストするコンピュータサーバ)に向けられた、またはその逆のメッセージを遮ってもよい。
【0090】
いくつかの実施形態では、内部ネットワーク460に出入りするすべてのネットワークトラフィックは、プロキシサーバ420を通してルーティングされてもよい。他の場合、プロキシサーバ420は、特定のタイプまたはプロトコルのネットワークメッセージ、たとえば、クライアント装置410および440からのSOAP、REST、またはURLリソースに対するHTTP要求、ならびに、SOAP、REST、またはURLウェブサービス/アプリケーション430および450からクライアント装置に戻るHTTP応答を遮るように構成されてもよい。したがって、ステップ501で受信されたネットワークメッセージは、たとえば、および何ら限定されることなく、TCPメッセージ、HTTPまたはHTTPSメッセージ、簡易メール転送プロトコル(Simple Mail Transport Protocol:SMTP)、ユーザデータグラムプロトコル(User Datagram Protocol:UDP)メッセージ、および/またはJavaメッセージサービス(Java Message Service:JMS)メッセージであってもよい。場合によっては、ネットワークメッセージは、クライアント装置410からウェブサービス/アプリケーション430をホストするバックエンドコンピュータサーバへのSOAP、REST、またはウェブコンテンツ要求に対応していてもよく、もしくは、クライアント装置410からのSOAP、REST、またはウェブコンテンツ要求に対するバックエンドウェブサービスまたはアプリケーション430による応答に対応していてもよい。加えて、ネットワークメッセージは、内部コンピュータネットワーク460内で動作するクライアント装置440から外部コンピュータネットワーク上で動作するウェブサービス/アプリケーションを提供するコンピュータサーバ450へのSOAP、REST、またはウェブコンテンツ要求に対応していてもよく、もしくは、内部クライアント装置440からのSOAP、REST、またはウェブコンテンツ要求に対する外部ウェブサービスまたはアプリケーション450からの応答に対応していてもよい。
【0091】
ステップ502で、プロキシサーバ420は、ステップ501で受信されたネットワークメッセージを分析して、メッセージの意図された宛先を判断し、また、ネットワークメッセージを処理する際にプロキシサーバ420がフォワードプロキシとして作用すべきか(すなわちフォワードプロキシモード)、リバースプロキシとして作用すべきか(すなわちリバースプロキシモード)を判断してもよい。ここに使用されるように、ネットワークメッセージの「意図された宛先」とは、送信装置または送信装置のユーザによって指定されたメッセージの宛先を指してもよい。メッセージの意図された宛先は、メッセージヘッダおよび/またはメッセージ本文の一部を構文解析し、分析することによって判断されてもよい。たとえば、メッセージのユニフォームリソース識別子(URI)、もしくは、ウェブサービスまたはアプリケーションの識別子、および/またはメッセージ本文内の動作識別子が、内部ネットワーク460によって提供されるウェブサービス/アプリケーションまたはウェブコンテンツに対応していてもよい。この例では、プロキシサーバ420は、メッセージヘッダおよびコンテンツに基づいて、メッセージは内部ネットワーク460内の特定のサーバに向けられていると判断してもよい。別の例では、メッセージURIが信頼できないネットワーク上のリモートサーバに対応している場合、プロキシサーバ420は、メッセージの意図された宛先は、内部ネットワーク460内の装置ではなく、リモートサーバであると判断してもよい。ソースIPアドレスまたはホスト名識別子といった、メッセージの送信元を識別するメッセージ内の情報も、メッセージの意図された宛先を判断するために使用されてもよい。
【0092】
メッセージの意図された宛先を判断することに加えて、プロキシサーバ420は、メッセージを処理する際にプロキシサーバ420がフォワードプロキシモードで動作すべきかリバースプロキシモードで動作すべきかを判断するために、メッセージは、クライアント装置410または440からの要求の一部か、もしくはウェブサービス/アプリケーションサーバ装置430または450からの応答の一部かを判断してもよい。たとえば、受信されたメッセージがクライアント装置410からウェブサービスまたはアプリケーション430への要求である場合、意図された宛先は信頼できる内部ネットワーク460内にあり、プロキシサーバ420はリバースプロキシモードで動作すべきである。対照的に、受信されたメッセージが内部クライアント装置440から外部ウェブサービス450、ウェブアプリケーション450、またはURL450への要求である場合、意図された宛先は信頼できる内部ネットワークの外部にあり、プロキシサーバ420はフォワードプロキシモードで動作すべきである。
【0093】
他の場合、ステップ501で受信されたメッセージは、クライアント装置410または440からの要求ではないかもしれず、代わりに、以前の要求に対するウェブサーバ430または450からの応答であるかもしれない。たとえば、受信されたメッセージが、クライアント装置410からの要求に対する、信頼できる内部ネットワーク460内のウェブサービス/アプリケーション430または他のサーバからの応答である場合、元の要求の意図された宛先は信頼できる内部ネットワーク460内にあり、プロキシサーバ420はリバースプロキシモードで動作すべきである。対照的に、受信されたメッセージが、クライアント装置440からの要求に対する、内部ネットワーク460の外部のウェブサービス/アプリケーション450または他のサーバからの応答である場合、元の要求の意図された宛先は内部ネットワーク460の外部にあり、プロキシサーバ420はフォワードプロキシモードで動作すべきである。
【0094】
ステップ503で、プロキシサーバ420は、ステップ501で受信されたメッセージのための予め定められた処理フローにおける現在点を判断してもよい。メッセージ処理フローとは、プロキシサーバ420によるクライアント装置410または440からのメッセージの受信で始まり、プロキシサーバ420によるクライアント装置410または440への応答の送信で終わる、プロキシサーバ420によって実行されるべきエンドツーエンドメッセージ処理フローを指してもよい。以下に説明されるように、メッセージのための予め定められた処理フローにおける現在点を判断することは、メッセージに関連付けられたポリシーモデルを識別し、処理モデル内の現在の処理位置を判断することを含んでいてもよい。
【0095】
いくつかの実施形態では、メッセージのための予め定められたメッセージ処理フローは、ポリシーモデルによって定義されてもよい。ポリシーモデルは、メッセージのエンドツーエンドメッセージ処理フロー中のさまざまな点でメッセージを処理するためにプロキシサーバ420によって適用され得る一組のポリシー(たとえば、セキュリティポリシー、通信管理ポリシーなど)を定義するデータを含んでいてもよい。メッセージのエンドツーエンド処理フローを定義するポリシーモデル、および個々のメッセージ処理ポリシーは双方とも、XML、JavaScript、または他のタイプの実行可能ソフトウェアコンポーネントといったさまざまな形のコンピュータ読取可能媒体であってもよい。ポリシーモデルおよび/またはメッセージ処理ポリシーは、プロキシサーバ420内に、たとえばデータストア428に、または内部ネットワーク460内の他のところに格納されてもよい。
【0096】
上述のように、ポリシーモデルは、プロキシサーバ420がメッセージのエンドツーエンド処理フローにおけるさまざまな点でメッセージに適用し得る一組のメッセージ処理ポリシーを定義してもよい。いくつかの実施形態では、ステップ503で、プロキシサーバ420は、ステップ501で受信されたメッセージの特性に依存して、異なるポリシーモデルを適用してもよい。たとえば、プロキシサーバ420によって検索され適用される特定のポリシーモデルは、ステップ502で行なわれたメッセージの意図された宛先、およびフォワードまたはリバースプロキシモードの判断に依存していてもよい。加えて、プロキシサーバ420によって検索され適用されるポリシーモデルは、メッセージを送信するために使用されるネットワークプロトコル、および/または、メッセージの要求タイプまたはクライアントタイプに依存していてもよい。たとえば、REST要求、SOAP要求、ウェブコンテンツ(URL)要求などのために、異なるポリシーモデルが使用されてもよい。
【0097】
図6Aおよび図6Bを簡潔に参照して、ポリシーモデルの2つの例が示されており、それらは双方ともXMLで実現されている。図6Aは、仮想アプリケーションのための例示的なポリシーモデルを示す。このため、例示的なポリシーモデル600aは、リバースプロキシ使用事例についてのメッセージ処理のために検索され、使用されてもよい。対照的に、図6Bは、プロキシアプリケーションのための例示的なポリシーモデルを示し、したがって、例示的なポリシーモデル600bは、フォワードプロキシ使用事例についてのメッセージ処理のために検索され、使用されてもよい。これらの例の各々に示すように、ポリシーモデルは、処理フロー内のさまざまな点(「アサーション」とも呼ばれ得る)のタグまたは識別子、および、処理点/アサーションの各々についての1つ以上のポリシー識別子を含んでいてもよい。たとえば、例示的なポリシーモデル600aは、要求が受信されると行なわれるべき2つのポリシー(「on-request」タグ内)、メッセージ変換を行なうポリシー(「message-transformation」タグ内)、および、バックエンドウェブサービスが呼び出されると行なわれるべきポリシー(「invoke」タグ内)を識別する。例示的なポリシーモデル600bは、要求が受信されると行なわれるべきポリシー(「on-request」タグ内)、および、バックエンドウェブサービスが呼び出されると行なわれるべきポリシー(「invoke-proxy」タグ内)を識別する。
【0098】
いくつかの実施形態では、プロキシサーバ420は、プロキシアプリケーションについては(すなわち、フォワードプロキシモードでは)サービスレベル(またはURLレベル)でポリシーを適用してもよく、一方、仮想アプリケーションについては(すなわち、リバースプロキシモードでは)、プロキシサーバ420は、サービスレベルおよび/または動作レベル(または方法レベル)でポリシーを適用してもよい。したがって、信頼できる内部ネットワーク460内のバックエンドウェブサービス/アプリケーション430を呼び出す場合、プロキシサーバ420はまず、動作(SOAPについて)または方法(RESTおよびURLについて)を判断してから、ポリシーモデル内で識別されたポリシーを実施できるようになっていてもよい。
【0099】
ステップ501で受信されたメッセージに関連付けられたポリシーモデル(または処理フローを定義する他のデータ)を識別した後で、プロキシサーバ420は、ポリシーまたは処理フローに従って、メッセージ処理における現在点を判断してもよい。メッセージ処理フローにおける現在点は、メッセージ自体の特性によって、および、メッセージの以前の処理に関する以前に格納されたデータに基づいて判断されてもよい。上述のように、予め定められた処理フローは、クライアント装置410または440による最初の要求から、クライアント装置410または440に返送された応答までの、メッセージのためのエンドツーエンド処理を適用してもよい。したがって、ステップ501で受信されたメッセージが、クライアント装置からの最初の要求であるか、クライアント装置からの追加データ(たとえば、要求に関する認証クレデンシャルまたは追加データ)の送信であるか、バックエンドウェブサービス/アプリケーションからの応答であるか、もしくは、バックエンドサーバまたは装置からの追加データ(たとえば、シングルサインオンまたはトークン翻訳サービスからのデータ)の送信であるかを判断することは、プロキシサーバ420が、エンドツーエンドメッセージ処理フロー内のメッセージ処理の現在点を判断することを可能にし得る。加えて、プロキシサーバ420は、プロキシサーバ420がメッセージに適用すべき次のメッセージ処理ポリシーを判断するために、以前のメッセージ変換、サービスの呼び出し、遭遇した処理エラーの結果といった、メッセージまたは他の関連するメッセージに対して行なわれた以前の処理に関連するデータを格納してもよい。
【0100】
以下の段落は、メッセージ処理ポリシーが適用され得る、ポリシーモデルまたは他のメッセージ処理フロー内の可能な点(「アサーション」とも呼ばれ得る)のいくつかの例を含む。これらの例は単なる例示であり、網羅的なリストでなくてもよい、ということが理解されるべきである。また、ここに説明されるアサーション名(たとえば、OnRequest、OnInvoke、OnResponse、OnError、MessageTransformationなど)、ならびに、アサーションおよびポリシーに使用されるXML構造およびタグ名は、さまざまな他の実施形態において変更されてもよい。
【0101】
ステップ503でポリシーモデルまたは他の予め定められたメッセージ処理フロー内の現在点を判断する第1の例は、ステップ501で受信されたメッセージが外部コンピュータネットワークにおけるクライアント装置410からの要求に対応していると判断することを含んでいてもよい。メッセージのエンドツーエンド処理フローの初めにあるこの点は、「OnRequest」アサーションなどと呼ばれてもよい。以下により詳細に説明されるように、OnRequestアサーションは、仮想サービス、プロキシサービス、および/またはウェブアプリケーションを安全にするために適用され得るポリシーへの参照を含んでいてもよい。たとえば、OnRequestアサーションは、外部クライアント装置410から受信された新規のウェブサービス/アプリケーション/コンテンツ要求のためにプロキシサーバ420が実施すべきセキュリティポリシーを表わすURIまたは他の識別子を含んでいてもよい。OnRequestアサーションはまた、他のポリシーを参照してもよく、および/または、他のアサーションを含んでいてもよい。場合によっては、OnRequestアサーションは、リバースプロキシモードでのみ動作してもよく、すなわち、外部クライアント装置410からの内部ウェブサービス430に対する要求のみを扱ってもよい。そのような場合、内部クライアント装置440からの外部ウェブリソース450に対する要求は、異なるメッセージ処理ポリシーを適用し得る異なるアサーションによって扱われてもよい。
【0102】
ステップ503で起こり得る現在のメッセージ処理点の別の判断は、外部クライアント装置410から要求を受信した後で、プロキシサーバ420は内部コンピュータネットワーク460におけるバックエンドウェブアプリケーションまたはウェブサービス430に要求を送信すべきであると判断することを含んでいてもよい。メッセージのエンドツーエンド処理フロー内のこの点は、「OnInvoke」アサーションなどと呼ばれてもよい。OnRequestアサーションと同様に、いくつかの実施形態では、OnInvokeアサーションは、内部ネットワーク460内のバックエンドウェブサービス/アプリケーション430を呼び出すために最初の要求が外部クライアント装置410から受信されたリバースプロキシ使用事例にのみ当てはまり得る。OnInvokeアサーションは、エンドツーエンド処理フローにおけるこの点でプロキシサーバ420が実施すべきポリシーを表わすURIまたは他の識別子を含んでいてもよい。たとえば、複数のXML「ポリシーURI」XML要素を使用することによって、複数のポリシー識別子(または参照)がOnInvokeアサーション内に含まれてもよい。加えて、OnInvokeアサーションは、クライアントのリソースパターンを使用することから、クライアント詳細を一意的に識別してもよい。OnInvokeアサーションに使用されるクライアントタイプ(たとえば、RESTクライアント、SOAPクライアント、URL/ウェブクライアントなど)は、OnInvokeアサーション内に構成された値に基づいて、実行時間にプロキシサーバ420によって判断されてもよい。OnInvokeアサーションはまた、他のポリシーを参照してもよく、および/または、他のアサーションを含んでいてもよい。
【0103】
現在のメッセージ処理点を判断する別の例は、外部クライアント装置410から要求を受信した後で、およびバックエンドウェブサービス/アプリケーション430を呼び出した後で、プロキシサーバ420は外部クライアント装置410に応答を送信すべきであると判断することを含んでいてもよい。メッセージのエンドツーエンド処理フロー内のこの点は、「OnResponse」アサーションなどと呼ばれてもよい。OnRequestおよびOnInvokeアサーションと同様に、いくつかの実施形態では、OnResponseアサーションは、内部ネットワーク460内のバックエンドウェブサービス/アプリケーション430を呼び出すために最初の要求が外部クライアント装置410から受信されたリバースプロキシ使用事例にのみ当てはまり得る。OnResponseアサーションは、エンドツーエンド処理フローにおけるこの点でプロキシサーバ420が実施すべきポリシーを表わすURIまたは他の識別子を含んでいてもよい。複数のポリシー識別子(または参照)がOnResponse内に含まれてもよく、OnResponseアサーションはまた、他のポリシーを参照してもよく、および/または、他のアサーションを含んでいてもよい。
【0104】
ステップ503で起こり得る現在のメッセージ処理点の別の判断は、プロキシサーバ420は内部クライアント装置440から外部ウェブサービスまたはアプリケーション450に要求を送信すべきであると判断することを含んでいてもよい。メッセージのエンドツーエンド処理フロー内のこの点は、「OnProxyInvoke」アサーションなどと呼ばれてもよい。上述のOnInvokeアサーションの例とは異なり、OnProxyInvokeアサーションは、信頼できない外部ネットワーク内のバックエンドウェブサービス/アプリケーション450を呼び出すために最初の要求が内部クライアント装置440から受信されたフォワードプロキシ使用事例にのみ当てはまり得る。OnProxyInvokeアサーションは、エンドツーエンド処理フローにおけるこの点でプロキシサーバ420が実施すべきポリシーを表わすURIまたは他の識別子を含んでいてもよい。たとえば、複数のXML「ポリシーURI」XML要素を使用することによって、複数のポリシー識別子(または参照)がOnProxyInvokeアサーション内に含まれてもよい。OnProxyInvokeアサーションに使用されるクライアントタイプ(たとえば、RESTクライアント、SOAPクライアント、URL/ウェブクライアントなど)は、たとえば実行時間引数に基づいて、実行時間にプロキシサーバ420によって判断されてもよい。OnProxyInvokeアサーションはまた、他のポリシーを参照してもよく、および/または、他のアサーションを含んでいてもよい。
【0105】
現在のメッセージ処理点を判断する別の例は、エンドツーエンド処理フロー中のいずれかの点で、プロキシサーバ420はあるメッセージタイプから別のメッセージタイプにメッセージを変換すべきであると判断することを含んでいてもよい。メッセージのエンドツーエンド処理フロー内のこの点は、「MessageTransformation」アサーションなどと呼ばれてもよい。たとえば、プロキシサーバ420は、第1のメッセージタイプ(たとえばREST要求)を有するメッセージを受信し、メッセージを分析して、メッセージは、第2のメッセージタイプ(たとえばバックSOAPサービス)のみを受け入れるバックエンドサービスまたはアプリケーションに向けられていると判断してもよい。そのような判断の後で、プロキシサーバ420は、メッセージに対して適切なMessageTransformationアサーションを実行してから、変換されたメッセージを意図された宛先に送信してもよい。プロキシサーバ420によってサポートされ得る変換ポリシーの例は、XMLポリシーからJavaScriptオブジェクト表記法(JSON)ポリシー、およびJSONポリシーからXMLポリシー、XMLポリシーからSOAPポリシー、およびSOAPポリシーからXMLポリシー、ならびに、JSONポリシーからSOAPポリシー、およびSOAPポリシーからJSONポリシーを、何ら限定されることなく含んでいてもよい。他の周知の媒体タイプ間の変換が、さまざまな実施形態においてサポートされてもよい。プロキシサーバ420は、バックエンドサービス仮想化の際に適切な変換ポリシーを自動的に添付してもよく、変換は、プロキシサーバ420に、またはコンピューティング環境400における他のところにインストールされた1つ以上の翻訳フレームワークを使用して行なわれてもよい。いくつかの実施形態では、MessageTransformationアサーションはリバースプロキシモードでのみ動作してもよく、すなわち、外部クライアント装置410からの内部ウェブリソース430に対する要求およびクライアント装置410への応答の変換のためにのみサポートされてもよい。他の実施形態では、MessageTransformationアサーションは、フォワードプロキシおよびリバースプロキシ使用事例双方のためにサポートされてもよい。
【0106】
現在のメッセージ処理点を判断する別の例は、メッセージのためのエンドツーエンド処理フロー中のいずれかの点でエラーが起こったと判断することを含んでいてもよい。メッセージのエンドツーエンド処理フロー内のこの点は、「OnError」アサーションなどと呼ばれてもよい。メッセージのためのOnErrorアサーションをトリガしている(たとえば、メッセージに関連付けられたOnErrorアサーションで識別された1つ以上のポリシーの実行をトリガしている)エラーは、プロキシサーバ420によって行なわれた処理内で起こったエラー、および/または、バックエンドコンピュータサーバまたは装置からプロキシサーバ420によって受信されたエラーであってもよい。たとえば、プロキシサーバ420は、認可サービス、トークン翻訳サービス、またはバックエンドウェブサービス/アプリケーション430または450といったメッセージの処理フロー中に呼び出されたバックエンドコンピュータサーバからエラー表示を受信してもよい。加えて、プロキシサーバ420は、メッセージ処理タスクを行ないながらエラーを識別または生成してもよく、OnErrorアサーションでポリシーをトリガするメッセージは、メッセージを構文解析または確認する際のエラー、もしくはメッセージ変換ポリシーを実行する際のエラーといった、プロキシサーバ420によって行なわれるメッセージ処理内で起こったエラーであってもよい。このため、特定のメッセージ処理ポリシーが適用され得る処理フロー内の点(「アサーション」とも呼ばれる)の以前の例のうちのいくつかとは異なり、OnErrorアサーションは条件付きであってもよい。すなわち、メッセージのエンドツーエンド処理フロー中、プロキシサーバ420は、処理中に起こり得るエラーの数およびタイプに依存して、OnErrorアサーションからポリシーを1回、複数回、適用してもよく、または全く適用しなくてもよい。さまざまな異なる実施形態では、OnErrorアサーションは、フォワードプロキシ使用事例、リバースプロキシ使用事例、または双方に適用されてもよい。
【0107】
ステップ504で、ステップ501で受信されたメッセージを処理するための1つ以上の特定のポリシーが、プロキシサーバ420によって選択され、検索されてもよい。上述のように、プロキシサーバ420によって選択され、メッセージに適用される特定のポリシーは、セキュリティポリシーおよび任意の他のタイプの通信管理ポリシーを含んでいてもよい。たとえば、および何ら限定されることなく、そのようなポリシーは、とりわけ、認証、認可、監査、シングルサインオン、セキュリティポリシー実施、キー管理および分散、安全な通信、安全なデータ格納、および安全なデータ共有に関連する機能を行なってもよい。
【0108】
ステップ504で、プロキシサーバ420によって、まず、メッセージに関連付けられたエンドツーエンド処理フロー(たとえばポリシーモデル)を検索し、次に、ステップ503で判断されたエンドツーエンド処理フロー内の現在点(たとえばアサーション)を使用して、エンドツーエンドフローにおける現在点でメッセージに適用されるであろう特定のポリシーを識別することにより、ポリシーが選択されてもよい。たとえば、ステップ501で受信されたメッセージが、外部クライアント装置410からのウェブサービス/アプリケーション430に対する要求である場合、および、例示的なポリシーモデル600aがそのようなメッセージのエンドツーエンド処理を制御するために使用される場合、プロキシサーバ420は、ポリシーモデル600aの「on-request」タグ内で識別された任意のポリシーを検索してもよい。この場合、ポリシーモデル600aの「on-request」タグ内には2つのポリシー識別子が見出され、それらは各々、「PolicyReference URI」タグ内に含まれている。このため、この例では、プロキシサーバ420はステップ504でこれら2つのポリシーを選択して、ステップ505でメッセージを処理するために使用してもよい。
【0109】
別の例として、ステップ501で受信されたメッセージが、内部クライアント装置440からの、外部ウェブサービス/アプリケーション450にアクセスしたいという要求である場合、および、例示的なポリシーモデル600bがそのようなメッセージのエンドツーエンド処理を制御するために使用される場合、プロキシサーバ420は、ポリシーモデル600bの「on-request」タグ内で識別されたポリシーを検索してもよい。それに代えて、「on-request」ポリシーがすでに適用され、プロキシサーバ420が外部ウェブサービス/アプリケーション450に要求を送信する準備ができている場合、プロキシサーバ420は、ポリシーモデル600bの「invoke-proxy」タグ内で識別されたポリシーを検索してもよい。
【0110】
ステップ505で、プロキシサーバ420は、ステップ504で選択されたポリシーを使用してメッセージを処理してもよい。上述のように、プロキシサーバ420は、メッセージのための予め定められたエンドツーエンド処理フローからURIまたは他のポリシー識別子を識別することによって、メッセージに適用されるべき適切なポリシーを判断してもよい。例示的なポリシーモデル600aおよび600bでは、適用されるべきポリシーのURIは、エンドツーエンド処理フローにおける現在点に対応するアサーションの「PolicyReference URI」タグ内に見出されてもよい。そのようなポリシーURIは、ポリシーの格納位置を参照してもよい。他の例では、ポリシー識別子はURIとして表わされなくてもよく、APIまたはサービス識別子、機能名、方法名、および/または動作名などといった他の識別データを含んでいてもよい。いずれにせよ、ポリシー識別子は、メッセージ処理ポリシーのための格納位置または他のアクセス情報を識別してもよい。ポリシー自体は、XML、JavaScript、または他のタイプの実行可能ソフトウェアコンポーネントといったさまざまな形のコンピュータ読取可能媒体に格納されてもよい。
【0111】
メッセージ処理ポリシーは、コンピューティング環境400内のさまざまな異なるサーバまたは装置に位置する、データベースおよび/またはファイルベースの記憶システムといったデータストアに格納されてもよい。たとえば、比較的不変であるかもしれず、安全なデータを有さない、メッセージ変換ポリシー、メッセージスロットリングポリシー、ロードバランシングポリシー、および他のポリシー、といったあるポリシーは、プロキシサーバ420内に(たとえば、メッセージ処理ポリシーデータストア428内に)局所的に格納されてもよい。しばしば変わり得る、または安全なデータを含み得る、ユーザ認証/認可ポリシー、および他のポリシー、といった他のポリシーは、信頼できる内部コンピュータネットワーク460の安全なサーバまたは記憶システム内に格納されてもよい。他の場合、あるポリシーは、外部ネットワークにおける安全な第三者サーバまたはクライアント装置410上に格納されてもよい。プロキシサーバ420は、ステップ505でこれらのさまざまな位置のいずれかからポリシーを検索し、適用するように構成されてもよい。
【0112】
ステップ505でさまざまなセキュリティポリシーおよび/または他の通信管理ポリシーを使用してメッセージを処理した後で、ステップ506で、プロキシサーバ420は、処理されたメッセージをその意図された宛先に送信してもよい。上述のように、意図された宛先は、ステップ502でメッセージヘッダおよび/またはメッセージ本文の一部を構文解析し、分析することによって判断されてもよい。ウェブサービス/アプリケーション430への要求、もしくは内部クライアント装置440への応答または他の送信といったメッセージの意図された宛先は、内部ネットワーク460内にあってもよい。それに代えて、外部ウェブサービス/アプリケーション450への要求、もしくは外部クライアント装置410への応答または他の送信といったメッセージの意図された宛先は、外部ネットワーク内にあってもよい。
【0113】
上述のように、プロキシサーバ420内でメッセージを処理するための特定のポリシーの選択および適用は、そのメッセージのための予め定められたエンドツーエンド処理フローによって、エンドツーエンドフロー内のメッセージのための現在の処理点の判断とともに判断されてもよい。上に紹介されたポリシーモデルは、プロキシサーバ420がメッセージのエンドツーエンド処理フローにおけるさまざまな点でメッセージに適用するであろう一組のメッセージ処理ポリシーを定義してもよい。たとえば、例示的なポリシーモデル600aおよび600bは、仮想アプリケーション(すなわち、リバースプロキシ使用事例)およびプロキシアプリケーション(すなわち、フォワードプロキシ使用事例)のためのエンドツーエンド処理フローをそれぞれ定義する。これらのポリシーモデルは、メッセージのエンドツーエンド処理フロー内のさまざまな点(またはアサーション)を識別し、識別された各処理点またはアサーションでメッセージに適用されるべき特定のポリシーを含む。
【0114】
いくつかの実施形態では、エンドツーエンド処理フローを定義するためのポリシーモデルおよび他の手法は、一組のポリシーテンプレートを使用して作成されてもよい。たとえば、図7A〜7Dを簡潔に参照して、4つの異なるアサーションに対応する4つの例示的なポリシーテンプレートが示される。図7Aは、例示的な「On Request」ポリシーテンプレートを示し、図7Bは、例示的な「Invoke」ポリシーテンプレートを示し、図7Cは、例示的な「Invoke Proxy」ポリシーテンプレートを示し、図7Dは、例示的な「On Response」ポリシーテンプレートを示す。図7A〜7Dにおけるポリシーテンプレートの各々は「PolicyReference URI」タグを含むが、これらのテンプレートではURIは空のままである。このため、そのようなテンプレートは、ポリシーモデル600aおよび600bといったポリシーモデルエンドツーエンド処理フローを作成するために使用されてもよい。たとえば、図7A〜7Dのテンプレートのうちの1つ以上がコピーされてもよく、適切なポリシーURIが各テンプレートコピーに挿入されてもよい。カスタマイズされたテンプレートは次に、エンドツーエンド処理フロー中に実行され得るポリシーを定義するために、適切なポリシーモデルに追加されてもよい。
【0115】
エンドツーエンド処理フロー中に実行されるべきアサーションおよびポリシーを定義することに加えて、ポリシーモデル(および予め定められたエンドツーエンド処理フローの他の形)は、あるポリシーが行なわれ得る、または行なわれない条件も定義してもよい。いくつかの実施形態では、ポリシーモデルは、ポリシーモデルで参照されるポリシーの各々を行なうための条件を実現するための一組の論理命令を含んでいてもよい。たとえば、ポリシーモデルは、あるポリシーが、あるメッセージタイプ(たとえば、SOAP、REST、またはURLメッセージ)については実行されるべきであるものの、他のメッセージタイプについては実行されるべきではないことをプロキシサーバ420に命令する条件を含んでいてもよい。加えて、上述のように、ポリシーモデルは、場合によっては、サービス/アプリケーションレベルで、および/または動作/方法レベルでポリシーを選択的に適用してもよく、このため、特定のポリシーの適用は、呼び出されているバックエンドウェブアプリケーション/サービス430にだけでなく、アプリケーション/サービス430内でコールされている特定の動作または方法にも依存していてもよい。さまざまな追加の実施形態では、いくつかのポリシーモデルは、あるポリシーが、あるユーザについては実行されるべきであるものの、他のユーザについては実行されるべきではないこと、あるクライアント装置タイプについては実行されるべきであるものの、他のクライアント装置タイプについては実行されるべきではないこと、あるバックエンドウェブサービス/アプリケーションについては実行されるべきであるものの、他のバックエンドウェブサービス/アプリケーションについては実行されるべきではないこと、および/またはメッセージに関連する任意の他の特性をプロキシサーバ420に命令する条件を含んでいてもよい。
【0116】
ここで図8を参照して、外部クライアント装置410から内部SOAPウェブサービス430に送信されたREST要求のエンドツーエンド処理フローの例示的な図を示す。この例の処理フローの実行は、プロキシサーバ420によって、上述のようなコンピューティング環境400におけるさまざまな他のコンポーネントとともに行なわれてもよい。この例では、最初のメッセージは、クライアント装置410から内部コンピュータネットワーク460におけるバックエンドウェブサービス430に向けられたREST要求であり、このため、プロキシサーバ420はリバースプロキシモードで動作してもよい。
【0117】
上述のように、この例のエンドツーエンド処理フロー図800は、特定の処理点(またはアサーション)と、エンドツーエンド処理フロー中の各処理点でプロキシサーバ420によって実行されるべき特定のポリシーとを定義する、予め定められたポリシーモデルによって制御されてもよい。この例では、ステップ801で、REST要求がクライアント装置410から受信される。ステップ802で、プロキシサーバ420は、この要求の処理を制御するポリシーモデル内で識別された1つ以上の「On Request」ポリシーを実行してもよい。この例では、「On Request」ポリシーは、ステップ803で、クライアント装置410から受信されたユーザクレデンシャルを認証するために、および/または、要求されたバックエンドウェブサービス430にアクセスするためのユーザの認可許可を確認するために、認証/認可サービスにアクセスすることを含む。ステップ804で、プロキシサーバ420は、要求されたサービスはSOAP入力を必要とすると判断し、したがって、ステップ805で、REST要求をSOAP要求に変換するために「Message Transformation」ポリシーを実行する。ステップ806で、プロキシサーバ420は、さまざまなセキュリティおよび通信管理機能を実現し得る「Invoke Service」ポリシーを実行してから、ステップ807で、SOAP要求をバックエンドSOAPウェブサービス430に送信する。ステップ808で、バックエンドSOAPウェブサービス430からSOAP応答を受信した後で、プロキシサーバ420は再度、クライアント410への出力はREST出力であるべきであると判断してもよく、したがって、ステップ809で、SOAP応答をREST応答に変換するために別の「Message Transformation」ポリシーを実行してもよい。ステップ810で、プロキシサーバ420は、さまざまな追加のセキュリティおよび通信管理機能を実現し得る「On Response」ポリシーを実行してから、ステップ811で、REST応答をクライアント装置に送信する。
【0118】
ここで図9を参照して、内部クライアント装置440から外部ウェブサービスまたはアプリケーション450に送信されたウェブリソースに対する要求のエンドツーエンド処理フローの別の例示的な図を示す。前述の例と同様に、この例の処理フローの実行は、プロキシサーバ420によって、上述のようなコンピューティング環境400におけるさまざまな他のコンポーネントとともに行なわれてもよい。この例では、最初のメッセージは、内部コンピュータネットワーク460におけるクライアント装置440から外部ウェブサービスまたはアプリケーション450に向けられた要求であり、このため、プロキシサーバ420はフォワードプロキシモードで動作してもよい。
【0119】
上述のように、この例のエンドツーエンド処理フロー図900は、特定の処理点(またはアサーション)と、エンドツーエンド処理フロー中の各処理点でプロキシサーバ420によって実行されるべき特定のポリシーとを定義する、予め定められたポリシーモデルによって制御されてもよい。この例では、ステップ901で、ウェブ要求がクライアント装置440から受信される。ステップ902で、プロキシサーバ420は、この要求の処理を制御するポリシーモデル内で識別された1つ以上の「On Request」ポリシーを実行してもよい。任意の「On Request」ポリシーを実行した後で、プロキシサーバ420は、ステップ903で、さまざまなセキュリティおよび通信管理機能を実現するために1つ以上の「On Invoke」ポリシーを実行してから、ステップ904で、外部ウェブサービスまたはアプリケーション450に要求を送信してもよい。この例では、プロキシサーバ420は、外部ウェブサービスまたはアプリケーション450から受信されたエラー、またはプロキシサーバ420によって行なわれた処理内で起こったエラーといった、エンドツーエンド処理フロー中に起こったエラーを識別する。したがって、ステップ905で、プロキシサーバ420は、さまざまなセキュリティ機能、分析、およびエラー取扱いを実現するために1つ以上の「On Error」ポリシーを実行してもよい。この場合、「On Error」ポリシーはプロキシサーバ420に、追加のメッセージ処理を行なってから外部ウェブサービスまたはアプリケーション450に要求を再送信するように命令してもよい。したがって、「On Error」ポリシーが適用された後で、プロキシサーバ420はステップ906で「On Invoke」ポリシーを再実行し、次に、ステップ907で外部ウェブサービスまたはアプリケーション450に要求を再送信してもよい。ステップ908で、バックエンドウェブサービスまたはアプリケーション450から応答を受信した後で、プロキシサーバ420は、さまざまな追加のセキュリティおよび通信管理機能を実現し得る「On Response」ポリシーを実行してから、ステップ909で、応答を内部クライアント装置440に送信する。
【0120】
上述の例が示すように、ここに説明されたさまざまな実施形態は、異なるセキュリティポリシーおよび他の通信管理ポリシーが、DMZもしくは他の論理的または物理的サブネットワーク内で、メッセージのエンドツーエンド処理フロー全体にわたるさまざまな異なる処理点で適用され得る、動的ポリシーモデルをサポートしてもよい。この動的ポリシーモデルフレームワークは、悪意のある外部コンピューティングシステムからの攻撃を防止するための追加のセキュリティを構築し実現するために使用されてもよく、ラストマイルセキュリティインフラストラクチャ内(たとえば、バックエンドウェブサービス/アプリケーション430内)では可能ではなかったかもしれない、または好ましくなかったかもしれない、追加のタイプのセキュリティポリシーを実現してもよい。加えて、ここに説明された動的ポリシーモデルを使用して、トークン翻訳および/またはシングルサインオンアクセス制御システムといった、頑強な認証および認可システムが実現されてもよい。たとえば、クライアント装置410は、ユーザ名/パスワードまたは他のユーザクレデンシャルを介して認証してもよく、予め定められたエンドツーエンド処理フローは、異なるタイプのさまざまな異なるアクセストークン(たとえば、Kerberosトークン、SPNEGOトークン、ユーザ名トークン、NTLMトークン、SAMLトークンなど)を検索または生成するために、内部ネットワーク460内の信頼できる認証/認可サービスからのトークン検索および確認を行なうプロキシサーバ420内で実行されてもよい。したがって、ユーザが一組の有効なクレデンシャルを提供し、順調に認証および認可された後で、プロキシサーバ420内のさまざまなポリシーモデルを使用して、ユーザが次にアクセスするさまざまな異なるバックエンドウェブサービス/アプリケーション430のための対応するトークンタイプを検索または生成することによって、シングルサインオンアクセス制御システムを実現してもよい。
【0121】
本願の一実施形態によれば、処理部と通信部とを含むシステムが提供される。そのようなシステムは、この発明の原理を実行するために、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組合わせによって実現されてもよい。処理部および通信部は、図3に示すコンポーネントといった上述のコンポーネントによって実現されてもよい、ということが当業者には理解される。一方、処理部および通信部は、上述されたようなこの発明の原理を実現するために、組合わされてもよく、またはサブユニットへと分離されてもよい、ということが当業者には理解される。したがって、ここでの説明は、ここに説明された機能部の任意の可能な組合せまたは分離またはさらなる定義をサポートしてもよい。
【0122】
上述の実施形態の例では、処理部および通信部は、以下の動作を行なうために協働することができ、動作は、第1のメッセージを受信する動作を含み、システムは、内部コンピュータネットワークのサブネットワーク内で動作するように構成され、システムは、内部コンピュータネットワークの一組のウェブアプリケーションまたはサービスを外部コンピュータネットワークに公開し、動作はさらに、第1のメッセージのための意図された宛先を判断する動作と、第1のメッセージのための意図された宛先に基づいて、システムがフォワードプロキシとして作用すべきかリバースプロキシとして作用すべきかを判断する動作と、第1のメッセージのための予め定められた処理フローにおける現在点を判断する動作と、メッセージを処理するための複数のポリシーから、第1のメッセージを処理するためのポリシーを選択する動作とを含み、選択は、予め定められた処理フローにおける現在点、または、システムがフォワードプロキシとして作用すべきかリバースプロキシとして作用すべきかの判断、のうちの少なくとも1つに基づいており、動作はさらに、選択されたポリシーに従って第1のメッセージを処理する動作と、第1のメッセージを処理した後で、第1のメッセージを意図された宛先に送信する動作とを含む。
【0123】
別の例では、処理部および通信部は、以下の動作をさらに行なうように協働することができ、動作は、第1のメッセージは、内部コンピュータネットワークの簡易オブジェクトアクセスプロトコル(SOAP)仮想サービス内の1つ以上のSOAP動作を呼び出すかまたは当該動作の一部であると判断する動作と、判断されたSOAP動作およびSOAP仮想サービスに基づいて、第1のメッセージを処理するためのポリシーを選択する動作と、選択されたポリシーに従って第1のメッセージを処理した後で、第1のメッセージ内のデータを使用して、判断された1つ以上のSOAP動作を呼び出す動作とを含む。
【0124】
さらに別の例では、処理部および通信部は、以下の動作をさらに行なうように協働することができ、動作は、第1のメッセージは、内部コンピュータネットワークのレプリゼンテーショナル・ステート・トランスファー(REST)仮想サービスまたは仮想ウェブアプリケーションに関連付けられた1つ以上のハイパーテキスト転送プロトコル(HTTP)方法に対応していると判断する動作と、判断されたHTTP方法およびREST仮想サービスまたは仮想ウェブアプリケーションに基づいて、第1のメッセージを処理するためのポリシーを選択する動作と、選択されたポリシーに従って第1のメッセージを処理した後で、第1のメッセージ内のデータを使用して、判断された1つ以上のHTTP方法を呼び出す動作とを含む。
【0125】
前述の説明では、例示のために、方法は特定の順序で説明された。代替的な実施形態では、方法は、説明されたものとは異なる順序で行なわれてもよい、ということが理解されるべきである。上述の方法はハードウェアコンポーネントによって行なわれてもよく、もしくは、汎用または専用プロセッサ、もしくは命令でプログラミングされた論理回路といったマシンに方法を行なわせるために使用され得るマシン実行可能命令のシーケンスで具現化されてもよい、ということも理解されるべきである。これらのマシン実行可能命令は、1つ以上のマシン読取可能媒体またはメモリ装置、たとえば、CD−ROMまたは他のタイプの光ディスク、フロッピーディスケット、ROM、RAM、EPROM、EEPROM、磁気カードまたは光カード、フラッシュメモリ、もしくは、電子命令を格納するのに好適である他のタイプのマシン読取可能媒体またはメモリ装置上に格納されてもよい。それに代えて、方法は、ハードウェアとソフトウェアとの組合わせによって行なわれてもよい。
【0126】
この発明の例示的で現在好ましい実施形態がここに詳細に説明されてきたが、発明の概念は他のやり方でさまざまに具現化され採用されてもよいこと、および、添付された請求項は、先行技術によって限定される場合を除き、そのような変更を含むと解釈されるよう意図されていることが理解されるべきである。
図1
図2
図3
図4
図5
図6A
図6B
図7A
図7B
図7C
図7D
図8
図9