説明

セッション管理方法、それに用いられるサーバ、セッション管理プログラム、プログラムを記録した記録媒体

【課題】アプリケーションにおけるクライアントの利便性を向上させる。
【解決手段】サーバ100が、クライアントからのセッション要求に基づき、セッションの情報を管理するセッション情報オブジェクト122、およびクライアントの送信データを管理するデータ情報オブジェクト123を記憶部120上に生成し、各オブジェクトを一意に識別する識別子と、記憶部120上の有効期間を管理する情報を各オブジェクトに付与し、有効期間を超過したオブジェクトを無効化する。サーバ100とクライアントとの間で送受信される情報は各識別子の情報を含み、サーバ100はクライアントから受信した識別子に対応するオブジェクトが有効か否かを判別する。セッション情報オブジェクト122が無効、かつデータ情報オブジェクト123が有効であった場合には、サーバ100はセッション情報オブジェクト122を新たに生成又は更新する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションにおけるセッション管理の技術に関する。
【背景技術】
【0002】
従来、Webサーバ(以下、「サーバ」と適宜記載)の提供するWebアプリケーションを用いるWebクライアント(以下、「クライアント」と適宜記載)は、有線LAN(Local Area Network)に接続されたデスクトップPC(Personal Computer)が主であった。しかし近年では、ノートPCや携帯電話等のモバイル端末の普及により、これらをクライアントとして、無線LANや携帯電話網等を介してWebアプリケーションを利用する機会が増加している。
【0003】
サーバおよびクライアントは通常、HTTP(HyperText Transfer Protocol)を用いて通信する。その場合、例えばオンラインショッピングサイト等に代表されるように、クライアントは複数のWebページに対してページ要求(リクエスト)を行う。
このHTTPは、ページ要求に対して応答を返すだけのステートレス(stateless)なプロトコルであるため、サーバ側では、クライアントのページ要求毎に、送信してきたクライアントの識別と、クライアントが送信してきたデータの保持とを行う必要がある。そのため、サーバは、識別子を利用してクライアントを識別し、セッション中にクライアントから送信されたデータをメモリ上で保持するというセッション管理機能を持ち、それによってクライアントを識別したデータ保持を行っている。
従来のWebアプリケーションにおけるセッション管理の処理の流れを、図10にシーケンス図で示す。なお、公知のセッション管理機能の例としては、マイクロソフト社のASP(Active Server Pages)、サン・マイクロシステムズ社のJSP(Java(登録商標) Server Pages)やサーブレット等で提供される機能が挙げられる。
【0004】
従来のセッション管理では、サーバは、自身のWebアプリケーションにログインするクライアントによるログインページ要求(リクエスト)を受信したら、ログインのためのページをクライアントに送信する。その後、サーバはクライアントから認証情報を伴うページ要求を受信したら、クライアントからの認証情報を検証する。そして、メモリ上にセッション管理用のオブジェクト(セッション・データ情報オブジェクト)を生成し、生成したオブジェクトに対応する識別子であるIDを付与し、付与したIDをレスポンスメッセージのヘッダ部に付加して、要求されたページである「HTML1」をクライアントに送信する。
クライアントは、受信したレスポンスメッセージに含まれる「HTML1」に基づいてブラウザの画面に表示されたフォームに、データを入力して、サーバに次のページ要求を送信する。その際、サーバへのページ要求には、レスポンスメッセージのヘッダ部に付加されていたIDが付加される。
【0005】
サーバは、クライアントから受信したページ要求に含まれるIDと、自身のメモリ上のオブジェクトに付与されているIDとを照合することで、クライアントを識別し、有効期間内のオブジェクトを取得し、更新日時を更新する。また、クライアントから送信されてきたデータを、IDに対応するオブジェクトに格納して、データを保持する。データを格納した後、サーバはレスポンスメッセージのヘッダ部にIDを付加して、要求されたページである「HTML2」をクライアントに送信する。
【0006】
従来のセッション管理では、セッションの有効期間は、サーバのメモリ上でデータが格納されるオブジェクトの有効期間と同じとなっている。例えば、図10では、セッションの有効期間を、例として5分に設定している。
この図10の中程において、サーバが「HTML2」をクライアントに送信(S1001)した後、クライアントがページ要求を6分中断(未操作時間6分間)する(S1002)と、最後にオブジェクトが取得された時刻(更新日時)の5分後には当該オブジェクトの有効期間を超過するため、サーバは、メモリ上の当該オブジェクトを無効化する(S1003)。これにより、クライアントのセッションは終了する(セッションタイムアウト)。オブジェクトが無効化された後は、サーバは、当該オブジェクトが保持するデータを取得できない。つまり、セッションタイムアウトと、クライアントが送信したデータの消失とは同等となっているため、セッションタイムアウト後に、クライアントがページ要求を再開した場合(S1004)には、クライアントは再度ログインし直して改めて「HTML1」のフォームに入力し、データの送信を行わなければならない(S1005)。
【0007】
特許文献1は、クライアントにおける利用者の初回ページ要求の後、利用者の操作とは無関係に、一定間隔でページ要求の送受信を繰り返すことでセッションを存続させるようにした技術を開示している。
特許文献2は、セッションを識別するためのセッションIDを作成し、そのセッションIDを含むCookie作成要求メッセージをクライアントへ送信する。それにより、セッションIDを用いてクライアントを識別する技術を開示している。
【特許文献1】特開2003−233585号公報(図5)
【特許文献2】特開2005−10913号公報(図1)
【発明の開示】
【発明が解決しようとする課題】
【0008】
従来のセッション管理機能では、IDが盗聴されたときに生じるセッションハイジャック等のセキュリティリスク低減や、サーバのメモリリソース解放のために、セッションの有効期間は数分間と短く設定されている。
【0009】
特許文献1に記載の技術では、クライアントのブラウザが終了されたり、移動等によってページ要求の送受信が行えない状態になったりした場合には、セッションの有効期間が過ぎれば、サーバに送信したデータは無効化されてしまう。その場合、クライアントは、再度入力フォームにデータを入力しなおして、サーバに送信する必要が生じる。
また、特許文献2に記載の技術では、セッションの有効期間とクライアントの送信データとが1つのオブジェクトで管理されている。この場合、移動等によりクライアントのページ要求がたびたび中断するモバイル環境のように、セッションタイムアウトが頻繁に起こりうる環境では、セッションタイムアウトの度に、サーバのデータが失われてしまうので、クライアントはその都度、入力フォームのデータを入力しなおして、サーバに送信しなければならない。
【0010】
このようにセッションタイムアウトが度々起こりうる環境では、セッション中にクライアントがサーバに送信したデータは、セッションタイムアウトの度に失われてしまう。そのためクライアントは、その都度入力フォームのデータを送信しなおす必要が生じており、クライアントから見たWebアプリケーションの利便性は、高いものとはいえなかった。
この課題を解決するために、セッションの有効期間を無期限に長くする方法も考えられるが、この方法では、メモリリソースを無期限に浪費することに加え、Webアプリケーションのセキュリティリスクも高まることから、有効ではない。
【0011】
そこで、本発明は、前記問題に鑑み、サーバとクライアントとが通信して実行されるアプリケーションにおいて、セキュリティ性を保ちながら、クライアントの利便性を向上させることを課題とする。
【課題を解決するための手段】
【0012】
前記課題を解決するため、本発明による解決手段の一つは、サーバとクライアントとが通信して実行されるアプリケーションにおいて、サーバが、クライアントからのセッション要求に基づき、セッションの情報を管理する第一の情報と、クライアントからの受信データを管理する第二の情報とを記憶手段上に生成し、それぞれを一意に識別する識別子(第一・第二の識別子)と、記憶手段上での有効期間を管理する情報とを付与する。
サーバは、第一の情報および第二の情報に含まれる有効期間を管理する情報を所定の間隔で検証し、有効期間外となったものを取得不可能とすることで無効化する。
サーバとクライアントとの送受信は、各識別子が付加された情報を含む。サーバは、クライアントから受信した識別子と照合することで、有効な第一の情報または第二の情報を取得し、クライアントを識別する。第一の情報が無効、かつ第二の情報が有効であった場合には、サーバは第一の情報を新たに生成または更新する。
なお、「オブジェクトが有効」とは、「オブジェクトがアプリケーションプログラムにおいて適正に使用可能」を示し、「オブジェクトが無効」とは、「オブジェクトがアプリケーションプログラムにおいて取得不可能(使用不可)」を示す。
【0013】
これにより、サーバは、第二の情報に保持されているデータを継続して利用し、セッションタイムアウト後でもクライアントが要求した情報を送信できる。その結果、セッションタイムアウトの度に、クライアントが送信したデータを再度入力しなおす必要がなくなり、利便性が向上される。
【0014】
さらに、第一の情報が無効、かつ第二の情報が有効であった場合に、第一の情報を新たに生成または更新する前に、サーバがクライアントの認証を行うことによって、2つの識別子が盗聴されたときの、セッションハイジャック等の不正アクセスに対するセキュリティリスクを低減できる。
【発明の効果】
【0015】
本発明によれば、サーバとクライアントとが通信して実行されるアプリケーションにおいて、セキュリティ性を保ちながら、クライアントの利便性を向上させることができる。
【発明を実施するための最良の形態】
【0016】
本発明を実施するための最良の形態(以下「実施形態」とする)を詳細に説明する。
本実施形態の説明では、サン・マイクロシステムズ社のサーブレットを使用して実装した、ショッピングサイトのWebアプリケーションを例として用いる。サーブレットでは、セッションの有効期間の管理とデータ保持を行うオブジェクトは、Java(登録商標)言語で実装されたクラスのオブジェクトとして実現される。
【0017】
(第1実施形態)
図1は、本発明の実施形態におけるハードウェアおよびネットワークの構成例を示す図である。
本実施形態では、一般的なコンピュータであるクライアント200のブラウザにWebアプリケーションを提供するサーバ100に対し、クライアント200が、ネットワーク300を介してページ要求(リクエスト)する。そして、ページ要求処理の途中に、クライアント200が相当時間、サーバ100との通信を行わず(例えば移動等)、ページ要求が中断された後、同じクライアント200がクライアント200Aとして、サーバ100にページ要求を再開する場合を想定する。なお、クライアント200は、ノートPCや携帯端末等でもよい。
【0018】
図2は、本実施形態において、図1におけるサーバの機能を示すブロック図である。適宜、図1を参照しつつ、図2について説明する。
サーバ100は、送受信部110、記憶部(記憶手段)120、制御部150から構成される。
送受信部110は、例えば通信インタフェース等から構成され、クライアント200(図1参照)からネットワーク300(図1参照)を介して送信されてきた情報を取得して制御部150へ出力したり、制御部150からの情報を取得してネットワーク300を介してクライアント200へ情報を送信したりする処理を行う。
【0019】
記憶部120は、演算処理に使用される一時的な記憶領域であるRAM(Random Access Memory)等のメモリと、HDD(Hard Disk Drive)等の補助記憶領域とを備える。
メモリには、オブジェクトの有効期間を格納する有効期間情報121と、クライアント200のセッション(ページ)要求に応じて生成されるオブジェクトとして、セッション情報オブジェクト(第一の情報)122およびデータ情報オブジェクト(第二の情報)123とを備える。
セッション情報オブジェクト122は、クライアント200とのセッションの情報を管理するオブジェクトである。
データ情報オブジェクト123は、クライアント200から送信されてきたデータを管理するオブジェクトである。
【0020】
補助記憶領域には、図示しないが、Webアプリケーションプログラム、セッション管理プログラム、制御部150の処理結果等が格納される。本実施形態におけるセッション管理プログラムは、Webアプリケーションプログラム起動に伴い起動されるものとし、メモリに読み込まれ、制御部150が機能することによってセッション管理プログラムが実行される。
【0021】
本実施形態では、サーバ100のWebアプリケーションプログラムの起動時に、セッションおよびデータのメモリ上での有効期間を、サーバ100で予め設定する。このとき、セッションの有効期間とは、当該のセッションを管理するオブジェクト(セッション情報オブジェクト122)のメモリ上での有効期間であり、この期間を超過すると当該オブジェクトは無効化される。また、データの有効期間とは、クライアントから送信されたデータを管理するオブジェクト(データ情報オブジェクト123)がメモリ上で保持される期間であり、この期間を超過すると当該オブジェクトは無効化される。
有効期間として設定された情報は、セッション管理プログラムと共にメモリに読み込まれ、有効期間情報121として用いられる。
【0022】
図3は、有効期間情報に格納される情報の例を示す図である。適宜、図2を参照しつつ、図3について説明する。有効期間情報121は、セッション情報オブジェクト122(図2参照)の有効期間と、データ情報オブジェクト123(図2参照)の有効期間との情報が格納される。本実施形態では、例として、セッション情報オブジェクト122の有効期間を1分、データ情報オブジェクト123の有効期間(保持期間)を10分として説明する。
【0023】
図4は、オブジェクトを模式的に示す図である。適宜、図1,図2を参照しつつ、図4について説明する。
図4(a)は、メモリ上有効なセッション情報オブジェクトの集合を表形式で示した図である。セッション情報オブジェクト122は、セッションID、生成日時、更新日時の情報が格納される。このセッション情報オブジェクト122は、クライアント200のセッション毎に生成され、クライアント200からのページ要求の度に、後記するクライアント識別部155によって更新日時が更新される。
【0024】
図4(b)は、メモリ上有効なデータ情報オブジェクトの集合を表形式で示した図である。データ情報オブジェクト123は、データID、データIDに対応するセッションID、生成日時、更新日時、クライアント200から送信されてきたデータが格納される。データ情報オブジェクト123は、セッション情報オブジェクト122と同様に、クライアント200のページ要求の度に、後記するクライアント識別部155によって更新日時が更新される。
なお、図4(a)のセッション情報オブジェクト122および図4(b)のデータ情報オブジェクト123は、どちらも、有効期間情報121に設定されている有効期間を超過してもその更新日時が更新されない場合には、当該のオブジェクトは、後記するオブジェクト管理部157によって無効化されることとなる。
【0025】
なお、本実施形態では、「セッション情報オブジェクトが(メモリ上)有効」とは、「セッション情報オブジェクトが当該Webアプリケーションプログラムにおいて適正に使用可能」な状態を示し、「セッション情報オブジェクトが(メモリ上)無効」とは、「セッション情報オブジェクトが当該Webアプリケーションプログラムにおいて使用不可」な状態を示す。また、「データ情報オブジェクトが(メモリ上)有効」とは、「データ情報オブジェクトが当該Webアプリケーションプログラムにおいて適正に使用可能」な状態を示し、「データ情報オブジェクトが(メモリ上)無効」とは、「データ情報オブジェクトが当該Webアプリケーションプログラムにおいて使用不可」な状態を示す。
ここで、使用不可とは、サーバ100が当該オブジェクトを取得できない状態または取得してもデータを活用できない状態にすることであり、例えば、メモリ上のオブジェクトに対してアクセス不可の設定や削除等を行うことが考えられる。
【0026】
図2に戻って、制御部150は、例えばCPU(Central Processing Unit)等から構成され、送受信部110を制御すると共に、送受信部110を介して取得した情報の認証やセッションの管理等を行うものであり、クライアント認証部151、オブジェクト生成部(情報生成部)152、ID生成部(識別子生成部)153、有効期間管理情報生成部154、クライアント識別部155、データ格納部156、オブジェクト管理部(情報管理部)157を備える。
【0027】
クライアント認証部151は、クライアント200から送信されてきた認証情報を検証し、認証を行う。
オブジェクト生成部152は、セッション情報生成部1521およびデータ情報生成部1522を備え、サーバ100の記憶部120(メモリ)上に、オブジェクトを生成する。具体的には、セッション情報生成部1521はクライアント200のセッションを管理するセッション情報オブジェクト122を生成し、データ情報生成部1522はクライアント200から送信されたデータを保持するデータ情報オブジェクト123を生成する。
【0028】
ID生成部153は、セッションID生成部1531およびデータID生成部1532を備え、オブジェクト生成部152が生成したそれぞれのオブジェクトに対し、一意に識別するID(識別子)を生成してそれぞれ付与する。具体的には、セッションID生成部1531は、セッション情報オブジェクト122にセッションID(第一の識別子)を付与し、データID生成部1532は、データ情報オブジェクト123にデータID(第二の識別子)を付与する。生成したIDは、Cookie等の技術を利用してクライアント200との間でやり取りされる。
【0029】
有効期間管理情報生成部154は、セッション有効期間管理情報生成部1541およびデータ有効期間管理情報生成部1542を備え、オブジェクト生成部152が生成したそれぞれのオブジェクトに対し、オブジェクトの有効期間を管理する情報を生成してそれぞれ付与する。具体的には、セッション有効期間管理情報生成部1541は、セッション情報オブジェクト122に対して、メモリ上に生成された日時、オブジェクトがサーバ100に取得されたときにクライアント識別部155によって更新される更新日時を付与し、データ有効期間管理情報生成部1542は、データ情報オブジェクト123に、メモリ上に生成された日時、オブジェクトがサーバ100に取得されたときにクライアント識別部155によって更新される更新日時を付与する。なお、オブジェクト生成時には、生成日時と同じ日時が更新日時に設定される。
【0030】
クライアント識別部155は、クライアント200から送信されたセッションIDおよびデータIDと、自身の記憶部120内のオブジェクトに付与されているセッションIDおよびデータIDとを比較し、対応付けられたオブジェクトを取得してクライアント200を識別する。さらに、クライアント識別部155は、取得したオブジェクトの更新日時を、オブジェクトがサーバ100に取得された最新の日時に更新する。
データ格納部156は、クライアント200から送信されたデータをデータ情報オブジェクト123に格納する。
【0031】
オブジェクト管理部157は、セッション情報管理部1571およびデータ情報管理部1572を備え、記憶部120のセッション情報オブジェクト122およびデータ情報オブジェクト123がメモリ上で有効か否かを、有効期間情報121の情報と各オブジェクトの更新日時とに基づいて管理する。
具体的には、例えば、有効期間情報121に、セッションの有効期間が1分と設定されている場合には、セッション情報管理部1571は、セッション情報オブジェクト122(図4(a)参照)が有効か否かを1分毎に検証する。有効か否かの検証は、有効期間の1分を超過する前にセッション情報オブジェクト122の更新日時が更新されているかを判別して行う。有効期間の1分を超過しても更新日時が更新されない場合には、当該のセッション情報オブジェクト122を無効化する。
また、データの有効期間が10分と設定されている場合には、データ情報管理部1572は、データ情報オブジェクト123(図4(b)参照)が有効か否かを10分毎に検証する。有効か否かの検証は、有効期間の10分を超過する前にセッション情報オブジェクト122の更新日時が更新されているかを判別して行う。有効期間の10分を超過しても更新日時が更新されない場合には、当該のデータ情報オブジェクト123を無効化する。
なお、無効となったオブジェクトの情報は、サーバ100が取得できないようになっていればよく、本実施形態では当該オブジェクトを削除する方法を例として説明する。
【0032】
図5は、本実施形態におけるクライアントとサーバとの間で送受信する情報と、それぞれの処理の流れとを示すシーケンス図である。図5に沿って、適宜図1〜図4を参照しながら説明する。なお、本実施形態では、前記の通り、クライアント200が、Webアプリケーションを提供するサーバ100に対し、ネットワーク300を介してページ要求する。そして、ページ要求処理の途中に移動等で相当時間、サーバ100との通信を行わずにページ要求を中断した後、クライアント200Aとしてサーバ100にページ要求を再開する場合を想定する。
【0033】
まず、クライアント200は、サーバ100に対して、ログインページを要求し(S31)、サーバ100はそれに基づいて、認証情報を要求するログインページを、送受信部110を介してクライアント200に送信する(S32)。このログインページは、例えば、ユーザ情報およびパスワード等の認証情報を入力させる画面等が考えられる。
【0034】
クライアント200は、受信したログインページに認証情報を入力し、サーバ100に送信する(S33)。これにより、クライアント200からサーバ100に対して、セッション要求として最初のページが要求される。
【0035】
サーバ100は、クライアント200から受信した認証情報を、クライアント認証部151により検証する(S34)。この検証の方法については、特に限定しないが、例えば、処理を許可する認証情報(ユーザ情報、パスワード等)を予め記憶部120に格納しておくことで、格納されている情報との照合により検証を行う方法が考えられる。
【0036】
検証の結果、認証された、つまりクライアント200からの認証情報が正当であると確認できた場合、サーバ100はオブジェクト生成部152により、記憶部120上に2つのオブジェクト(セッション情報オブジェクト122、データ情報オブジェクト123)を生成し、ID生成部153によりID(セッションID、データID)を生成してそれぞれのオブジェクトに付与する(S35)。また、有効期間管理情報生成部154により生成日時および更新日時をそれぞれのオブジェクトに付与する(図4(a),(b)参照)。
具体的には、オブジェクト生成部152のセッション情報生成部1521がセッション情報オブジェクト122を生成し、データ情報生成部1522がデータ情報オブジェクト123を生成する。なお、説明のため、ここで生成されるセッション情報オブジェクト122は(P1)とし、データ情報オブジェクト123は(D1)とする。
そして、セッションID生成部1531が、セッション情報オブジェクト122(P1)用にセッションIDを生成して、セッション情報オブジェクト122に付与する(「AE032」:図4(a)参照)。また、データID生成部1532が、データ情報オブジェクト123(D1)用にデータIDを生成して、データ情報オブジェクト123に付与する(「DB5847」:図4(b)参照)。なお、説明のため、セッション情報オブジェクト122(P1)に付与されたセッションIDを「ID1」とし、データ情報オブジェクト123(D1)に付与されたデータIDを「ID2」とし、図5にも示す。
データID生成部1532は、セッションIDとデータIDとを対応付けるために、データ情報オブジェクト123に、対応するセッションIDの情報を付与する(図4(b)参照)。
さらに、セッション有効期間管理情報生成部1541が、セッション情報オブジェクト122に生成日時および更新日時を付与する(図4(a)参照)。データ有効期間管理情報生成部1542は、データ情報オブジェクト123に生成日時および更新日時を付与する(図4(b)参照)。
【0037】
なお、ステップS34における検証の結果、認証されなかった場合には、サーバ100は、ステップS32の前に戻って、認証されなかったことを示すメッセージをクライアント200に送信してもよい。
【0038】
ステップS35において2つのオブジェクトを生成し、IDおよび有効期間の情報を付与したら、サーバ100は、レスポンスメッセージにセッションID(ID1)およびデータID(ID2)を付加し、送受信部110を介してクライアントに要求されたページを送信する(S36:HTML1送信)。「HTML1」は、例えば、商品選択画面等を表示するための情報である。
【0039】
図6は、本実施形態におけるクライアントとサーバとの間で送受信する情報の例を示す図である。
図6(a)は、ステップS36で、サーバからクライアントに送信する情報を例示する図である。ここでは、レスポンスメッセージのSet-Cookieフィールドに、2つのIDが付加されている。つまり、図6(a)における符号601にはセッションID(「AE032」)が付加されており、符号602にはデータID(「DB5847」)が付加されている。この2つのIDの付加された情報が、サーバ100からクライアント200に送信される。なお、このセッションIDとデータIDは、図4の情報と対応している。
【0040】
なお、ステップS35の、有効期間管理情報生成部154が各オブジェクトに生成日時および更新日時(有効期間を管理する情報)を付与する処理は、ステップS36の送信処理の後に行ってもよい。
【0041】
図5に戻って、ステップS37で、クライアント200は、サーバ100から送信されたレスポンスメッセージに含まれる「HTML1」をブラウザ上で画面表示する。そして、クライアント200は、表示された画面上のフォームに必要なデータ(例えば購入したい商品のコード等)を入力し、サーバ100に送信することで、次のページを要求する(S37)。
【0042】
図6(b)は、図5のステップS37で、クライアントからサーバに送信する情報を例示する図である。
図6(b)によれば、クライアント200からサーバ100に送信するリクエストメッセージのCookieフィールドに、符号603でセッションID、符号604でデータIDが付加される。これらのIDは、ステップS36において、サーバ100から受信したレスポンスメッセージに含まれていたセッションID(「AE032」:図6(a)符号601参照)と、データID(「DB5847」:図6(a)符号602参照)と同じものが付加されている。
また、符号605に示すメッセージデータ部に、クライアント200が選択したデータ(例えば、商品コード「book_001」)が付加されている。
【0043】
図5に戻って、サーバ100は、クライアント200からページ要求に相当する情報を受信したら、クライアント200から送信された情報に含まれる2つのID(ID1,ID2)と、自身の記憶部120内のオブジェクトに格納されているIDとを、クライアント識別部155により照合し、オブジェクトを取得する。さらに、取得したオブジェクトの更新日時を、オブジェクトがサーバ100に取得された時刻に、クライアント識別部155が更新する。
詳しく説明すると、クライアント識別部155は、クライアント200から送信されたID1(セッションID)およびID2(データID)に基づいて、記憶部120(メモリ)内のセッション情報オブジェクト122およびデータ情報オブジェクト123に格納されているそれぞれのIDと一致するオブジェクトを検索して照合する。そして、一致するオブジェクトが存在した場合には、当該オブジェクトを取得する。これにより、クライアント200がサーバに100に識別される。検索の結果、クライアント200から受信した2つのID(ID1,ID2)に対応するオブジェクトが共に有効(即ち、サーバがセッション情報オブジェクト122およびデータ情報オブジェクト123を取得可能)であった場合には、クライアント識別部155が、当該のセッション情報オブジェクト122およびデータ情報オブジェクト123内の更新日時を更新する(S38:ID照合、オブジェクト取得、更新)。
【0044】
そして、サーバ100は、データ格納部156により、データ情報オブジェクト123にデータ(商品コード「book_001」)を格納する(S39)。図4(b)の1行目のオブジェクトには、クライアント200からサーバ100へ送信されたデータ「book_001」(図6(b)の符号605)が、データとして保持されている。
【0045】
その後、サーバ100は、次ページとなる「HTML2」を生成し、クライアント200に送受信部110を介して送信する(S40:HTML2送信)。「HTML2」は例えば、購入予定の商品一覧を示し、数量変更や商品確定を行うページである。このとき送信するレスポンスメッセージには、ステップS36と同様に、セッションID(「AE032」)およびデータID(「DB5847」)が付加される。
【0046】
クライアント200は、サーバ100から送信された「HTML2」をブラウザ上で画面表示し、情報入力を促す(S41)。
クライアント200は、表示された画面上のフォーム(例えば、数量)の入力途中で、移動等によって2分間処理を中断する。
【0047】
サーバ100のオブジェクト管理部157は、2種類のオブジェクト(セッション情報オブジェクト122、データ情報オブジェクト123)がそれぞれ記憶部120(メモリ)上で有効であるかどうかを、オブジェクトに付与された更新日時と、有効期間情報121に格納されている情報とに基づいて定期的に(セッション情報オブジェクト122は1分、データ情報オブジェクト123は10分)検証し、有効期間を超過したオブジェクトを無効化する。
本実施形態では、セッションの有効期間を1分と設定しているため、サーバ100は、セッション情報オブジェクト122について、クライアント200からの最後のページ要求による更新から1分間、更新日時の更新が無かった場合には、オブジェクト管理部157のセッション情報管理部1571により、当該オブジェクトを無効化する。ここでは、セッション情報オブジェクト122(P1)を無効化する。それにより、セッションタイムアウトとなり、サーバ100は無効化したオブジェクトの情報を取得できなくなる。
【0048】
図7は、図4に例示した情報の、セッション情報オブジェクト122(P1)の有効期間終了に伴うセッションタイムアウト時の状態を模式的に示す図である。図7(a)はセッション情報オブジェクトの集合を表形式で示した図であり、図7(b)はデータ情報オブジェクトの集合を表形式で示した図である。
図7(a)によれば、セッションID「AE032」のオブジェクトが、有効期間終了に伴い無効化されたため、削除されている。なお、図7(b)では、データ情報オブジェクト123(D1)は有効期間内のため、無効化されていない。
【0049】
図5に戻って、クライアント200Aは、移動等の後、2分後にフォームへのデータ入力を完了して、入力したデータを含む、次のページ要求をサーバ100に送信する(S42)。なお、このとき、クライアント200Aは、ステップS37と同様に、2つのID(ID1,ID2)も付加して送信する。
【0050】
サーバ100は、クライアント200からページ要求を受信したら、クライアント200Aから送信された情報に含まれる2つのID(ID1,ID2)と、自身の記憶部120内のオブジェクトに付与されているIDとを、クライアント識別部155により照合する。
サーバ100では、有効期間終了に伴い、既にセッションはタイムアウトし、セッション情報オブジェクト122(P1)は無効化されている。そのため、まず、サーバ100は、クライアント200Aから受信したID1に対応するセッション情報オブジェクト122が取得できないことを判別する。そして、クライアント200Aから受信したID2に対応するデータIDを含むデータ情報オブジェクト123を検索し、このデータIDに対応するセッションIDと、クライアント200Aから受信したID1との照合により、データ情報オブジェクト123(D1)を取得し、クライアント200Aを識別する。
これによって、受信したID2に対応するデータ情報オブジェクト123(D1)は有効、ID1に対応するセッション情報オブジェクト122(P1)は無効(有効期間超過)ということが分かる。サーバ100のクライアント識別部155は、有効であるデータ情報オブジェクト123(D1)の更新日時を更新する(S43:ID照合、オブジェクト取得、更新)。
【0051】
サーバ100は、オブジェクト生成部152により、記憶部120上に新たなセッションの情報を管理するオブジェクトを生成し、ID生成部153によりセッションIDを付与する(S44)。具体的には、オブジェクト生成部152のセッション情報生成部1521がセッション情報オブジェクト122(P2)を生成する。そして、ID生成部153のセッションID生成部1531が、新たに生成されたセッション情報オブジェクト122(P2)用にセッションID(ID1´)を生成して、セッション情報オブジェクト122(P2)に付与する。これにより、サーバ100は、今後のクライアント200Aのセッション識別用に、新たに生成されたセッションID(ID1´)を使用する。また、サーバ100は、有効期間管理情報生成部154によって、生成日時と更新日時をセッション情報オブジェクト122(P2)に付与する。
【0052】
サーバ100のクライアント識別部155は、クライアント200Aから送信されてきた情報に含まれるデータ(例えば、数量)を、データ情報オブジェクト123(D1)のデータ内に、データ格納部156によって格納する(S45)。
【0053】
そして、サーバ100のクライアント識別部155は、データ情報オブジェクト123(D1)に格納されているセッションIDを、ステップS44で新たに生成したセッションIDに変更する(S46)。なお、ステップS45およびS46の処理は順序逆に行ってもよい。
【0054】
図8は、図4に例示した情報の、セッション終了時の状態を示す図である。図8(a)は、セッション情報オブジェクトの集合を表形式で示した図である。図8(b)は、データ情報オブジェクトの集合を表形式で示した図である。
図8(a)によれば、セッション情報オブジェクト122(P1)の有効期間終了後にクライアント200からページ要求を受信したことにより、新たにセッション情報オブジェクト122(P2)が生成されたことを示している。
図8(b)によれば、当該のデータ情報オブジェクト123(D1)のセッションIDが、新しく生成された「ZY999」に変更されている。また、符号801で示すように、ステップS45で格納された数量のデータが「book_001」の後に「3」として格納されている。
【0055】
図5に戻って、サーバ100は、次のページである「HTML3」を、送受信部110を介してクライアント200Aに送信する(S47:HTML3送信)。「HTML3」は、例えば、購入商品、数量、金額等を表示し、決済を行うページである。このとき送信するレスポンスメッセージには、新たに生成されたセッション情報オブジェクト122(P2)のセッションID(「ZY999」)と、それに対応するデータ情報オブジェクト123(D1)のデータID(「DB5847」)が付加される。
【0056】
図6(c)は、ステップS47で、サーバからクライアントに送信する情報(「HTML3」)の例を示す図である。
図6(c)によれば、サーバ100からクライアント200Aに送信するレスポンスメッセージ内の、Set-Cookieフィールドに付加される情報は、図6(a)と比較して符号606に、新しく生成されたセッションID(「ZY999」)が付加されている。換言すると、図6(a)では「AE032」と付加されていたセッションIDが、図6(c)では「ZY999」に変更されて付加されている。
【0057】
クライアント200Aは、サーバ100から送信された「HTML3」をブラウザ上で画面表示する(S48)。以降の処理は、ステップS37またはステップS41の処理と同様のため、説明を省略する。
【0058】
本実施形態では、データ情報オブジェクト123は、有効期間を10分と設定しているため、最後のページ要求による更新から10分間更新が無かった場合、サーバ100は、オブジェクト管理部157のデータ情報管理部1572により、データ情報オブジェクト123(D1)を無効にする。
【0059】
データ情報オブジェクト123(D1)が無効となった後に、クライアント200Aからページ要求を受信した場合、つまり、ステップS48におけるページ要求が、前回の更新から10分を超過した後に行われた場合には、受信したデータID(ID2)と一致する有効なデータ情報オブジェクト123は取得できない。また、受信したデータIDが不正なものである可能性も考えられる。そのため、データ情報オブジェクト123が無効、またはデータIDが不一致の場合には、サーバ100は、初回ページ要求(S32,S34〜S36)と同じ動作を行うことが望ましい。
【0060】
以上説明した本実施形態によれば、セッションを管理するオブジェクトと、データを管理するオブジェクトとの2つのオブジェクトを用いる。そして、セッションの有効期間を短くし、データの保持期間をWebアプリケーションの利便性維持に必要な最低限の時間として設定することで、セッションタイムアウト後に、クライアント200がサーバ100にページ要求を送信しても、ページ要求がデータ保持期間内であれば、保持されているデータを用いてクライアント200はページ要求処理を継続することができる。これにより、クライアント200に対するWebアプリケーションの利便性を向上することができる。
【0061】
また、セッションおよびデータの処理に伴うメモリリソースについても、それぞれ一定時間経過したことによって無効化される。ここで、無効化として当該オブジェクトを削除すると、メモリリソースの負荷が低減され、効率的な利用が可能となる。
【0062】
(第2実施形態)
図9は、第2実施形態におけるクライアントとサーバとの間で送受信する情報と、それぞれの処理の流れとを示すシーケンス図である。第2実施形態は、第1実施形態と比較して、ステップS43とS44との間に、認証処理が追加されたところ(図9の二重線囲み部分)が異なる。
図9に沿って、適宜図1〜図8を参照しながら説明する。なお、図9では、ステップS43までの処理は、第1実施形態と同様のため、重複図示および説明を適宜省略する。
【0063】
ステップS43で、サーバ100は、クライアント200Aから送信されてきた情報を受信したら、クライアント200Aから送信された情報に含まれる2つのID(ID1,ID2)と、自身の記憶部120内のオブジェクトに付与されているIDとを、クライアント識別部155により照合する。
第1実施形態で説明したとおり、ここでは、受信したID1に対応するセッション情報オブジェクト122(P1)は無効化されており、ID2に対応するデータ情報オブジェクト123(D1)は有効であることが分かる。サーバ100は、有効であったデータ情報オブジェクト123(D1)を取得してクライアントを識別し、更新日時を更新する。
【0064】
続いて、サーバ100は、クライアント200Aに対して再度認証情報の送信を要求するために、ログインページを送信する(S431)。
クライアント200Aは、受信したログインページに認証情報を入力し、サーバ100に送信する(S432)。これにより、クライアント200からサーバ100に対して、次のページが要求される。
【0065】
サーバ100は、クライアント200Aから受信した認証情報を、クライアント認証部151により検証する(S433)。
検証の結果、認証された、つまりクライアント200Aからの認証情報が正当であると確認できた場合、サーバ100は、ステップS44で、記憶部120上に、新たなセッションの有効期間を管理するセッション情報オブジェクト122(P2)をオブジェクト生成部152により生成する。以降の処理は、第1実施形態と同様である。
【0066】
なお、ステップS433における検証の結果、認証されなかった場合、ステップS431の前に戻って、認証されなかったことを示すメッセージをクライアント200Aに送信してもよい。
【0067】
サーバ100におけるステップS431,S433の処理は、第1実施形態のステップS32,S34と同様の処理であり、クライアント200AにおけるステップS432の処理は、第1実施形態のステップS33と同様の処理である。
【0068】
以上説明した第2実施形態によれば、セッションタイムアウト後に、クライアント200Aからページ要求がサーバ100に対して送信されてきた場合に、サーバ100がクライアント200Aの認証を行うことで、クライアント200Aの正当性を確認する。そして、クライアント200Aが認証された場合に、サーバ100は、新しいセッションの有効期間を管理するオブジェクト(セッション情報オブジェクト122)を生成する。
これにより、クライアント200とサーバ100との間で送受信される情報が盗聴された場合でも、セッションハイジャック等のセキュリティリスクを低減し、第1実施形態と比較してセキュリティ性を向上させることができる。なお、この第2実施形態によれば、ステップS431〜S433(図9参照)の処理は必要となるが、サーバ100においてステップS39,S45で格納したデータは無駄になることはない。つまり、セッション有効期間終了後であってもデータ有効期間内であれば、ステップS37およびS41,S42(図5参照)で入力されサーバ100に送信されたデータを、クライアント200Aが改めて入力し送信しなおす手間は不要となるので、クライアント200Aはサーバ100に送信したデータを引き続き利用することができ、利便性が向上する。
【0069】
なお、サーバ100は、前記したステップS32,S34〜S36,S38〜S40,S43〜S47,S431,S433を、一般的なコンピュータに実行させるセッション管理プログラムを実行することでも実現できる。このプログラムは、通信回線を介して配布することも可能であるし、CD−ROMや半導体チップ等の記録媒体に書き込んで配布することも可能である。プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでもよい。
【0070】
以上、本発明の好適な実施形態について一例を示したが、本発明は前記実施形態に限定されない。
例えば、本実施形態では、サーバにおいて、各オブジェクトの有効期間を有効期間情報として予め設定しておき、設定されたそれぞれの有効期間に基づいて、オブジェクト管理部がセッション情報オブジェクトおよびデータ情報オブジェクトの更新日時を検証することとしたが、これに限らず、セッション情報オブジェクトおよびデータ情報オブジェクトに有効期間を示す情報を備え、クライアントからのページ要求のたびに有効期間を更新することで、有効期間を超過したオブジェクトを無効化してもよい。
また、サーバとクライアントとの間で送受信するID(識別子)に、有効期間を示す情報を含ませる方法をとることも考えられる。その場合、サーバは、クライアントから送信されてきたIDに含まれる有効期間を示す情報を用いて、当該オブジェクトが有効期間内か否かを判別してもよい。
【0071】
本実施形態では、サーバは各オブジェクトの有効期間終了に伴う無効化の際は当該オブジェクトを削除することとして説明したが、これに限らず、セッション情報オブジェクトの無効化は、削除せずに、サーバが取得できない状態としておいてもよい。そして、データ情報オブジェクトを用いてIDが照合された場合には、セッション情報オブジェクトを、取得できない状態から更新し、IDも更新する等して、当該セッションを利用可能とすることとしてもよい。その他、例えばサーバを複数備える構成としてもよく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【0072】
【図1】本発明の実施形態におけるハードウェアおよびネットワークの構成例を示す図である。
【図2】図1におけるサーバの機能を示すブロック図である。
【図3】有効期間情報に格納される情報の例を示す図である。
【図4】オブジェクトを模式的に示す図である。図4(a)は、メモリ上有効なセッション情報オブジェクトの集合を表形式で示した図である。図4(b)は、メモリ上有効なデータ情報オブジェクトの集合を表形式で示した図である。
【図5】本実施形態におけるクライアントとサーバとの間で送受信する情報と、それぞれの処理の流れとを示すシーケンス図である。
【図6】本実施形態におけるクライアントとサーバとの間で送受信する情報の例を示す図である。図6(a)は、サーバからクライアントに送信する情報である。図6(b)は、クライアントからサーバに送信する情報である。図6(c)は、サーバからクライアントに送信する情報である。
【図7】図4に例示した情報の、セッション情報オブジェクトの有効期間終了に伴うセッションタイムアウト時の状態を模式的に示す図である。図7(a)は、セッション情報オブジェクトの集合を表形式で示した図である。図7(b)は、データ情報オブジェクトの集合を表形式で示した図である。
【図8】図4に例示した情報の、セッション終了時の状態を示す図である。図8(a)は、セッション情報オブジェクトの集合を表形式で示した図である。図8(b)は、データ情報オブジェクトの集合を表形式で示した図である。
【図9】第2実施形態のクライアントとサーバとの間で送受信する情報と、それぞれの処理の流れとを示すシーケンス図である。
【図10】従来のWebアプリケーションにおけるセッション管理の処理の流れを示すシーケンス図である。
【符号の説明】
【0073】
100 サーバ
110 送受信部
120 記憶部(記憶手段)
121 有効期間情報
122 セッション情報オブジェクト(第一の情報)
123 データ情報オブジェクト(第二の情報)
150 制御部
151 クライアント認証部
152 オブジェクト生成部(情報生成部)
1521 セッション情報生成部
1522 データ情報生成部
153 ID生成部(識別子生成部)
1531 セッションID生成部
1532 データID生成部
154 有効期間管理情報生成部
1541 セッション有効期間管理情報生成部
1542 データ有効期間管理情報生成部
155 クライアント識別部
156 データ格納部
157 オブジェクト管理部(情報管理部)
1571 セッション情報管理部
1572 データ情報管理部
200,200A クライアント
300 ネットワーク

