JP4179535B2 - ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム - Google Patents

ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム Download PDF

Info

Publication number
JP4179535B2
JP4179535B2 JP2002257969A JP2002257969A JP4179535B2 JP 4179535 B2 JP4179535 B2 JP 4179535B2 JP 2002257969 A JP2002257969 A JP 2002257969A JP 2002257969 A JP2002257969 A JP 2002257969A JP 4179535 B2 JP4179535 B2 JP 4179535B2
Authority
JP
Japan
Prior art keywords
web server
cookie
domain
header
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002257969A
Other languages
English (en)
Other versions
JP2004094805A (ja
Inventor
弘一 高橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2002257969A priority Critical patent/JP4179535B2/ja
Priority to CNB031786383A priority patent/CN100508518C/zh
Priority to US10/653,666 priority patent/US20040044768A1/en
Publication of JP2004094805A publication Critical patent/JP2004094805A/ja
Application granted granted Critical
Publication of JP4179535B2 publication Critical patent/JP4179535B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、ネットワーク上でサーバと外部ネットワークとの間に介在させるリバースプロキシに関し、特にサーバがクッキーを設定する場合のリバースプロキシの処理等に関する。
【0002】
【従来の技術】
ネットワークにおいて種々のサービスを提供するサーバのセキュリティを強化するため、ネットワーク上にリバースプロキシを設置することが行われる。リバースプロキシとは、サーバに代わって当該サーバへの要求を受信し中継するプロキシサーバである。すなわち、当該サーバにアクセスしようとしたユーザは全てリバースプロキシを経由することになるため、当該サーバが外部から直接アクセスを受けることがなくなる。
【0003】
リバースプロキシを経由してサーバへアクセスする場合、アクセス要求(リクエスト)には一般に次のフォーマットが用いられる。なお、以下の例では通信プロトコルとしてHTTP(Hypertext Transfer Protocol)を用い、ウェブサーバへアクセスする場合について説明する。
(1)http://<reverse proxy>/<prefix>/<path name of Web server>
(2)http://<web server>/<path name of Web server>
リバースプロキシは、<prefix>とウェブサーバ名とを対応付けた図12に示すようなテーブルを管理している。そして、(1)のフォーマットのリクエストを受け取ると、図12のテーブルを参照し、リクエスト中の<prefix>に対応するウェブサーバに対して(2)のフォーマットのリクエストを送る。
【0004】
ところで、HTTPリクエストは、ステートレスつまり各リクエストが独立であるため、ウェブサーバは、1人のユーザからの連続するリクエストであっても1つ1つ独立したリクエストと認識する。そこで、リクエスト間で状態を保持するためにクッキー(Cookie)が導入されている。
クッキーはウェブサーバがブラウザに設定するものであり、例えば以下のようにしてユーザを追跡することができる。
まず、ウェブサーバがユーザからのリクエストに対してレスポンスを返す際に、レスポンス内に、
Set-Cookie: id=001
のようなSet-Cookie(セットクッキー)をヘッダに埋め込む。これにより、その後の当該ユーザからの全てのリクエストには、リクエストヘッダ内に、
Cookie: id=001
というクッキーが埋め込まれる。この情報に基づいて、当該ユーザがどのページにアクセスしたかを追跡することができる。
【0005】
ここで、上記のSet-Cookieを埋め込んだヘッダ(以下、Set-Cookie ヘッダ)は、以下のようなフォーマットを持つ。
Set-Cookie: <name>=<value>; domain=<domain>; path=<path>;(その他)
ドメイン(domain)、パス(path)の指定により、これを受け取ったブラウザがクッキーを送り返す範囲を制限している。つまり、ドメインで指定された範囲内のウェブサーバにおいて、パスで指定されているディレクトリ(directory)以下のアクセスに対してのみクッキーが送り返されることとなる。
【0006】
【発明が解決しようとする課題】
しかし、リバースプロキシが設置されたネットワークシステムにおいて、リバースプロキシからサーバへ送られたリクエスト(例えば上述した(2)のフォーマットのリクエスト)に対する当該サーバからのレスポンス内にSet-Cookieヘッダがあった場合、このレスポンスをそのままリバースプロキシがリクエストを行ったブラウザ(ユーザ端末)へ返すと、一般的に当該ブラウザはこのSet-Cookieを正しく受け取ることができない。
その理由は、Set-Cookieはドメイン、パスを特定するパラメータによってその有効範囲を指定しているが、サーバ本来のドメイン及びパスと、リバースプロキシを通したときの当該サーバのドメイン及びパスが異なるためである。例えば、ウェブサーバが、自身が属するドメインの値をドメインパラメータに設定してSet-Cookieを設定した場合において、ブラウザから認識できるリバースプロキシがSet-Cookieで指定されているドメインに存在しない場合は、ブラウザはこのSet-Cookieを無視してしまうためである。
【0007】
そこで本発明は、リバースプロキシを経由してサーバへアクセスするネットワークシステムにおいて、サーバによって設定されたクッキーを透過的に扱うようにすることを目的とする。
また本発明は、サーバの設定したクッキーを有効に使用するためにSet-Cookieを書き換える機能を備えたリバースプロキシを提供することを目的とする。
【0008】
【課題を解決するための手段】
上記の目的を達成する本発明は、次のようなネットワークシステムによって実現される。すなわち、このネットワークシステムは、ネットワーク上に設けられた複数のウェブサーバと、この複数のウェブサーバに対する外部からのアクセスを中継するリバースプロキシとを備え、このネットワークシステムにおいてウェブサーバは、ネットワークに接続された所定の端末から送信されたリクエストに応じて端末の状態を保持するための情報を含むレスポンスをこの端末に返送し、リバースプロキシは、このレスポンスに含まれる端末の状態を保持するための情報を、この端末がネットワークの構成として認識可能な形式に変換して返送する。そして、リバースプロキシは、端末の状態を保持するための情報に含まれるウェブサーバのドメインを指定するドメインパラメータを削除し、ドメインパラメータを構成する構成要素の並び順を逆順に並べ替えて、この情報に含まれるウェブサーバにおけるパスパラメータに埋め込む。
【0009】
また、本発明は、次のような機能構成を有するリバースプロキシによって実現される。ウェブサーバからユーザ端末へのデータの送信を中継するリバースプロキシは、ウェブサーバからユーザ端末に返送されたデータを受信すると共に、このデータに含まれるSet-Cookieヘッダのドメイン、パスの記述をユーザ端末が認識可能な形式に書き換えるヘッダ書き換え部と、このヘッダ書き換え部によって書き換えられたデータをユーザ端末に送信するデータ送信部とを備える。また、このリバースプロキシは、このデータに含まれるリンク及びロケーションのドメイン及びパスをヘッダ書き換え部によって書き換えられたドメインの記述を含むパスに合わせて書き換えるリンク・ロケーション書き換え部をさらに備える。
【0010】
さらに、本発明は、次のような機能構成を有するリバースプロキシによって実現される。ユーザ端末からウェブサーバへのリクエストの送信を中継するリバースプロキシは、受信されたリクエストの記述を変換して得られる情報(ドメインに関する情報)に基づいてネットワーク上に配置された複数のサーバのうちこのリクエストを送信するウェブサーバを特定するウェブサーバ名取得部と、このウェブサーバ名取得部にて特定されたウェブサーバに基づいて、このリクエストによるアクセス先をこのウェブサーバにおけるURLに書き換えるURL書き換え部と、ウェブサーバのURLにこのリクエストを転送するリクエスト転送部とを備える。
【0011】
またさらに、本発明は、次のようなコンピュータ装置を提供することができる。すなわち、端末とサーバとの間におけるHTTPリクエストの送信及びHTTPレスポンスの返送を中継するコンピュータ装置は、この端末のブラウザから送信されたクッキーとHTTPリクエストとを中継してこのHTTPリクエストの送信先のサーバに転送するHTTPリクエスト転送手段と、このHTTPリクエストに応じてこのサーバから返送されたHTTPレスポンスを受信し、セットクッキーヘッダに記述されたドメインを削除してこのドメインを構成する構成要素の並び順を逆順に並べ替えて、セットクッキーヘッダに記述されたパスに埋め込んでこの端末に転送するHTTPレスポンス転送手段とを備える。ここで、このHTTPリクエスト転送手段は、ウェブサーバがデフォルトのポート以外を使用している場合は、ブラウザのリバースプロキシに対するアクセスパス内にウェブサーバのポート番号を指定してアクセスする。また、この前記HTTPレスポンス転送手段は、HTTPレスポンスに応じて所定の固定文字列をセットクッキーヘッダに付け加えて端末に転送する。さらに、HTTPレスポンス転送手段は、ドメインの構成要素の並び順を逆順に並べ替える際に、このドメインを特定するのに必要な構成要素を1つに纏めて端末に転送する。またさらに、HTTPレスポンス転送手段は、サーバのセットクッキーヘッダ内のドメインパラメータを自装置のサーバ名に置換して端末に転送する。
【0012】
さらにまた、本発明は、次のようなデータ処理方法を提供することができる。すなわち、第1のコンピュータ装置と第2のコンピュータ装置とのデータの送受信を中継するコンピュータ装置におけるデータ処理方法は、第1のコンピュータ装置から第2のコンピュータ装置に対して送信されたレスポンスを受信するステップと、このレスポンスにセットクッキーヘッダが含まれているか否かを判断するステップと、このレスポンスにセットクッキーヘッダが含まれている場合には、セットクッキーヘッダに基づいて第2のコンピュータ装置に設定されるクッキーがこの第2のコンピュータ装置において認識可能な形式となるようにセットクッキーヘッダを書き換えるステップと、このセットクッキーヘッダが書き換えられたレスポンスを第2のコンピュータ装置に送信するステップとを含む。
また、第1のコンピュータ装置と第2のコンピュータ装置とのデータの送受信を中継するコンピュータ装置におけるデータ処理方法は、第2のコンピュータ装置から送信されたリクエストを受信し、
このリクエストの情報を変換して得られる情報に基づいてこのリクエストを送信する第1のコンピュータ装置を特定するステップと、このリクエストによるアクセス先を特定された第1のコンピュータ装置におけるURLに書き換えるステップと、特定されたこの第1のコンピュータ装置のURLにリクエストを送信するステップとを含む。
【0013】
ここで本発明は、上述した所定のデータ処理を行う方法の各ステップによる処理、及び各部の機能において実現される処理をコンピュータを制御して実行するプログラムとして実現することができる。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
【0014】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
図1は、本実施の形態におけるネットワークシステムの構成を示す図である。図1に示すように、本実施の形態におけるネットワークシステムは、外部からのリクエストに応じたコンテンツを提供すると共にクッキーを返送するウェブサーバ200と、このウェブサーバ200へのリクエストの送信及びこのリクエストに対するウェブサーバ200からのレスポンスを例えばLAN網からなるネットワーク400を介して中継するリバースプロキシ100と、このリバースプロキシ100に例えばインターネット網からなるネットワーク500を介して接続され、ウェブサーバ200へのリクエストを送信すると共にウェブサーバ200からのレスポンスを受信するユーザ端末300とを備える。
図示するように、本実施の形態におけるネットワークにおいてウェブサーバ200は、異なるドメインを有する複数のウェブサーバ201,202などから構成される。また図示するように、このウェブサーバ200には、ブラウザ301a,302aを備えたユーザ端末301,302などの複数の端末から任意にアクセスすることができる。以下では、このウェブサーバ200にアクセスする端末が物理的に同じ端末であっても、ログインするユーザに応じて異なる端末であるものとみなす。
【0015】
以下、本実施の形態では、ウェブサーバ200とユーザ端末300との通信プロトコルとしてHTTPを用い、HTTPリクエスト及びHTTPレスポンスの送受信を行う場合について説明する。
図1に示したウェブサーバ200は、例えばサーバとして外部からのアクセス負荷に耐え得る機能を備えたコンピュータ装置などからなる。このウェブサーバ200は、ユーザ端末300から送信されたHTTPリクエストに対してデータやファイル(HTTPレスポンス)を返送することにより、このユーザ端末300にHTTPリクエストに応じたコンテンツを提供する。そしてこのウェブサーバ200は、ユーザ端末300にHTTPレスポンスを返送する際、このHTTPレスポンス内にSet-Cookieヘッダを埋め込んで返送する。ウェブサーバ200から返送されるHTTPレスポンスは、一旦、ウェブサーバ200とユーザ端末300との間に設けられたリバースプロキシ100によって受信される。本実施の形態では、このウェブサーバ200において埋め込まれたSet-Cookieヘッダを含むHTTPレスポンスは、リバースプロキシ100において所定の形式に変換される。
【0016】
リバースプロキシ100は、例えばウェブサーバ200とユーザ端末300とをHTTPリクエスト及びHTTPレスポンスを中継するネットワーク機能を備えたコンピュータ装置などからなる。このリバースプロキシ100は、ユーザ端末300からのHTTPリクエストを中継して、このHTTPリクエストにて特定されるウェブサーバ200にHTTPリクエストを転送する。さらにこのリバースプロキシ100は、転送したHTTPリクエストに応じてウェブサーバ300から返信されてきたHTTPレスポンスを中継する。
ここで、本実施の形態におけるリバースプロキシ100は、ウェブサーバ200から返送されたSet-Cookieヘッダを含むHTTPレスポンスを受信して、このHTTPレスポンス内のSet-Cookieヘッダを所定の形式に変換する。さらにこのHTTPレスポンスに含まれるリンク・ロケーションヘッダの書き換えを行う。そして、Set-Cookieヘッダ、及びリンク・ロケーションヘッダが書き換えられたHTTPレスポンスを、HTTPリクエストを行ったユーザ端末300に対して送信する。リバースプロキシ100において実現されるこれらの機能の詳細については後述する。
【0017】
またユーザ端末300は、例えばパーソナルコンピュータやワークステーションなどからなる。これらのユーザ端末300は、キーボードやマウス等の操作部及びディスプレイ等の表示部を有する。また、このユーザ端末300は、プログラム制御に応じて動作するブラウザ300aを備える。このブラウザ300aは、操作部における操作に応じて表示部にブラウザウィンドウ(画面)を表示すると共に、種々のウェブサーバ200によって設定されたクッキーを管理する。そしてブラウザ300aは、このブラウザウィンドウに対して所定の操作が行われることにより、ネットワーク接続されたウェブサーバ200に対して例えばHTTPリクエストを送信する。ユーザ端末300は、このHTTPリクエストに応じてウェブサーバ200から返送されたHTTPレスポンスに基づいて、ブラウザ300a上にコンテンツを表示する。
さらにこのブラウザ300aには、HTTPレスポンスに埋め込まれてウェブサーバ200から返送されたSet-Cookieヘッダに基づいてクッキーが設定される。ブラウザ300aはこのクッキーを保持し、次回以降にこのクッキーの有効範囲となるウェブサーバ200にHTTPリクエストを送信する際には、このHTTPリクエストにクッキーを埋め込んで送信する。そうすると、このクッキーを含むHTTPリクエストを受信したウェブサーバ200は、同じユーザ端末300から送信されるHTTPリクエストの関連性を保つと共に、ユーザ端末300の状態を保持することができるようになる。
【0018】
以下では、リバースプロキシ100の機能について述べるが、ここで、ユーザ端末300から送信されたHTTPリクエストに基づいてウェブサーバ200から返送されるHTTPレスポンスに含まれるSet-Cookieヘッダについて説明する。
HTTPレスポンスに含まれるSet-Cookieヘッダには、ドメイン、パスパラメータが記述されている。そして、この情報によって、ユーザ端末300のブラウザ300aには、クッキーの有効範囲が設定される。以下、図11を用いてウェブサーバ200からユーザ端末300に返送されるHTTPレスポンスに含まれるSet-Cookieヘッダ、及びユーザ端末300からウェブサーバ200に送信されるHTTPリクエストのリクエストヘッダに埋め込まれるクッキーについて説明する。
【0019】
図11は、ウェブサーバ200から送信されるSet-Cookieヘッダによって決められるクッキーの有効範囲と、このクッキーの有効範囲であるウェブサーバ200に送信されるHTTPリクエスト及びクッキーの一例を示す図である。
図示した例では、ネットワーク上に、ウェブサーバ201(ドメイン:“www.sub.abc.com”)、ウェブサーバ202(ドメイン:“www2.sub.abc.com”)、ウェブサーバ203(ドメイン:“www3.abc.com”)、ウェブサーバ204(ドメイン:“www.xyz.com”)の複数のウェブサーバ200が配置されている。そして、このウェブサーバ200との間でHTTPリクエスト及びHTTPレスポンスの送受信を行うユーザ端末300がネットワークを介して接続されている。ウェブサーバ201は、ユーザ端末300から送信されたHTTPリクエストに応じて、
(1)Set-Cookie:name1=value1;domain=www.sub.abc.com;path=/;
Set-Cookie:name2=value2;domain=www.sub.abc.com;path=/path1/;
Set-Cookie:name3=value3;domain=sub.abc.com;path=/;
Set-Cookie:name4=value4;domain=abc.com;path=/;
というSet-Cookieヘッダ(1)を含むHTTPレスポンスを返送する。
そうすると、ユーザ端末300のブラウザ300aには、このSet-Cookieヘッダ(1)に基づいてクッキーが設定され、保持される。このSet−Cookieヘッダ(1)に基づいて設定されるクッキーの有効範囲は、
name1:www.sub.abc.com;
name2:www.sub.abc.com/path1;
name3:www.sub.abc.com;www2.sub.abc.com;
name4:www.sub.abc.com;www2.sub.abc.com;www3.sub.abc.com;
である。
【0020】
図11に示した例では、ユーザ端末300からウェブサーバ201にHTTPリクエストを送信する場合、このHTTPリクエストのリクエストヘッダには、ブラウザ300aに保持されたクッキーの有効範囲に基づいて
(2)GET /index.html
Cookie:name1=value1;name3=value3;name4=value4;
が埋め込まれて送信される。
ユーザ端末300からウェブサーバ201のディレクトリ(“/path1/”)にHTTPリクエストを送信する場合、このHTTPリクエストのリクエストヘッダには、ブラウザ300aに保持されたクッキーの有効範囲に基づいて
(3)GET /path1/index.html
Cookie:name1=value1;name2=value2;name3=value3;name4=value4;
が埋め込まれて送信される。
ユーザ端末300からウェブサーバ202にHTTPリクエストを送信する場合、このHTTPリクエストのリクエストヘッダには、ブラウザ300aに保持されたクッキーの有効範囲に基づいて
(4)GET /index.html
Cookie:name3=value3;name4=value4;
が埋め込まれて送信される。
ユーザ端末300からウェブサーバ203にHTTPリクエストを送信する場合、このHTTPリクエストのリクエストヘッダには、ブラウザ300aに保持されたクッキーの有効範囲に基づいて
(5)GET /index.html
Cookie:name4=value4;
が埋め込まれて送信される。
また、ユーザ端末300からウェブサーバ204にHTTPリクエストを送信する場合についてだが、このウェブサーバ204を有効範囲とするクッキーは存在しないので、このHTTPリクエストのリクエストヘッダにクッキーは埋め込まれない。すなわち
(6)GET /index.html
だけが送信される。
以上のように、ユーザ端末300からウェブサーバ200にHTTPリクエストを送信する際、このHTTPリクエストのリクエストヘッダには、それぞれのクッキーの有効範囲に基づいて、HTTPリクエストの送信先となるウェブサーバ200に応じたクッキーが埋め込まれて送信されていた。
【0021】
上記のように、HTTPレスポンスと共にSet-Cookieヘッダを受信したユーザ端末300のブラウザ300aは、Set-Cookieヘッダにて示された有効範囲に対するクッキーを設定する。しかしながらユーザ端末300のブラウザ300aから見ると、リバースプロキシ100を介してHTTPレスポンスを受信する場合には、このHTTPリクエストの送信元はウェブサーバ200ではなくリバースプロキシ100である。一般的に、ウェブサーバ200が返すSet-Cookieヘッダ内のドメインパラメータ、パスパラメータの値は、リバースプロキシ100上でのドメインパラメータ、パスパラメータの値としては正しくないため、このSet-Cookieヘッダを受け取ったブラウザ300aは、このSet-Cookieヘッダを無視するか、または正しくない範囲に対してクッキーを送り返すことになる。
【0022】
そこで本実施の形態では、リバースプロキシ100を介してウェブサーバ200からユーザ端末300のブラウザ300aへレスポンスを返送する場合であっても、ブラウザ300aにSet-Cookieヘッダを透過的に扱うための変形を行う。 Set-Cookieヘッダの変形方法として本実施の形態では、このSet-Cookieヘッダに含まれるドメインパラメータ(ドメインに関する情報)を削除して、このドメインに関する情報をパスパラメータ(パスに関する情報)に埋め込む。この際、このSet-Cookieヘッダによって設定されるクッキーの有効範囲を階層的に絞り込むために、ドメインに関する情報を構成する構成要素を逆順に並べ替える。例えば、“www.abc.com”の構成要素の並び順を“com.abc.www”とする。さらにこの構成要素を区切る区切り文字“.”を“/”として置換したものをパスに関する情報に埋め込む。
以下、本実施の形態では、FQDN(Full Qualified Domain Name)が上述のようにして加工されたものを「リバースドFQDN」(Reversed Full Qualified Domain Name)と称する。
【0023】
以上のように本実施の形態では、Set-Cookieヘッダに含まれるドメイン情報を削除し、このドメイン情報に対してリバースドFQDNと同様の操作をしたものをパスに関する情報に埋め込んでSet-Cookieヘッダを書き換える。このようにしてSet-Cookieヘッダを書き換えれば、ブラウザ300aにおいて受信されるSet-Cookieヘッダ内にドメインパラメータが存在しないので、リバースプロキシ100から送信されたSet-Cookieヘッダであっても無視されることはない。そして、次回以降にクッキーの有効範囲に対してHTTPリクエストを送信する際には、このHTTPリクエストに当該クッキーを埋め込んで送信する。
【0024】
図2は、本実施の形態におけるリバースプロキシ100の機能を示すブロック図である。以下、図2に例示する各機能は、リバースプロキシ100のプログラム制御されたCPUにて実現されるソフトウェアブロックである。
図2に示すように、HTTPリクエスト及びHTTPレスポンスを中継するリバースプロキシ100は、HTTPリクエストを送信するウェブサーバ200を特定するウェブサーバ名取得部110と、HTTPリクエストの送信先のURLを書き換えるURL書き換え部120と、HTTPリクエストをこのウェブサーバ200に転送するHTTPリクエスト転送部130とを備える。上記のウェブサーバ名取得部110と、URL書き換え部120と、HTTPリクエスト転送部130とで、HTTPリクエストをウェブサーバ200に転送するHTTPリクエスト転送手段を構成する。
本実施の形態では、ユーザ端末300から送信され、リクエスト転送手段により転送されるHTTPリクエストは、
http://<reverse proxy>/<prefix>/<path name of Web server>
となり、必ずリバースプロキシ100を経由してウェブサーバ200に転送されるものとする。
【0025】
また、本実施の形態におけるリバースプロキシ100は、ウェブサーバ200から返送されたHTTPレスポンスに含まれるSet-Cookieヘッダを所定の形式に書き換えるSet-Cookieヘッダ書き換え部140と、このHTTPレスポンスに含まれるリンクやロケーションヘッダ等を書き換えるリンク・ロケーションヘッダ書き換え部150と、Set-Cookieヘッダ書き換え部140及びリンク・ロケーションヘッダ書き換え部150によって書き換えられたHTTPレスポンスを返送先のユーザ端末300に送信するHTTPレスポンス送信部160とをさらに備える。上記のSet-Cookieヘッダ書き換え部140と、リンク・ロケーションヘッダ書き換え部150と、HTTPレスポンス送信部160とで、HTTPレスポンスをユーザ端末300に転送するHTTPレスポンス転送手段を構成する。
【0026】
ウェブサーバ名取得部110は、HTTPリクエストに基づいてprefixの記述からこのHTTPリクエストを送信するウェブサーバ200を特定する。但し、後述のように本実施の形態では、HTTPリクエストのprefix部分に、リバースドFQDNで記述されたウェブサーバのドメインに関する情報が入るので、このリバースドFQDNより直接ウェブサーバ名を取得する。そしてウェブサーバ名取得部110は、HTTPリクエストの送信先のウェブサーバ名を保持すると共に、このHTTPリクエストをURL書き換え部120に送る。
【0027】
URL書き換え部120は、ウェブサーバ200においてHTTPリクエストを送信するパスを特定するためにHTTPリクエストの送信先のURLを書き換える。このURL書き換え部120は、送信されたHTTPリクエストからprefixを削除して、このHTTPリクエストの送信先となるウェブサーバ200における本来のURLを記述する。すなわちURL書き換え部120は、HTTPリクエストにおけるリバースドFQDNのドメインに関する情報を並べ替えると共に、このドメインに関する情報の構成要素を区切る文字列(“/”)を所定の文字列(“.”)に置換する。例えばHTTPリクエスト内に、ドメインに関する情報として“com/abc/www”(リバースドFQDN)が存在していた場合には、このドメインに関する情報をウェブサーバ200における本来のドメイン“www.abc.com”に書き換える。そして、このドメインにパスに関する情報を加えることにより、このHTTPリクエストの送信先となるウェブサーバ200のURL、例えば“http://www.abc.com/path1/index.html”が生成される。そしてURL書き換え部120は、このHTTPリクエストをHTTPリクエスト転送部130に送る。
【0028】
HTTPリクエスト転送部130は、ウェブサーバ名取得部110によって送信先のウェブサーバ名が特定され、URL書き換え部120によって送信先のURLが書き換えられたHTTPリクエスト(2)を、当該特定されたウェブサーバ200の所定のURLに転送する。
【0029】
リバースプロキシ100によって転送されたHTTPリクエストを受信したウェブサーバ200は、このHTTPリクエストに基づいたHTTPレスポンスを、当該HTTPリクエストを送信したユーザ端末300に返送する。そして、このHTTPレスポンスは、リバースプロキシ100によって中継される。
Set-Cookieヘッダ書き換え部140は、ウェブサーバ200から返送されたHTTPレスポンスに含まれるSet-Cookieヘッダの書き換えを行う。このSet-Cookieヘッダ書き換え部140においてクッキーを書き換えるための変換規則については、図3に示す例を用いて説明する。
【0030】
図3は、Set-Cookieヘッダ書き換え部140におけるSet−Cookieヘッダの書き換え規則を示す図である。図3では、Set-Cookieヘッダに含まれるドメインパラメータを削除し、パスパラメータを変換する際の変換規則を示す。ここでは、Set-Cookieヘッダに含まれるパラメータを、ケース1〜ケース4の4つの場合に分けて、それぞれの場合においてどのように変換するかについて説明する。以下に示す変換規則の例では、図2に示したウェブサーバ200から返送されるHTTPレスポンス(3)に含まれるSet-CookieヘッダをSet-Cookieヘッダ(3)、本実施の形態における変換規則にしたがってSet−Cookieヘッダ書き換え部140において書き換えられたHTTPレスポンスに含まれるSet-CookieヘッダをSet-Cookieヘッダ(4)と示す。
【0031】
ケース1: domain=<Web Server name>;path=/
すなわち、Set-Cookieヘッダを返送するウェブサーバ200のFQDNがパラメータの値で、且つ、このウェブサーバ200のパスが“/”(ルートディレクトリ)である場合には、ウェブサーバ200からは
(3)Set-Cookie:name1=value1;domain=www.abc.com;path=/
というSet-Cookieヘッダが返送される。このSet-Cookieヘッダは、リバースプロキシ100のSet-Cookieヘッダ書き換え部140において
(4)Set-Cookie:name1=value1;path=/com/abc/www/_/
と変換される。
このようにケース1に示す変換規則では、Set-Cookieヘッダのドメインパラメータ“domain=www.abc.com”が削除される。そして、このドメインパラメータの構成要素を逆順に並べ替えて、当該構成要素の区切り文字を“/”に置換して生成したリバースドFQDN“com/abc/www”をパスパラメータに埋め込む。さらに、パスパラメータにおいてウェブサーバ200のドメインを示す部分とウェブサーバ200における元々のパスを示す部分との境界部分には、区切り文字として“_”が挿入される。以上のようにしてSet-Cookieヘッダが変換されて、新たなパスパラメータが生成される。ここでは、パスパラメータにおける区切り文字として“_”を用いているが、ホスト名に使用することができず、URLの指定に用いることができる文字であれば特に問題はない。
【0032】
ケース2:domain=<domain name of Web Server>;path=/
すなわち、Set-Cookieヘッダを返送するウェブサーバ200のドメインがドメインパラメータの値(例えば“www”を除いた“abc.com”)であり、且つ、パスが“/”である場合には、ウェブサーバ200からは
(3)Set-Cookie:name1=value1;domain=abc.com;path=/
というSet-Cookieヘッダが返送され、Set-Cookieヘッダ書き換え部140において
(4)Set-Cookie:name1=value1;path=/com/abc/
と変換される。つまり、ケース2に示す変換規則では、Set-Cookieヘッダのドメインパラメータ“domain=abc.com”が削除される。そして、この構成要素が逆順に並べ替えられ、且つ、この構成要素の区切り文字を置換して生成された“com/abc”がパスパラメータに埋め込まれてSet-Cookieヘッダが生成される。
【0033】
ケース3:domain=<Web Server name>;path!=/
すなわち、Set-Cookieヘッダを返送するウェブサーバ200のFQDNがドメインパラメータの値であり、且つ、パスが“/”でない場合には、ウェブサーバ200からは
(3)Set-Cookie:name1=value1;domain=www.abc.com;path=/path1/
というSet-Cookieヘッダが返送され、Set-Cookieヘッダ書き換え部140において
(4)Set-Cookie:name1=value1;path=/com/abc/www/_/path1/
と変換される。つまり、ケース3に示す変換規則では、Set-Cookieヘッダのドメインパラメータ“domain=www.abc.com”が削除される。そして、この構成要素が逆順に並べ替えられ、且つ、この構成要素の区切り文字を置換して生成された“com/abc/www”と元のパスパラメータの値“/path1/”とから、新しいパスパラメータの値“/com/abc/www/_/path1/”が生成される。
【0034】
ケース4:domain=<domain name of Web Server >;path!=/
すなわち、Set-Cookieヘッダを返送するウェブサーバ200のドメインがドメインパラメータの値であり、且つ、パスが“/”でない場合である。この場合は本実施の形態ではサポートできない。しかしながらこのケースは、複数のウェブサーバ200に同じパスが存在していることを意味し、殆ど有り得ないケースである。
【0035】
また、リンク・ロケーションヘッダ書き換え部150では、このHTTPレスポンス内のリンク及びロケーションヘッダの内容を書き換える。すなわち、HTTPリクエストに応じて発生するHTTPレスポンスがリバースプロキシ100を経由していることを示す内容となるように、このHTTPレスポンス内のリンク及びロケーションヘッダの内容を書き換える(<RFQDN>とはリバースドFQDNのことである)。
http://<reverse proxy>/<RFQDN>/_/…
そして、Set-Cookieヘッダ書き換え部140及びリンク・ロケーションヘッダ書き換え部150において書き換えられたHTTPレスポンスをHTTPレスポンス送信部160に送る。このリンク・ロケーションヘッダ書き換え部150において書き換えられるHTTPレスポンスのデータについては、後に図8〜図10を参照して具体的に説明する。
HTTPレスポンス送信部160は、リバースドFQDNに書き換えられたSet-Cookieヘッダを含むHTTPレスポンス(4)を、HTTPリクエストを行ったユーザ端末300のブラウザ300aに送信する。
【0036】
このようにしてHTTPレスポンスがユーザ端末300のブラウザ300aにおいて受信されると、ブラウザ300aはHTTPリクエストにて要求されたコンテンツをウィンドウに表示する。また、ブラウザ300aには、HTTPレスポンスに含まれるSet-Cookieヘッダにしたがってクッキーが設定される。
そして、次回以降、このクッキーの有効範囲のHTTPリクエストを送信する際には、このHTTPリクエストのリクエストヘッダにクッキーを埋め込んで送信する。次回以降にリクエストヘッダにクッキーが埋め込まれたHTTPリクエストを送信する例については、以下に示す図6を用いて説明する。
【0037】
図4は、本実施の形態のネットワークシステムにおけるデータの流れを示す図である。
図4に示すように、このネットワークシステムは、例えば、ウェブサーバ201(ホスト名:“www.abc.com”)、ウェブサーバ202(ホスト名:“www2.abc.com”)、ウェブサーバ203(ホスト名:“www3.sub.abc.com”)、ウェブサーバ204(ホスト名:“www.xyz.com”)の複数のウェブサーバ200と、リバースプロキシ100(ホスト名:“rproxy.ijk.com”)と、ユーザ端末300とから構成されるものとする。
【0038】
図4に示すネットワークシステムにおいて、ユーザ端末300からリバースプロキシ100を介して行われたHTTPリクエストに対するHTTPレスポンスに含まれるSet-Cookieヘッダについて説明する。
このとき、ウェブサーバ201(“www.abc.com”)からは、ユーザ端末300に対してクッキーを設定するための、以下の2つのSet−Cookieヘッダ
(A1)Set-Cookie:name1=value1;domain=www.abc.com;path=/;
Set-Cookie:name2=value2;domain= abc.com;path=/;
を含むHTTPレスポンスが返送されるものとする。
また、ウェブサーバ203(“www3.sub.abc.com”)からは、ユーザ端末300に対してクッキーを設定するための、以下のSet−Cookieヘッダ
(C1)Set-Cookie:name3=value3;domain=sub.abc.com;path=/;
を含むHTTPレスポンスが返送されるものとする。
【0039】
上記の(A1),(C1)で示した場合におけるクッキー“name1”,“name2”,“name3”それぞれの有効範囲となるウェブサーバ200を図5に示す。図5に示すように、“name1”によるクッキーの有効範囲には、ウェブサーバ201(“www.abc.com”)が含まれる。また、“name2”によるクッキーの有効範囲には、ウェブサーバ201(“www.abc.com”)、ウェブサーバ202(“www2.abc.com”)、及びウェブサーバ203(“www3.sub.abc.com”)が含まれる。さらに、“name3”によるクッキーの有効範囲には、ウェブサーバ203(“www3.sub.abc.com”)が含まれる。
【0040】
ところで、これら(A1),(C1)に示したSet-Cookieヘッダは、リバースプロキシ100のSet-Cookieヘッダ書き換え部140によって以下のように変換される。
すなわちSet-Cookieヘッダ
(A1)Set-Cookie:name1=value1;domain=www.abc.com;path=/;
は、上記のケース1の変換規則により、
(A2)Set-Cookie:name1=value1;path=/com/abc/www/_/;
となる。
また、Set-Cookieヘッダ
(A1)Set-Cookie:name2=value2;domain= abc.com;path=/;
は、上記のケース2の変換規則により、
(A2)Set-Cookie:name2=value2;path=/com/abc/;
となる。
さらに、Set-Cookieヘッダ
(C1)Set-Cookie:name1=value1;domain=www.abc.com;path=/;
は、上記のケース2の変換規則により、
(C2)Set-Cookie:name3=value3;path=/com/abc/sub/;
となる。
【0041】
よって、その後のユーザ端末300から各ウェブサーバにアクセスする際、HTTPリクエストには、それぞれ図6に示すようなクッキーが埋め込まれる。
すなわち、ユーザ端末300からウェブサーバ201へのHTTPリクエスト(A3)のリクエストヘッダには、図5に示したクッキーの有効範囲に対応するクッキーが埋め込まれ
http://rproxy.ijk.com/com/abc/www/_/…
Cookie:name1=value1;name2=value2;
として送信される。
また、ユーザ端末300からウェブサーバ202へのHTTPリクエスト(B3)のリクエストヘッダには、図5に示したクッキーの有効範囲に対応するクッキーが埋め込まれ
http://rproxy.ijk.com/com/abc/www2/_/…
Cookie:name2=value2;
として送信される。
さらに、ユーザ端末300からウェブサーバ203へのHTTPリクエスト(C3)のリクエストヘッダには、図5に示したクッキーの有効範囲に対応するクッキーが埋め込まれ
http://rproxy.ijk.com/com/abc/sub/www3/_/…
Cookie:name2=value2;name3=value3;
として送信される。
またさらに、ユーザ端末300からウェブサーバ204へのHTTPリクエスト(D3)のリクエストヘッダは
http://rproxy.ijk.com/com/xyz/www/_/…
として送信されるが、このHTTPリクエスト(D3)に対応するクッキーは存在しないのでリクエストヘッダにクッキーは埋め込まれない。
以上のように、図6に示した2回目以降に送信されるHTTPリクエストに含まれるクッキーは、図5に示したクッキーの有効範囲となるウェブサーバ200に一致している。換言すれば、リバースプロキシ100を介してクッキーが透過的に扱われているといえる。
【0042】
これら(A3)〜(C3)のHTTPリクエストは、リバースプロキシ100のウェブサーバ名取得部110及びURL書き換え部120において所定の処理を経て(A4)〜(C4)に変換される。そしてHTTPリクエスト転送部130によって、HTTPリクエスト(A4)はウェブサーバ201に、HTTPリクエスト(B4)はウェブサーバ202に、HTTPリクエスト(C4)はウェブサーバ203にそれぞれ転送される。
また同様にして、HTTPリクエスト転送部130によって、(D3)のHTTPリクエストは(D4)としてウェブサーバ204に転送される。
【0043】
ところで、通常のHTTPリクエストにおいて使用されるポート番号は80番であるが、本実施の形態では、HTTPリクエストを送信する送信先のウェブサーバ200のポート番号がデフォルトのポート番号ではなく、明示的に指定する必要がある場合は、例えば以下のようにポート番号を指定すればよい。
http://<reverse proxy>/<RFQDN>/_<port>/<path name of Web server>
このようにして“<port>”部分にウェブサーバ200のポート番号を指定しておけば、ウェブサーバ200において通常とは異なるポートがHTTPリクエスト用のポートとして用いられている場合であっても、HTTPリクエストを当該ウェブサーバ200に送信することができる。
【0044】
本実施の形態では、<prefix>として“<RFQDN>_”を用いているが、<RFQDN>の前に固定の文字列、例えば“xxx/”が付いていてもクッキーを透過的に扱うことができる。つまり、ブラウザ300aがリバースプロキシ100を経由してウェブサーバ201(“www.abc.com”)の“/index.html”にアクセスする場合は、以下のようになる。
http://<reverse proxy>/xxx/com/abc/www/_/index.html
そして、ウェブサーバ201が以下のようなSet-Cookieヘッダを返した場合、
Set-Cookie:name1=value1;domain=abc.com;path=/;
リバースプロキシ100は、このSet-Cookieヘッダを以下のように変換してユーザ端末300に送る。
Set-Cookie:name1=value1;path=/xxx/com/abc/;
【0045】
本実施の形態では、“www.abc.com”を変換することにより、“com/abc/www”とした。しかし、ドメインパラメータを指定する場合において、“.com”や“.net”、又は“.co.jp”といったトップレベルドメインだけの指定を行うことはできず、常に1つ下の階層(サブドメイン)からでなければ、このドメインパラメータの指定を行うことができない。つまりドメインパラメータの指定は、“abc.com”や“abc.net”、又は“abc.co.jp”というように、1つ下の階層から行わなければならない。よって、リバースプロキシ100へのアクセスパスは、最低限指定すべきドメインを1つにまとめて、以下のようにしても良い。
(図4、A3)http://<reverse proxy>/abc-com/www/_/index.html
(図4、C3)http://<reverse proxy>/abc-com/sub/www3/_/index.html
これらのHTTPリクエストを受け取ったリバースプロキシ100は、区切り文字“_”の前までの文字列から転送先のウェブサーバ名をそれぞれ、“www.abc.com”、“www3.sub.abc.com”と判断し、それぞれのウェブサーバ200に対して以下のHTTPリクエストを送る。
(図4、A4)http://www.abc.com/index.html
(図4、C4)http://www3.sub.abc.com/index.html
また、これらのウェブサーバ200が以下のようなSet-Cookieヘッダを返したとする。
(図4、A1)Set-Cookie:id1=001;domain=www.abc.com;path=/;
(図4、C1)Set-Cookie:id1=001;domain=sub.abc.com;path=/;
リバースプロキシ100は、このSet-Cookieヘッダを以下のように変換する。
(図4、A2)Set-Cookie:id1=001;path=/abc-com/www/_/;
(図4、C2)Set-Cookie:id1=001;path=/abc-com/sub/;
このような<prefix>を用いてもクッキーを透過的に扱うことができる。
【0046】
また、図4を用いて説明した例では、リバースプロキシ100が返すSet-Cookieヘッダ内でドメインパラメータを指定していないが、このような場合Set-Cookieヘッダは、HTTPレスポンスを送信したサーバを示す。そこで図4に示した例において、例えば
Set-Cookie:name1=value1;path=/com/abc/www/_/;domain=<reverse proxy>といったように、Set-Cookieヘッダのドメインパラメータを自装置のサーバ名に置換して、このリバースプロキシ100のサーバ名を明示的に指定しても良い。
【0047】
図7は、本実施の形態のリバースプロキシ100における処理を示すフローチャートである。図7に示すフローチャートでは、リバースプロキシ100において、ユーザ端末300から送信されたHTTPリクエスト、及びウェブサーバ200から返送されたHTTPレスポンスに対して行われる処理について説明する。また、以下に示す各処理において用いられるデータ(HTTPレスポンス)を図8〜図10に示す。
ユーザ端末300からクッキーが埋め込まれたHTTPリクエストが送信されると、このHTTPリクエストは、リバースプロキシ100によって受信され、ウェブサーバ名取得部110に渡される(ステップ701)。以下では、ステップ701において受信されたHTTPリクエストが
(Req1)GET /com/abc/www/_/index.html HTTP/1.1
であるものとして説明する。
【0048】
ステップ701において受信されたHTTPリクエストからは、ウェブサーバ名取得部110によって、prefixに基づいてウェブサーバ名が取得される(ステップ702)。これにより、このHTTPリクエストの送信先のウェブサーバ200が特定される。ステップ702においてHTTPリクエストの送信先のウェブサーバ名が特定されたHTTPリクエストは、URL書き換え部120に送信される。URL書き換え部120では、ステップ702においてウェブサーバ名取得部110において特定された情報に基づいてURLの書き換えを行う(ステップ703)。すなわちステップ703においてURL書き換え部120は、HTTPリクエストの送信先となるウェブサーバ200における本来のURLとパス“/www.abc.com/index.html”を取得する。HTTPリクエストの送信先のウェブサーバ200(“www.abc.com”)、及びこのウェブサーバ200内におけるURL(“www.abc.com”のルートディレクトリの“index.html”)を特定されたHTTPリクエスト
(Req2)GET /index.html HTTP/1.1
は、HTTPリクエスト転送部130に送信される。そしてこのHTTPリクエストは、HTTPリクエスト転送部130によって、ステップ702で特定されたウェブサーバ200に転送される(ステップ704)。
【0049】
HTTPリクエストを受け取ったウェブサーバ200は、リバースプロキシ100から転送されたHTTPリクエストに応じたHTTPレスポンスが、HTTPリクエストを行ったユーザ端末300に対して送信される。このHTTPレスポンスには、後々行われるHTTPリクエストにおいてユーザの状態を通知するためのCookieヘッダが埋め込まれて返送される。ウェブサーバ200から返送されたHTTPレスポンスは、一旦リバースプロキシ100を中継してユーザ端末300に返送される。すなわち、ウェブサーバ200から返送されたHTTPレスポンスは、リバースプロキシ100によって受信され、Set-Cookieヘッダ書き換え部140に渡される(ステップ705)。
【0050】
ステップ705において受信されるHTTPレスポンスの一例を図8に示す。図8に示すように、このHTTPレスポンスにはSet-Cookieヘッダ
Set-Cookie:sessionid=001;path=/;domain=abc.com;
が含まれている。そしてこのSet-Cookieヘッダには、ユーザを特定するidに相当する“sessionid=001”と、このSet-Cookieヘッダによって設定されたクッキーをブラウザ300aが送り返す返送先のウェブサーバ200のURL(パス)を特定する“path=/”と、返送先のウェブサーバのドメインを特定する“domain=abc.com”とが含まれる。また、このHTTPレスポンスは、Set-Cookieヘッダの他にもウェブサーバ200から返送される種々のヘッダ情報を含む。
【0051】
リバースプロキシ100においてHTTPレスポンスが受信されたら、Set-Cookieヘッダ書き換え部140では、HTTPレスポンス内にSet-Cookieヘッダが存在しているか否かの判断が行われる(ステップ706)。ステップ706において、HTTPレスポンス内にSet-Cookieヘッダが存在していると判断された場合には、Set-Cookieヘッダ書き換え部140においてSet-Cookieヘッダの書き換えが行われる(ステップ707)。ステップ707におけるSet-Cookieヘッダの書き換えは、図3に示した変換規則にしたがって行われる。すなわち、ドメインパラメータを削除し、このドメインを構成する構成要素を逆順に並べ替え、さらにこの構成要素を区切る区切り文字“.”を“/”として置換したものを当該Set-Cookieヘッダのパスパラメータに埋め込む。ステップ706において、HTTPレスポンス内にSet-Cookieヘッダが存在していないと判断された場合には、ステップ707の処理は省略される。
【0052】
ステップ707においてSet-Cookieヘッダが書き換えられたHTTPレスポンスの一例を図9に示す。図9に示すように、ステップ707において書き換えられたSet-Cookieヘッダは
Set-Cookie:sessionid=001;path=/com/abc/;
となる。上記のSet-Cookieヘッダは、図3に示した変換規則にしたがって書き換えられていることがわかる。
【0053】
ステップ707においてSet-CookieヘッダがリバースドFQDNに書き換えられたHTTPレスポンスは、Set-Cookieヘッダ書き換え部140からリンク・ロケーションヘッダ書き換え部150に送信される。そして、このHTTPリクエストを受信したリンク・ロケーションヘッダ書き換え部150では、コンテンツ内のリンク及びロケーションヘッダの書き換えを行う(ステップ708)。
【0054】
ステップ708において、リンクが書き換えられた状態のHTTPレスポンスの一例を図10に示す。ステップ708において書き換えられたリンク先の指定部分は、図8及び図9に示した
“/menu1.html”
“/menu2.html”
“/menu3.html”
から、図10に示す
“/com/abc/www/_/menu1.html”
“/com/abc/www/_/menu2.html”
“/com/abc/www/_/menu3.html”
といったように、リバースドFQDNが付与された絶対パスに書き換えられる。
【0055】
以上のようにして書き換えられたブラウザが認識可能な形式のSet-Cookieヘッダを含むHTTPレスポンスは、HTTPレスポンス送信部160によりステップ701において受信されたHTTPリクエストを送信したユーザ端末300に対して送信される(ステップ709)。そして、ユーザ端末300のブラウザには、このHTTPレスポンス及びこのHTTPレスポンスとリンクしたデータやファイルに基づいたコンテンツが表示され、HTTPレスポンスに含まれるSet-Cookieヘッダに基づいて、所定の有効範囲に対するクッキーがブラウザに保持される。
【0056】
以上のように本実施の形態におけるリバースプロキシ100は、ドメインパラメータを削除し、パスパラメータを書き換えた Set-Cookieヘッダをユーザ端末300に送信する。そうすることによりユーザ端末300のブラウザ300aには、リバースプロキシ100を介して返送されたHTTPレスポンスに含まれるSet-Cookieヘッダに基づいてクッキーが設定され、保持される。
そして次回以降、ブラウザ300aが送信するHTTPリクエストにCookieヘッダが付いている場合、リバースプロキシ100は、このCookieヘッダをそのまま対応するウェブサーバ200に転送すれば、そのCookieはウェブサーバ200がSet-Cookieヘッダ内で指定したドメイン、パスに合致している範囲にのみ送られることになる。
【0057】
【発明の効果】
以上説明したように、本発明によれば、リバースプロキシを経由してサーバへアクセスするネットワークシステムにおいて、サーバによって設定されたクッキーを透過的に扱うようにすることができる。
【0058】
また、本発明によれば、サーバの設定したクッキーを透過的に扱うためにSet-Cookieを書き換える機能を備えたリバースプロキシを提供することができる。
【図面の簡単な説明】
【図1】 本実施の形態におけるネットワークシステムの構成を示す図である。
【図2】 本実施の形態におけるリバースプロキシの機能を示すブロック図である。
【図3】 本実施の形態におけるSet-Cookieヘッダ書き換え部におけるクッキーの変換規則を示す図である。
【図4】 本実施の形態のネットワークシステムにおけるデータの流れを示す図である。
【図5】 本実施の形態の変換規則におけるクッキーの有効範囲となるウェブサーバの一例を示す図である。
【図6】 各ケースに対応したリバースドFQDNのSet-Cookieヘッダの一例を示す図である。
【図7】 本実施の形態のリバースプロキシにおける処理を示すフローチャートである。
【図8】 本実施の形態のリバースプロキシにおいて受信されるレスポンスデータの一例を示す図である。
【図9】 本実施のリバースプロキシにおいてSet-Cookieヘッダが書き換えられたレスポンスデータの一例を示す図である。
【図10】 本実施の形態のリバースプロキシから送信されるレスポンスデータの一例を示す図である。
【図11】 ウェブサーバから送信されるSet-Cookieヘッダによって決められるクッキーの有効範囲と、このクッキーの有効範囲であるウェブサーバに送信されるHTTPリクエスト及びクッキーの一例を示す図である。
【図12】 リバースプロキシにおいて管理されるテーブルを示す図である。
【符号の説明】
100…リバースプロキシ、110…ウェブサーバ名取得部、120…URL書き換え部、130…HTTPリクエスト転送部、140…Set-Cookieヘッダ書き換え部、150…リンク・ロケーションヘッダ書き換え部、160…HTTPレスポンス送信部、200…ウェブサーバ、300…ユーザ端末、400…ネットワーク、500…ネットワーク

Claims (12)

  1. ネットワーク上に設けられた複数のウェブサーバと、当該複数のウェブサーバに対する外部からのアクセスを中継するリバースプロキシとを備えたネットワークシステムであって、
    前記ウェブサーバは、
    前記ネットワークに接続された所定の端末から送信されたリクエストに応じて当該端末の状態を保持するための情報を含むレスポンスを当該端末に返送し、
    前記リバースプロキシは、
    前記レスポンスに含まれる前記端末の状態を保持するための前記情報に含まれる前記ウェブサーバのドメインを指定するドメインパラメータを削除し、前記ドメインパラメータを構成する構成要素の並び順を逆順に並べ替え、当該情報に含まれる当該ウェブサーバにおけるパスパラメータに埋め込み、当該端末に返送し、
    前記端末から前記ウェブサーバへ送信されたリクエストを受信し、当該リクエストのアクセス先であるウェブサーバを特定し、当該リクエストに記述されているアクセスパスを前記ウェブサーバにおける本来のパスに書き換え、当該リクエストを当該ウェブサーバに転送することを特徴とするネットワークシステム。
  2. ウェブサーバからユーザ端末へのデータの送信を中継するリバースプロキシであって、
    前記ウェブサーバから前記ユーザ端末に返送された前記データを受信すると共に、当該データに含まれるドメインの記述を逆順に並べ替えパスパラメータに埋め込んで、当該データのヘッダを書き換えるヘッダ書き換え部と、
    前記ヘッダ書き換え部によって書き換えられた前記データを前記ユーザ端末に送信するデータ送信部と
    を備えることを特徴とするリバースプロキシ。
  3. 前記データに含まれるリンク及びロケーションのドメイン及びパスを前記ヘッダ書き換え部によって書き換えられた前記ドメインの記述を含むパスに合わせて書き換えるリンク・ロケーション書き換え部をさらに備えたことを特徴とする請求項2に記載のリバースプロキシ。
  4. 前記ユーザ端末から前記ウェブサーバへ送信されたリクエストを受信し、当該リクエストに基づいてネットワーク上に配置された複数のサーバのうち当該リクエストのアクセス先である前記ウェブサーバを特定するウェブサーバ名取得部と、
    前記リクエストに基づいて当該リクエストに記述されているアクセスパスを前記ウェブサーバにおける本来のパスに書き換えるURL書き換え部と、
    前記リクエストを当該リクエストによって示される前記ウェブサーバに転送するリクエスト転送部と
    をさらに備えたことを特徴とする請求項2に記載のリバースプロキシ。
  5. 端末とサーバとの間におけるHTTPリクエストの送信及びHTTPレスポンスの返送を中継するコンピュータ装置であって、
    前記端末のブラウザから送信されたクッキーと前記HTTPリクエストとを中継して当該HTTPリクエストの送信先の前記サーバに転送するHTTPリクエスト転送手段と、
    前記HTTPリクエストに応じて前記サーバから返送されたHTTPレスポンスを受信し、セットクッキーヘッダに記述されたドメインを削除して当該ドメインを構成する構成要素の並び順を逆順に並べ替えて当該セットクッキーヘッダに記述されたパスに埋め込んで前記端末に転送するHTTPレスポンス転送手段と
    を備えたことを特徴とするコンピュータ装置。
  6. 前記HTTPリクエスト転送手段は、
    前記サーバのドメインと共に当該サーバの通信ポートのポート番号を指定して前記HTTPリクエストを前記サーバに転送することを特徴とする請求項に記載のコンピュータ装置。
  7. 前記HTTPレスポンス転送手段は、
    前記HTTPレスポンスに応じて所定の固定文字列を前記セットクッキーヘッダに付け加えて前記端末に転送することを特徴とする請求項に記載のコンピュータ装置。
  8. 前記HTTPレスポンス転送手段は、
    前記ドメインの前記構成要素の並び順を逆順に並べ替える際に、当該ドメインを特定するのに必要な当該構成要素を1つに纏めて前記端末に転送することを特徴とする請求項に記載のコンピュータ装置。
  9. 前記HTTPレスポンス転送手段は、
    前記サーバの前記セットクッキーヘッダ内のドメインパラメータを自装置のサーバ名に置換して前記端末に転送することを特徴とする請求項に記載のコンピュータ装置。
  10. 第1のコンピュータ装置と第2のコンピュータ装置とのデータの送受信を中継するコンピュータ装置におけるデータ処理方法であって、
    前記第1のコンピュータ装置から前記第2のコンピュータ装置に対して送信されたレスポンスを受信するステップと、
    前記レスポンスにセットクッキーヘッダが含まれているか否かを判断するステップと、
    前記レスポンスにセットクッキーヘッダが含まれている場合には、前記第2のコンピュータ装置に設定されるクッキーが当該第2のコンピュータ装置において認識可能な形式となるように当該セットクッキーヘッダに含まれるドメインを逆順に並べ替えパスパラメータに埋め込んで当該セットクッキーヘッダを書き換えるステップと、
    前記セットクッキーヘッダが書き換えられた前記レスポンスを前記第2のコンピュータ装置に送信するステップと
    を含むことを特徴とするデータ処理方法。
  11. 第1のコンピュータ装置と第2のコンピュータ装置とのデータの送受信を中継するコンピュータ装置を制御して所定のデータ処理を行うプログラムであって、
    前記第1のコンピュータ装置から前記第2のコンピュータ装置に対して送信されたレスポンスを受信する処理と、
    前記レスポンスにセットクッキーヘッダが含まれている場合には、前記第2のコンピュータ装置に設定されるクッキーが当該第2のコンピュータ装置において認識可能な形式となるように当該セットクッキーヘッダに含まれるドメインを逆順に並べ替えパスパラメータに埋め込んで当該セットクッキーヘッダを書き換える処理と、
    前記セットクッキーヘッダが書き換えられた前記レスポンスを前記第2のコンピュータ装置に送信する処理と
    を前記コンピュータ装置に実行させることを特徴とするプログラム。
  12. 前記レスポンスに含まれるリンク及びロケーションのドメイン及びパスを前記セットクッキーヘッダに含まれる前記パスに合わせて書き換える処理を前記コンピュータ装置にさらに実行させることを特徴とする請求項11に記載のプログラム。
JP2002257969A 2002-03-09 2002-09-03 ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム Expired - Fee Related JP4179535B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002257969A JP4179535B2 (ja) 2002-09-03 2002-09-03 ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム
CNB031786383A CN100508518C (zh) 2002-09-03 2003-07-18 网络***、反向代理装置、计算机设备以及数据处理方法
US10/653,666 US20040044768A1 (en) 2002-03-09 2003-09-02 Reverse proxy mediator for servers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002257969A JP4179535B2 (ja) 2002-09-03 2002-09-03 ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2004094805A JP2004094805A (ja) 2004-03-25
JP4179535B2 true JP4179535B2 (ja) 2008-11-12

Family

ID=31973007

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002257969A Expired - Fee Related JP4179535B2 (ja) 2002-03-09 2002-09-03 ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム

Country Status (3)

Country Link
US (1) US20040044768A1 (ja)
JP (1) JP4179535B2 (ja)
CN (1) CN100508518C (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673329B2 (en) * 2000-05-26 2010-03-02 Symantec Corporation Method and apparatus for encrypted communications to a secure server
US20060031382A1 (en) * 2004-06-04 2006-02-09 Arvind Pradhakar System and method for translating fully qualified domain name access in a browser environment
US7333990B1 (en) * 2004-06-22 2008-02-19 Sun Microsystems, Inc. Dynamic reverse proxy
US7873707B1 (en) 2004-10-27 2011-01-18 Oracle America, Inc. Client-side URL rewriter
DE102004053513A1 (de) * 2004-10-29 2006-05-04 Hurra Communications Gmbh Verfahren und Suchmaschine zum automatischen computergestützten Erstellen einer Suchergebnisliste mit Netzwerk-Seiten eines Client-Server-Netzwerks mit einem bestimmten Inhalt
US7610400B2 (en) * 2004-11-23 2009-10-27 Juniper Networks, Inc. Rule-based networking device
US8312074B2 (en) * 2005-05-26 2012-11-13 Bytemobile, Inc. Method for multipart encoding
JP4285655B2 (ja) * 2005-07-19 2009-06-24 インターナショナル・ビジネス・マシーンズ・コーポレーション Webサービスを提供する方法、装置、プログラム
US8478894B2 (en) * 2005-07-21 2013-07-02 International Business Machines Corporation Web application response cloaking
FR2892585A1 (fr) * 2005-10-26 2007-04-27 France Telecom Procede et systeme de protection d'un lien d'acces a un serveur.
JP4701132B2 (ja) * 2005-12-07 2011-06-15 株式会社エヌ・ティ・ティ・ドコモ 通信経路設定システム
JP5332117B2 (ja) * 2007-03-06 2013-11-06 日本電気株式会社 Wwwコンテンツ取得システム及びwwwコンテンツ取得方法
JP2008225573A (ja) * 2007-03-08 2008-09-25 Terumo Corp 代理サーバ、代理サーバのためのプログラム及び代理アクセス方法
JP5159261B2 (ja) * 2007-11-12 2013-03-06 インターナショナル・ビジネス・マシーンズ・コーポレーション セッションを管理する技術
JP4416035B2 (ja) * 2007-12-28 2010-02-17 村田機械株式会社 中継サーバ及び中継通信システム
CN101984778B (zh) 2008-01-26 2014-08-13 思杰***有限公司 用于细粒度策略驱动的cookie代理的***和方法
US8117325B1 (en) 2008-04-29 2012-02-14 Juniper Networks, Inc. Policy-based cross-domain access control for SSL VPN
JP5196479B2 (ja) * 2008-08-26 2013-05-15 日本電信電話株式会社 統一資源位置指定子の構成方法およびハイパーテキスト転送プロトコルネットワーク
CN101753606B (zh) * 2008-12-03 2013-01-09 北京天融信科技有限公司 一种实现web反向代理的方法
US8892631B2 (en) 2009-04-09 2014-11-18 International Business Machines Corporation System and method of optimizing digital media processing in a carrier grade web portal environment
CN101902485B (zh) * 2009-05-27 2014-05-14 北京启明星辰信息技术股份有限公司 一种反向Web代理的链接改写方法
US8543676B2 (en) * 2009-06-16 2013-09-24 International Business Machines Corporation Delegated resource use in a content based routing environment
JP5397071B2 (ja) * 2009-07-31 2014-01-22 富士通株式会社 中継装置、中継方法、および中継プログラム
JP5552292B2 (ja) * 2009-10-22 2014-07-16 日本電信電話株式会社 注目フォルダの処理切り替え方法及びユーザ端末及びネットワーク・フォルダ・サーバ及びプログラム及びコンピュータ読み取り可能な記録媒体
US9473592B2 (en) * 2010-03-02 2016-10-18 Usablenet Inc. Methods for optimizing a web content proxy server and devices thereof
US8321502B2 (en) * 2010-03-02 2012-11-27 Usablenet Inc. Method for optimizing a web content proxy server and devices thereof
JP5581820B2 (ja) * 2010-06-04 2014-09-03 富士通株式会社 中継サーバ装置、クッキー制御方法およびクッキー制御プログラム
US9021586B2 (en) * 2010-07-20 2015-04-28 At&T Intellectual Property I, L.P. Apparatus and methods for preventing cross-site request forgery
JP5500020B2 (ja) * 2010-09-24 2014-05-21 富士通株式会社 Webアプリケーション提供方法、中継サーバ装置、Webサーバ装置
US8984616B2 (en) 2010-12-08 2015-03-17 International Business Machines Corporation Efficient routing for reverse proxies and content-based routers
US20120278487A1 (en) * 2011-04-27 2012-11-01 Woelfel John Harold System and method of handling requests in a multi-homed reverse proxy
US20120327931A1 (en) * 2011-06-21 2012-12-27 Alcatel-Lucent Usa Inc. Gateways integrating name-based networks with host-based networks
US9015255B2 (en) * 2012-02-14 2015-04-21 The Nielsen Company (Us), Llc Methods and apparatus to identify session users with cookie information
CN104333573B (zh) * 2012-06-29 2018-04-17 北京奇虎科技有限公司 一种大并发量请求的处理方法及处理***
CN102780768B (zh) * 2012-06-29 2014-11-19 北京奇虎科技有限公司 一种大并发量请求的处理方法及处理***
AU2013204953B2 (en) 2012-08-30 2016-09-08 The Nielsen Company (Us), Llc Methods and apparatus to collect distributed user information for media impressions
JP6054799B2 (ja) * 2013-03-29 2016-12-27 Kddi株式会社 Webコンテンツの配信装置
JP6081847B2 (ja) * 2013-03-29 2017-02-15 Kddi株式会社 Webコンテンツの配信装置
CA2848175A1 (en) * 2013-04-03 2014-10-03 Usablenet Inc. Methods for optimizing a web content proxy server and devices thereof
CN104144155B (zh) * 2013-05-10 2018-01-02 百度在线网络技术(北京)有限公司 用于长连接的会话处理***和会话处理方法
US10068246B2 (en) 2013-07-12 2018-09-04 The Nielsen Company (Us), Llc Methods and apparatus to collect distributed user information for media impressions
CN104348877B (zh) * 2013-08-06 2018-09-18 腾讯科技(深圳)有限公司 一种发送Http请求消息的方法及装置
EP2849110A1 (en) * 2013-09-13 2015-03-18 Gemalto SA Server using unpredictable scrambled cookie names
CN103634165B (zh) * 2013-12-05 2017-01-18 北京奇安信科技有限公司 一种基于反向代理实现网络测试的方法、终端设备和***
US9237138B2 (en) 2013-12-31 2016-01-12 The Nielsen Company (Us), Llc Methods and apparatus to collect distributed user information for media impressions and search terms
US20160063539A1 (en) 2014-08-29 2016-03-03 The Nielsen Company (Us), Llc Methods and apparatus to associate transactions with media impressions
JP6119709B2 (ja) * 2014-09-29 2017-04-26 ブラザー工業株式会社 サービスプロバイダ装置、プログラム及びサービス提供方法
US20160381061A1 (en) * 2015-06-28 2016-12-29 Check Point Software Technologies Ltd. Proxy for mitigation of attacks exploiting misconfigured or compromised web servers
CN105208100B (zh) * 2015-08-25 2018-11-06 联创汽车服务有限公司 一种接口数据的处理方法
US20170093917A1 (en) * 2015-09-30 2017-03-30 Fortinet, Inc. Centralized management and enforcement of online behavioral tracking policies
US10205994B2 (en) 2015-12-17 2019-02-12 The Nielsen Company (Us), Llc Methods and apparatus to collect distributed user information for media impressions
US10021194B2 (en) * 2016-08-02 2018-07-10 International Business Machines Corporation Enforced registry of cookies through a theme template
CN106878311B (zh) * 2017-02-22 2019-12-06 杭州迪普科技股份有限公司 Http报文的重写方法及装置
JP6608476B2 (ja) * 2018-03-29 2019-11-20 エヌ・ティ・ティ・コミュニケーションズ株式会社 中継装置、中継方法および中継プログラム
US10728219B2 (en) * 2018-04-13 2020-07-28 R3 Ltd. Enhancing security of communications during execution of protocol flows
US10938801B2 (en) * 2018-09-21 2021-03-02 Microsoft Technology Licensing, Llc Nonce handler for single sign on authentication in reverse proxy solutions
CN112260988B (zh) * 2020-09-16 2021-09-24 厦门网宿有限公司 一种异常请求处理方法和装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098093A (en) * 1998-03-19 2000-08-01 International Business Machines Corp. Maintaining sessions in a clustered server environment
JP3493141B2 (ja) * 1998-06-12 2004-02-03 富士通株式会社 ゲートウェイシステムおよび記録媒体
US6405214B1 (en) * 1998-12-17 2002-06-11 Hewlett-Packard Company Method of gathering usage information and transmitting to a primary server and a third party server by a client program
US6349336B1 (en) * 1999-04-26 2002-02-19 Hewlett-Packard Company Agent/proxy connection control across a firewall
US7305473B2 (en) * 1999-05-28 2007-12-04 The Coca-Cola Company Provision of transparent proxy services to a user of a client device
US7188181B1 (en) * 1999-06-30 2007-03-06 Sun Microsystems, Inc. Universal session sharing
US7137143B2 (en) * 2000-08-07 2006-11-14 Ingrian Systems Inc. Method and system for caching secure web content
AUPQ924100A0 (en) * 2000-08-07 2000-08-31 Sharinga Networks Inc. A method for controlling data at a client device
AU2001296774A1 (en) * 2000-10-09 2002-04-22 Enic Corporation Registering and using multilingual domain names
US7818435B1 (en) * 2000-12-14 2010-10-19 Fusionone, Inc. Reverse proxy mechanism for retrieving electronic content associated with a local network
US20030037102A1 (en) * 2001-08-14 2003-02-20 Philippe Eckert Message broker
US20030074432A1 (en) * 2001-09-26 2003-04-17 Mazzitelli John Joseph State data management method and system
US20030154306A1 (en) * 2002-02-11 2003-08-14 Perry Stephen Hastings System and method to proxy inbound connections to privately addressed hosts
US20050262357A1 (en) * 2004-03-11 2005-11-24 Aep Networks Network access using reverse proxy
US20050273849A1 (en) * 2004-03-11 2005-12-08 Aep Networks Network access using secure tunnel

Also Published As

Publication number Publication date
CN100508518C (zh) 2009-07-01
US20040044768A1 (en) 2004-03-04
JP2004094805A (ja) 2004-03-25
CN1487711A (zh) 2004-04-07

Similar Documents

Publication Publication Date Title
JP4179535B2 (ja) ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム
US7716282B2 (en) Proxy server apparatus and method for providing service using the same
EP1886470B1 (en) Method and system for object prediction
US6976090B2 (en) Differentiated content and application delivery via internet
US8874783B1 (en) Method and system for forwarding messages received at a traffic manager
US7904073B2 (en) System and method for processing extensible markup language (XML) documents
JP3807961B2 (ja) セッション管理方法、セッション管理システムおよびプログラム
US6848000B1 (en) System and method for improved handling of client state objects
US20020046262A1 (en) Data access system and method with proxy and remote processing
US9628549B1 (en) Method and system for controlling and accessing content servers
US6672775B1 (en) Cross-machine web page download and storage
CN101136834B (zh) 一种基于ssl vpn的链接改写方法和设备
US6408296B1 (en) Computer implemented method and apparatus for enhancing access to a file
JP2003288261A (ja) データ転送装置、データ転送方法及びプログラム
JP2003141002A (ja) Url長変換システム及びそのプログラム
Wong Web Client Programming with Perl
JP2004246747A (ja) 既存サービスのラッピング方法および装置
JP4988307B2 (ja) コンテキスト・ベースのナビゲーション
US6957247B1 (en) Internet system
Fisher Spinning the Web: a guide to serving information on the World Wide Web
EP1052827A2 (en) Dynamic resource modification in a communication network
JP4206206B2 (ja) 情報資源の更新方法
US20080222157A1 (en) Information providing method and information providing system
TW531998B (en) Method and system of enforcing the dispatching of IP datagrams on a plurality of servers according to a defined policy
WO2010006700A1 (en) Single point of entry server solution for world-wide-web annotation services with reduced latency

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070710

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080819

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20080820

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080822

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110905

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees