説明

Webシステムおよびリクエスト処理方法

【課題】アプリケーションサーバによらず、APIサーバを再利用することができるWebシステムを提供する。
【解決手段】Webシステムは、アプリケーションサーバ2とAPIサーバ3とから構成されている。アプリケーションサーバ2は、クライアント1から受信したリクエストの認証処理またはセッション処理を行うとともに、リクエストがAPIサーバ3へのアクセスを要求している場合には認証処理結果またはセッション処理結果をリクエストに付随させてAPIサーバ3に送信する認証・セッション処理部22を有している。APIサーバ3は、アプリケーションサーバ2から受信したリクエストに付随されている認証処理結果またはセッション処理結果に基づいて、当該受信したリクエストを処理するリクエスト処理部31を有している。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Webシステムおよびリクエスト処理方法に関する。
【背景技術】
【0002】
一般に、アプリケーションサーバとAPIサーバとにより構成されるWebシステムでは、両サーバに共通した認証・セッション機能が実装されている。ところで、アプリケーションサーバのロジックはサービスにより異なり、適したプログラム言語により実装される。たとえば、Webシステムの開発には、Struts、Ruby on Rails、またはCatalystのような様々なフレームワークが用いられている(非特許文献1参照)。
【非特許文献1】Dave Thomas, David Heinemeier Hansson, "第2版 Rails によるアジャイル Webアプリケーション開発", 21.2節, オーム社, 2006年 2月
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、認証・セッション機能に用いられるデータ構造はプログラム言語やフレームワークによって異なり、また複雑である。そのために、APIサーバを再利用することは難しいという問題があった。
【0004】
たとえば、上述したStruts、Ruby on Rails、またはCatalystのようなフレームワークは認証・セッション機能を提供するが、用いられるデータ構造はフレームワークによって異なり、複雑である。また、たとえば、Ruby on Railsでは、セッション情報のデータ構造として、シリアライズされたRubyデータオブジェクトを用いるために、他のプログラム言語から利用することは難しい。このような理由により、APIサーバを再利用することは難しいという問題があった。
【0005】
また、APIサーバに要求される機能はサービスによらず似ているため、再利用されることが望ましいという要望がある。
【0006】
本発明は、このような事情に鑑みてなされたもので、その目的は、アプリケーションサーバによらず、APIサーバを再利用することができるWebシステムおよびリクエスト処理方法を提供することにある。
【課題を解決するための手段】
【0007】
この発明は上述した課題を解決するためになされたもので、請求項1に記載の発明は、アプリケーションサーバとAPIサーバとから構成されるWebシステムであって、前記アプリケーションサーバが、クライアントから受信したリクエストの認証処理またはセッション処理を行うとともに、前記リクエストが前記APIサーバへのアクセスを要求している場合には前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて前記APIサーバに送信する認証・セッション処理部を有し、前記APIサーバが、前記アプリケーションサーバから受信したリクエストに付随されている認証処理結果またはセッション処理結果に基づいて、当該受信したリクエストを処理するリクエスト処理部を有することを特徴とするWebシステムである。
【0008】
請求項2に記載の発明は、前記認証・セッション処理部が、前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて前記APIサーバに送信する場合に、前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて前記APIサーバに標準化された通信方式で送信することを特徴とする請求項1に記載のWebシステムである。
【0009】
請求項3に記載の発明は、前記Webシステムが、複数の前記APIサーバ、を有しており、前記認証・セッション処理部が、前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて前記APIサーバに送信する場合に、前記複数のAPIサーバの中から当該リクエストに対応するAPIサーバに、前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて送信することを特徴とする請求項1または請求項2に記載のWebシステムである。
【0010】
請求項4に記載の発明は、アプリケーションサーバとAPIサーバとから構成されるWebシステムにおいて用いられるリクエスト処理方法であって、前記アプリケーションサーバが、クライアントから受信したリクエストの認証処理またはセッション処理を行うとともに、前記リクエストが前記APIサーバへのアクセスを要求している場合には前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて前記APIサーバに送信する認証・セッション処理手順を有し、前記APIサーバが、前記アプリケーションサーバから受信したリクエストに付随されている認証処理結果またはセッション処理結果に基づいて、当該受信したリクエストを処理するリクエスト処理手順を有することを特徴とするリクエスト処理方法である。
【発明の効果】
【0011】
この発明によれば、アプリケーションサーバの認証・セッション処理部が、クライアントから受信したリクエストの認証処理またはセッション処理を行うとともに、リクエストがAPIサーバへのアクセスを要求している場合には認証処理結果またはセッション処理結果をリクエストに付随させてAPIサーバに送信する。たとえば、認証・セッション処理部は、認証処理結果またはセッション処理結果をリクエストに付随させてAPIサーバに送信する場合に、認証処理結果またはセッション処理結果をリクエストに付随させてAPIサーバに標準化された通信方式で送信する。
【0012】
これにより、APIサーバのリクエスト処理部は、標準化された通信方式で認証処理結果またはセッション処理結果を受信することができる。よって、このAPIサーバのリクエスト処理部は、アプリケーションサーバから受信したリクエストに付随されている認証処理結果またはセッション処理結果に基づいて、当該受信したリクエストを処理することができる。
【0013】
従って、アプリケーションサーバとAPIサーバとを有するWebシステムは、アプリケーションサーバによらずAPIサーバを再利用することができるという効果を奏する。
【発明を実施するための最良の形態】
【0014】
以下、図面を参照して、本発明の実施の形態について説明する。図1は、この発明の一実施形態によるWebシステムの構成を示す概略ブロック図である。
このWebシステムは、クライアント1と、アプリケーションサーバ2と、API(Application Programming Interface)サーバ3とを有している。このWebシステムは、アプリケーションサーバ2およびAPIサーバ3から構成されるサーバと、クライアント1とのクライアントサーバシステムとして構成されている。
【0015】
このアプリケーションサーバ2とクライアント1とは、通信回線を介してHTTP(HyperText Transfer Protocol)によって通信を行う。また、アプリケーションサーバ2とAPIサーバ3とは、通信回線を介してHTTPによって通信を行う。この通信回線は、たとえばインターネット網である。すなわち、アプリケーションサーバ2とクライアント1との間の通信方式、および、アプリケーションサーバ2とAPIサーバ3との間の通信方式は、標準化された通信方式である。
【0016】
次に、アプリケーションサーバ2とAPIサーバ3との一例としての構成について説明する。ここでは、アプリケーションサーバ2とAPIサーバ3との構成のうち、本実施形態に関する構成のみについて説明する。
【0017】
アプリケーションサーバ2は、ユーザ情報記憶部21と、認証・セッション処理部22と、アプリケーション処理部23とを有している。ユーザ情報記憶部21には、たとえばクライアント1のユーザ情報と当該クライアントのパスワード情報(または、パスワードのハッシュ情報)とが関連付けて予め記憶されている。
【0018】
認証・セッション処理部22は、クライアント1から受信したリクエストの認証処理またはセッション処理を行うとともに、リクエストがAPIサーバ3へのアクセスを要求している場合には認証処理結果またはセッション処理結果をリクエストに付随させてAPIサーバ3に送信する。また、認証・セッション処理部22は、クライアント1から受信したリクエストの認証処理またはセッション処理を行うとともに、リクエストがAPIサーバ3へのアクセスを要求していない場合にはリクエストをアプリケーション処理部23に送信する。
【0019】
たとえば、認証・セッション処理部22は、クライアント1からリクエストとともにユーザ情報とパスワード情報とを受信する。そして、認証・セッション処理部22は、クライアント1から受信したユーザ情報と関連付けられているパスワード情報をユーザ情報記憶部21から読み出し、当該読み出したパスワード情報とクライアント1から受信したパスワード情報とが一致するか否かを判定することにより、リクエストを認証する。この判定した結果が、認証処理結果に相当する。
【0020】
なお、この認証処理は、OpenIDなどの技術によって、アプリケーションサーバ2の外部で行われてもよい。このOpenIDとは、サイトを越えて使用できる「認証システム」であり、個人が登録した情報を公開することで個人の同一性を保証する認証システムである。
【0021】
また、認証・セッション処理部22は、クライアント1を一旦認証した後は、クライアント1と接続している期間においては、クライアント1とのセッション情報によりクライアント1の認証を維持してもよい。このセッションにより維持される認証の結果が、セッション処理結果に相当する。
【0022】
アプリケーション処理部23は、受信したリクエストを処理し、処理結果をクライアント1に返信する。
【0023】
APIサーバ3は、リクエスト処理部31を有している。このリクエスト処理部31は、アプリケーションサーバ2から受信したリクエストに付随されている認証処理結果またはセッション処理結果に基づいて、当該受信したリクエストを処理する。そして、リクエスト処理部31は、処理結果をクライアント1にアプリケーションサーバ2を介して返信する。
【0024】
次に、図2を用いて、図1を用いて説明したWebシステムの動作について説明する。
まず、クライアント1からのリクエストがサーバに到着すると(ステップS101)、サーバが有するアプリケーションサーバ2の認証・セッション処理部22へとリクエストは届けられる。次に、認証・セッション処理部22は、ユーザ情報記憶部21に記憶されているユーザ情報を参照してリクエストの認証処理を実行する(ステップS102)。
【0025】
次に、認証・セッション処理部22は認証に成功したか否かを判定し(ステップS103)、このステップS103で認証に失敗した場合には、認証・セッション処理部22は、エラーコードとしてクライアントエラーではなくサーバーエラーをクライアント1に送信し(ステップS104)、以降の処理を終了する。
【0026】
一方、ステップS103で認証に成功した場合には、認証・セッション処理部22は、リクエストの内容によって後続の処理を決定する。たとえば認証・セッション処理部22は、まずリクエストの内容がAPIサーバ3に対するリクエストであるか否かを判定する(ステップS105)。このステップS105において、リクエストの内容がAPIサーバ3に対するリクエストである場合には、認証・セッション処理部22は、リクエストをAPIサーバ3に転送し(ステップS106)、そうでない場合にはリクエストをアプリケーション処理部23に転送する(ステップS109)。
【0027】
このステップS109に続いて、アプリケーション処理部23は、サービスに応じた処理を実行し(ステップS110)、その処理結果をクライアント1に返信する(ステップS111)。
【0028】
なお、認証・セッション処理部22は、上述したステップS106でリクエストをAPIサーバ3に転送する場合に、APIサーバ3に転送するリクエストに、ステップS102で得た認証結果を付随して転送する。一例としては、図3に示すように、HTTPヘッダ(X−Username)に認証されたユーザ名を示す情報を追加する。なお、この認証結果は、HTTPヘッダではなく、URLの一部として追加してもよい。たとえば、URLの末尾に、「?x−username=suzuki」のようにして追加してもよい。
【0029】
図2の説明に戻り、上述したステップS106に続いて、APIサーバ3に到着したリクエストは、APIサーバ3のリクエスト処理部31へと届けられる。リクエスト処理部31は、リクエストに付随された認証結果に基づいて、リクエストの処理を実行する(ステップS107)。たとえば、リクエスト処理部31は、リクエストに付随された認証結果に基づいて、リクエストに含まれているデータに対するアクセス制御を実行する。
【0030】
次に、リクエスト処理部31は、処理結果をクライアント1にアプリケーションサーバ2を介して返信する(ステップS108)。たとえば、リクエスト処理部31は、処理結果をアプリケーションサーバ2へと返信する。次に、アプリケーションサーバ2は、APIサーバ3からの処理結果をそのままクライアント1に返信する。この処理は、たとえば、アプリケーションサーバ2が処理結果転送部を有しており、この処理結果転送部が、APIサーバ3から受信した処理結果をクライアント1に転送することにより実行される。
【0031】
なお、ここではステップS106において、認証・セッション処理部22が、APIサーバ3に転送するリクエストに、ステップS102で得た認証結果を付随して転送する場合について説明したが、APIサーバ3に転送するリクエストにセッション処理結果を付随して転送してもよい。
【0032】
図2を用いて説明したWebシステムの動作において、アプリケーションサーバ2とAPIサーバ3との間の通信方式は、標準化されたHTTPであり、特定のプログラム言語やフレームワークに依存しない。そのため、APIサーバ3は、アプリケーションサーバ2に依存せずに、認証処理結果またはセッション処理結果をアプリケーションサーバ2の認証・セッション処理部22から受信し、この受信した認証処理結果またはセッション処理結果に基づいてリクエストを処理することができる。この結果、アプリケーションサーバ2に依存せず、APIサーバ3を再利用することが可能となり、システム開発における経済性が向上する。
【0033】
また、クライアント1はリクエストをアプリケーションサーバ2に送信するのみで、リクエストの結果をアプリケーションサーバ2から受信することができるという効果を奏する。
【0034】
また、以上説明したWebシステムによれば、APIサーバ3は、複数のアプリケーションサーバ2で実行する認証処理およびセッション管理の結果に基づいて所要の処理を行うので、APIサーバ3の機能を複数のアプリケーションサーバ2で再利用できるという効果を奏する。たとえば、図1を用いたWebシステムにおいては、Webシステムが1つのアプリケーションサーバ2を有している場合について説明したが、Webシステムは複数のアプリケーションサーバ2を有していてもよい。そして、この複数のアプリケーションサーバ2が、APIサーバ3の機能を共有して再利用してもよい。
【0035】
なお、図1を用いたWebシステムにおいては、Webシステムが1つのAPIサーバ3を有している場合について説明したが、Webシステムは複数のAPIサーバ3を有してもよい。そして、アプリケーションサーバ2の認証・セッション処理部22は、認証処理結果またはセッション処理結果をリクエストに付随させてAPIサーバ3に送信する場合に、複数のAPIサーバ3の中から当該リクエストに対応するAPIサーバ3に、認証処理結果またはセッション処理結果をリクエストに付随させて送信してもよい。
【0036】
これにより、アプリケーションサーバ2がクライアント1からのリクエストを受け付けて、認証処理またはセッション処理を行った後、続く処理をリクエストに対応するAPIサーバ3に振り分けるので、クライアント1側の処理が簡易となる効果を奏する。たとえば、クライアント1はリクエストをアプリケーションサーバ2に送信するのみで、リクエストの内容に依存せずに、任意のリクエストに対する結果をアプリケーションサーバ2から受信することができ、一度の手続きで、必要とする関連作業をすべて完了させられるようになるという効果を奏する。すなわち、本実施形態によるWEBシステムは、クライアント1に対して、ワンストップサービスを提供することができる。
【0037】
なお、ユーザ情報記憶部21は、ハードディスク装置や光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、CD−ROM等の読み出しのみが可能な記憶媒体、RAM(Random Access Memory)のような揮発性のメモリ、あるいはこれらの組み合わせにより構成されるものとする。
【0038】
なお、図1におけるアプリケーションサーバ2が有する認証・セッション処理部22とアプリケーション処理部23、および、APIサーバ3が有するリクエスト処理部31の各構成は、専用のハードウェアにより実現されるものであってもよく、また、この各構成はメモリおよびCPU(中央演算装置)により構成され、当該各構成の機能を実現するためのプログラムをメモリにロードして実行することによりその機能を実現させるものであってもよい。
【0039】
また、図1におけるアプリケーションサーバ2が有する認証・セッション処理部22とアプリケーション処理部23、および、APIサーバ3が有するリクエスト処理部31の各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各構成の機能を実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
【0040】
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0041】
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【0042】
【図1】この発明の一実施形態によるWebシステムの構成を示すブロック図である。
【図2】図1のWebシステムの動作を説明するフローチャートである。
【図3】一例としての認証結果を示す情報の通信形式(HTTPヘッダ)を示す図である。
【符号の説明】
【0043】
1…クライアント、2…アプリケーションサーバ、3…APIサーバ、21…ユーザ情報記憶部、22…認証・セッション処理部、23…アプリケーション処理部、31…リクエスト処理部