【特許請求の範囲】
【請求項1】
サーバとクライアントとが通信して実行されるアプリケーションにおいて、前記サーバが、前記クライアントとのセッションを管理するセッション管理方法であって、
前記サーバは、
前記クライアントから受信したセッション要求に基づいて、当該クライアントとのセッションの情報を管理する第一の情報、および当該クライアントから受信したデータを管理する第二の情報を所定の記憶手段に生成し、
前記第一の情報には、当該第一の情報を一意に識別する第一の識別子を付与し、前記第二の情報には、当該第二の情報を一意に識別する第二の識別子、および当該第二の情報に対応する前記第一の情報の前記第一の識別子を付与し、
前記付与した前記第一の識別子および前記第二の識別子を、前記セッション要求のあったクライアントへ送信し、
前記第一の情報および前記第二の情報に対して、それぞれ有効期間を管理する情報を付与し、
前記第一の情報および前記第二の情報に含まれる有効期間を管理する情報を所定の間隔で検証して、有効期間外となった前記第一の情報または前記第二の情報を前記記憶手段から取得不可能にすることで当該第一の情報または当該第二の情報を無効とし、
前記クライアントから受信した情報に含まれる前記第一の識別子および前記第二の識別子に基づいて、前記記憶手段を参照して照合し、それぞれの識別子に対応する有効な前記第二の情報を少なくとも取得することで、前記クライアントを識別し、
前記受信した第一の識別子に対応する第一の情報が無効、かつ前記受信した第二の識別子に対応する第二の情報が有効であった場合に、前記第一の情報を新たに生成または更新し、
前記新たに生成または更新した第一の情報に対応する第一の識別子を新たに生成または更新して前記第一の情報に付与し、
前記新たに生成または更新した第一の情報に有効期間を管理する情報を付与し、
前記新たに生成または更新した第一の識別子を、対応する前記第二の識別子と共に、前記クライアントに送信する
ことを特徴とするセッション管理方法。
【請求項2】
前記サーバは、
前記受信した第一の識別子に対応する第一の情報が無効、かつ前記受信した第二の識別子に対応する第二の情報が有効であった場合に、前記クライアントに対して認証を行い、
前記認証が成功した場合に、前記第一の情報を新たに生成または更新し、
前記新たに生成または更新した第一の情報に対応する第一の識別子を新たに生成または更新して前記第一の情報に付与し、
前記新たに生成または更新した第一の情報に有効期間を管理する情報を付与し、
前記新たに生成または更新した第一の識別子を、対応する前記第二の識別子と共に、前記クライアントに送信する
ことを特徴とする請求項1に記載のセッション管理方法。
【請求項3】
サーバとクライアントとが通信して実行されるアプリケーションにおいて、前記クライアントとのセッションを管理する前記サーバであって、
前記クライアントから受信したセッション要求に基づいて、当該クライアントとのセッションの情報を管理する第一の情報、および当該クライアントから受信したデータを管理する第二の情報を所定の記憶手段に生成する情報生成部と、
前記第一の情報には、当該第一の情報を一意に識別する第一の識別子を付与し、前記第二の情報には、当該第二の情報を一意に識別する第二の識別子、および当該第二の情報に対応する前記第一の情報の前記第一の識別子を付与する識別子生成部と、
前記第一の情報および前記第二の情報に対して、それぞれ有効期間を管理する情報を付与する有効期間管理情報生成部と、
前記付与した前記第一の識別子および前記第二の識別子を、前記セッション要求のあったクライアントへ送信する送受信部と、
前記第一の情報および前記第二の情報に含まれる有効期間を管理する情報を所定の間隔で検証して、有効期間外となった前記第一の情報または前記第二の情報を前記記憶手段から取得不可能にすることで当該第一の情報または当該第二の情報を無効とする情報管理部と、
前記クライアントから受信した情報に含まれる前記第一の識別子および前記第二の識別子に基づいて、前記記憶手段を参照して照合し、それぞれの識別子に対応する有効な前記第二の情報を少なくとも取得することで、前記クライアントを識別するクライアント識別部とを有し、
前記受信した第一の識別子に対応する第一の情報が無効、かつ前記受信した第二の識別子に対応する第二の情報が有効であった場合に、前記情報生成部が前記第一の情報を新たに生成または更新し、
前記識別子生成部が、前記新たに生成または更新した第一の情報に対応する第一の識別子を新たに生成または更新して前記第一の情報に付与し、
前記有効期間管理情報生成部が、前記新たに生成または更新した第一の情報に有効期間を管理する情報を付与し、
前記送受信部が、前記新たに生成または更新した第一の識別子を、対応する前記第二の識別子と共に、前記クライアントに送信する機能
を有することを特徴とするサーバ。
【請求項4】
前記受信した第一の識別子に対応する第一の情報が無効、かつ前記受信した第二の識別子に対応する第二の情報が有効であった場合に、前記クライアントに対して認証を行うクライアント認証部を有し、
前記認証が成功した場合に、前記情報生成部が、前記第一の情報を新たに生成または更新し、
前記識別子生成部が、前記新たに生成または更新した第一の情報に対応する第一の識別子を新たに生成または更新して前記第一の情報に付与し、
前記有効期間管理情報生成部が、前記新たに生成または更新した第一の情報に有効期間を管理する情報を付与し、
前記送受信部が、前記新たに生成または更新した第一の識別子を、対応する前記第二の識別子と共に、前記クライアントに送信する機能
を有することを特徴とする請求項3に記載のサーバ。
【請求項5】
請求項1または請求項2に記載のセッション管理方法を、コンピュータに実行させる
ことを特徴とするセッション管理プログラム。
【請求項6】
請求項5に記載のセッション管理プログラムを記録した、コンピュータに読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2008−27202(P2008−27202A)
【公開日】平成20年2月7日(2008.2.7)
【国際特許分類】
【出願番号】特願2006−199265(P2006−199265)
【出願日】平成18年7月21日(2006.7.21)
【出願人】(000233538)株式会社 日立東日本ソリューションズ (53)
【Fターム(参考)】