説明

Webサーバシステムへのログイン制限方法

【課題】Webサーバシステムが高負荷となった際に、シングルサインオンによるアクセスに対しても適切にログイン制限を行うWebサーバシステムへのログイン制御方法を提供する。
【解決手段】トークン発行元Webサーバ100が定期的に負荷状況を確認し、新規にログイン可能なユーザ数を算出してトークンを発行し、シングルサインオンにより連携する1つ以上のトークン使用Webサーバ200に対して予め配布する第1ステップと、トークン使用Webサーバ200が、ユーザからのトークン発行元Webサーバ100へのシングルサインオンによるアクセス要求を処理する際に、使用可能な前記トークンがあるか否かを確認する第2ステップと、使用可能な前記トークンがある場合に前記トークンのうちの1つを使用してアクセス要求を処理する第3ステップと、使用可能な前記トークンがない場合にアクセス要求を拒否する第4ステップとを実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Webサーバシステムにおけるユーザのログインの制御技術に関し、特に、システムの負荷の状況に応じてユーザのログイン可能数を制限してアクセスの流量制限を行うWebサーバシステムへのログイン制限方法に適用して有効な技術に関するものである。
【背景技術】
【0002】
Webサーバシステムを構築する際には、各サーバやネットワーク、データベースなどのキャパシティプランニングを行い、ピーク時等においてシステムの負荷が高くなった場合であっても応答時間やTAT(Turn Around Time)、スループットなどにおいて所定のパフォーマンスを維持できるようにシステム設計が行われる。しかし、予想外の突発的なイベントによるアクセスの集中やシステム障害などにより、想定した以上にシステムが高負荷となり、応答時間の増加やエラーの発生など正常なサービスの提供ができなくなる場合も起こり得る。
【0003】
このような状況に対して通常は、システムの負荷の状況を常時監視し、負荷が増大した場合にはシステムの資源を増強したりすることが行われている。また、システムの負荷が正常なサービスの継続が困難となるような所定の閾値を超えたことを検知した際には、Webサーバに対する新たなユーザのログインを拒否するとともに、例えばWebサイトのトップ画面に「しばらく待ってから再度ログインして下さい」などと表示された閉塞画面を提示して混雑していることを通知し、不必要なアクセスが行われることを抑止することが行われている。
【0004】
さらに、例えば、特開2001−265693号公報(特許文献1)には、整理券発行機能を有し、Webサーバが混雑した場合に、混雑の度合いや待ち時間に関する情報をユーザに提供し、また、アクセス順序に応じてトラフィックの制御を行うことにより、利便性を向上させ、また、ユーザからのアクセスのリトライによるさらなる混雑状態の悪化を防ぐWebサーバシステムが開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001−265693号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
従来技術のWebサーバシステムでは、システムの負荷(各種ハードウェア資源の使用率やネットワーク負荷、ログインセッション数など)が、正常なサービスの継続が困難となるような所定の閾値を超えたことを検知した場合にログインを制限し、それ以降の不要なアクセスを抑止して流量制限を行うことが可能である。
【0007】
一方、上記のような手順によりアクセスの流量制限を行った場合であっても、近年では、Webサーバ間はいわゆるシングルサインオン(以下では「SSO」と記載する場合がある)により連携している場合もある。この場合、信頼できるWebサーバにおける既にログイン済みのユーザの認証情報を他のWebサーバに受け渡し、他のWebサーバでは当該認証情報に基づいて、ユーザによる新たなログイン認証を行わずにセッションを生成する。従って、従来技術によるアクセスの流量制限の手法では、上記他のWebサーバにおいてSSOによるアクセスに対するログイン制限により流量制限を行うことは難しい。
【0008】
そこで本発明の目的は、Webサーバシステムが高負荷となった際に、シングルサインオンによるアクセスに対しても適切にログイン制限することにより流量制限を行うWebサーバシステムへのログイン制御方法を提供することにある。本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0009】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【0010】
本発明の代表的な実施の形態によるWebサーバシステムへのログイン制御方法は、Webサーバシステムの負荷状況に応じて、前記Webサーバシステムへのユーザのログイン可能数を制限して、前記Webサーバシステムに対するアクセスの流量制限を行うものであって、以下のステップを実行することを特徴とするものである。
【0011】
すなわち、アクセスの流量制限を行う第1Webサーバシステムが、定期的に前記第1Webサーバシステムの負荷状況を確認し、確認結果に応じて前記第1Webサーバシステムに新規にログイン可能なユーザ数を算出して、算出したユーザ数分のトークンを発行し、発行した前記トークンを、前記ユーザについての認証情報を前記第1Webサーバシステムに対して受け渡してシングルサインオンにより連携する1つ以上の第2Webサーバシステムに対して予め配布する第1ステップと、前記第2Webサーバシステムが、クライアント端末を利用した前記ユーザからの前記第2Webサーバシステムを経由した前記第1Webサーバシステムへのシングルサインオンによるアクセス要求を処理する際に、前記第1Webサーバシステムから配布された前記トークンのうち使用可能な前記トークンがあるか否かを確認する第2ステップと、前記第2ステップにおいて使用可能な前記トークンがある場合に、前記第2Webサーバシステムが、前記トークンのうちの1つを使用して前記アクセス要求を処理する第3ステップと、前記第2ステップにおいて使用可能な前記トークンがない場合に、前記第2Webサーバシステムが、前記アクセス要求の処理を行わずに拒否する第4ステップとを実行することを特徴とするものである。
【発明の効果】
【0012】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【0013】
本発明の代表的な実施の形態によれば、Webサーバシステムにおいて予め設定されたログイン可能なユーザ数に対応して、当該Webサーバシステムに対するログイン要求を処理するためのトークンを、シングルサインオンによりアクセスしてくる他のWebサーバに対して発行する。このため、予め発行されたトークンの数に対応したユーザのログインを可能とするとともに、使用可能なトークンがない場合はログイン処理を抑止することで、発行済みのトークンの数に応じた確実な流量制限を行うことが可能となる。
【図面の簡単な説明】
【0014】
【図1】本発明の一実施の形態であるWebサーバシステムへのログイン制御方法のSSO環境の場合の例について概要を示した図である。
【図2】本発明の一実施の形態であるWebサーバシステムへのログイン制御方法の例について概要を示した図である。
【図3】本発明の一実施の形態であるWebサーバシステムへのログイン制御方法を実装するWebシステムの構成例の概要を示した図である。
【図4】本発明の一実施の形態におけるトークン管理のデータ構造およびデータの例を示した図である。
【図5】本発明の一実施の形態におけるトークンのデータ構造およびデータの例を示した図である。
【図6】本発明の一実施の形態における配布ルールのデータ構造およびデータの例を示した図である。
【図7】本発明の一実施の形態におけるトークンの発行および配布の処理の例を示したシーケンス図である。
【図8】本発明の一実施の形態におけるトークン発行元のWebサーバでのログイン要求時の処理の例を示したシーケンス図である。
【図9】本発明の一実施の形態におけるトークン発行元のWebサーバに対するSSOによるアクセス要求時の処理の例を示したシーケンス図である。
【図10】本発明の一実施の形態における使用可能なトークンがない場合の処理の例を示したシーケンス図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0016】
[概要]
図2は、本発明の一実施の形態であるWebサーバシステムへのログイン制御方法の例について概要を示した図である。図2のトークン発行元Webサーバ100(100a、100b)は、それぞれ、ポータルサイト等を提供し、定期的にシステムの負荷状況(各種ハードウェア資源の使用率やネットワーク負荷、ログインセッション数など)を確認し、確認結果に応じて新規にログイン可能なユーザ数を算出して、算出したユーザ数分のトークンを発行する。
【0017】
クライアント端末300上のWebブラウザ等を利用してユーザがWebサーバにログイン要求を行った場合、トークン発行元Webサーバ100では使用可能なトークンがあるか否かを確認する。使用可能なトークンがある場合(トークン発行元Webサーバ100aの場合)は、トークンを1つ使用して、ユーザIDやパスワードの確認などの実際の認証処理を行う。認証が許可されてセッションが生成された場合は当該トークンを使用済みとする。
【0018】
なお、ここでのトークンの使用とは、単にユーザからのログイン要求に対して実際の認証処理に進むための許可証としての使用(消費)であり、正当なトークンを使用しているか否かのみによって認証全体の許否を決定するために使用するというものではない。
【0019】
使用可能なトークンがない場合(トークン発行元Webサーバ100bの場合)は、ログイン要求は拒否される。これにより、予め発行されたトークンの数を超えるユーザは新たにログインできないように制限され、システムが高負荷になったことを検知してから流量制限を行うのと比較してより確実な流量制限を行うことができる。なお、このときは、例えば従来技術で示したような、ユーザによるアクセスの大量のリトライを防止するための対応を別途行うのが望ましい。
【0020】
発行されたトークンは、ログイン要求を行うユーザの属性に対して自由に割り当てることができる。例えば、20個のトークンが発行された場合、そのうちの3つは「管理者」用に割り当てて確保しておき、残りの17個のトークンは「一般ユーザ」に割り当てるということが可能である。これにより、例えば、17人以上の「一般ユーザ」がアクセスしてきて「一般ユーザ」については流量制限が行われている状況であっても、最低3人の「管理者」についてはログイン可能とするといった制御を行うことができる。
【0021】
また、トークン自身に予め種別を設けておき、使用されたトークンの種別に応じてログイン制御の内容を変えるようにしてもよい。例えば、トークン発行元Webサーバ100に対してログインして実行する(もしくはできる)処理の内容に応じてトークンの種別を分ける。処理内容が異なればトークン発行元Webサーバ100での処理負荷も異なるため、その内容に応じてログイン制御を変えることができる。ログイン制御としては、例えば、使用されたトークンの種別に応じてログインの優先順位を変えたり、ログインセッション数が多くなった場合のログインの可否を変えたり、特定の種別のトークンを使用した場合にのみアクセス可能なサイトへの入口を提供したりなどが考えられる。
【0022】
なお、トークンは、ログイン要求に対して認証処理を行うために使用された場合は、使用済みとなり消費されるが、これ以外にもトークンの発行時に各トークンに有効期限を設定しておき、有効期限が経過したトークンについては期限切れとして使用不可にすることもできる。使用済みや期限切れとなったトークンを適宜削除することにより、定期的なシステムの負荷状況の確認およびトークンの発行処理と合わせて、トークンの発行状況を最新のシステムの負荷状況に追従させることができる。
【0023】
一方、上記のような手順によりアクセスの流量制限を行った場合であっても、近年では、Webサーバ間はSSOにより連携している場合もある。SSOでは、信頼できるWebサーバにおける既にログイン済みのユーザの認証情報を他のWebサーバに受け渡し、他のWebサーバでは当該認証情報に基づいて、ユーザによる新たなログイン認証を行わずにセッションを生成する。このWebサーバ間での認証情報の受け渡しには、認証Cookieを利用する手法や、SAML(Security Assertion Markup Language)を利用して属性情報やアクセス制御情報をWebサーバ間で伝達する手法などがある。
【0024】
これらの場合、上述したように、SSOでのアクセス先となるWebサーバでは新たなログイン認証を行わずにセッションが生成される。従って、当該Webサーバでは、従来技術や上記のような手順によるアクセスの流量制限の手法では、通常のログインに加えてSSOも考慮した上で新たなセッションの生成を一括して抑止するということは難しい。
【0025】
そこで、本実施の形態のWebサーバシステムへのログイン制御方法では、Webサーバは、図2に示したトークン発行元Webサーバ100自身に対するトークンの発行に加えて、SSOにより連携してくる外部のWebサーバに対しても同様にトークンを発行する。これにより、SSOによりアクセスしてくる他のWebサーバに対してもログイン制御を行うことができる。
【0026】
図1は、本発明の一実施の形態であるWebサーバシステムへのログイン制御方法のSSO環境の場合の例について概要を示した図である。トークン発行元Webサーバ100は、トークンの発行元であり、SSOにおいてターゲットとなるWebサーバである。トークン使用Webサーバ200(200a、200b)は、ポータルサイト等を提供し、トークンの配布先であり、トークン発行元Webサーバ100が信頼するWebサーバであってSSOにおいてソースとなるWebサーバである。
【0027】
トークン発行元Webサーバ100は、上記と同様に、定期的にシステムの負荷状況を確認してトークンを発行し、トークン使用Webサーバ200に対して、発行したトークンを予め配布している。トークン使用Webサーバ200は、それぞれクライアント端末300を利用したユーザからのログイン要求に対して個別に認証処理を行い、セッションを確立している。この認証結果の情報に基づいて、トークン使用Webサーバ200は、それぞれ、SSOにより連携してトークン発行元Webサーバ100に当該ユーザのセッションを生成しようとする。このとき、トークン使用Webサーバ200では、上記と同様にトークン発行元Webサーバ100から発行された使用可能なトークンがあるか否かを確認する。
【0028】
使用可能なトークンがある場合(トークン使用Webサーバ200aの場合)は、トークンを1つ使用(消費)して、SSOによりトークン発行元Webサーバ100と連携する。使用可能なトークンがない場合(トークン使用Webサーバ200bの場合)は、SSOによるトークン発行元Webサーバ100へのアクセスは行われない。これにより、トークン発行元Webサーバ100では、SSOによるアクセスも含めて、予め発行されたトークンの数を超えるユーザはログイン(セッション生成)できないように制限され、確実な流量制限を行うことができる。
【0029】
また、トークン発行元Webサーバ100では、外部の各トークン使用Webサーバ200へのトークンの配布のパターンを適宜柔軟に変更することができる。例えば、複数のトークン使用Webサーバ200に対して配布するトークンの数をWebサイトの重要度などに応じて按分したり、特定のトークン使用Webサーバ200については優先的に必ず一定数のトークンを配布するようにしたりなど、種々のパターンが考えられる。
【0030】
[システム構成]
図3は、本実施の形態のWebサーバシステムへのログイン制御方法を実装するWebシステムの構成例の概要を示した図である。図3において、Webシステムは例えば、インターネット等のネットワーク400に、それぞれ1つ以上のトークン発行元Webサーバ100、トークン使用Webサーバ200、およびクライアント端末300が接続される構成となっている。ここで、クライアント端末300は、Webサーバにアクセス可能なWebブラウザ等のソフトウェアを有するPC等の端末機器である。
【0031】
図3の構成において、トークン使用Webサーバ200は、トークン発行元Webサーバ100にとって信頼できるWebサーバであり、トークン発行元Webサーバ100では、SSOによりトークン使用Webサーバ200でのユーザの認証情報を用いてログインによる認証を要さずにセッションを生成することができる。
【0032】
トークン発行元Webサーバ100は、クライアント端末300に対してWebサーバとして動作するサーバ機器であり例えば、Webサーバプログラム120、認証部130、SSO連携部140、アプリケーションプログラム150、トークン管理部160、および状態確認部170の各部を有する構成となっている。また、データベースやファイル等の形式で、ユーザ111、セッション112、トークン113、トークン管理114、および配布ルール115の各データを保持する。
【0033】
また、トークン使用Webサーバ200は、同様に、クライアント端末300に対してWebサーバとして動作するサーバ機器であり、例えば、Webサーバプログラム220、認証部230、SSO連携部240、アプリケーションプログラム250、およびトークン管理部260の各部を有する構成となっている。また、データベースやファイル等の形式で、ユーザ211、セッション212、およびトークン213の各データを保持する。
【0034】
トークン発行元Webサーバ100およびトークン使用Webサーバ200におけるWebサーバプログラム120および220は、サーバ機器等をWebサーバとして機能させる一般に市販等されているソフトウェアである。
【0035】
認証部130および230は、それぞれWebサーバプログラム120、220上で動作し、ユーザからクライアント端末300上のWebブラウザ等を利用して送信されたログイン要求に対して、それぞれユーザ111、211に保持されたユーザIDやパスワード等の情報を用いて認証処理を行うソフトウェアプログラムである。このとき、認証部130、230では、それぞれ、後述するトークン管理部160、260によって自らが発行した使用可能なトークンがあるか否かを確認し、使用可能なトークンがある場合にのみ認証処理を行う。認証に成功した場合は、Webサーバプログラム120、220によりそれぞれセッション112、212に当該セッションの内容を保持する情報が生成される。
【0036】
SSO連携部140および240は、それぞれ外部のWebサーバと連携してSSOを実現するソフトウェアプログラムやモジュールである。ここでは、例えば上述したSAMLプロトコルを処理することによりSSOを実現する。図3の例では、トークン発行元Webサーバ100のSSO連携部140とトークン使用Webサーバ200のSSO連携部240とがSAML等を利用して連携することでSSOによる認証を行う。
【0037】
このとき、トークン使用Webサーバ200のSSO連携部240では、後述するトークン管理部260によってトークン発行元Webサーバ100から配布された使用可能なトークンがあるか否かを確認し、使用可能なトークンがある場合にのみトークン発行元Webサーバ100との間でのSSOによる認証を行う。トークン発行元Webサーバ100においてSSOによる認証が行われることにより、トークン使用Webサーバ200でのユーザの認証情報を用いてトークン発行元Webサーバ100上にセッション112を生成することができる。なお、トークン発行元Webサーバ100は、他の信頼するWebサーバとの間で同様にSSOによる認証を介してセッションを生成することができる。
【0038】
アプリケーションプログラム150および250は、それぞれWebサーバプログラム120、220上で動作し、固有の業務処理を実行してサービスを提供するソフトウェアプログラムである。
【0039】
トークン管理部160および260は、トークン発行元Webサーバ100によって発行され配布されたトークンをそれぞれトークン113、213に保持し、使用状況について管理するソフトウェアプログラムである。また、トークン発行元Webサーバ100のトークン管理部160は、後述する状態確認部170によって定期的にシステムの負荷状況を確認し、負荷状況およびセッション112に保持されている現在のセッション数などに基づいて、所定のルールにより自サーバ(トークン発行元Webサーバ100)にログイン(SSOによるもの含む)可能な最大のユーザ数を算出して、算出したユーザ数分のトークンを発行する。
【0040】
また、トークン管理部160は、発行したトークンをトークン管理114に保持して管理する。トークンの発行の際に、トークン管理114に発行済みで未使用のトークンが残っている場合はその分を考慮して発行する。さらに、発行したトークンを配布ルール115に設定されたルールに従って各Webサーバに配布する。トークンの配布に際しては、例えば、SOAP(Simple Object Access Protocol)などを利用することができる。
【0041】
状態確認部170は、トークン発行元Webサーバ100の負荷状況を定期的に確認するソフトウェアプログラムである。システムの負荷状況としては、例えば、CPUやメモリ等の各種ハードウェア資源の使用率やネットワーク負荷、各所での応答時間、ログインセッション数などがある。負荷状況の取得には、例えばOSが提供するコマンドや、パフォーマンス監視プログラム等の出力結果などを利用することができる。
【0042】
[データ構造]
図4は、本実施の形態におけるトークン管理114のデータ構造およびデータの例を示した図である。トークン管理114は、例えば、発行トークンID114−1、有効期限114−2、配布先114−3、種別114−4、ステータス114−5の各項目を有し、トークン発行元Webサーバ100のトークン管理部160が発行したトークンを保持する。発行された各トークンには識別のためのトークンIDが付与され、発行トークンID114−1に格納される。
【0043】
また、各トークンには有効期限を設定してもよく、設定された値は有効期限114−2に格納される。有効期限を経過したトークンは期限切れのため使用不可として取り扱うことができ、期限切れのトークンは、トークン管理部160によって新たなトークンを発行する際などの所定のタイミングでトークン管理114から削除してもよい。配布先114−3には、対象のトークンを配布する(した)先のWebサーバ(トークン発行元Webサーバ100もしくはトークン使用Webサーバ200)を識別する情報(ホスト名やIPアドレス、URL等)が格納される。
【0044】
また、各トークンには、使用されたトークンの種別に応じてログイン制御の内容を変えることができるように種別を設定しておいてもよい。図4の例では、各トークンに例えば「青」や「赤」、「黄」などの色を設定し、「青」のトークンを使用してアクセスしてきた場合は、ログインの優先順位を高くしたり、ログインセッション数が多くなった場合でもログインできるようにしたり、「青」のトークンを使用した場合しかアクセスできない入口を提供したりなどが考えられる。ここで、トークンに設定する色は、例えば、トークン発行元Webサーバ100にアクセスした後に実行する処理内容によって分けることができる。
【0045】
ステータス114−5には、対象のトークンの状態を示す値が格納される。例えば、発行直後の初期状態を「未使用」としておき、当該トークンが使用された場合に「使用済み」とすることで、使用可能なトークンを識別することができる。また、有効期限114−2の値を経過したトークンについてステータス114−5の値を「期限切れ」などの値に設定するようにしてもよい。なお、トークンが使用された際や、有効期限を経過したことを検知した際に、ステータス114−5の値を「使用済み」や「期限切れ」としてトークン管理114に残しておくのではなく、その時点でトークン管理114から当該トークンを削除するようにしてもよい。この場合ステータス114−5の項目は不要である。
【0046】
なお、本実施の形態では、トークン毎にトークン管理114にエントリを有する構成としているが、トークンの発行数が多くなる場合はエントリ数も多くなってしまう。この場合、通常は、有効期限114−2や配布先114−3、種別114−4が同じであるトークンが多数発行されるものと考えられる。
【0047】
従って、トークンの配布先の各Webサーバで、例えば、トークンIDの小さいものから順にシーケンシャルにトークンを使用するようなルールとすることで、有効期限114−2や配布先114−3、種別114−4が同じである複数のトークンについて、発行トークンID114−1を「XX00001〜XX01000」というようにトークンIDの範囲で指定することができる。トークンIDの範囲における最新の使用済みのトークンIDを別途管理することで、上記と同様のトークンの管理を実現しつつ保持するデータ量を削減することが可能である。
【0048】
図5は、本実施の形態におけるトークン113およびトークン213のデータ構造およびデータの例を示した図である。トークン113とトークン213は同様であり、例えば、トークンID113−1、有効期限113−2、配布元113−3、種別113−4、使用可能ユーザ113−5、ステータス113−6の各項目を有し、トークン発行元Webサーバ100から発行・配布されたトークンを保持する。
【0049】
トークンID113−1および有効期限113−2には、トークン発行元Webサーバ100によって当該トークンに付与されたトークンIDおよび設定された有効期限の値が格納される。配布元113−3には、当該トークンを発行・配布したトークン発行元Webサーバ100を識別する情報(ホスト名やIPアドレス、URL等)が格納される。
【0050】
種別113−4には、配布元のサーバにおいて当該トークンに対して設定された種別(色)の値が格納される。使用可能ユーザ113−5には、当該トークンを配布されたWebサーバ(トークン発行元Webサーバ100もしくはトークン使用Webサーバ200)のトークン管理部160、260によって設定された、当該トークンを使用可能なユーザの属性の値が格納される。設定する属性の内容は、例えば、「一般ユーザ」や「プレミアユーザ」、「管理者」などである。
【0051】
使用可能ユーザ113−5にどのような属性を設定して各トークンに割り当てるかの決定は、当該トークンを配布されたWebサーバが独自のルールに基づいて自由に行うことができる。使用可能ユーザ113−5に値を設定せず、当該トークンを使用可能なユーザの属性等を特に制限しないことも可能である。ステータス113−6は、図4のステータス114−5と同様であり、対象のトークンの状態を示す値が格納される。
【0052】
図6は、本実施の形態における配布ルール115のデータ構造およびデータの例を示した図である。配布ルール115は、例えば、配布先115−1、配布比率:青115−2、配布比率:赤115−3の各構造を有し、トークン発行元Webサーバ100のトークン管理部160が、発行したトークンを各Webサーバに配布する際の割り振りのルールに関する設定情報を保持する。
【0053】
配布先115−1には、トークンの配布先となる各Webサーバを識別する情報(ホスト名やIPアドレス、URL等)が格納される。また、配布比率:青115−2および配布比率:赤115−3には、トークンを配布する際のルールの情報が格納される。図6では、発行したトークンの種別(「青」「赤」)に応じて各Webサーバにトークンを按分して配布する際の割合を格納する場合の例を示しているが、トークンを配布する際のルールの内容によってこれらの項目の内容は異なり得る。
【0054】
例えば、各Webサーバにトークンを按分して配布するのではなく、各Webサーバ間での優先順位に基づいて、優先順位の高いWebサーバから順に可能な分だけトークンを配布する方式をとる場合には、各Webサーバ毎の最大配布数や優先順位の情報などを保持する項目を配布ルール115に有することになる。
【0055】
なお、按分する比率や優先順位などの値は、管理者等が適宜変更することが可能であり、また、トークンの使用状況の実績等に基づいてトークン管理部160により統計的に決定してもよい。また、発行した全てのトークンを各Webサーバに配布せずに、後述するように各Webサーバでのトークンの使用状況等に応じて追加で配布できるように一部予備として残しておくようにしてもよい。
【0056】
[処理シーケンス]
以降では、本実施の形態のWebサーバシステムへのログイン制御方法における各処理の具体的な内容とその流れについて説明する。図7は、本実施の形態のWebサーバシステムへのログイン制御方法におけるトークンの発行および配布の処理の例を示したシーケンス図である。この一連の処理は、トークン発行元Webサーバ100のトークン管理部160において所定の時間間隔を計数し、これをトリガに定期的に実行される。
【0057】
まず、トークン発行元Webサーバ100では、トークン管理部160が、状態確認部170によりトークン発行元Webサーバ100のシステムの状態(負荷状況)を確認する(S701)。次に、トークン管理部160が、ステップS701で取得したシステムの負荷状況に基づいて所定の算出ルールに基づいてトークン発行元Webサーバ100にログイン可能なユーザ数(生成可能なセッション数)を算出し、さらに、セッション112に保持している情報から取得した現在のログインセッション数も考慮して、新たにログイン可能なユーザ数を算出する(S702)。
【0058】
さらに、トークン管理114を参照して現在発行済みで使用可能なトークンがの残数を確認する(S703)。その後、ステップS702で算出した新たにログイン可能なユーザ数と、ステップS703で取得したトークンの残数との差分に基づいて新たに発行するトークンの数を算出し、その分のトークンを発行する(S704)。発行したトークンの情報はトークン管理114に格納する。なお、図7に示す一連の処理を定期的に実行する時間間隔と、トークンに設定する有効期限までの時間間隔とを合わせることにより、ステップS704でのトークンの発行の際に未使用で残っているトークンを実用上なくすことができる。この場合、ステップS703の処理を不要とすることも可能である。
【0059】
次に、トークン管理部160は、発行したトークンを配布ルール115の設定内容に基づいて各Webサーバ(トークン発行元Webサーバ100、トークン使用Webサーバ200)に対してSOAP等により配布する(S705)。トークンを配布された各Webサーバでは、トークン管理部160もしくは260が、各Webサーバでの個別のルールに基づいて、配布されたトークンをユーザの属性に対して割り当て(S706)、トークン113もしくは213に格納して登録する(S707)。なお、このとき、上述したように、トークン113もしくは213においてステータス113−6が「使用済み」もしくは「期限切れ」など使用不可のステータスで残っているトークンについて削除する処理を行ってもよい。
【0060】
以上の処理を定期的に繰り返すことで、トークン発行元Webサーバ100の現在のシステムの状態に応じて、予め、新たにログイン要求(SSOを含む)を受け付けるための許可証であるトークンを適当な数だけ発行しておくことができる。
【0061】
図8は、本実施の形態のWebサーバシステムへのログイン制御方法におけるトークン発行元のWebサーバでの(SSOではない通常の)ログイン要求時の処理の例を示したシーケンス図である。まず、ユーザは、クライアント端末300を利用して、トークン発行元Webサーバ100に対してログイン要求を送信する(S801)。
【0062】
トークン発行元Webサーバ100では、Webサーバプログラム120を介してログイン要求を受けた認証部130が、トークン管理部160により、対象のユーザの属性に合致する使用可能なトークンがトークン113にあるか否かを確認し、使用可能なトークンがある場合は、その中から、トークンID113−1が最も小さいものを選択するなどのルールに基づいて、使用するトークンを1つ選択する(S802)。
【0063】
使用可能なトークンがない場合は、ログインによるアクセスを拒否する応答をクライアント端末300に送信し(S803)、処理を終了する。すなわち、トークン発行元Webサーバ100にてログイン処理は行われない。このとき、以降のユーザによるログイン要求のリトライを防止するため、例えば「混雑のためあなたのIDはしばらくログインできません」等の画面を表示するなどの対策をとることが望ましい。
【0064】
ステップS802で使用可能なトークンがある場合は、トークン管理部160は、選択されたトークンのトークンIDがトークン管理114の発行トークンID114−1に存在するか否かを確認することで、トークンの正当性を確認する(S804)。トークンが正当である場合、認証部130は、ユーザ111の情報に基づいて通常の認証処理を行う(S805)。認証が成功した場合は、Webサーバプログラム120はセッション112にセッションを生成してログイン許可の応答をクライアント端末300に送信し(S806)、トークン管理部160は、選択されたトークンについてトークン113のステータス113−6を「使用済み」に更新する(S807)。
【0065】
その後は、クライアント端末300とトークン発行元Webサーバ100との間で通常のアクセス(アクセス要求(S808)およびアクセス応答(S809))が行われ、アプリケーションプログラム150での処理によるサービスがユーザに提供される。
【0066】
図9は、本実施の形態のWebサーバシステムへのログイン制御方法におけるトークン発行元のWebサーバに対するSSOによるアクセス要求時の処理の例を示したシーケンス図である。図9では、トークン使用Webサーバ200において認証を行いログインしているユーザが、SSOによりトークン発行元Webサーバ100に対してログイン認証を行わずにアクセスする場合の例を示している。
【0067】
なお、図9では、SAMLによりSSOを実現する場合の例を示しており、SAMLを利用したSSOにおけるいわゆるPullモデル(アクセス要求を受けたトークン発行元Webサーバ100がトークン使用Webサーバ200に対して認証情報を要求する)の場合の例を示しているが、Pushモデル(トークン使用Webサーバ200がアクセスが予定されるトークン発行元Webサーバ100にアクセス認証の情報を事前に伝える)の場合や、その他のWebサーバ間でのいわゆるIDの連携(フェデレーション)によってSSOを実現する手法であってもよい。
【0068】
ユーザは事前に、トークン使用Webサーバ200に対してクライアント端末300を利用して通常のログイン処理を行っているものとする(S901〜S903)。その後、ユーザが、クライアント端末300を利用して、トークン発行元Webサーバ100にアクセスするため、トークン使用Webサーバ200のWebページ上で提供されている、SSOを考慮したトークン発行元Webサーバ100へのリンクを選択する等により、トークン使用Webサーバ200に対してトークン発行元Webサーバ100へのリンク要求を送信する(S904)。
【0069】
トークン使用Webサーバ200では、Webサーバプログラム220を介してリンク要求を受けたSSO連携部240が、トークン管理部260により、トークン発行元Webサーバ100から配布された、対象のユーザ属性に合致する使用可能なトークンがトークン213にあるか否かを確認し、使用可能なトークンがある場合は、その中から、トークンID113−1が最も小さいものを選択するなどのルールに基づいて、使用するトークンを1つ選択する(S905)。
【0070】
使用可能なトークンがない場合は、トークン発行元Webサーバ100に対するアクセスを拒否する応答をクライアント端末300に送信し(S906)、処理を終了する。すなわち、トークン使用Webサーバ200からトークン発行元Webサーバ100に対するSSO(IDの連携)のためのアクセスは行われない。このとき、図8の例と同様に、以降のユーザによるリンク要求のリトライを防止するため、例えば「混雑のためあなたのIDはしばらくログインできません」等の画面を表示するなどの対策をとることが望ましい。
【0071】
ステップS905で使用可能なトークンがある場合は、以下の処理によって、SSOによるトークン発行元Webサーバ100での認証(セッションの生成)を行う。まず、トークン使用Webサーバ200のSSO連携部240は、自サーバに対する認証情報の参照先の情報(アーティファクト)を生成して保存し(S907)、認証情報参照先を含む応答をクライアント端末300に送信する(S908)。応答を受信したクライアント端末300のWebブラウザは、応答をリダイレクトしてアクセス要求をトークン発行元Webサーバ100に対して送信する(S909)。
【0072】
アクセス要求を受けたトークン発行元Webサーバ100のSSO連携部140は、SAMLにより認証情報参照先(アーティファクト)をトークン使用Webサーバ200に提示して認証情報を要求する(S910)。トークン使用Webサーバ200のSSO連携部240は、認証情報参照先に基づいて認証情報を取得し(S911)、認証情報にステップS905で選択したトークンを付加してSAMLによりトークン発行元Webサーバ100に応答する(S912)。また、トークン管理部260により、選択したトークンについてトークン213のステータス113−6を「使用済み」に更新する(S913)。
【0073】
一方、トークン発行元Webサーバ100のトークン管理部160は、トークン使用Webサーバ200から送信されたトークンのトークンIDがトークン管理114の発行トークンID114−1に存在するか否かを確認することで、トークンの正当性を確認する(S914)。なお、このようなトークンの正当性の確認手法以外にも、例えば、トークンに対してトークン発行元Webサーバ100やトークン使用Webサーバ200において電子署名を行って送受信することによりトークンの正当性を確認するということも可能である。
【0074】
ステップS914でトークンが正当である場合、SSO連携部140は、トークン使用Webサーバ200から送信された認証情報、およびユーザ111の情報等に基づいてセッション112に対象のユーザのセッションを生成し(S915)、アクセス許可の応答をクライアント端末300に送信する(S916)。その後は、クライアント端末300とトークン発行元Webサーバ100との間で通常のアクセス(アクセス要求(S917)およびアクセス応答(S918))が行われ、アプリケーションプログラム150での処理によるサービスがユーザに提供される。
【0075】
図8および図9の例に示すように、ステップS802およびS905で使用可能なトークンがない場合は、ステップS803およびS906でいずれもアクセス拒否の応答を送信することで、トークン発行元Webサーバ100に対する無用なログイン処理およびSSOのためのアクセスを抑止し、トークン発行元Webサーバ100での無用な負荷の増大を回避しつつ確実な流量制限を行うことが可能となる。
【0076】
ここで、上記のように例えば、あるトークン使用Webサーバ200において多数のユーザからのアクセスがあり、SSOによるトークン発行元Webサーバ100へのアクセスも多く行われた結果、トークン発行元Webサーバ100から配布されたトークンがなくなり、図9の例に示すように流量制限が行われるような場合であっても、他のトークン使用Webサーバ200ではユーザ数が少なく、トークン発行元Webサーバ100から配布されたトークンに余剰があるという場合が生じ得る。
【0077】
このように、トークン発行元Webサーバ100のキャパシティに対して使用されないトークンが残るという状況を回避するため、例えば、トークン発行元Webサーバ100がトークンを発行・配布する際に、算出したログイン可能なユーザ数よりも多めのトークンを発行・配布しておくということも可能である。ただしこの場合は、複数のトークン使用Webサーバ200によって、トークン発行元Webサーバ100に対してログイン可能なユーザ数よりも多いログイン要求もしくはアクセス要求が送信される場合が生じ得る。従って、トークン発行元Webサーバ100が、ログイン要求やアクセス要求を受けた際に、ログイン可能なユーザ数および現在のセッション数等に基づいて、対象のログイン要求もしくはアクセス要求の処理が可能か否かを判断する処理が必要となる。
【0078】
また、別の手法として、例えば、トークン発行元Webサーバ100においてログイン可能なユーザ数の分だけ発行されたトークンの配布を受けるWebサーバ(トークン発行元Webサーバ100およびトークン使用Webサーバ200)間で、余剰のトークンを直接的・間接的に融通するような手法をとることも可能である。
【0079】
このような例として、図10は、本実施の形態のWebサーバシステムへのログイン制御方法における使用可能なトークンがない場合の処理の例を示したシーケンス図である。ここでは、トークン使用Webサーバ200において、トークン発行元Webサーバ100から配布されたトークンに残余がない場合に、トークン発行元Webサーバ100を介して間接的に他のWebサーバから余剰のトークンを譲り受ける場合の例を示している。
【0080】
図9の例におけるステップS904およびS905と同様に、ユーザが、クライアント端末300を利用して、トークン使用Webサーバ200のWebページ上で提供されている、SSOを考慮したトークン発行元Webサーバ100へのリンクを選択する等により、トークン使用Webサーバ200に対してトークン発行元Webサーバ100へのリンク要求を送信する(S1001)。トークン使用Webサーバ200では、Webサーバプログラム220を介してリンク要求を受けたSSO連携部240が、トークン管理部260により、トークン発行元Webサーバ100から配布された、対象のユーザ属性に合致する使用可能なトークンがトークン213にあるか否かを確認する(S1002)。
【0081】
ステップS1002で使用可能なトークンがない場合は、トークン管理部260によりトークン発行元Webサーバ100に対してSOAP等を利用してトークンの追加要求を行う(S1003)。追加要求を受信したトークン発行元Webサーバ100のトークン管理部160は、トークン管理114を参照して、予備として未配布となっているトークンの残数を確認する(S1004)。
【0082】
ここで未配布のトークンの残数がない場合は、トークンの配布先である各Webサーバに対して余剰分の回収処理を行う(S1005)。ここでは、実際に対象のWebサーバに対して回収指示を送信し、各Webサーバにて余剰分のトークンをトークン発行元Webサーバ100に応答した後、対象のトークンをトークン213から削除するという処理を行ってもよい。
【0083】
また、トークン発行元Webサーバ100においてトークン管理114−1の配布先114−3の情報をトークンの追加要求を行った(トークンを必要とする)トークン使用Webサーバ200の情報に強制的に更新して回収するという処理を行ってもよい。なお、この場合は、当初の配布先のWebサーバにおいて保持するトークンが削除されずに残るため、当該トークンを使用したアクセス要求が行われる場合も生じ得るが、トークンの正当性の確認(S804、S914)において正当なトークンを使用していないとしてアクセスを拒否することが可能である。
【0084】
上述したようなトークンの回収処理は、トークン発行元Webサーバ100において、例えば、システム障害に伴う片系運用など、通常運用時と比較してシステムのキャパシティが低下し、ログイン可能なユーザ数が大きく減少するような場合に、既に発行・配布済みのトークンを回収するという用途に用いることも可能である。
【0085】
次に、回収したトークン、もしくは予備として未配布となっているトークンから必要な分を追加トークンとして対象のトークン使用Webサーバ200に配布する(S1006)。追加トークンとして配布できるトークンがない場合は拒否応答を送信する。なお、この追加トークンの配布処理をトークン使用Webサーバ200からの追加要求をトリガとして行うのではなく、トークン発行元Webサーバ100のトークン管理部160がトークン管理114を定期的に参照して各Webサーバのトークンの使用状況を確認し、使用率の高いWebサーバに対して能動的に追加トークンを配布するようにしてもよい。また、トークンの追加要求を、トークン発行元Webサーバ100に対してではなく他のトークン使用Webサーバ200に対して直接行うようにしてもよい。
【0086】
追加トークンの配布を受けたトークン使用Webサーバ200では、配布された追加トークンに対して図7の例におけるステップS706およびS707と同様に、ユーザの属性に対する割り当て(S1007)と、トークン113、213への登録(S1008)の処理を行う。以上の処理により、トークンが不足しているWebサーバが、トークンが余剰である他のWebサーバ等からトークンの融通を受けられるようにすることで、トークンの配布状況を最適化することが可能となる。
【0087】
以上に説明したように、本実施の形態のWebサーバシステムへのログイン制御方法によれば、Webサーバシステムの負荷状況に応じて予め設定されたログイン可能なユーザ数に対応して、ログイン要求を処理するためのトークンを発行するため、予め発行されたトークンの数に対応したユーザのログインを可能とするとともに、使用可能なトークンがない場合はログイン要求を抑止することで、Webサーバシステムに無用な負荷をかけることなく確実な流量制限を行うことが可能となる。
【0088】
また、発行されたトークンをユーザの属性等に応じて割り当てておくことで、他の属性のユーザ(例えば「一般ユーザ」)に割り当てられたトークンがなくなり流量制限が行われている場合であっても、特定のユーザ(例えば「管理者」や「プレミアムユーザ」など)のログインを確保することが可能となる。
【0089】
さらに、本実施の形態のWebサーバシステムへのログイン制御方法によれば、Webサーバは、自サーバに対するトークンの発行に加えて、SSOにより連携してくる外部のWebサーバに対しても同様にトークンを発行・配布する。従って、通常のログイン処理に加えて、SSOによるアクセスも考慮した上で一括したログイン制御を行うことが可能であり、Webサーバシステムが高負荷の際に無用なログイン要求やSSOのためのアクセス要求の発生を抑止し、Webサーバシステムに無用な負荷をかけることなく確実な流量制限を行うことが可能となる。
【0090】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【0091】
本発明は、システムの負荷の状況に応じてユーザのログイン可能数を制限してアクセスの流量制限を行うWebサーバシステムへのログイン制限方法に利用可能である。
【符号の説明】
【0092】
100、100a、100b…トークン発行元Webサーバ、
111…ユーザ、112…セッション、113…トークン、113−1…トークンID、113−2…有効期限、113−3…配布元、113−4…種別、113−5…使用可能ユーザ、113−6…ステータス、114…トークン管理、114−1…発行トークンID、114−2…有効期限、114−3…配布先、114−4…種別、114−5…ステータス、115…配布ルール、115−1…配布先、115−2…配布比率:青、115−3…配布比率:赤、
120…Webサーバプログラム、130…認証部、140…SSO連携部、150…アプリケーションプログラム、160…トークン管理部、170…状態確認部、
200、200a、200b…トークン使用Webサーバ、211…ユーザ、212…セッション、213…トークン、220…Webサーバプログラム、230…認証部、240…SSO連携部、250…アプリケーションプログラム、260…トークン管理部、
300…クライアント端末、
400…ネットワーク。

