JP5159261B2 - セッションを管理する技術 - Google Patents

セッションを管理する技術 Download PDF

Info

Publication number
JP5159261B2
JP5159261B2 JP2007292974A JP2007292974A JP5159261B2 JP 5159261 B2 JP5159261 B2 JP 5159261B2 JP 2007292974 A JP2007292974 A JP 2007292974A JP 2007292974 A JP2007292974 A JP 2007292974A JP 5159261 B2 JP5159261 B2 JP 5159261B2
Authority
JP
Japan
Prior art keywords
session
server
client device
request
server devices
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.)
Active
Application number
JP2007292974A
Other languages
English (en)
Other versions
JP2009122734A (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 JP2007292974A priority Critical patent/JP5159261B2/ja
Priority to CN200810166287XA priority patent/CN101436961B/zh
Priority to US12/266,223 priority patent/US8195808B2/en
Publication of JP2009122734A publication Critical patent/JP2009122734A/ja
Priority to US13/461,648 priority patent/US9055054B2/en
Application granted granted Critical
Publication of JP5159261B2 publication Critical patent/JP5159261B2/ja
Priority to US14/583,782 priority patent/US10097532B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0815Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • 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
    • 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/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • 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/148Migration or transfer of sessions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/438Presentation of query results
    • G06F16/4387Presentation of query results by the use of playlists
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、セッションを管理する技術に関する。特に、本発明は、クライアント装置と複数のサーバ装置のそれぞれとの間で確立されたセッションを管理する技術に関する。
近年、リバース・プロキシ・サーバにより実現されるSSO(Single Sign−On)認証システムが用いられている。SSO認証システムにおいては、例えば複数のサーバ装置を代理したリバース・プロキシ・サーバが、クライアント装置から受けた認証の要求を一括して処理する。認証が成功すると、クライアント装置と複数のサーバ装置のそれぞれとの間のセッションが確立される。このように、SSO認証システムによれば、ユーザは1回だけログイン操作をすることで、複数のサーバ装置のそれぞれにアクセスすることができる(例えば特許文献1の段落0219等を参照。)。
特開2005−11098号公報
SSO認証システムにおいて、複数のサーバ装置のそれぞれにおける認証状態は同期していることが望ましい。例えば、複数のサーバ装置が協調動作するシステムにおいて、一部のサーバ装置においてのみセッションが切断されていると、思わぬエラーが生じ得る。これに対し、あらゆる認証状態の組合せを想定してシステムを構築しようとすれば、システム開発の手間や費用が増大してしまう。
一方で、既存のサーバ装置は、タイムアウト検出およびログアウト検出などの、セッション切断のための機能を独自に備えていることが多い。即ち、ユーザはログアウトにより各サーバ装置のセッションを独自に切断し、または、各サーバ装置はタイムアウト検出によりセッションを独自に切断できる。従って、そのようなサーバ装置をそのままSSO認証システムに利用すると、認証状態の不整合が生じ得る。
このため、SSO認証システムの実現のためには、既存のサーバ装置をそのまま利用することはできず、専用のサーバ装置を開発しなおしたり、または、既存のサーバ装置の諸機能を改変したりしなければならなかった。
そこで本発明は、上記の課題を解決することのできるシステム、方法およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の第1の形態においては、クライアント装置と複数のサーバ装置との間のセッションを管理するシステムであって、前記クライアント装置から前記複数のサーバ装置のそれぞれに対するリクエストを、前記複数のサーバ装置のそれぞれに代わって受信する受信部と、前記クライアント装置から前記複数のサーバ装置のうちの何れかのサーバ装置に対するリクエストの受信に応じて、前記クライアント装置と前記複数のサーバ装置のそれぞれとの間で確立されたセッションが維持されているかどうかを判断する判断部と、前記クライアント装置と前記複数のサーバ装置のうちの少なくとも何れか1つのサーバ装置との間でセッションが既に切断されていることを条件に、前記クライアント装置と前記複数のサーバ装置のうち前記少なくとも何れか1つのサーバ装置とは異なるそれぞれのサーバ装置との間のセッションを切断する切断部と、前記クライアント装置と全ての前記複数のサーバ装置との間のセッションが維持されていることを条件に、受信した前記リクエストを当該リクエストの宛先のサーバ装置に転送する転送部とを備えるシステムを提供する。また、当該システムとしてコンピュータを機能させるプログラム、および、当該システムによりセッションを管理する方法を提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施形態に係る通信ネットワーク10の全体構成を示す。通信ネットワーク10は、クライアント装置100と、複数のサーバ装置200(例えばサーバ装置200A−C)と、リバース・プロキシ・サーバ・システム300とを備える。クライアント装置100は、基本的なハードウェアとして、ネットワーク・インターフェイス・カードなどの通信インターフェイス102と、ハードディスクドライブなどの記憶装置104とを有する。そして、クライアント装置100は、記憶装置104から読み出されたプログラムをCPUにより実行することで、ウェブ・ブラウザ106として機能する。
サーバ装置200A−Cのそれぞれも、同様に、基本的なハードウェアとして、ネットワーク・インターフェイス・カードなどの通信インターフェイス202と、ハードディスクドライブなどの記憶装置204とをそれぞれ有する。これらを通信インターフェイス202A−Cおよび記憶装置204A−Cとする。そして、サーバ装置200A−Cのそれぞれは、記憶装置204A−Cのそれぞれから読み出されたプログラムをCPUにより実行することで、ウェブ・サーバ206A−Cのそれぞれとして機能する。
同様に、リバース・プロキシ・サーバ・システム300は、基本的なハードウェアとして、ネットワーク・インターフェイス・カードなどの通信インターフェイス302と、ハードディスクドライブなどの記憶装置304とを有する。そして、リバース・プロキシ・サーバ・システム300は、記憶装置304から読み出されたプログラムをCPUにより実行することで、認証システム306として機能する。認証システム306は、クライアント装置100のユーザが一度のログインでサーバ装置200A−Cのそれぞれを利用可能となるように、各種の制御を行う。具体的には例えば以下の通りである。
まず、認証システム306は、クライアント装置100からのリクエストに応じてユーザを認証する。認証が成功すれば、認証システム306は、クライアント装置100およびリバース・プロキシ・サーバ・システム300間のセッションを確立する。これと共に、リバース・プロキシ・サーバ・システム300は、クライアント装置100に代理して、クライアント装置100とサーバ装置200A−Cのそれぞれとの間のセッションを確立する。
ここで、セッションとは、ユーザによるウェブ・サイトへのアクセス単位の1つをいう。例えば、セッションは、ユーザがあるユーザ名でウェブ・サイトにログインしてから、そのウェブ・サイトからログアウトするまでの、一連の処理(たとえばリクエストおよびレスポンスの送受信)のことをいう。明示的なログアウトが無くても、予め定められた期間(事実上の標準は30分間)アクセスが無い場合には、タイムアウト検出によりセッションが終了する。また、セッションの確立とは、上記のようなセッションの管理を可能にするために、サーバ装置200またはリバース・プロキシ・サーバ・システム300内にセッション管理用の記憶領域を確保することをいう。
セッション確立後は、リバース・プロキシ・サーバ・システム300は、クライアント装置100から受けたリバース・プロキシ・サーバ・システム300宛のリクエストの宛先URLを、サーバ装置200A−Cのうちの所定のサーバ装置のURLに変換することで、当該リクエストをサーバ装置200A−Cの何れかに対し選択的に転送する。また、リバース・プロキシ・サーバ・システム300は、セッションIDの変換を行ってセッションを適切に管理する。
以上のような通信ネットワーク10において、同一のユーザについてのサーバ装置200A−Cのそれぞれにおける認証状態が同期していないと、サーバ装置200A−Cに予期せぬエラーが発生する場合があり正しく動作させるのが難しい。これに対し、本実施形態に係るリバース・プロキシ・サーバ・システム300は、認証状態を適切に同期させることで、サーバ装置200A−Cを適切に動作することを目的とする。以下、具体的に説明してゆく。
図2は、認証状態の遷移の一例を示す。この図では説明の簡潔化のため、リバース・プロキシ・サーバ・システム300がサーバ装置200A−Bについての認証を代理するものとし、サーバ装置200Cについての認証には関わらない。初期状態、例えばシステム全体がリセットされた状態においては、何れのセッションも確立されていない(20A)。リバース・プロキシ・サーバ・システム300は、クライアント装置100から受けた要求に応じて、クライアント装置100およびリバース・プロキシ・サーバ・システム300の間のセッションを確立する(20B)。
このセッションが確立された状態でログインに成功すると、クライアント装置100およびサーバ装置200Aの間のセッション、並びに、クライアント装置100およびサーバ装置200Bの間のセッションが、順次確立される(20Cおよび20F)。もし認証状態が非同期的に変化すると仮定すると、一部のセッションのみを選択的に切断できる。例えば、20Cの状態において、クライアント装置100およびリバース・プロキシ・サーバ・システム300の間のセッションのみが切断されてもよい(20D)。
また、20Cの状態において、クライアント装置100およびサーバ装置200Aの間のセッションのみが切断されてもよい(20E)。また、20Fの状態において、クライアント装置100およびサーバ装置200Aの間のセッションのみが切断されてもよいし(20G)、クライアント装置100およびサーバ装置200Bの間のセッションのみが切断されてもよいし(20H)、クライアント装置100およびリバース・プロキシ・サーバ・システム300の間のセッションのみが切断されてもよい(20I)。
このように、サーバ装置200A−Bのそれぞれにおいて認証状態が異なってもよいとすると、想定される認証状態の組合せの数は多くなる。例えばサーバ装置200A−Bが協調動作する場合などにおいては、このような全ての組合せに対応してエラーハンドリング機能などを準備しなければならず、開発費用や手間の増大につながるおそれがある。
図3は、本実施形態に係る認証状態の遷移の一例を示す。この図では説明の簡潔化のため、リバース・プロキシ・サーバ・システム300がサーバ装置200A−Bについての認証を代理するものとし、サーバ装置200Cについての認証には関わらない。初期状態、例えばシステム全体がリセットされた状態においては、何れのセッションも確立されていない(30A)。リバース・プロキシ・サーバ・システム300は、クライアント装置100から受けた要求に応じて、クライアント装置100およびリバース・プロキシ・サーバ・システム300の間のセッションを確立する(30B)。
このセッションが確立された状態でログインに成功すると、クライアント装置100およびサーバ装置200Aの間のセッション、並びに、クライアント装置100およびサーバ装置200Bの間のセッションが、順次確立される(30Cおよび30D)。サーバ装置200Aまたはサーバ装置200Bがタイムアウトを検出した場合や、サーバ装置200Aまたはサーバ装置200Bからユーザがログアウトした場合には、既に確立されているセッションが何れも切断されて、状態30Aに戻る。このように制御すれば、サーバ装置200A−Bの管理において想定しなければならない状態の数を少なくすることができる。
図4は、本実施形態に係る認証システム306の機能構成を示す。認証システム306は、受信部400と、認証部405と、判断部410と、切断部420と、ID管理部430と、転送部440とを有する。受信部400は、クライアント装置100からサーバ装置200A−Cのそれぞれに対するリクエストを、サーバ装置200A−Cのそれぞれに代わって受信する。
認証部405は、ユーザがリバース・プロキシ・サーバ・システム300にログインするリクエストを受信したことを条件に、ログインIDおよびパスワードなどに基づいてユーザを認証する。認証には、予め記憶装置304に格納された認証用データを用いてもよい。認証の成功を条件に、認証部405は、クライアント装置100とリバース・プロキシ・サーバ・システム300との間のセッションIDをクライアント装置100に返信する。このセッションIDは、例えばウェブ・ブラウザ106のクッキーとして設定されて、クライアント装置100が送信する以降のリクエストと共にリバース・プロキシ・サーバ・システム300宛に送信される。
また、認証部405は、認証の成功を条件に、クライアント装置100とサーバ装置200A−Cのそれぞれとの間のセッションを、クライアント装置100に代理して確立させてもよい。そのようにして確立されたセッションのIDは、ID管理部430によって記憶装置304に格納される。その後に、判断部410は、クライアント装置100からサーバ装置200A−Cのうちの何れかのサーバ装置200に対するリクエストの受信に応じて、クライアント装置100とサーバ装置200A−Cのそれぞれとの間で確立されたセッションが維持されているかどうかを判断する。この判断の実現方法については後に詳しく述べるが、概ね以下の通りである。
判断部410は、記憶装置304を走査してセッションIDなどの情報を読み出し、クライアント装置100との間でセッションが確立されていたサーバ装置200を判別する。ここでは、例えばサーバ装置200A−Cのそれぞれがクライアント装置100との間でセッションを確立していたものとする。そして、判断部410は、サーバ装置200A−Cのそれぞれに対し確認リクエストを送信する。この確認リクエストは、当該サーバ装置200とクライアント装置100との間のセッションが維持されているかどうかを確認するリクエストである。この確認リクエストは例えば予め記憶装置304に記憶されていてよい。
そして、判断部410は、それに応じたレスポンスに基づいてセッションが切断されているかを判断する。具体的には、判断部410は、そのレスポンスが予め定められた期待レスポンスと一致するかどうかを判断する。この期待レスポンスは、当該サーバ装置200とクライアント装置100との間のセッションが維持されていることを示す、予め定められたレスポンスである。この期待レスポンスも例えば予め記憶装置304に記憶されていてよい。
そして、レスポンスが期待レスポンスと一致することを条件に、判断部410は、当該サーバ装置200とクライアント装置100との間のセッションが維持されていると判断する。このようにして、判断部410は、サーバ装置200A−Cのそれぞれについて、当該サーバ装置200とクライアント装置100との間のセッションが維持されているかどうかを判断する。
切断部420は、クライアント装置100と当該サーバ装置200A−Cのうちの少なくとも何れか1つのサーバ装置200との間でセッションが既に切断されていることを条件に、クライアント装置100と当該サーバ装置200A−Cのうちの少なくとも何れか1つのサーバ装置200とは異なるそれぞれのサーバ装置200との間のセッションを切断する。具体的には、切断部420は、セッションを切断しようとするサーバ装置200に対応付けて予め記憶されている、切断のためのリクエストを、記憶装置304から読み出して送信する。
この場合には、受信部400は、セッションが既に切断された旨のエラーメッセージをクライアント装置100に返信する。一方で、クライアント装置100と全てのサーバ装置200A−Cとの間のセッションが維持されていることを条件に、転送部440は、受信部400が受信したリクエストを当該リクエストの宛先のサーバ装置200に転送する。
以上の処理機能により、何れかのセッションが切断されるまでは各セッションを適切に維持することができると共に、何れかのセッションが切断した場合には他のセッションも強制的に切断することで、各セッションの状態(維持されているか、または、切断されているか)を同期させることができる。
ID管理部430は、セッションを追加して確立することを可能にしてもよい。具体的には、ID管理部430は、クライアント装置100により送信されて転送部440により転送されたリクエストに応じて、サーバ装置200A−Cの何れかが返信するレスポンスを監視している。そして、ID管理部430は、サーバ装置200A−Cの何れかから受信したレスポンスが、新たなセッションを確立することを示す場合に、そのセッションを識別するセッションIDを記憶装置304に格納する。
一例として、既にサーバ装置200A−Bとクライアント装置100との間でセッションが確立されている場合において、クライアント装置100とサーバ装置200Cとの間に新たにセッションが確立されると、サーバ装置200Cからクライアント装置100に対しそのセッションIDが返信される。ID管理部430は、そのセッションIDをレスポンスから読み出して、クライアント装置100とリバース・プロキシ・サーバ・システム300との間で既に確立されたセッションのIDに対応付けて記憶装置304に格納する。これにより、同期させるべきセッションの組合せに後から新たなセッションを追加できる。
次に、図5から図7までを参照して、セッション管理の具体的な実装例を説明してゆく。
図5は、本実施形態に係る記憶装置304のデータ構成の一例を示す。記憶装置304は、本発明に係る第1の記憶装置、第2の記憶装置、および、第3の記憶装置の一例である。そして、記憶装置304は、URL対応データ500Aと、セッションID対応データ500Bと、確認用データ500Cと、切断用データ500Dとを記憶している。
図6は、本実施形態に係る記憶装置304に格納されるURL対応データ500AおよびセッションID対応データ500Bの一例を示す。URL対応データ500Aは、クライアント側URLをサーバ側URLに対応付けて記録している。このURL対応データ500Aは、通信ネットワーク10の設計者によって予め作成されて、記憶装置304に記憶されている。転送部440は、このURL対応データ500Aを参照することで、リクエストを適切なサーバ装置200に転送する。
具体的には、転送部440は、受信部400が受信したリクエストの宛先URLをそのリクエストメッセージから読み出す。そして、転送部440は、読み出したその宛先URLと一致するクライアント側URLをURL対応データ500Aから検索する。転送部440は、検索されたクライアント側URLに対応するサーバ側URLをURL対応データ500Aから読み出す。そして、転送部440は、読み出したそのサーバ側URLを宛先として、受信部400が受信したリクエストを転送する。
この結果、例えば「http://www.△△.com/jct1/index.html」を宛先とするリクエストはサーバ装置200Aに転送される。また、「http://www.△△.com/jct2/index.html」を宛先とするリクエストはサーバ装置200Bに転送される。また、「http://www.△△.com/jct3/index.html」を宛先とするリクエストはサーバ装置200Cに転送される。
このように、URL対応データ500Aによれば、複数のサーバ装置200を、あたかも1つのウェブ・サイトであるかのように機能させることができる。
また、セッションID対応データ500Bは、クライアント側のセッションID、サーバ側のセッションID、および、サーバ側URLを対応付けて記録している。クライアント側のセッションIDは、クライアント装置100とリバース・プロキシ・サーバ・システム300との間で既に確立されたセッションを識別する。サーバ側のセッションIDは、クライアント装置100と、当該クライアント装置との間で既にセッションが確立された少なくとも1つのサーバ装置200のそれぞれとの間で既に確立された当該セッションを識別する。
これらのデータを利用した処理の一例は以下の通りである。まず、転送部440は、受信部400がリクエストを受信すると、そのリクエストに設定されているセッションIDを読み出す。これと共に、既に説明したように、転送部440は、URL対応データ500Aに基づいて、受信部400が受信したリクエストの宛先URLに対応する転送先のサーバ側URLを特定する。
転送部440は、読み出したそのセッションIDとクライアント側IDとし、特定したそのサーバ側URLに対応するエントリをセッションID対応データ500Bから検索する。そして、転送部440は、そのエントリに含まれるサーバ側IDをセッションID対応データ500Bから読み出す。転送部440は、受信部400が受信したリクエストに、既に設定されていたセッションIDに代えて、読み出したこのサーバ側IDを設定する。そして、転送部440は、このサーバ側IDを設定したリクエストを宛先のサーバ装置200に転送する。
例えば、受信したリクエストに既に設定されている宛先のクライアント側URLが「http://www.△△.com/jct1/index.html」であり、そのリクエストにはセッションIDとして35352が設定されていた場合、その宛先はサーバ装置200Aなので、対応するサーバ側ID51552が転送部440により読み出される。そして、転送部440は、受信したリクエストに、読み出したそのサーバ側ID51552を設定してサーバ装置200Aに転送する。
このように、このセッションID対応データ500Bによれば、クライアント装置100およびサーバ装置200A−Cのそれぞれとの間で確立されたセッションを、あたかも1つのセッションであるかのようにクライアント装置100に認識させることができる。
また、このセッションID対応データ500Bに新たにセッションIDを登録する処理の一例は以下の通りである。ID管理部430は、何れかのサーバ装置200からクライアント装置100宛に返送されるレスポンスを監視して、クライアント装置100と新たな他のサーバ装置200との間で新たにセッションが確立されたかどうかを判断する。
例えば、ID管理部430は、ウェブ・ブラウザ106にクッキーとしてセッションIDを登録するためのレスポンスを監視している。そして、そのようなレスポンスの検出を条件に、クライアント装置100と、当該クライアント装置100との間でまだセッションが確立されていないサーバ装置200との間で新たにセッションが確立されたと判断する。
新たにセッションが確立されると、ID管理部430は、そのレスポンスから、登録しようとするセッションIDを読み出す。そして、ID管理部430は、読み出したセッションIDを、当該新たな他のサーバ装置200のURLに対応付けてセッションID対応データ500Bに登録する。
例えば、クライアント装置100とサーバ装置200A−Bとの間で既にセッションが確立されている場合において、新たにクライアント装置100とサーバ装置200Cとの間でセッションが確立された場合には、サーバ装置200Cからクライアント装置100宛のレスポンスには、ウェブ・ブラウザ106のクッキーとしてそのセッションIDを登録する指示が含まれる。ID管理部430は、そのようなレスポンスを監視してそのセッションIDを読み出すことで、そのセッションIDをセッションID対応データ500Bに登録することができる。
上記の処理の他に、URL対応データ500AおよびセッションID対応データ500Bは、各サーバ装置200からクライアント装置100に返信されるレスポンスに設定されたURLおよびセッションIDを変換するために用いられる。例えば、リバース・プロキシ・サーバ・システム300は、あるサーバ装置200からレスポンスを受信すると、そのレスポンスに含まれるそれぞれのURLを、URL対応データ500Aのサーバ側URLフィールドから検索する。そして、リバース・プロキシ・サーバ・システム300は、そのレスポンスに含まれるそのURLを、検索されたそのサーバ側URLに対応するクライアント側URLに変更する。
同様に、リバース・プロキシ・サーバ・システム300は、あるサーバ装置200からレスポンスを受信すると、そのレスポンスに含まれるそれぞれのセッションIDを、セッションID対応データ500Bのサーバ側セッションIDフィールドから検索する。そして、リバース・プロキシ・サーバ・システム300は、そのレスポンスに含まれるそのセッションIDを、検索されたそのサーバ側セッションIDに対応するクライアント側セッションIDに変更する。
以上により、サーバ装置200からクライアント装置100に対するレスポンスも、あたかも単一のウェブ・サイトから返信されたかのように認識させることができる。
図7は、本実施形態に係る記憶装置304に格納される確認用データ500Cおよび切断用データ500Dの一例を示す。これらのデータは、たとえば、サーバ装置200A−Cの動作を熟知したエンジニアなどにより予め作成されて、記憶装置304に格納されている。確認用データ500Cは、サーバ側URLと、確認リクエストと、期待レスポンスとを対応付けて記録している。このデータを参照する処理は例えば以下の通りである。
判断部410は、受信部400がリクエストを受信すると、まず、セッションID対応データ500Bを走査して、そのリクエストに対応するセッションIDが既にセッションID対応データ500Bに記録された少なくとも1つのサーバ装置200を選択する。例えば、そのリクエストにセッションIDの35352が設定されている場合において、判断部410は、そのセッションIDをクライアント側IDとする全てのサーバ側URLをセッションID対応データ500Bから読み出す。そして、判断部410は、それぞれのサーバ側URLにより特定される少なくとも1つのサーバ装置200を選択する。図6の例では、サーバ装置200A−Cの全てが選択される。
選択されたサーバ装置200は、クライアント装置100との間で既にセッションが確立され、まだそれが維持されているかどうかは不明なサーバ装置200である。したがって、判断部410は、選択した当該少なくとも1つのサーバ装置200のそれぞれとクライアント装置100との間のセッションが既に切断されたかどうかを判断するべく、確認リクエストを送信する。
具体的には、判断部410は、選択したそれぞれのサーバ装置200について、当該サーバ装置200に対応する確認リクエストを確認用データ500Cから読み出す。そして、判断部410は、読み出した確認リクエストを対応するサーバ装置200に送信する。例えば、「POST/」から始まる確認リクエストがサーバ装置200Aに、「GET/」から始まる確認リクエストがサーバ装置200Bに、「POST/」から始まる確認リクエストがサーバ装置200Cに、それぞれ送信される。
次に、判断部410は、確認リクエストの宛先である当該サーバ装置200に対応する期待レスポンスを確認用データ500Cから読み出す。そして、判断部410は、当該確認リクエストに応じた当該サーバ装置200のレスポンスを当該期待レスポンスと比較する。これらが相違することを条件に、判断部410は、当該サーバ装置200とクライアント装置100との間のセッションが切断されていると判断する。
切断用データ500Dは、複数のサーバ装置200のそれぞれについて、当該サーバ装置200を識別するサーバ側URLと、当該サーバ装置200とクライアント装置100との間のセッションを切断するために送信するべきリクエストである切断リクエストとを対応付けて記録している。このデータを参照する処理は例えば以下の通りである。
判断部410は、クライアント装置100と全てのサーバ装置200との間のセッションを切断する場合に、まず、それぞれのサーバ装置200に対応する切断リクエストを切断用データ500Dから読み出す。次に、判断部410は、読み出したそれぞれの切断リクエストを、対応するサーバ装置200にそれぞれ送信する。
この切断リクエストは、例えば、強制的なログアウトを要求し、または、強制的なタイムアウト検出を要求するリクエストである。これにより、サーバ装置200A−Cのそれぞれはセッションを切断して、セッション維持のために確保していたメモリ領域などを解放することができる。
図8は、本実施形態に係るリバース・プロキシ・サーバ・システム300の処理フローの一例を示す。受信部400が、ユーザの認証を要求するメッセージをクライアント装置100から受信すると、認証部405は、ログインIDおよびパスワードなどに基づいてそのユーザを認証する(S800)。
認証の成功を条件に、認証部405は、クライアント装置100に代理して、クライアント装置100とサーバ装置200A−Cのそれぞれとの間のセッションを確立する要求をサーバ装置200A−Cのそれぞれに送信する。これと共に、認証部405は、クライアント装置100とリバース・プロキシ・サーバ・システム300との間のセッションを識別するセッションID(例えば35352)を、クライアント装置100に返信する(S810)。クライアント装置100のウェブ・ブラウザ106は、以降に送信するリクエストにこのセッションIDを設定するために、このセッションIDをクッキーなどとして設定する。
ID管理部430は、クライアント装置100とサーバ装置200A−Cのそれぞれとの間で新たに確立されたセッションを識別するセッションIDを、サーバ装置200A−Cのそれぞれから受信する。例えば、クライアント装置100とサーバ装置200Aとの間で確立されたセッションのIDは51552であり、クライアント装置100とサーバ装置200Bとの間で確立されたセッションのIDは48232であり、クライアント装置100とサーバ装置200Cとの間で確立されたセッションのIDは56521である。
そして、ID管理部430は、受信したこれらのセッションIDを、クライアント装置100とリバース・プロキシ・サーバ・システム300との間で既に確立されたセッションID(例えば35352)に対応付けて、記憶装置304に格納する(S820)。格納されるセッションIDのデータ構造は、例えばセッションID対応データ500Bとして上述した通りである。
その後に、受信部400が、クライアント装置100から何れかのサーバ装置200に対するリクエストを受信すると、判断部410は、クライアント装置100とそれぞれのサーバ装置200との間で確立されたセッションが維持されているかどうかを判断する(S830)。クライアント装置100とそれぞれのサーバ装置200との間で既に確立されたセッションを特定するためには、既に述べたように、セッションID対応データ500Bを参照すればよい。また、セッションが維持されているかどうかを判断するためには、既に述べたように、確認用データ500Cを利用して確認リクエストを送信すればよい。
この確認リクエストは、セッションの維持を確認するほか、維持されているセッションのタイムアウト検出を防ぐ役割を果たす。例えば、サーバ装置200A−Cのそれぞれは、確認リクエストを受けると、タイムアウト検出のためのタイマー・カウントをリセットする。これにより、各セッションのタイマー・カウントを同期させて、セッション状態を整合し易くすることができる。なお、確認リクエストによってはタイマー・カウントがリセットされない場合には、判断部410は、タイマー・カウントをリセットさせるためのリクエストを確認リクエストに加えて更に送信してもよい。
クライアント装置100との間で既に確立されたセッションが全て維持されていることを条件に(S840:YES)、転送部440は、受信部400が受信したリクエストをそのリクエストの宛先のサーバ装置200に転送する(S850)。この処理は、具体的には下記の通りである。まず、転送部440は、上述のように、そのリクエストの宛先URLに基づいて、そのリクエストを転送するべき転送先のサーバ装置200を判別する。この判別は、宛先URLをURL対応データ500Aと照合することで実現される。ここでは、サーバ装置200Aが宛先と判別される。
また、転送部440は、判別した当該サーバ装置200に対応するセッションIDを認証システム306のセッションID対応データ500Bから読み出す。そして、転送部440は、読み出した当該セッションIDを、当該リクエストに設定する。ここでは、サーバ装置200Aに対応するセッションIDである51552が設定される。そして、転送部440は、セッションIDを設定したそのリクエストを、宛先であるサーバ装置200Aに転送する。
上記S830−S850の処理は、受信部400がリクエストを受信する毎に繰り返される。
一方、切断部420は、クライアント装置100と少なくとも何れか1つのサーバ装置200との間でセッションが既に切断されていることを条件に(S840:NO)、サーバ装置200A−Cのうち既にセッションが切断されたサーバ装置200(例えばサーバ装置200A)を除く他のサーバ装置200のそれぞれ(例えばサーバ装置200B−C)とクライアント装置100との間のセッションを切断する(S860)。
例えば、切断部420は、サーバ装置200B−Cのそれぞれに対応する切断リクエストを切断用データ500Dから読み出して、読み出した切断リクエストをそれぞれサーバ装置200B−Cのそれぞれに送信してよい。これに代えて、既にセッションが切断されているかどうかに関わらず、切断部420は、クライアント装置100との間でセッションが確立されていた全てのサーバ装置200(この例ではサーバ装置200A−C全て)のそれぞれに、切断リクエストを送信してもよい。そして、受信部400は、セッションが既に切断された旨のエラーメッセージをクライアント装置100に返信する(S870)。
以上、図1から図8を参照して説明したように、本実施形態に係る通信ネットワーク10によれば、サーバ装置200A−Cのそれぞれがログアウトまたはタイムアウト検出の機能を独自に備えていたとしても、クライアント装置100とサーバ装置200A−Cのそれぞれとの間で確立されたセッションの状態を同期させることができる。これにより、単体で動作する既存のサーバ装置200を利用しても、セッションの状態が同期しないことにより発生するエラーをハンドリングする必要が無いので、システム全体の設計、開発および保守の手間や費用を削減できる。
続いて、本実施形態の変形例として、各セッションの状態を同期させることのできる他の実施形態を説明する。
図9は、本実施形態の変形例に係る認証システム306の機能構成を示す。本変形例においても、上記実施形態と同様、認証システム306は、受信部400と、認証部405と、判断部410と、切断部420と、ID管理部430と、転送部440とを備える。本変形例においては、これに加えて、認証システム306は、維持部450を更に備える。
本変形例における受信部400、認証部405およびID管理部430のそれぞれは、上記実施形態における受信部400、認証部405およびID管理部430のそれぞれと略同一である。即ち、受信部400は、クライアント装置100からサーバ装置200A−Cのそれぞれに対するリクエストを、サーバ装置200A−Cのそれぞれに代わって受信する。
また、認証部405は、ユーザがリバース・プロキシ・サーバ・システム300にログインするリクエストを受信したことを条件に、ログインIDおよびパスワードなどに基づいてユーザを認証する。そして、認証の成功を条件に、認証部405は、クライアント装置100とリバース・プロキシ・サーバ・システム300との間のセッションIDをクライアント装置100に返信する。また、認証部405は、認証の成功を条件に、ID管理部430に指示して、クライアント装置100とサーバ装置200A−Cのそれぞれとの間のセッションを、クライアント装置100に代理して確立させてもよい。
ID管理部430は、セッションを追加して確立することを可能にしてもよい。具体的には、ID管理部430は、クライアント装置100により送信されて転送部440により転送されたリクエストに応じて、サーバ装置200A−Cの何れかが返信するレスポンスを監視している。そして、ID管理部430は、サーバ装置200A−Cの何れかから受信したレスポンスが、新たなセッションを確立することを示す場合に、そのセッションを識別するセッションIDを記憶装置304に格納する。
一方、判断部410、切断部420および転送部440と、記憶装置304のデータ構造とは、上記実施形態とは異なる。まず、維持部450は、セッションを維持するために、クライアント装置100との間で既にセッションの確立された複数のサーバ装置200のそれぞれに対し、当該サーバ装置200に対応して定められたタイムアウト期間よりも短い間隔でリクエストを送信する。既に確立されているセッションの特定は、例えば図6を参照して説明したように、セッションID対応データ500Bに基づいて実現される。また、サーバ装置200A−Cのそれぞれが独自に備えるログアウト機能は予め無効化されていることが望ましい。
そして、判断部410は、クライアント装置100から受信する何れかのサーバ装置200宛のリクエストに基づいて、クライアント装置100と複数のサーバ装置200との間で既に確立している全てのセッションを切断するかどうかを判断する。例えば、判断部410はセッションのタイムアウトを検出してもよい。具体的には、判断部410は、クライアント装置100から、クライアント装置100との間でセッションの確立された何れのサーバ装置200に対しても、予め定められたタイムアウト期間内にリクエストが送信されないかどうかを判断する。そして、判断部410は、当該タイムアウト期間内にリクエストが送信されないことを条件に、既に確立している全てのセッションを切断すると判断する。
他の例として、判断部410は、ログアウトなどの明示の指示を検出してもよい。具体的には、判断部410は、既に確立されている全てのセッションを切断する指示を、クライアント装置100から受信したかどうかを判断する。そのような指示を受信したことを条件に、判断部410は、クライアント装置100と複数のサーバ装置200との間で既に確立している全てのセッションを切断すると判断する。この明示の指示は、例えば、リバース・プロキシ・サーバ・システム300にログインしているユーザがリバース・プロキシ・サーバ・システム300からログアウトする要求であってよい。
そして、切断部420は、判断部410により全てのセッションを切断すると判断されたことを条件に、クライアント装置100と、クライアント装置100との間で既にセッションが確立されている複数のサーバ装置200との間のセッションを切断する。セッションの切断は、例えば図6を参照して説明したように、切断用データ500Dから読み出した切断リクエストを送信することで実現される。そしてさらに、切断部420は、クライアント装置100とリバース・プロキシ・サーバ・システム300との間のセッションを切断する。
また、受信部400が何れかのサーバ装置200宛にリクエストを受信したことを条件に、転送部440は、単にそのリクエストを宛先のサーバ装置200に転送する。即ち、上記実施形態とは異なりセッション維持の確認をすることなく、そのリクエストが単に転送される。宛先の特定は、図6を参照して説明したように、URL対応データ500Aに基づいて実現される。また、転送部440は、転送するリクエストにはサーバ側セッションIDを設定する。サーバ側セッションIDの特定は、図6を参照して説明したように、セッションID対応データ500Bに基づいて実現される。
図10は、本実施形態の変形例に係るURL対応データ500Aの一例を示す。URL対応データ500Aは、クライアント側URLと、サーバ側URLと、当該サーバ側URLにより識別されるサーバ装置200に対応して予め定められたタイムアウト期間とを対応付けて記録している。
タイムアウト期間は、サーバ装置200にインストールされたプログラムの仕様などに基づいて予め定められている。即ち、各サーバ装置200は、リクエストを受信しない期間が当該サーバ装置200に対応して予め定められたタイムアウト期間を超えたことを条件に、セッションを切断する。そして、その予め定められたタイムアウト期間が、管理者等により、URL対応データ500Aに含めて予め記録されている。
このURL対応データ500Aを参照する処理の一例は以下の通りである。まず、維持部450は、例えば定期的に、クライアント装置100との間で既にセッションの確立されたサーバ装置200を、例えばセッションID対応データ500Bに基づいて選択する。そして、維持部450は、選択したそれぞれのサーバ装置200に対応するタイムアウト期間を、URL対応データ500Aから読み出す。
そして、維持部450は、選択したそれぞれのサーバ装置200について、前回にリクエストを送信してから経過した時間が、当該サーバ装置200に対応するタイムアウト期間に近づいたかどうかを判断する。例えば、維持部450は、前回にリクエストを送信してから経過した時間が、当該サーバ装置200に対応するタイムアウト期間の1分前に達したかどうかを判断する。その判断が成立することを条件に、維持部450は、タイムアウト検出のタイマー・カウントをリセットするためのリクエストを送信する。
このように、本変形例に係るURL対応データ500Aを利用すれば、維持部450は、タイムアウト期間よりも短い間隔でリクエストを送信することで、セッションを維持し続けることができる。
図11は、本実施形態の変形例に係るリバース・プロキシ・サーバ・システム300の処理フローの一例を示す。本変形例に係る処理(S1000−S1020)は、図8を参照して説明した処理(S800−S820)と略同一である。具体的には以下の通りである。受信部400が、ユーザの認証を要求するメッセージをクライアント装置100から受信すると、認証部405は、ログインIDおよびパスワードなどに基づいてそのユーザを認証する(S1000)。
認証の成功を条件に、認証部405は、クライアント装置100に代理して、クライアント装置100とサーバ装置200A−Cのそれぞれとの間のセッションを確立する要求をサーバ装置200A−Cのそれぞれに送信する。これと共に、認証部405は、クライアント装置100とリバース・プロキシ・サーバ・システム300との間のセッションを識別するセッションID(例えば35352)を、クライアント装置100に返信する(S1010)。クライアント装置100のウェブ・ブラウザ106は、以降に送信するリクエストにこのセッションIDを設定するために、このセッションIDをクッキーなどとして設定する。
ID管理部430は、クライアント装置100とサーバ装置200A−Cのそれぞれとの間で新たに確立されたセッションを識別するセッションIDを、サーバ装置200A−Cのそれぞれから受信する。例えば、クライアント装置100とサーバ装置200Aとの間で確立されたセッションのIDは51552であり、クライアント装置100とサーバ装置200Bとの間で確立されたセッションのIDは48232であり、クライアント装置100とサーバ装置200Cとの間で確立されたセッションのIDは56521である。
そして、ID管理部430は、受信したこれらのセッションIDを、クライアント装置100とリバース・プロキシ・サーバ・システム300との間で既に確立されたセッションID(例えば35352)に対応付けて、記憶装置304に格納する(S1020)。格納されるセッションIDのデータ構造は、例えばセッションID対応データ500Bとして上述した通りである。
S1030以降の処理は、図8を参照して説明した処理とは異なっている。受信部400が何れかのサーバ装置200(例えばサーバ装置200Aとする)宛のリクエストを受信したことを条件に、転送部440は、そのリクエストを宛先のサーバ装置200に転送する。転送するリクエストには、サーバ側セッションIDが設定される。この例ではサーバ装置200Aとクライアント装置100との間のセッションを識別する35352が設定される。
この転送の処理とは独立に、維持部450は、クライアント装置100と複数のサーバ装置200との間で既に確立されたセッションを維持するためのリクエストを、所定の時間間隔で、サーバ装置200A−Cのそれぞれに送信する(S1040)。
そして、例えば、判断部410は、既に確立されている全てのセッションを切断する指示を、クライアント装置100から受信した場合に、クライアント装置100と複数のサーバ装置200との間で既に確立している全てのセッションを切断すると判断する。この判断に応じて、切断部420は、クライアント装置100と、クライアント装置100との間で既にセッションが確立されている複数のサーバ装置200との間のセッションを切断する(S1050)。そして、受信部400は、セッションの切断を条件に、セッションの切断の処理が適切に完了した旨をクライアント装置100に返信する。
以上、図9−11を参照して説明したように、本変形例によっても、リバース・プロキシ・サーバ・システム300は、タイムアウト検出または明示の指示が無い限りは、既に確立されたセッションを適切に維持する。そして、リバース・プロキシ・サーバ・システム300は、タイムアウト検出等に応じて全てのセッションを一斉に切断する。これにより、既に確立されたセッションの状態を適切に同期させることができる。また、本変形例によれば、上記実施形態とは異なり、アクセスの毎に確認リクエストを送信する必要はないので、通信トラフィックを削減できる。
図12は、本実施形態または本実施形態の変形例に係るリバース・プロキシ・サーバ・システム300として機能するコンピュータ600のハードウェア構成の一例を示す。コンピュータ600は、ホストコントローラ1082により相互に接続されるCPU1000、RAM1020、及びグラフィックコントローラ1075を有するCPU周辺部と、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を有する入出力部と、入出力コントローラ1084に接続されるROM1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部とを備える。
ホストコントローラ1082は、RAM1020と、高い転送レートでRAM1020をアクセスするCPU1000及びグラフィックコントローラ1075とを接続する。CPU1000は、ROM1010及びRAM1020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ1075は、CPU1000等がRAM1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、CPU1000等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、例えば上記通信インターフェイス302として機能し、ネットワークを介して外部の装置と通信する。ハードディスクドライブ1040は、例えば上記記憶装置304として機能し、コンピュータ600が使用するプログラム及びデータを格納する。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、RAM1020又はハードディスクドライブ1040に提供する。
また、入出力コントローラ1084には、ROM1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。ROM1010は、コンピュータ600の起動時にCPU1000が実行するブートプログラムや、コンピュータ600のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、入出力チップ1070を介してRAM1020またはハードディスクドライブ1040に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
コンピュータ600に提供されるプログラムは、フレキシブルディスク1090、CD−ROM1095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ1070及び/又は入出力コントローラ1084を介して、記録媒体から読み出されコンピュータ600にインストールされて実行される。プログラムがコンピュータ600等に働きかけて行わせる動作は、図1から図11において説明したリバース・プロキシ・サーバ・システム300における動作と同一であるから、説明を省略する。
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ600に提供してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、本実施形態に係る通信ネットワーク10の全体構成を示す。 図2は、認証状態の遷移の一例を示す。 図3は、本実施形態に係る認証状態の遷移の一例を示す。 図4は、本実施形態に係る認証システム306の機能構成を示す。 図5は、本実施形態に係る記憶装置304のデータ構成の一例を示す。 図6は、本実施形態に係る記憶装置304に格納されるURL対応データ500AおよびセッションID対応データ500Bの一例を示す。 図7は、本実施形態に係る記憶装置304に格納される確認用データ500Cおよび切断用データ500Dの一例を示す。 図8は、本実施形態に係るリバース・プロキシ・サーバ・システム300の処理フローの一例を示す。 図9は、本実施形態の変形例に係る認証システム306の機能構成を示す。 図10は、本実施形態の変形例に係るURL対応データ500Aの一例を示す。 図11は、本実施形態の変形例に係るリバース・プロキシ・サーバ・システム300の処理フローの一例を示す。 図12は、本実施形態または本実施形態の変形例に係るリバース・プロキシ・サーバ・システム300として機能するコンピュータ600のハードウェア構成の一例を示す。
符号の説明
10 通信ネットワーク
20 状態
30 状態
100 クライアント装置
102 通信インターフェイス
104 記憶装置
106 ウェブ・ブラウザ
200 サーバ装置
202 通信インターフェイス
204 記憶装置
206 ウェブ・サーバ
300 リバース・プロキシ・サーバ・システム
302 通信インターフェイス
304 記憶装置
306 認証システム
400 受信部
405 認証部
410 判断部
420 切断部
430 ID管理部
440 転送部
450 維持部
600 コンピュータ

Claims (18)

  1. クライアント装置と複数のサーバ装置との間のセッションを管理するシステムであって、
    前記クライアント装置から前記複数のサーバ装置のそれぞれに対するリクエストを、前記複数のサーバ装置のそれぞれに代わって受信する受信部と、
    前記クライアント装置から前記複数のサーバ装置のうちの何れかのサーバ装置に対するリクエストの受信に応じて、前記クライアント装置と前記複数のサーバ装置のそれぞれとの間で確立されたセッションが維持されているかどうかを判断する判断部と、
    前記クライアント装置と前記複数のサーバ装置のうちの少なくとも何れか1つのサーバ装置との間でセッションが既に切断されていることを条件に、前記クライアント装置と前記複数のサーバ装置のうち前記少なくとも何れか1つのサーバ装置とは異なるそれぞれのサーバ装置との間のセッションを切断する切断部と、
    前記クライアント装置と全ての前記複数のサーバ装置との間のセッションが維持されていることを条件に、受信した前記リクエストを当該リクエストの宛先のサーバ装置に転送する転送部と
    を備えるシステム。
  2. 前記判断部は、前記複数のサーバ装置のそれぞれに対し、当該サーバ装置と前記クライアント装置との間のセッションが維持されているかどうかを確認するリクエストを送信して、当該リクエストに応じたレスポンスに基づいて当該セッションが切断されているかを判断する、請求項1に記載のシステム。
  3. 前記複数のサーバ装置のそれぞれに対応付けて、当該サーバ装置と前記クライアント装置との間のセッションが維持されているかどうかを確認するために送信するべきリクエストである確認リクエスト、および、当該セッションが維持されている場合に返信されるべきレスポンスである期待レスポンスを記憶している第1の記憶装置を更に備え、
    前記判断部は、前記複数のサーバ装置のそれぞれについて、当該サーバ装置に対応する前記確認リクエストを前記第1の記憶装置から読み出して当該サーバ装置に送信すると共に、当該サーバ装置に対応する期待レスポンスを前記第1の記憶装置から読み出して当該確認リクエストに応じたレスポンスと比較して、相違することを条件に当該サーバ装置と前記クライアント装置との間のセッションが切断されていると判断する、請求項2に記載のシステム。
  4. 前記複数のサーバ装置のそれぞれに対応付けて、当該サーバ装置と前記クライアント装置との間のセッションを切断するために送信するべきリクエストである切断リクエストを記憶している第2の記憶装置を更に備え、
    前記切断部は、前記クライアント装置と前記複数のサーバ装置のうち少なくとも何れか1つのサーバ装置との間でセッションが既に切断されていることを条件に、前記複数のサーバ装置のうちで前記少なくとも何れか1つのサーバ装置とは異なるそれぞれのサーバ装置について、当該サーバ装置に対応する前記切断リクエストを前記第2の記憶装置から読み出して当該サーバ装置に送信することで、当該サーバ装置と前記クライアント装置との間のセッションを切断する、請求項1に記載のシステム。
  5. 前記クライアント装置から受信したリクエストを、前記複数のサーバ装置の何れかに対し選択的に転送する、リバース・プロキシ・サーバ・システムであり、
    前記クライアント装置との間で既にセッションが確立された少なくとも1つのサーバ装置のそれぞれについて、当該サーバ装置と前記クライアント装置との間のセッションを識別するセッションIDを記憶している第3の記憶装置を更に備え、
    前記転送部は、前記受信部が受信したリクエストに基づいて、当該リクエストを転送するべきサーバ装置を判別し、判別した当該サーバ装置に対応するセッションIDを前記第3の記憶装置から読み出して、読み出した当該セッションIDを当該リクエストに設定して当該サーバ装置に転送する、
    請求項1に記載のシステム。
  6. 前記クライアント装置との間でまだセッションが確立されていないサーバ装置との間で新たにセッションが確立されたことに応じて、当該セッションを識別するセッションIDを当該サーバ装置に対応付けて前記第3の記憶装置に格納するID管理部、を更に備える請求項5に記載のシステム。
  7. 前記判断部は、前記第3の記憶装置を走査して、前記第3の記憶装置にセッションIDが記憶された少なくとも1つのサーバ装置を選択し、選択した当該少なくとも1つのサーバ装置のそれぞれと前記クライアント装置との間のセッションが既に切断されているかどうかを判断し、
    前記切断部は、選択した当該少なくとも1つのサーバ装置のうち少なくとも何れか1つのサーバ装置と前記クライアント装置との間でセッションが既に切断されていることを条件に、選択した当該少なくとも1つのサーバ装置のうち既にセッションが切断された当該サーバ装置を除く他のサーバ装置のそれぞれと前記クライアント装置との間のセッションを切断する、請求項5に記載のシステム。
  8. 前記判断部は、前記クライアント装置から受信する何れかのサーバ装置宛のリクエストに基づいて、前記クライアント装置と前記複数のサーバ装置との間で既に確立している全てのセッションを切断するかどうかを判断し、
    前記切断部は、既に確立している全てのセッションを切断すると判断した場合に、前記クライアント装置と、前記クライアント装置との間で既にセッションが確立されている複数のサーバ装置との間のセッションを切断する、請求項1に記載のシステム。
  9. クライアント装置と複数のサーバ装置との間のセッションを管理するシステムであって、
    前記クライアント装置から受信する何れかのサーバ装置宛のリクエストに基づいて、前記クライアント装置と前記複数のサーバ装置との間で既に確立している全てのセッションを切断するかどうかを判断する判断部と、
    既に確立している全てのセッションを切断すると前記判断部が判断した場合に、前記クライアント装置と、前記クライアント装置との間で既にセッションが確立されている1または複数のサーバ装置との間のセッションを切断する切断部と
    を備えるシステム。
  10. 前記複数のサーバ装置のそれぞれは、リクエストを受信しない期間が当該サーバ装置に対応して予め定められたタイムアウト期間を超えたことを条件に、当該サーバ装置と前記クライアント装置との間のセッションを切断し、
    前記クライアント装置との間で既にセッションの確立された前記1つまたは複数のサーバ装置のそれぞれに対し、当該サーバ装置に対応して定められたタイムアウト期間よりも短い間隔でリクエストを送信することで、セッションを維持する維持部、を更に備える、
    請求項9に記載のシステム。
  11. 前記判断部は、前記クライアント装置から、前記複数のサーバ装置のうち何れのサーバ装置に対しても、予め定められたタイムアウト期間内にリクエストが送信されないことを条件に、既に確立している全てのセッションを切断すると判断する、請求項9に記載のシステム。
  12. 前記判断部は、既に確立されている全てのセッションを切断する指示を、前記クライアント装置から受けたことを条件に、既に確立している全てのセッションを切断すると判断する、請求項9に記載のシステム。
  13. クライアント装置と複数のサーバ装置との間のセッションを管理する方法であって、
    前記クライアント装置から前記複数のサーバ装置のそれぞれに対するリクエストを、前記複数のサーバ装置のそれぞれに代わって受信するステップと、
    前記クライアント装置から前記複数のサーバ装置のうち何れかのサーバ装置に対するリクエストの受信に応じて、前記クライアント装置と前記複数のサーバ装置のそれぞれとの間で確立されたセッションが維持されているかどうかを判断するステップと、
    前記クライアント装置と前記複数のサーバ装置のうち少なくとも何れか1つのサーバ装置との間でセッションが既に切断されていることを条件に、前記クライアント装置と前記複数のサーバ装置のうち前記少なくとも何れか1つのサーバ装置とは異なるそれぞれのサーバ装置との間のセッションを切断するステップと、
    前記クライアント装置と全ての前記複数のサーバ装置との間のセッションが維持されていることを条件に、受信した前記リクエストを当該リクエストの宛先のサーバ装置に転送するステップと
    を備える方法。
  14. 前記判断するステップにおいては、前記クライアント装置から受信する何れかのサーバ装置宛のリクエストに基づいて、前記クライアント装置と前記複数のサーバ装置との間で既に確立している全てのセッションを切断するかどうかを判断し、
    前記切断するステップにおいては、既に確立している全てのセッションを切断すると判断した場合に、前記クライアント装置と、前記クライアント装置との間で既にセッションが確立されている複数のサーバ装置との間のセッションを切断する、請求項13に記載の方法。
  15. クライアント装置と複数のサーバ装置との間のセッションを管理する方法であって、
    前記クライアント装置から受信する何れかのサーバ装置宛のリクエストに基づいて、前記クライアント装置と前記複数のサーバ装置との間で既に確立している全てのセッションを切断するかどうかを判断するステップと、
    既に確立している全てのセッションを切断すると当該判断するステップにおいて判断された場合に、前記クライアント装置と、前記クライアント装置との間で既にセッションが確立されている1または複数のサーバ装置との間のセッションを切断するステップと
    を備える方法。
  16. クライアント装置と複数のサーバ装置との間のセッションを管理するシステムとして、コンピュータを機能させるプログラムであって、
    前記コンピュータを、
    前記クライアント装置から前記複数のサーバ装置のそれぞれに対するリクエストを、前記複数のサーバ装置のそれぞれに代わって受信する受信部と、
    前記クライアント装置から前記複数のサーバ装置のうちの何れかのサーバ装置に対するリクエストの受信に応じて、前記クライアント装置と前記複数のサーバ装置のそれぞれとの間で確立されたセッションが維持されているかどうかを判断する判断部と、
    前記クライアント装置と少なくとも前記複数のサーバ装置のうちの何れか1つのサーバ装置との間でセッションが既に切断されていることを条件に、前記クライアント装置と前記複数のサーバ装置のうち前記少なくとも何れか1つのサーバ装置とは異なるそれぞれのサーバ装置との間のセッションを切断する切断部と、
    前記クライアント装置と全ての前記複数のサーバ装置との間のセッションが維持されていることを条件に、受信した前記リクエストを当該リクエストの宛先のサーバ装置に転送する転送部
    として機能させるプログラム。
  17. 前記判断部は、前記クライアント装置から受信する何れかのサーバ装置宛のリクエストに基づいて、前記クライアント装置と前記複数のサーバ装置との間で既に確立している全てのセッションを切断するかどうかを判断し、
    前記切断部は、既に確立している全てのセッションを切断すると判断した場合に、前記クライアント装置と、前記クライアント装置との間で既にセッションが確立されている複数のサーバ装置との間のセッションを切断する、請求項16に記載のプログラム。
  18. クライアント装置と複数のサーバ装置との間のセッションを管理するシステムとして、コンピュータを機能させるプログラムであって、
    前記コンピュータを、
    前記クライアント装置から受信する何れかのサーバ装置宛のリクエストに基づいて、前記クライアント装置と前記複数のサーバ装置との間で既に確立している全てのセッションを切断するかどうかを判断する判断部と、
    既に確立している全てのセッションを切断すると前記判断部が判断した場合に、前記クライアント装置と、前記クライアント装置との間で既にセッションが確立されている1または複数のサーバ装置との間のセッションを切断する切断部
    として機能させるプログラム。
JP2007292974A 2007-11-12 2007-11-12 セッションを管理する技術 Active JP5159261B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007292974A JP5159261B2 (ja) 2007-11-12 2007-11-12 セッションを管理する技術
CN200810166287XA CN101436961B (zh) 2007-11-12 2008-09-25 会话管理系统和方法
US12/266,223 US8195808B2 (en) 2007-11-12 2008-11-06 Session management technique
US13/461,648 US9055054B2 (en) 2007-11-12 2012-05-01 Session management technique
US14/583,782 US10097532B2 (en) 2007-11-12 2014-12-29 Session management technique

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007292974A JP5159261B2 (ja) 2007-11-12 2007-11-12 セッションを管理する技術

Publications (2)

Publication Number Publication Date
JP2009122734A JP2009122734A (ja) 2009-06-04
JP5159261B2 true JP5159261B2 (ja) 2013-03-06

Family

ID=40711193

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007292974A Active JP5159261B2 (ja) 2007-11-12 2007-11-12 セッションを管理する技術

Country Status (3)

Country Link
US (3) US8195808B2 (ja)
JP (1) JP5159261B2 (ja)
CN (1) CN101436961B (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9755833B2 (en) * 2008-12-03 2017-09-05 Nec Corporation Identification information management system, method of generating and managing identification information, terminal, and generation and management programs
JP5533300B2 (ja) * 2010-06-10 2014-06-25 日本電気株式会社 ルーティング管理システム、その処理方法及びプログラム
JP5418681B2 (ja) * 2010-08-06 2014-02-19 富士通株式会社 仲介処理方法、仲介装置及びシステム
US9965613B2 (en) * 2010-12-03 2018-05-08 Salesforce.Com, Inc. Method and system for user session discovery
US8984616B2 (en) * 2010-12-08 2015-03-17 International Business Machines Corporation Efficient routing for reverse proxies and content-based routers
JP2013008284A (ja) * 2011-06-27 2013-01-10 Canon Inc 画像処理装置及びその制御方法、並びにプログラム
JP5617108B2 (ja) * 2011-07-14 2014-11-05 岩▲崎▼ 哲夫 静的nat形成装置、リバースプロキシサーバ及び仮想接続制御装置
US20140359741A1 (en) * 2011-12-02 2014-12-04 Entersekt International Limited Mutually Authenticated Communication
JP2013125285A (ja) * 2011-12-13 2013-06-24 Nomura Research Institute Ltd 情報処理装置および情報処理方法
US20130339532A1 (en) * 2012-06-18 2013-12-19 Richard Nelson System and method for cookie-based browser identification and tracking
WO2015006903A1 (zh) * 2013-07-15 2015-01-22 上海海微信息科技有限公司 数据处理系统、中心装置以及程序
US20170317826A1 (en) * 2014-11-14 2017-11-02 Mitsubishi Electric Corporation Server device, client device, computer readable medium, session managing method, and client server system
CN106487774B (zh) * 2015-09-01 2019-06-25 阿里巴巴集团控股有限公司 一种云主机服务权限控制方法、装置和系统
US10686884B2 (en) 2017-07-19 2020-06-16 Citrix Systems, Inc. Method for managing sessions using web sockets
CN109544195B (zh) * 2018-12-24 2024-05-28 联想(北京)有限公司 一种信息处理方法和电子设备
US11165586B1 (en) * 2020-10-30 2021-11-02 Capital One Services, Llc Call center web-based authentication using a contactless card
CN113676373B (zh) * 2021-08-12 2022-08-19 深圳追一科技有限公司 会话测试方法、装置、计算机设备和存储介质
CN115733884B (zh) * 2021-08-25 2023-10-24 荣耀终端有限公司 请求的处理方法及相关装置

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2167099T3 (es) * 1997-07-25 2002-05-01 Siemens Ag Procedimiento para la representacion sincronizada de contenidos de la red.
JP3733218B2 (ja) * 1997-09-30 2006-01-11 キヤノン株式会社 中継装置及びその制御方法及び記憶媒体
JP3569122B2 (ja) * 1998-01-22 2004-09-22 富士通株式会社 セッション管理システム、サービス提供サーバ、セッション管理サーバ、セッション管理方法及び記録媒体
US6807529B2 (en) * 2002-02-27 2004-10-19 Motorola, Inc. System and method for concurrent multimodal communication
JP4179535B2 (ja) * 2002-09-03 2008-11-12 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム
US7793342B1 (en) * 2002-10-15 2010-09-07 Novell, Inc. Single sign-on with basic authentication for a transparent proxy
US20040205068A1 (en) * 2002-11-05 2004-10-14 Everypath, Inc. Unified platform for building and operating connected and disconnected mobile applications
US7219154B2 (en) * 2002-12-31 2007-05-15 International Business Machines Corporation Method and system for consolidated sign-off in a heterogeneous federated environment
JP4487490B2 (ja) * 2003-03-10 2010-06-23 ソニー株式会社 情報処理装置、およびアクセス制御処理方法、情報処理方法、並びにコンピュータ・プログラム
JP4467256B2 (ja) 2003-06-19 2010-05-26 富士通株式会社 代理認証プログラム、代理認証方法、および代理認証装置
US20050251855A1 (en) * 2004-05-04 2005-11-10 Hob Gmbh & Co. Kg Client-server-communication system
US20060026286A1 (en) * 2004-07-06 2006-02-02 Oracle International Corporation System and method for managing user session meta-data in a reverse proxy
JP2006031064A (ja) * 2004-07-12 2006-02-02 Hitachi Ltd セッション管理システム及び管理方法
US9112831B2 (en) * 2004-07-28 2015-08-18 International Business Machines Corporation Scalable infrastructure for handling light weight message protocols
GB0419479D0 (en) * 2004-09-02 2004-10-06 Cryptomathic Ltd Data certification methods and apparatus
US8613048B2 (en) * 2004-09-30 2013-12-17 Citrix Systems, Inc. Method and apparatus for providing authorized remote access to application sessions
US7562382B2 (en) * 2004-12-16 2009-07-14 International Business Machines Corporation Specializing support for a federation relationship
US20070067638A1 (en) * 2005-09-22 2007-03-22 Roland Haibl Method of Session Consolidation
JP5037806B2 (ja) 2005-10-14 2012-10-03 キヤノン株式会社 情報提供装置及びその制御方法及びそのプログラム及び情報提供システム
US20070124345A1 (en) * 2005-11-30 2007-05-31 Heinz Kathy K Library backup
US8024439B2 (en) * 2006-03-17 2011-09-20 Microsoft Corporation Server session management application program interface and schema
US8996857B1 (en) * 2006-06-05 2015-03-31 Thomson Financial Llc Single sign-on method in multi-application framework
JP2008015786A (ja) * 2006-07-06 2008-01-24 Hitachi Ltd アクセス制御システム及びアクセス制御サーバ
FR2908880B1 (fr) * 2006-11-21 2009-01-16 Centre Nat Rech Scient Dispositif de detection d'interferences monolithique integre
US8990911B2 (en) * 2008-03-30 2015-03-24 Emc Corporation System and method for single sign-on to resources across a network

Also Published As

Publication number Publication date
CN101436961A (zh) 2009-05-20
US20090150485A1 (en) 2009-06-11
US9055054B2 (en) 2015-06-09
CN101436961B (zh) 2012-07-11
US8195808B2 (en) 2012-06-05
JP2009122734A (ja) 2009-06-04
US20120278491A1 (en) 2012-11-01
US20150121502A1 (en) 2015-04-30
US10097532B2 (en) 2018-10-09

Similar Documents

Publication Publication Date Title
JP5159261B2 (ja) セッションを管理する技術
CA2546627C (en) Dynamic timeout in a client-server system
US6347339B1 (en) Detecting an active network node using a login attempt
JP5882353B2 (ja) ファイルシステムセッションにおけるマルチコネクションのための方法及びシステム
EP1682994B1 (en) Adaptive load balancing
US7747723B2 (en) Communication system and communication management method
WO2006074023A2 (en) Scalable distributed storage and delivery
US20060221815A1 (en) Failure-monitoring program and load-balancing device
JP6279938B2 (ja) 接続管理装置、通信システム、接続管理方法およびプログラム
JPH07117929B2 (ja) 無接続セッション指向プロトコルの第1メッセージの生成システム及び方法
US20090077218A1 (en) Software Method And System For Controlling And Observing Computer Networking Devices
JP4413806B2 (ja) 障害切り分け方法、障害切り分け機能を有する通信装置及びプログラム
CN111490997B (zh) 任务处理方法、代理系统、服务系统和电子设备
CN110401952B (zh) 一种认证方法及相关设备
US7562137B2 (en) Method for validating a remote device
JP6982246B2 (ja) 通信装置、通信システム及び通信方法
CN117857610A (zh) 数据通信方法和装置、计算机可读存储介质、电子设备
KR20230034078A (ko) 자가 복구 기능 및 연동 기능을 제어하는 클라우드 엣지 플랫폼
JP2012227704A (ja) 伝送装置、伝送制御方法及び伝送制御プログラム
US20090025014A1 (en) Data transfer method and system
JP2010004449A (ja) 通信システム及びクライアント装置及びサーバ装置
JP2016133928A (ja) 情報処理システム、情報処理装置、情報処理方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100723

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120627

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120710

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120723

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: 20121127

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121211

R150 Certificate of patent or registration of utility model

Ref document number: 5159261

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151221

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250