【特許請求の範囲】
【請求項1】
アプリケーションサーバとAPIサーバとから構成されるWebシステムであって、
前記アプリケーションサーバが、
クライアントから受信したリクエストの認証処理またはセッション処理を行うとともに、前記リクエストが前記APIサーバへのアクセスを要求している場合には前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて前記APIサーバに送信する認証・セッション処理部を有し、
前記APIサーバが、
前記アプリケーションサーバから受信したリクエストに付随されている認証処理結果またはセッション処理結果に基づいて、当該受信したリクエストを処理するリクエスト処理部を有する
ことを特徴とするWebシステム。
【請求項2】
前記認証・セッション処理部が、
前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて前記APIサーバに送信する場合に、前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて前記APIサーバに標準化された通信方式で送信する
ことを特徴とする請求項1に記載のWebシステム。
【請求項3】
前記Webシステムが、
複数の前記APIサーバ、
を有しており、
前記認証・セッション処理部が、
前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて前記APIサーバに送信する場合に、前記複数のAPIサーバの中から当該リクエストに対応するAPIサーバに、前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて送信する
ことを特徴とする請求項1または請求項2に記載のWebシステム。
【請求項4】
アプリケーションサーバとAPIサーバとから構成されるWebシステムにおいて用いられるリクエスト処理方法であって、
前記アプリケーションサーバが、
クライアントから受信したリクエストの認証処理またはセッション処理を行うとともに、前記リクエストが前記APIサーバへのアクセスを要求している場合には前記認証処理結果または前記セッション処理結果を前記リクエストに付随させて前記APIサーバに送信する認証・セッション処理手順を有し、
前記APIサーバが、
前記アプリケーションサーバから受信したリクエストに付随されている認証処理結果またはセッション処理結果に基づいて、当該受信したリクエストを処理するリクエスト処理手順を有する
ことを特徴とするリクエスト処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate