(57)【特許請求の範囲】
【請求項１】
中継サーバによるウェブ情報中継方法であって、
クライアントからのリクエストを受信するステップと、
前記リクエストに対応するウェブページを編集する際に、マッシュアップ対象のページに記述されたユニフォームリソースロケータ情報を抽出し、抽出されたユニフォームリソースロケータ情報のホスト名のドットを別の文字に置換するとともに、前記中継サーバのホスト名を付加するステップと、
編集後のウェブページを前記クライアントへ送信するステップと
を含むことを特徴とするウェブ情報中継方法。
【請求項２】
前記中継サーバは、前記抽出されたユニフォームリソースロケータ情報の完全修飾ドメイン名をホスト名にエンコードし、得られたホスト名に、前記中継サーバのプロトコル、前記中継サーバのホスト名、及び前記抽出されたユニフォームリソースロケータ情報のパス名を結合して、前記中継サーバを経由するためのユニフォームリソースロケータ情報を生成することを特徴とする請求項１記載のウェブ情報中継方法。
【請求項３】
前記中継サーバを経由するためのユニフォームリソースロケータ情報を含むリクエストを前記クライアントから受信するステップと、
前記中継サーバを経由するためのユニフォームリソースロケータ情報に含まれるホスト名を抽出し、抽出されたホスト名から前記中継サーバのホスト名を削除し、残された文字列から、前記ドットを前記別の文字に置換する前のホスト名を生成するステップと、
生成されたホスト名を含むリクエストを目的サーバへ送信するステップと
をさらに含むことを特徴とする請求項１又は２記載のウェブ情報中継方法。
【請求項４】
クライアントからのリクエストを受信する受信部と、
前記リクエストに対応するウェブページを編集する際に、マッシュアップ対象のページに記述されたユニフォームリソースロケータ情報を抽出し、抽出されたユニフォームリソースロケータ情報のホスト名のドットを別の文字に置換するとともに、前記中継サーバのホスト名を付加する編集部と、
編集後のウェブページを前記クライアントへ送信する送信部と
を備えることを特徴とするウェブ情報中継装置。
【請求項５】
クライアントからのリクエストを受信するステップと、
前記リクエストに対応するウェブページを編集する際に、マッシュアップ対象のページに記述されたユニフォームリソースロケータ情報を抽出し、抽出されたユニフォームリソースロケータ情報のホスト名のドットを別の文字に置換するとともに、前記中継サーバのホスト名を付加するステップと、
編集後のウェブページを前記クライアントへ送信するステップと
を含む処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中継サーバによるマッシュアップサービスのためのウェブ情報中継方法及び装置に関する。
【背景技術】
【０００２】
近年、Ｗｅｂ２．０、Software as a Service （ＳａａＳ）等の文脈の中で、Ｗｅｂは「閲覧されるもの」としてのみではなく、「マッシュアップして使われるもの」としての役割を担うようになっている。マッシュアップにより、あるドメインのＷｅｂアプリケーションから他のドメインのＷｅｂアプリケーションのデータを利用することが可能になる。
【０００３】
一般にマッシュアップを行うには、対象となるシステムがマッシュアップを前提にあらかじめ設計・実装されている必要がある。しかし、企業内の巨大なＷｅｂシステム等では、マッシュアップにより大きな効果を生むもものの、そのための改修には莫大な費用がかかり現実的でない。このため、既存のＷｅｂシステムに全く改修を加えずに、Ｗｅｂページをマッシュアップする方法が望まれている。
【０００４】
このような問題の解決に結びつく技術として、他のサイトの内容を機械的に翻訳してユーザに提供する翻訳サイト等のような、コンテンツフィルタという技術がある。コンテンツフィルタ技術によれば、ユーザのブラウザからのアクセスを一旦中継サーバで受け、中継サーバが目的サーバにアクセスし、その内容を取得して翻訳等の加工を加えた上で、ユーザのブラウザに送信する。
【０００５】
この技術を応用し、中継サーバにおいて別のＷｅｂアプリケーションとのマッシュアップを行うコードを挿入し、ブラウザに送信することで、既存アプリに改修を加えなくてもマッシュアップが可能になる。
【０００６】
中継サーバ経由で目的サーバにアクセスするため、ユーザには目的サーバのUniform Resource Locator（ＵＲＬ、ユニフォームリソースロケータ）ではなく、特殊な加工を施したＵＲＬを指定させることになる。ＵＲＬ指定方法としては、Common Gateway Interface（ＣＧＩ）パラメタを使用した方式やパスを使用した方式、Contents Delivery Network （ＣＤＮ）で使われた方式等、いくつかの方式が提案され、実際に運用されている。
【０００７】
ＣＧＩパラメタを使用した方式では、以下の例に示されるように、アクセス対象のＵＲＬがＣＧＩ経由のＵＲＬに変更される。
対象ＵＲＬ        http://target.example/contact/services/
ＣＧＩ経由ＵＲＬ
http://relay.example/?url=http://target.example/contact/services/
また、パスを使用した方式では、以下の例に示されるように、アクセス対象のＵＲＬがＣＧＩ経由のＵＲＬに変更される（例えば、特許文献１を参照）。
対象ＵＲＬ        http://target.example/contact/services/
ＣＧＩ経由ＵＲＬ  http://relay.example/target.example/contact/services/
さらに、ＣＤＮで使われた方式では、以下の例に示されるように、アクセス対象のホス
ト名を書き換えてユーザにアクセスしてもらうことで、ＣＤＮ経由のキャッシュを返す処理を実現している（例えば、非特許文献１を参照）。
対象ＵＲＬ        http://target.example/contact/services/
ＣＤＮ経由ＵＲＬ  http://target.example.relay.example/contact/services/
【特許文献１】特開２００６−０１８７９５号公報
【非特許文献１】“The Coral Content Distribution Network”、［online］、［平成２０年４月１１日検索］、インターネット＜ＵＲＬ：http://www.coralcdn.org ＞
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述した従来の中継方法には、次のような問題がある。
Ｗｅｂシステム、特に企業内のＷｅｂシステムにおいてはセキュリティの確保が重要な課題となっているが、従来のコンテンツフィルタ技術を用いて中継サーバを利用した場合、このセキュリティの確保ができないという問題がある。具体的には、以下の通りである。
（１）ＣＧＩパラメタを使用した方式及びパスを使用した方式では、ＵＲＬがすべてrelay.example という同一ドメインに属するパスになってしまうため、ブラウザに備わっているsame origin policyというセキュリティのための機構が働かなくなってしまう。
【０００９】
つまり、中継サーバを経由してあるサイトＡのページを閲覧中に、別のサイトＢにアクセスした場合、ブラウザからはどちらのサイトもrelay.example というドメインに属するページだと認識されてしまう。このため、サイトＡのページに悪意のあるスクリプトが記述されていると、サイトＢとやり取りした情報がサイトＡに盗まれてしまう危険性があり、システム間連携においては重要な問題となる。
（２）ＣＤＮで使われた方式では、中継サーバを経由しても、別々のホストが同一ドメインと認識されることはないため、上記（１）のような問題は生じない。しかしながら、現在Ｗｅｂシステムを用いる上で重要なセキュリティ技術であるHypertext Transfer Protocol Security（ＨＴＴＰＳ）を用いる場合、ＣＤＮで使われた方式では問題がある。
【００１０】
ＨＴＴＰＳ仕様においては、１つのInternet Protocol （ＩＰ）アドレスに対して１つのSecure Socket Layer （ＳＳＬ）証明書しか対応させることができないため、relay.exampleサーバがＳＳＬ証明書を取得したとしても、それはrelay.exampleというドメインのみで有効である。つまり、target.example.relay.example というアドレスに対してはサーバの正当性を証明することができない。
【００１１】
ワイルドカードＳＳＬ証明書という方法も存在するが、例えば、*.relay.exampleというアドレスの証明書はrelay.exampleの上の１階層分しか有効でない。このため、example.relay.exampleに対しては正当性を証明できても、target.example.relay.example に対しては証明することができない。したがって、ユーザに対して、正当性を確認できない状態で中継サーバを利用させることになり、セキュリティ上の大きな不安要素となる。
【００１２】
このように、従来の中継方法では、上記（１）及び（２）の問題を同時に解決することができない。same origin policyによるセキュリティの確保及びＨＴＴＰＳによる通信のセキュリティの確保は、Ｗｅｂシステムを用いる上で必須の要件であり、既存のＷｅｂシステムにおけるマッシュアップ実現のために、この２つの要件を同時に満足させる中継方法が求められている。
【００１３】
本発明の課題は、中継サーバによるマッシュアップサービスにおいて、same origin po
licyによるセキュリティ及びＨＴＴＰＳによるセキュリティを両立させることである。
【課題を解決するための手段】
【００１４】
開示の中継サーバによるウェブ情報中継方法は、受信ステップ、編集ステップ、及び送信ステップを含む。
受信ステップは、クライアントからのリクエストを受信する。編集ステップは、受信したリクエストに対応するウェブページを編集する際に、マッシュアップ対象のページに記述されたユニフォームリソースロケータ情報を抽出し、抽出されたユニフォームリソースロケータ情報のホスト名のドットを別の文字に置換するとともに、中継サーバのホスト名を付加する。送信ステップは、編集後のウェブページをクライアントへ送信する。
【００１５】
このようなウェブ情報中継方法によれば、マッシュアップ対象のページに記述されたＵＲＬ情報からＷｅｂサイト毎に異なるホスト名が生成されるため、same origin policyによるセキュリティが確保される。また、ホスト名のドットを別の文字に置換することにより、中継サーバのホスト名より前の部分が１階層分の文字列に編集されるため、上述したワイルドカードＳＳＬ証明書を用いることが可能になる。
【発明の効果】
【００１６】
中継サーバによるマッシュアップサービスにおいて、same origin policyによるセキュリティ及びＨＴＴＰＳによるセキュリティを両立させることができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
図１は、実施形態の中継システムの構成例を示している。この中継システムは、クライアント１０１、中継サーバ１０２、及び目的サーバ１０４〜１０６を備える。これらの装置は、インターネットのような通信ネットワークを介して互いに通信することができる。
【００１８】
この中継システムでは、目的サーバ１０４が提供するサービスを目的サーバ１０５や目的サーバ１０６が提供するサービスとつなげて利用するため、ユーザはクライアント１０１から中継サーバ１０２を介して各目的サーバにアクセスする。そして、もともと他のシステムと連携できるように設計されていない各目的サーバの入出力を、中継サーバ１０２で加工して連携可能な入出力に置き換えることにより、システム間連携が実現される。
【００１９】
例えば、relay.example というドメインで中継サーバ１０２を運用する場合、ＷｅｂサイトのＵＲＬのFully Qualified Domain Name （ＦＱＤＮ、完全修飾ドメイン名）部分を、以下のように書き換える。
（ｅｘ１）
http://target.example/
→http(s)://http-target-example.relay.example/
（ｅｘ２）
https://target.number2.example/path/
→http(s)://https-target-number2-example.relay.example/path/
（ｅｘ３）
http://with-hyphen.example/
→http(s)://http-with--hyphen-example.relay.example/
（ｅｘ４）
http://with.port.example:8080/
→http(s)://http-with-port-example--8080.relay.example/
ｅｘ１〜ｅｘ４では、ＦＱＤＮの“. ”（ドット）が“- ”（ハイフン）に置換されるとともに、中継サーバ１０２のホスト名relay.exampleが付加されている。さらに、ｅｘ３では、ＦＱＤＮのハイフンがハイフン２つに置換されており、ｅｘ４では、ＦＱＤＮのポート番号8080が取り出され、http-with-port-exampleの後ろにハイフン２つで連結されている。これにより、元ＵＲＬのＦＱＤＮが書き換え後のＵＲＬのホスト名にエンコードされる。
【００２０】
このような書き換え後のＵＲＬを用いることで、クライアント１０１から中継サーバ１０２を介してＷｅｂサイトにアクセスすることが可能になる。中継サーバ１０２は、そのＷｅｂサイトからレスポンスを加工して、クライアント１０１に返送する。このとき、テキスト置換により以下の変換も併せて行われる。
１．httpから始まる絶対パス記述を上記書き換えルールに従って変換する。
２．すでに上記書き換えルールに従っているパスは変換しない。
【００２１】
この中継方法の特長は以下の通りである。
１．システム間連携に必要な以下の２点のセキュリティを両立させることができる。
（１）ワイルドカードＳＳＬ証明書を利用することで、中継サーバのサーバ認証が可能  になる。上記のｅｘ１〜ｅｘ４では、Common Name （ＣＮ）を*.relay.example としてワイルドカードＳＳＬ証明書を取得すればよい。
（２）異なるホストは異なるサブドメインにマップされるため、Cross Site Scripting（ＸＳＳ）攻撃を回避できる。
２．レスポンスのHyperText Markup Language （ＨＴＭＬ）文書のDocument Object Model （ＤＯＭ）解析及びパス解決が不要なため、中継処理の負担が軽い。
３．ユーザが一度この形式のＵＲＬにアクセスすると、リンクをたどるいわゆるＷｅｂブラウズ行為を通して、自然にずっと中継サーバ１０２経由のアクセスが保たれる。
【００２２】
図２は、中継サーバ１０２による中継動作の例を示している。この例では、目的サーバ２０３上のhttp://target.example/path というＷｅｂサイトに中継サーバ１０２経由でアクセスするため、クライアント１０１のブラウザは、http://http-target-example.relay.example/pathにアクセスする。
【００２３】
中継サーバ１０２は、ＣＮを*.relay.example としたワイルドカードＳＳＬ証明書２０２を保持している。また、Domain Name Server（ＤＮＳ、ドメイン名サーバ）２０１は、*.relay.example というホスト名を含むリクエストをすべて中継サーバ１０２に送るように設定されている。具体的な動作手順は、以下の通りである。
（１）ＤＮＳ２０１は、ホスト名解決を行って中継サーバ１０２のＩＰアドレスをクライアント１０１に返す。
（２）ブラウザは、中継サーバ１０２に対して、/pathに対するリクエストを発行する。
（３）中継サーバ１０２は、リクエストヘッダからhttp-target-exampleという文字列を取得し、これをhttp://target.exampleに変換する。そして、http://target.exampleを/pathというパス情報と合わせて、http://target.example/pathへのリクエストを発行し、目的サーバ２０３からのレスポンスを受信する。
（４）レスポンスのMultipurpose Internet Mail Extension（ＭＩＭＥ）タイプに応じて、レスポンスに対する所定の加工を行う。リンクを伴うコンテンツタイプの場合は、単純テキスト置換で絶対パスの書き換えを行う。この場合、ＤＯＭ解析は不要なので処理が高速になる。画像等のように加工の必要のないコンテンツに対しては、何も行わない。
（５）加工されたレスポンスをクライアント１０１に返す。ここで返されるＨＴＭＬ文書上のパスは、やはり中継サーバ１０２を経由するものになるが、そのパスへのアクセスも同様に処理されるため、再帰的に整合性の取れたページがブラウザ画面に表示される。
【００２４】
図３は、中継サーバ１０２の構成例を示している。図３の中継サーバ１０２は、要求受付部３０１、サブドメイン解釈部３０２、要求転送部３０３、クライアントセッション管理部３０４、ユーザ情報格納部３０５、証明書格納部３０６、応答転送部３０７、応答変換部３０８、応答解釈部３０９、及び応答受付部３１０を備える。
【００２５】
要求受付部３０１は、クライアント１０１からのリクエストを受信し、サブドメイン解釈部３０２は、リクエスト中のサブドメイン部分を解釈し、要求転送部３０３は、目的サーバにリクエストを転送する。
【００２６】
応答受付部３１０は、目的サーバからのレスポンスを受信し、応答解釈部３０９は、レスポンスの内容を解釈し、応答変換部３０８は、レスポンスの内容を変換し、応答転送部３０７は、変換後のレスポンスをクライアント１０１に返送する。例えば、ハイパーテキストの場合は応答変換部３０８により変換されるが、画像等の場合は応答変換部３０８をバイパスして応答転送部３０７に転送される。
【００２７】
ユーザ情報格納部３０５は、クライアント１０１のユーザのユーザ名、パスワード等のユーザ情報を格納し、クライアントセッション管理部３０４は、そのユーザ情報を用いてクライアント１０１とのセッションを管理する。
【００２８】
証明書格納部３０６は、ワイルドカードＳＳＬ証明書を格納し、中継サーバ１０２は、クライアント１０１とＨＴＴＰＳ通信を行う際にこの証明書を参照する。これにより、ＨＴＴＰＳアクセスに対するサーバ認証が行なわれ、安全なＳＳＬハンドシェイクが可能になる。
【００２９】
サブドメイン解釈部３０２は、リクエストに対するＵＲＬ逆変換加工を行う。例えば、クライアント１０１が要求してきたＵＲＬがhttp://http-with-port-example--8080.relay.example/index.htmlである場合、そのホスト名部分http-with-port-example--8080から、元ＵＲＬのプロトコル部分、ＦＱＤＮ部分、及びポート番号部分を抽出する。そして、抽出した部分にパス名を結合することで、元ＵＲＬであるhttp://with.port.example:8080/index.htmlを生成する。
【００３０】
要求転送部３０３は、このＵＲＬへのアクセスを行ってレスポンスを取得する。応答解釈部３０９は、レスポンスのＭＩＭＥタイプを解釈し、変換が必要な情報のみを応答変換部３０８に転送する。
【００３１】
応答変換部３０８は、レスポンスに対してマッシュアップ用のスクリプト等を挿入したり、ＵＲＬ変換加工を行ったりすることで、レスポンスのＷｅｂページを編集する。ＵＲＬ変換加工では、レスポンスに含まれるＵＲＬのうち、httpから始まる絶対パス記述が所定のルールに従って変換され、中継サーバ１０２経由のＵＲＬに書き換えられる。ただし、レスポンス中のＵＲＬが既にこの形式になっている場合は、書き換えを行わない。
【００３２】
クライアントセッション管理部３０４は、利用権限のないユーザからのアクセスを制限するため、クライアント１０１からの初回利用時には認証画面を出力し、あらかじめ登録してあるユーザ名とパスワードの入力を求める。入力内容がユーザ情報格納部３０５のユーザ情報と一致しない場合は、そのクライアント１０１による利用を許可しない。
【００３３】
ユーザが認証されると、中継サーバ１０２は、クッキー、認証ヘッダ等の情報をクライアント１０１と目的サーバの間でそのまま転送し、中継時にこれらの情報の書き換えは行わない。
【００３４】
次に、図４から図１５までを参照しながら、クライアント１０１から受信したリクエスト及び目的サーバから受信したレスポンスの加工方法について説明する。
図４及び図５は、サブドメイン解釈部３０２によるリクエストの加工例を示している。この例では、リクエストに含まれる情報のうち、メソッド、パス、及びメッセージボディは加工されない。一方、ホスト及びポートはＵＲＬ逆変換加工により変換され、ヘッダは図５に示すように加工される。ヘッダに含まれる情報のうち、Host及びReferer はＵＲＬ逆変換加工により変換され、Accept、If-Modified-Since 、及びUser-Agentは加工されない。例えば、図６のようなリクエストヘッダは、加工されて図７のようなリクエストヘッダに変換される。
【００３５】
図８及び図９は、応答変換部３０８によるレスポンスの加工例を示している。この例では、レスポンスに含まれる情報のうち、応答コードは加工されない。ＭＩＭＥタイプを示すContent-typeがtext/*である場合は、メッセージボディの全体に対してＵＲＬ変換加工が行われる。さらに、Content-typeがtext/htmlである場合は、SCRIPTタグが挿入される。ただし、Framesetタグが発見されたときは、SCRIPTタグの挿入は行われない。
【００３６】
ヘッダは図９に示すように加工される。ヘッダに含まれる情報のうち、Content-type、Content-Disposition 、Connection、Content-Language、及びExpires は加工されない。Content-Lengthは、加工後のコンテンツの長さに変更され、Set-Cookieは、中継サーバ１０２でセッション管理を行う場合は加工される。Locationは、ＵＲＬ変換加工により変換され、WWW-Authenticateは、後述するシングルサインオンを行う場合を除いて加工されない。
【００３７】
例えば、図１０のようなレスポンスヘッダは、加工されて図１１のようなレスポンスヘッダに変換され、図１２のようなメッセージボディは、加工されて図１３のようなメッセージボディに変換される。
【００３８】
この場合、図１０のContent-Lengthは、6110から6432に変換され、図１３のメッセージボディには、SCRIPTタグが挿入されている。このレスポンスを受信したクライアント１０１のブラウザは、SCRIPTタグにより指定されたスクリプトを使用して出力情報を加工する。
【００３９】
ユーザは、目的サーバと挿入したいスクリプトの組をユーザ情報として、あらかじめ中継サーバ１０２に登録しておくこともできる。この場合、クライアントセッション管理部３０４は、ユーザ情報を参照してユーザを特定し、応答変換部３０８は、その指定に応じたスクリプトをメッセージボディに挿入する。
【００４０】
図８及び図９に示したＵＲＬ変換加工としては、サブドメイン名（ホスト名）に適用可能な文字列パターンの可逆変換（エンコーディング）であれば、いかなる変換方法でも用いることができる。このような可逆変換の具体例としては、所定の変換ルールによるテキスト置換、暗号化等が考えられる。図４及び図５に示したＵＲＬ逆変換加工は、この可逆変換の逆変換である。
【００４１】
テキスト置換を用いたＵＲＬ変換加工の具体例としては、前述したｅｘ１〜ｅｘ４が挙げられる。この場合の加工手順は、以下の通りである（図１４を参照）。
１．入力ＵＲＬからプロトコル、ＦＱＤＮ、及びポート番号（省略されているときを除く
）の文字列を取り出す（ステップ４０１）。
２．ＦＱＤＮ文字列にハイフンが含まれていれば（ステップ４０２）、これをハイフン２つに置換する（ステップ４０３）。
３．上記２で生成された文字列のドットをハイフンに置換する（ステップ４０４）。
４．上記１で取り出したプロトコル文字列（http、https 等）を、上記３で生成された文字列の前にハイフンで連結する（ステップ４０５）。
５．上記１で取り出したポート番号文字列があれば（ステップ４０６）、上記４で生成された文字列の後ろにハイフン２つで連結する（ステップ４０７）。
６．上記５で生成された文字列をホスト名として、中継サーバ１０２のドメイン（relay.example）に付加する形で、出力ＵＲＬを生成する（ステップ４０８）。
【００４２】
図１２のメッセージボディに含まれているhttp://target.example/foo.html というＵＲＬは、このＵＲＬ変換加工により、図１３のhttp://http-target-example.relay.example/foo.htmlに変換される。
【００４３】
一方、ＵＲＬ逆変換加工の加工手順は、以下の通りである（図１５を参照）。
１．入力ＵＲＬのホスト名文字列（ＦＱＤＮの一番左側の要素）を取り出す（ステップ５０１）。
２．上記１で取り出した文字列は先頭がhttp- またはhttps-で始まっているはずなので、この先頭文字列をプロトコル文字列とする（ステップ５０２）。
３．上記１で取り出した文字列の末尾がハイフン２つに続く数字列となっていれば（ステップ５０３）、この数字列をポート番号文字列とする（ステップ５０４）。そうでない場合は、ポート番号文字列は省略する。
４．上記１で取り出した文字列から、上記２及び３で解釈に用いた先頭及び末尾の文字列を削除する（ステップ５０５）。
５．上記４で残った文字列のハイフンをすべてドットに置換する（ステップ５０６）。
６．上記５で生成された文字列にドットが２つ連続して現れれば（ステップ５０７）、その２つのドットを１つのドットに置換し、ＦＱＤＮ文字列を生成する（ステップ５０８）。
７．上記２で取り出したプロトコル文字列、上記６で生成されたＦＱＤＮ文字列、及び上記３で取り出したポート番号文字列を用いて、出力ＵＲＬを生成する（ステップ５０９）。
【００４４】
図６のリクエストヘッダのHost及びReferer に含まれているhttp-target-example.relay.exampleという文字列は、このＵＲＬ逆変換加工により、図７のtarget.example に変換される。
【００４５】
以上のＵＲＬ変換加工及びＵＲＬ逆変換加工の例では、置換文字としてハイフンを用いているが、他の文字を置換文字として用いても構わない。例えば、ハイフンの代わりにアルファベットの“j "を用いた場合、ＵＲＬ変換加工は次のようになる。
（ｅｘ５）
http://target.example/
→http(s)://httpjtargetjexample.relay.example/
さらに、次に示すように、上記ｅｘ５で得られた文字列の順序を反転させる加工を追加してもよい。
（ｅｘ６）
http://target.example/
→http(s)://httpjtargetjexample.relay.example/
→http(s)://elpmaxejtegratjptth.relay.example/
また、次に示すように、置換文字としてハイフンを用いた文字列の末尾にユーザ名を付加する加工を追加してもよい。
（ｅｘ７）
http://target.example/
→http(s)://http-target-example.relay.example/
→http(s)://http-target-example-sato.relay.example/
さらに、次に示すように、上記ｅｘ７で得られた文字列の末尾に「本日」の日付を付加する加工を追加してもよい。
（ｅｘ８）
http://target.example/
→http(s)://http-target-example.relay.example/
→http(s)://http-target-example-sato.relay.example/
→http(s)://http-target-example-sato-20080415.relay.net/
さらに、次に示すように、上記ｅｘ８で得られた文字列の５文字目以降を換字暗号で変換する加工を追加してもよい。
（ｅｘ９）
http://target.example/
→http(s)://http-target-example.relay.example/
→http(s)://http-target-example-sato.relay.example/
→http(s)://http-target-example-sato-20080415.relay.example/
→http(s)://http7jkh2zj7ztk6g5z7ikjf7v8838-r0.relay.example/
上記ｅｘ９で用いた換字暗号を１行のPractical Extraction and Report Language（Ｐｅｒｌ）プログラムで記述すると、次のようになる。ただし、可逆暗号化の種類及び方式はこれに限られない。
暗号  perl -pe "tr/abcdefghijklmnopqrstuvwxyz\-0123456789/klxyz12abpq56efg9hijmnstuo78rvc\-0dw34/"
復号  perl -pe "tr/klxyz12abpq56efg9hijmnstuo78rvc\-0dw34/abcdefghijklmnopqrstuvwxyz\-0123456789/"
人間にとっての可読性や計算機資源の節約を考慮すると、ハイフンを用いたテキスト置換が最も実用的と考えられる。しかし、目的サーバのＵＲＬをユーザから隠蔽する等の特殊な用途においては、その用途に応じて適切な変換ルールを用いることが可能である。
【００４６】
以上のような中継方法によれば、次のような効果が得られる。
（１）中継サーバを適切に設定することにより、既存のＷｅｂページ及びＷｅｂアプリケーションに対して全く手を加えることなく、外部からスクリプト挿入等を行った改造版をユーザに提供することができる。
（２）元ドメインが異なるＵＲＬは中継サーバを経由しても別のドメインとして扱われる
ため、中継サーバ経由で複数のＷｅｂサイトにアクセスしているような状況でも、ブラウザ側のsame origin policyによって悪意のあるサイトからＷｅｂシステムを守ることが可能になる。
（３）中継サーバ経由の全ＵＲＬに対して有効なワイルドカードＳＳＬ証明書を事前に用意することができるため、ユーザのブラウザでサーバの正当性が確認でき、中継サーバ利用時の不安要素をなくすことができる。
（４）特に大規模な企業システム等に対して少しでも機能追加を行うためには、小規模とはいえプログラムに変更を加えることになる。このため、多くの場合、全機能の再テストが必要となり、コスト面で現実的ではない。しかし、中継サーバを用いることにより、既存システムに全く手を加えることなく、出力加工により対応できる範囲内で機能追加や機能変更が可能になる。Asynchronous JavaScript + XML （Ａｊａｘ）等のＷｅｂアプリケーションにおけるクライアント技術の台頭により、出力加工により対応できる範囲は非常に広がっており、特に他のシステムとの連携等を柔軟に行えるようになる。
【００４７】
図３の中継サーバの処理をソフトウェアにより実装する場合、図１６に示すような情報処理装置（コンピュータ）が用いられる。図１６の情報処理装置は、Central Processing
Unit （ＣＰＵ）１４０１、メモリ１４０２、入力装置１４０３、出力装置１４０４、外部記憶装置１４０５、媒体駆動装置１４０６、およびネットワーク接続装置１４０７を備え、それらはバス１４０８により互いに接続されている。
【００４８】
メモリ１４０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）等を含み、処理に用いられるプログラムおよびデータを格納する。ＣＰＵ１４０１は、メモリ１４０２を利用してプログラムを実行することにより、中継サーバ１０２と同様の処理を行う。
【００４９】
入力装置１４０３は、例えば、キーボード、ポインティングデバイス等であり、オペレータからの指示や情報の入力に用いられる。出力装置１４０４は、例えば、ディスプレイ、プリンタ、スピーカ等であり、オペレータへの問い合わせや処理結果の出力に用いられる。
【００５０】
外部記憶装置１４０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。情報処理装置は、この外部記憶装置１４０５に、プログラムおよびデータを格納しておき、必要に応じて、それらをメモリ１４０２にロードして使用する。
【００５１】
媒体駆動装置１４０６は、可搬記録媒体１４０９を駆動し、その記録内容にアクセスする。可搬記録媒体１４０９は、メモリカード、フレキシブルディスク、光ディスク、光磁気ディスク等の任意のコンピュータ読み取り可能な記録媒体である。オペレータは、この可搬記録媒体１４０９にプログラムおよびデータを格納しておき、必要に応じて、それらをメモリ１４０２にロードして使用する。
【００５２】
ネットワーク接続装置１４０７は、インターネット等の通信ネットワークに接続され、クライアント１０１及び各目的サーバとの通信に伴うデータ変換を行う。また、情報処理装置は、必要に応じて、プログラムおよびデータを外部の装置からネットワーク接続装置１４０７を介して受け取り、それらをメモリ１４０２にロードして使用する。
【００５３】
図１７は、図１６の情報処理装置にプログラムおよびデータを提供する方法を示している。可搬記録媒体１４０９や外部装置１５０１のデータベース１５１１に格納されたプログラムおよびデータは、情報処理装置１５０２のメモリ１４０２にロードされる。外部装置１５０１は、そのプログラムおよびデータを搬送する搬送信号を生成し、通信ネットワ
ーク上の任意の伝送媒体を介して情報処理装置１５０２に送信する。ＣＰＵ１４０１は、そのデータを用いてそのプログラムを実行し、上述した処理を行う。
【００５４】
以上、図１から図１７までを参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）中継サーバによるウェブ情報中継方法であって、
クライアントからのリクエストを受信するステップと、
前記リクエストに対応するウェブページを編集する際に、マッシュアップ対象のページに記述されたユニフォームリソースロケータ情報を抽出し、抽出されたユニフォームリソースロケータ情報のホスト名のドットを別の文字に置換するとともに、前記中継サーバのホスト名を付加するステップと、
編集後のウェブページを前記クライアントへ送信するステップと
を含むことを特徴とするウェブ情報中継方法。
（付記２）前記中継サーバは、前記抽出されたユニフォームリソースロケータ情報の完全修飾ドメイン名をホスト名にエンコードし、得られたホスト名に、前記中継サーバのプロトコル、前記中継サーバのホスト名、及び前記抽出されたユニフォームリソースロケータ情報のパス名を結合して、前記中継サーバを経由するためのユニフォームリソースロケータ情報を生成することを特徴とする付記１記載のウェブ情報中継方法。
（付記３）前記中継サーバを経由するためのユニフォームリソースロケータ情報を含むリクエストを前記クライアントから受信するステップと、
前記中継サーバを経由するためのユニフォームリソースロケータ情報に含まれるホスト名を抽出し、抽出されたホスト名から前記中継サーバのホスト名を削除し、残された文字列から、前記ドットを前記別の文字に置換する前のホスト名を生成するステップと、
生成されたホスト名を含むリクエストを目的サーバへ送信するステップと
をさらに含むことを特徴とする付記１又は２記載のウェブ情報中継方法。
（付記４）前記中継サーバにあらかじめ格納されている、前記マッシュアップ対象のページを有する目的サーバとスクリプト情報の組を示す情報を参照して、該目的サーバに対応するスクリプト情報を前記リクエストに対応するウェブページに挿入するステップをさらに含むことを特徴とする付記１、２、又は３記載のウェブ情報中継方法。
（付記５）クライアントからのリクエストを受信する受信部と、
前記リクエストに対応するウェブページを編集する際に、マッシュアップ対象のページに記述されたユニフォームリソースロケータ情報を抽出し、抽出されたユニフォームリソースロケータ情報のホスト名のドットを別の文字に置換するとともに、前記中継サーバのホスト名を付加する編集部と、
編集後のウェブページを前記クライアントへ送信する送信部と
を備えることを特徴とするウェブ情報中継装置。
（付記６）クライアントからのリクエストを受信するステップと、
前記リクエストに対応するウェブページを編集する際に、マッシュアップ対象のページに記述されたユニフォームリソースロケータ情報を抽出し、抽出されたユニフォームリソースロケータ情報のホスト名のドットを別の文字に置換するとともに、前記中継サーバのホスト名を付加するステップと、
編集後のウェブページを前記クライアントへ送信するステップと
を含む処理をコンピュータに実行させるためのプログラム。
【図面の簡単な説明】
【００５５】
【図１】中継システムの構成図である。
【図２】中継動作を示す図である。
【図３】中継サーバの構成図である。
【図４】リクエストの加工方法を示す図である。
【図５】リクエストヘッダの加工方法を示す図である。
【図６】加工前のリクエストヘッダを示す図である。
【図７】加工後のリクエストヘッダを示す図である。
【図８】レスポンスの加工方法を示す図である。
【図９】レスポンスヘッダの加工方法を示す図である。
【図１０】加工前のレスポンスヘッダを示す図である。
【図１１】加工後のレスポンスヘッダを示す図である。
【図１２】加工前のメッセージボディを示す図である。
【図１３】加工後のメッセージボディを示す図である。
【図１４】ＵＲＬ変換加工のフローチャートである。
【図１５】ＵＲＬ逆変換加工のフローチャートである。
【図１６】情報処理装置の構成図である。
【図１７】プログラムおよびデータの提供方法を示す図である。
【符号の説明】
【００５６】
１０１  クライント
１０２  中継サーバ
１０４、１０５、１０６、２０３  目的サーバ
２０１  ＤＮＳ
２０２  ワイルドカードＳＳＬ証明書
３０１  要求受付部
３０２  サブドメイン解釈部
３０３  要求転送部
３０４  クライアントセッション管理部
３０５  ユーザ情報格納部
３０６  証明書格納部
３０７  応答転送部
３０８  応答変換部
３０９  応答解釈部
３１０  応答受付部
１４０１  ＣＰＵ
１４０２  メモリ
１４０３  入力装置
１４０４  出力装置
１４０５  外部記憶装置
１４０６  媒体駆動装置
１４０７  ネットワーク接続装置
１４０８  バス
１５０１  外部装置
１５０２  情報処理装置
１５１１  データベース
【図３】
0005146088.tif 000002
【図４】
0005146088.tif 000003
【図５】
0005146088.tif 000004
【図６】
0005146088.tif 000005
【図７】
0005146088.tif 000006
【図８】
0005146088.tif 000007
【図９】
0005146088.tif 000008
【図１０】
0005146088.tif 000009
【図１１】
0005146088.tif 000010
【図１２】
0005146088.tif 000011
【図１３】
0005146088.tif 000012
【図１４】
0005146088.tif 000013
【図１５】
0005146088.tif 000014
【図１６】
0005146088.tif 000015
【図１７】
0005146088.tif 000016
【図１】
0005146088.tif 000017
【図２】
0005146088.tif 000018