【特許請求の範囲】
【請求項1】
Webサーバシステムの負荷状況に応じて、前記Webサーバシステムへのユーザのログイン可能数を制限して、前記Webサーバシステムに対するアクセスの流量制限を行うWebサーバシステムへのログイン制限方法であって、
アクセスの流量制限を行う第1Webサーバシステムが、定期的に前記第1Webサーバシステムの負荷状況を確認し、確認結果に応じて前記第1Webサーバシステムに新規にログイン可能なユーザ数を算出して、算出したユーザ数分のトークンを発行し、発行した前記トークンを、前記ユーザについての認証情報を前記第1Webサーバシステムに対して受け渡してシングルサインオンにより連携する1つ以上の第2Webサーバシステムに対して予め配布する第1ステップと、
前記第2Webサーバシステムが、クライアント端末を利用した前記ユーザからの前記第2Webサーバシステムを経由した前記第1Webサーバシステムへのシングルサインオンによるアクセス要求を処理する際に、前記第1Webサーバシステムから配布された前記トークンのうち使用可能な前記トークンがあるか否かを確認する第2ステップと、
前記第2ステップにおいて使用可能な前記トークンがある場合に、前記第2Webサーバシステムが、前記トークンのうちの1つを使用して前記アクセス要求を処理する第3ステップと、
前記第2ステップにおいて使用可能な前記トークンがない場合に、前記第2Webサーバシステムが、前記アクセス要求の処理を行わずに拒否する第4ステップとを実行することを特徴とするWebサーバシステムへのログイン制限方法。
【請求項2】
請求項1に記載のWebサーバシステムへのログイン制限方法において、
前記第1ステップでは、前記第1Webサーバシステムは、発行した前記トークンを前記第2Webサーバシステムに対して配布する際に、それぞれに対して配布する前記トークンの数もしくはその比率もしくは配布する際の前記第2Webサーバシステム間での優先順位を設定可能であることを特徴とするWebサーバシステムへのログイン制限方法。
【請求項3】
請求項1または2のいずれか1項に記載のWebサーバシステムへのログイン制限方法において、
前記第1ステップでは、前記第1Webサーバシステムは、発行した前記トークンに対して種別を設定可能であり、
前記第3ステップでは、前記第1Webサーバシステムが、前記第2Webサーバシステムからの前記アクセス要求に係るシングルサインオンによるログイン要求を受けた際に、使用された前記トークンに設定された前記種別に応じてログイン処理時の処理内容を変更可能であることを特徴とするWebサーバシステムへのログイン制限方法。
【請求項4】
請求項1〜3のいずれか1項に記載のWebサーバシステムへのログイン制限方法において、
前記第1ステップでは、前記第1Webサーバシステムによって発行された前記トークンが配布された前記第2Webサーバシステムは、配布された前記トークンに対して、前記トークンを使用可能な前記ユーザの属性の情報を割り当て可能であることを特徴とするWebサーバシステムへのログイン制限方法。
【請求項5】
請求項1〜4のいずれか1項に記載のWebサーバシステムへのログイン制限方法において、
前記第1ステップでは、前記第1Webサーバシステムは、発行した前記トークンに対して使用可能な期間を示す有効期限を設定可能であることを特徴とするWebサーバシステムへのログイン制限方法。
【請求項6】
請求項1〜5のいずれか1項に記載のWebサーバシステムへのログイン制限方法において、
前記第2ステップにおいて、前記第2Webサーバシステムに配布された使用可能な前記トークンがない場合に、前記第1Webサーバシステムが、既に発行済みの前記トークンのうち、他のWebサーバシステムに対して配布されていないもの、および他のWebサーバシステムに対して配布されておりかつ使用されていないものの一部または全部を追加トークンとして前記第2Webサーバシステムに対して配布する第5ステップを実行することを特徴とするWebサーバシステムへのログイン制限方法。

【図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


【公開番号】特開2010−282351(P2010−282351A)
【公開日】平成22年12月16日(2010.12.16)
【国際特許分類】
【出願番号】特願2009−134079(P2009−134079)
【出願日】平成21年6月3日(2009.6.3)
【出願人】(000155469)株式会社野村総合研究所 (1,067)
【Fターム(参考)】