JP2008225573A - 代理サーバ、代理サーバのためのプログラム及び代理アクセス方法 - Google Patents

代理サーバ、代理サーバのためのプログラム及び代理アクセス方法 Download PDF

Info

Publication number
JP2008225573A
JP2008225573A JP2007059010A JP2007059010A JP2008225573A JP 2008225573 A JP2008225573 A JP 2008225573A JP 2007059010 A JP2007059010 A JP 2007059010A JP 2007059010 A JP2007059010 A JP 2007059010A JP 2008225573 A JP2008225573 A JP 2008225573A
Authority
JP
Japan
Prior art keywords
user
authentication
web server
cgi
client
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.)
Pending
Application number
JP2007059010A
Other languages
English (en)
Inventor
Masataka Suzuki
雅隆 鈴木
Yoshiaki Ukita
義敬 宇喜多
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.)
Terumo Corp
Original Assignee
Terumo 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 Terumo Corp filed Critical Terumo Corp
Priority to JP2007059010A priority Critical patent/JP2008225573A/ja
Publication of JP2008225573A publication Critical patent/JP2008225573A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Medical Treatment And Welfare Office Work (AREA)

Abstract

【課題】複数のwebサーバの認証を代行する代理サーバを提供する。
【解決手段】代理サーバにユーザを特定する機能と、当該ユーザが目的とするアクセスしたいサーバにおいて認証を済ませたか否かを記録する機能と、ユーザ認証を代行する機能と、受信したhtml文書にURLの絶対位置を変換するタグを挿入する機能を追加した。
【選択図】図2

Description

本発明は、webサーバに適用して好適な技術に関する。
より詳細には、医業SNSサービスの実現に適した、代理サーバに関する。
医業全体に過渡の市場競争原理が持ち込まれてしまった結果、大病院と開業医との格差が生じ、地域医療の効率が阻害される実態を招いてしまった。
これを是正し、地域医療行政の効率化を図り、以ってわが国全体の医療費の低減に結びつけるためには、近隣地域における医療法人同士の連携と情報交換が求められる。
そこで発明者は、医療法人同士が互助の精神に基づき、医業専門のポータルサイトを構築することを考えた。
なお、本発明の先行技術を特許文献1及び2に記す。
特開2002−135335号公報 特開2000−322383号公報
多くの病院は自前のwebサイトを持っている。そこには医師等の医業関係者にのみアクセスを許可するコンテンツ(以下「制限付コンテンツ」)が含まれている。
医業関係者がこれら制限付コンテンツの閲覧をする際には、閲覧したい病院のwebサイトにおいてユーザ登録を行い、ユーザIDとパスワードを取得する必要がある。
このように取得する必要があるユーザIDとパスワードの組は、制限付コンテンツを閲覧したい病院のwebサイトの数だけ増える。したがって、医業関係者はそれらユーザIDとパスワードの組を管理しなければならない。
これは極めて多忙な業務に従事する医業関係者にとって大きな負担である。
本発明はかかる点に鑑みてなされたものであり、単一のユーザ認証のみで複数のwebサイトの認証と透過的なアクセスを実現する代理サーバ、代理サーバのためのプログラム及び代理アクセス方法を提供することを目的とする。
上記課題を解決するための本発明は、クライアントから発せられる、外部サーバのURLと第1のユーザ認証情報を含む第1のアクセス要求を受信し、第1のユーザ認証情報に基づいて前記ユーザを特定すると共に、ユーザが外部サーバにおいてユーザ認証を行ったか否かを確認する。
もし、ユーザ認証が行われていなければユーザ認証を実行し、外部サーバのアクセス要求に用いる第2のユーザ認証情報を生成する。
そして、外部サーバのURLに基づいて第2のアクセス要求を前記外部サーバに送信する。
更に、外部サーバから受信したデータを書き換えるものである。
従来より代理サーバはあったが、ユーザ認証を代行する機能は提供されていなかった。そこで、代理サーバにユーザを特定する機能と、当該ユーザがアクセスしたいサーバにおいて認証を済ませたか否かを記録する機能と、ユーザ認証を代行する機能を追加した。
本発明により、単一のユーザ認証のみで複数のwebサイトの認証と透過的なアクセスを実現する代理サーバ、代理サーバのためのプログラム及び代理アクセス方法を提供できる。
以下、本発明の実施の形態を、図1〜図19を参照して説明する。
本実施形態を図示を伴って説明する前に、本実施形態にかかるシステムの概略を説明する。
本実施形態は、医業に特化したソーシャル・ネットワーキング・サービス(Social Networking Service:SNS:人と人とのつながりを促進する、コミュニティ型のwebサイト。)であり、これを実現するためのwebサーバが中心となって構成される。
医業全体に過渡の市場競争原理が持ち込まれてしまった結果、大病院と開業医との格差が生じ、地域医療の効率が阻害される実態を招いてしまった。
これを是正し、地域医療行政の効率化を図り、以ってわが国全体の医療費の低減に結びつけるためには、近隣地域における医療法人同士の連携と情報交換が求められる。
そこで発明者は、互助の精神に基づき、医療法人同士が医業専門のポータルサイトを構築することを考えた。
本実施形態のwebサーバが提供するSNSサービスは、患者のプライバシー等に配慮し、一般人からのアクセスを遮断するために、ユーザ認証の仕組みを採り入れている。また、医師、看護師、事務担当者等、ユーザの属性を考慮したコンテンツ表示制御やアクセス制御を行うようにしている。
更に、本実施形態のwebサーバは、検査予約等で病院webサイトにログインする際に必要なユーザ認証を代行する仕組みを採り入れている。
[全体構成]
図1は、本実施の形態の例である、医業SNSサービスシステムの全体を示す概略図である。
総合病院102の院内LAN103には、医師104、看護師105、事務担当者106毎に割り当てられているクライアントPC107、108及び109が接続されている。
開業医110は、単一のクライアントPC111を、医師112と看護師113がそれぞれ利用している。
医療器具の卸業者114は、総合病院102と同様に図示しない社内LANを通じてクライアントPC115が接続されている。営業担当者116はこのクライアントPC115を操作する。
これらクライアントPCはインターネット117に接続されている。
そして、医業SNSサーバを構成するwebサーバ118も、インターネット117に接続されている。
[webサーバ]
図2は、webサーバ118の機能的な構成を示すブロック図である。
webサーバ118は、概略的にはHTTP(Hyper Text Transfer Protocol)を用いて、クライアントの図示しないwebブラウザの要求に応じて、クライアントにhtml文書を送信する、周知のwebサーバである。
webサーバ118は、一般的なネットワークOSが稼動するコンピュータである。ネットワークOSは、一例として、FreeBSD等のBSD系、或はLinux(登録商標)等のPOSIX(Portable Operating System Interface for UNIX)(UNIXは登録商標)系OS等が挙げられる。
webサーバプログラム202は、クライアントPCから来る要求(コマンド)を受信し、これに応じて、HTTPにてhtml文書をクライアントへ送信する機能を提供する。端的にいえばwebサーバソフトウェアであり、一例としてはApache(http://www.apache.org/)等である。
webサーバプログラム202はクライアントPCの要求に応じ、cgi(Common Gateway Interface)の実行をも行う。
特に、本実施形態のwebサーバ118が所定の機密性を必要とする性格上、webサーバプログラム202は暗号化モジュール203を含んでいる。
暗号化モジュール203はHTTPS(Hypertext Transfer Protocol Security:webサーバとクライアントPCがデータを送受信するのに使われるプロトコルであるHTTPに、SSLによるデータの暗号化機能を付加したプロトコル。ポート番号443番が主に用いられる。)の機能を提供する。
cgiの実体は標準出力にテキストを出力するプログラムである。cgiが生成するテキストが、webサーバプログラム202によってHTTP或はHTTPSにてクライアントPCへ送信される。
cgiを構成する要素としては、どのようなプログラミング言語であってもよい。perl(http://www.perl.org/)やPHP(http://php.net/)、python(http://www.python.org/)、ruby(http://www.ruby-lang.org/ja/)等のインタプリタ言語に留まらず、CやJava(登録商標)等のコンパイルを要する言語であってもよい。簡単な内容であればシェルスクリプトであってもよい。
各々のcgiは主にwebブラウザに表示する画面を作るためのhtml文書を作成する。つまり、html文書はwebブラウザを通じてGUI(Graphical User Interface)を作成する手段である。
なお、図2ではwebブラウザに表示させる画面毎にcgiが個別に設けられているが、単一のcgiで構成することも可能である。但し、その場合は単一のcgiの中に複数の表示画面を作成する機能が含まれることとなる。
認証cgi204は、クライアントPCから来るアクセス要求に応じて、webサーバプログラム202によって実行される。
認証cgi204は、クライアントPCから得られたパラメータであるユーザIDとパスワードをユーザテーブルから検索して照合する。
ユーザテーブル205には、登録ユーザが重複のないユーザIDにて記録されている。ユーザテーブル205は、各登録ユーザのユーザIDをパスワードと共に管理する。
認証cgi204による照合の結果、ユーザIDとパスワードが合致していれば、認証cgi204は、正常にログインが完了したことを示すCookie(クッキー:webサイトの提供者が、webブラウザを通じて訪問者のコンピュータに一時的にデータを書き込んで保存させるしくみ。殆どの場合、アルファベット及び数字の1バイト文字列にて構成される。)を作成すると共に、自動的に表示cgi206に移行するHTTPメッセージを作成する。これらはwebサーバプログラム202を通じてクライアントPCに送信される。
一方、照合の結果、ユーザIDとパスワードが合致していなければ、ログインが失敗したことを示すエラーメッセージを付して、自動的に図示しないエラー画面html文書に移行するHTTPメッセージを作成する。これらはwebサーバプログラム202を通じてクライアントPCに送信される。
自動的に表示cgi206に移行するHTTPメッセージとは、HTTPのステータスコードの一種である転送機能を用いている。この転送機能のステータスコードは、HTTPのバージョンによって異なる。
http ver.1.1の場合は「303 See Other」というステータスコードと、表示cgi206のURIを、HTTP応答ヘッダに記す。
http ver.1.0の場合は「302 Found」というステータスコードと、表示cgi206のURIを、HTTP応答ヘッダに記す。
認証cgi204は、このように構成したHTTP応答ヘッダを作成し、クライアントPCへ送信する。
クライアントPCのwebブラウザは、このHTTP応答ヘッダを解釈し、直ちに記されているURIに基づいて表示cgi206の表示(実行)をwebサーバ118に要求する。
すなわち、認証cgi204はwebブラウザによって表示画面に表示されるhtml文書を作成しない。或は、認証cgi204がhtml文書(HTTPメッセージの本文)を作成しても、webブラウザの機能により、webブラウザがHTTP応答ヘッダ中の転送ステータスコードを検出して転送を実行するので、当該作成されたhtml文書はwebブラウザには表示されない。
ログイン失敗時に自動的にエラー画面html文書に移行するHTTPメッセージも、同様である。
表示cgi206は、後述するトップメニューをディスプレイに表示するhtml文書を生成する。なお、表示cgi206の表示画面は後述する。
ユーザ登録cgi207は、新規にユーザを登録する際に用いられる。
法人登録cgi208は、新規に医療法人や卸業者を登録する際に用いられる。
これら以外にも多くのcgiがあるが、詳細は省略する。
プロキシcgi209は、本実施形態において重要な機能を提供するものであり、各病院が保有するwebサーバのユーザ認証を代行する機能を新たに追加した、プロキシサーバの機能を提供するcgiである。
プロキシcgi209は、各病院が保有するwebサーバにアクセスするために、非対話型のwebクライアント210を稼動させる。
また、各病院が保有するwebサーバにアクセスする際に必要な情報をセッション情報ファイル211に記録する。
そして、各病院が保有するwebサーバから受信したhtml文書や画像データ等は、スプールディレクトリ212に一時的に保存する。
このプロキシcgi209については後に詳述する。
webサーバ118には各種テーブルが存在する。
図3は、webサーバ118の各テーブルのフィールドを記す。
ユーザテーブル205は前述の通り、ユーザIDとパスワードの他に、当該ユーザの氏名、当該ユーザが所属する医療法人や業者を表す法人IDが格納されている。ユーザテーブル205はユーザIDにおいて重複がない状態で各レコードが格納されている。以下、このようにあるフィールドにおいて「重複がない状態」を「ユニーク(unique)である」と呼ぶ。
ユーザ属性テーブル213は、ユーザIDとユーザ属性コードが格納されている。ユーザ属性テーブル213はユーザIDにおいて重複するレコードが存在し得るので、ユニークではない。
ユーザ属性マスタ214は、ユーザ属性コードとその詳細情報が格納されている。
例として、看護師Aが助産婦の免許を取得した場合、看護師Aは看護師のユーザ属性コード「2」に加えて、助産婦のユーザ属性コード「3」を持つ。看護師AのユーザIDが「ABC98765」というコードであるなら、ユーザ属性テーブル213には、
「ユーザID,ユーザ属性コード」のフィールド順に、
「ABC98765,2」というレコードと、
「ABC98765,3」というレコードを格納することとなる。
すなわち、ユーザは複数の属性を取り得る。属性はシステムの運用に伴い、増える可能性が考えられる。そこで、ユーザ属性マスタ214とユーザ属性テーブル213で管理する。
法人テーブル215は、法人ID、法人名、法人種別コードが格納されている。法人テーブル215は法人IDにおいてユニークである。
法人種別マスタ216は、法人種別コードとその詳細情報が格納されている。法人の場合は複数の種別を持つことはないので、ユーザ属性テーブル213のような、法人IDと法人種別コードとの関係を格納するテーブルは設けていない。
法人リンクテーブル217は、法人IDと、リンクURL(Uniform Resource Locator:TCP/IPネットワーク上に存在する情報源の場所を指し示す記述方式。)、そしてこれらに付随する情報が格納されている。
ここで、図11を参照して、法人リンクテーブル217の詳細を説明する。
図11は、表示cgi206が生成するhtml文書を、クライアントPCのwebブラウザによって表示した、表示画面の一例を示す。ここでは表示画面のうち、医療法人リンク欄1003のみ説明し、その他の欄の説明は後述する。
医療法人リンク欄1003に、「紹介状」「セミナー情報」「検査予約」「セミナー視聴」という項目がある。これらはhtmlの「Aタグ」と呼ばれるリンクである。すなわち、マウス等のポインティングデバイスでこれら項目をクリックすると、項目に埋め込まれているURLが読み出され、URLのスキームに従った動作が起動される。
例えば、「紹介状」の項目は、「<a href="http://www.abchospital.xxxx/shoukaijou.pdf">紹介状</a>」というhtmlタグで記述されている。
説明の都合上、「<a href="...">...</a>」を「Aタグ」と呼ぶ。
なお、URLのスキームについては後述する。
各項目は法人リンクテーブル217のレコードによって構成される。
具体的には、「リンク名」が項目名であり、「リンクURL」がAタグを構成するURLである。
前述の「<a href="http://www.abchospital.xxxx/shoukaijou.pdf">紹介状</a>」の場合は、「紹介状」がリンク名に、「http://www.abchospital.xxxx/shoukaijou.pdf」がリンクURLに記録されているレコードを読み出して、上述のAタグを構成する。
「表示順」は、医療法人リンク欄1003内における項目の表示順を示す。
「シリアルナンバー」は、各レコードにユニークに付される番号である。これは後述するリンクアクセス許可属性テーブル218とプロキシ認証テーブル219において用いられる。
プロキシ(Y/N)フィールドはフラグフィールドであり、これが「Y」であると、後述するプロキシcgi209のURLにリンクURLを連結して、URL文字列を構成する。
再び図2及び図3に戻って説明する。
リンクアクセス許可属性テーブル218には、シリアルナンバーとユーザ属性コードが格納されている。リンクアクセス許可属性テーブル218はシリアルナンバーにおいてユニークではなく、シリアルナンバー毎に重複するレコードが存在し得る。
ここで、図11を参照して、リンクアクセス許可属性テーブル218の詳細を説明する。
図11は、医療法人リンク欄の表示例を示す。
図11(a)において、医師(ユーザ属性コードは1)及び看護師(ユーザ属性コードは2)がwebサーバ118にアクセスすると、医療法人リンク欄には「紹介状」「セミナー情報」「検査予約」「セミナー視聴」と、4つの項目が表示される。これらはリンクアクセス許可属性テーブル218に、各々のリンク毎に表示を許可されるユーザ属性コードが記されているからである。
Aタグが前述の「<a href="http://www.abchospital.xxxx/shoukaijou.pdf">紹介状</a>」の場合は、「紹介状」がリンク名に、「http://www.abchospital.xxxx/shoukaijou.pdf」がリンクURLに記録されているレコードのシリアルナンバーについて、ユーザ属性コードが1のレコードと、ユーザ属性コードが2のレコードが、リンクアクセス許可属性テーブル218に存在する。
一方、事務員(事務担当:ユーザ属性コードは4)がwebサーバ118にアクセスすると、図11(b)のように、「検査予約」の項目のみ表示される。これは、「検査予約」の項目にのみユーザ属性コードが4のレコードが存在し、他のリンク情報のレコードにはユーザ属性コードが4のものが存在しないからである。
このように、本実施形態のwebサーバ118は、アクセスするユーザの属性コードに基づいて、表示する項目、表示しない項目を決定することができる。
プロキシ認証テーブル219は、後述するプロキシcgi209の認証動作において、病院のwebサイトにアクセスする際に必要なユーザ認証に用いる各種情報が保持されている。
プロキシ認証テーブル219は、シリアルナンバーにおいてユニークではなく、シリアルナンバー毎に重複するレコードが存在し得る。プロキシ認証テーブル219の詳細な内容については後述する。
ユーザページ構成テーブル220は、ユーザIDと法人IDと表示順が格納されている。
ユーザページ構成テーブル220はユーザIDにおいてユニークではなく、ユーザID毎に重複するレコードが存在し得る。
ユーザページ構成テーブル220は、法人リンクテーブル217、リンクアクセス許可属性テーブル218と共に、トップメニューの医療法人リンク欄1003及び1004等の表示内容を構成する際に用いられる。
各ユーザはユーザ登録cgi207を実行して、表示cgi206によって表示されるトップメニューに表示したい項目を設定する。すると、その設定内容は、ユーザページ構成テーブル220に格納される。
なお、ユーザページ構成テーブル220に示しているフィールドは、図11及び図11に示す医療法人リンク欄1003を表現するに最低限必要なフィールドのみ記している。これ以外にもフィールドは存在するが、詳細は略す。
[クライアントPC]
図4は、クライアントPCの機能ブロック図である。
典型的なパソコンであるクライアントPC402は、例えばマイクロソフト社のWindows(登録商標)が稼動する。図示しない所定のインターフェースを通じてインターネット117に接続される。
クライアントPC402には、webブラウザ403が稼動し、インターネット117を通じてwebサーバ118から受信するhtml文書を解釈し、ディスプレイ404に表示する。
また、クライアントPC402にはICカードリーダ405が接続されている。ICカードリーダ405は電波を発してICカード406から非接触にて所定の情報を読み取り、当該情報に記述されている内容に従って、所定のプログラムを起動する。例として、Felica(登録商標)が挙げられる。
OSから見ると、ICカード406はICカードリーダ405と共に、半導体ディスク装置として見える。ICカード406は、ファイルシステムを備える、論理的に小さなディスク装置として扱われる。
ICカード406には、ユーザのIDとパスワード、そして自動実行用html文書、或はそのURLがファイルの形で記録されている。特に、自動実行用html文書のURLは、Windows(登録商標)における「ショートカット」の形式で記述されている。
ICカードリーダ405からこれらICカード406の情報を読み取ると、OSに標準的に備わっている「MIME」(Multipurpose Internet Mail Extension:TCP/IPネットワーク上でやりとりされる電子メールにおいて、各国語や画像、音声、動画などを扱うための規格。)の機能に則り、連想的にwebブラウザ403が起動される。
このような機能は、特許文献2に開示されている。
自動実行用html文書がICカード406或はwebサーバ118からwebブラウザ403に読み込まれると、webブラウザ403はhtml文書に埋め込まれている、JavaScript(登録商標)等で記述されているプログラムを実行する。そして、ICカード406内に記録されているユーザIDとパスワードを読み取り、webサーバ118の認証cgi204に送信する。
また、webブラウザ403はwebサーバ118とのHTTPSによる通信を行うために、暗号化モジュール409を備える。
webブラウザ403の起動と共に、ICカード406内に記録されているユーザIDとパスワードを認証cgi204に送信するための仕組みは、様々な形態が考えられる。
標準的なwebブラウザは、このような「起動と共に特定の記録媒体から予め定められた情報を読み取って、所定のURLに向けて送信する」機能を持たない。そこで、そのような機能を提供するプログラムを埋め込んだhtml文書をwebブラウザの起動時に読み込ませる方法が考えられる。
JavaScript(登録商標)でそのようなプログラムを埋め込んだhtml文書をICカード406に格納するか、或はwebサーバに置いて、ICカード406にはそのURLを記述しておく、等の実施形態が考えられる。
また、webブラウザにプラグインソフトウェアを追加するか、専用のwebブラウザを作成すれば、webブラウザにICカードからユーザIDとパスワードを読み出す仕組みを組み込めるので、ICカードにはwebサーバ118の認証cgi204のURLを記録するだけでよい。
また、webブラウザ403にはセキュリティを担保する機能として、セキュリティ担保機能部408を設けることができる。これは、
・webブラウザ403が稼動している最中にはキャッシュディレクトリ内のファイルを他のプロセスから読み出されないようにロックを掛け、
・webブラウザ403が終了する際には、キャッシュディレクトリ内のファイルを、不用意に読み出されないように全部削除する
ためのものであり、webブラウザ403のプラグインとして提供されるか、専用のwebブラウザの一機能として組み込まれる。
ICカードリーダドライバ407はICカード406が載置されているか否かを常にポーリングしており、一度webブラウザ403を起動しても、ICカードリーダ405に載置されていたICカード406が、ICカードリーダ405から取り外されると、ICカードリーダドライバ407はこれを検出して、稼働中のwebブラウザ403を終了させる。
[ログインからトップメニュー表示まで]
図5は、上述のwebサーバ118とクライアントPC402との間で行われる、ユーザ認証から表示cgi206によるトップページを表示するまでの動作の流れを示すフロー図である。
ユーザがICカード406をICカードリーダ405に載置すると(S501)、webブラウザ403が起動される(S502)。
そして、認証cgi204にユーザIDとパスワードを送信する(S503)。
webサーバ118はクライアントPC402のアクセスに呼応して認証cgi204を実行し、受信したユーザIDとパスワードをユーザテーブル205と突き合わせる。その結果、ユーザIDとパスワードの組が正しければ、ユーザを認証する(S504)。
次に、正規ユーザであることに呼応して、表示cgi206にリダイレクト(redirect:転送)するための転送HTTPメッセージを、Cookieと共に送信する(S505)。つまり、これがステータスコード「302」或は「303」の転送ステータスコードのHTTPメッセージである。
クライアントPC402のwebブラウザ403は、転送HTTPメッセージを受けると、メッセージヘッダ中のCookieを保存し、以降のwebサーバ118へのアクセスの際にはこのCookieを伴ってアクセスする。そして、メッセージヘッダ中のURL、すなわち表示cgi206にリダイレクトアクセスする(S506)。これがトップページの要求となる。
表示cgi206は、クライアントPC402のwebブラウザ403のアクセスを受けて実行される(S507)。要求に含まれるCookieの存在を検証し、正規にログインされたユーザであることを確認した後、図10に示すトップページを構成するhtml文書を作成し、これをクライアントPC402に送信する(S508)。
クライアントPC402のwebブラウザ403は、受信したhtml文書を表示する(S509)。この結果、図10のような表示内容がディスプレイ404に表示される。
図6は、クライアントPC402の、ユーザ認証から表示cgi206によるトップページを表示するまでの動作の流れを示すフローチャートである。
処理を開始すると(S601)、ICカードリーダドライバ407はICカード406がICカードリーダ405に置かれたか、常にポーリングする(S602)。
ICカード406がICカードリーダ405に置かれたことを検出すると、ICカード406内に格納されている自動実行用html文書或はそのURLを読み取り、webブラウザ118を起動する(S603)。
webブラウザ403はhtml文書に埋め込まれているJavaScript(登録商標)等で記述されているプログラムを実行し、ICカード406内に記録されているユーザIDとパスワードを読み取り(S604)、webサーバ118の認証cgi204に送信する(S605)。その後は、webサーバ118からHTTPメッセージが来るのを待つ(S606)。
webサーバ118からHTTPメッセージが来たら、HTTPメッセージ中のヘッダを解釈し、Cookieを保存し、以降のアクセスに用いると共に、ヘッダに記されている転送先URLにアクセスする(S607)。この時点で、webブラウザ403は表示cgi206へアクセスすることとなる。
その後は、webサーバ118からHTTPメッセージに含まれるhtml文書が来るのを待ち(S608)、表示cgi206が生成したhtml文書を受信したら、これを表示し(S609)、終了する(S610)。
図7は、webサーバの、認証cgi204の動作の流れを示すフローチャートである。
webサーバプログラム202によって起動されると(S701)、クライアントPC402から受信したIDとパスワードをユーザテーブル205と照合する(S702)。
照合の結果、IDとパスワードの組み合わせが正しいものと確認したら、認証cgi204は、Cookieを含む、トップページ(表示cgi206)へリダイレクトするためのHTTPメッセージを作成して送信する(S703)。このとき、webサーバ118は、Cookieと対応するユーザIDをセッション情報ファイル211に記録しておき、クライアントから来るメッセージ要求に含まれているCookieから正常に認証を済ませたユーザであるのか、またそのユーザIDを取得できるようにする。
照合の結果、IDとパスワードの組み合わせが誤っているものと確認したら、認証cgi204はエラー画面へリダイレクトするためのHTTPメッセージを作成して送信する(S703)。
HTTPメッセージの送信完了を以って、認証cgi204は終了する(S705)。
図8は、webサーバの、表示cgi206の動作の流れを示すフローチャートである。
webサーバプログラム202によって起動されると(S801)、クライアントPC402に送信するためのhtml文書を作成する(S802)。
html文書を作成したら、所定のHTTPメッセージヘッダを付して、クライアントPC402に送信し(S803)、終了する(S804)。
図9は、表示cgi206におけるhtml文書を作成する動作の流れを示すフローチャートである。図8のステップS802に該当する。
処理を開始すると(S901)、クライアントPC402から受信したメッセージ要求に含まれているCookieを基にセッション情報ファイル211を検索し、ユーザIDを取得する。そして、そのユーザIDをキーとして、ユーザページ構成テーブル220を検索し、法人IDを取得する(S902)。ここで図9のステップS902中、「(複数)」と括弧を付しているのは、ユーザが表示を望む医療法人は必ずしも複数とは限らないことに起因する。要するに、図11の医療法人リンク欄1004がない場合もありうる、ということである。
検索の結果、法人IDを一つ以上得ると、この法人IDを検索のキーとする。検索の結果得られた法人IDについて順番に処理するために、最初に得られた法人IDを検索のキーに設定する(S903)。
これ以降はループ処理である。
検索キーに設定された法人IDを用いて、法人リンクテーブル217を検索し、シリアルナンバーを複数取得する(S904)。
そして、検索の結果得られたシリアルナンバーについて順番に処理するために、最初に得られたシリアルナンバーを検索のキーに設定する(S905)。
これ以降はループ処理である。
検索キーに設定されたシリアルナンバーを用いて、リンクアクセス許可属性テーブル218を検索し、ユーザ属性コードを複数取得する(S906)。
得られたユーザ属性コードの中に、現在アクセスしているユーザのユーザ属性はあるか否かを検証する(S907)。もしあれば、それは医療法人リンク欄1003等に表示すべき項目である。そこで、このステップで得られたシリアルナンバーに基づき、法人リンクテーブル217の該当するレコードを読み取り、RAM等に一時保存する(S908)。なければその項目(法人リンクテーブル217の該当するレコード)は表示対象外であるので何もしない(S907のN)。
次に、ステップS904における検索の結果得られたシリアルナンバーについて、次に処理するべきシリアルナンバーがあるか否かを確認する(S909)。
もしあれば(S909のN)、検索キーを次のシリアルナンバーに設定し(S913)、再度リンクアクセス許可属性テーブル218を検索する処理(S906)を、検索対象のシリアルナンバーがなくなるまで続ける。
そして、もしなければ(S909のY)、RAM等に一時保存していた、法人リンクテーブル217の該当レコードの情報を、表示順のフィールドの値に基づいてソートし、表示する(S910)。
以上で、ユーザページ構成テーブル220における、一つの法人IDについての検索及び表示処理が完結する。
一つの法人IDについての検索及び表示処理が終わったら、次に処理すべき法人IDが、ステップS903にて得られた法人IDのリスト中にあるか否か検証する(S911)。
もしあれば(S911のN)、次の法人IDを検索キーに設定し(S914)、再度当該法人IDについての検索及び表示処理を繰り返す。
もしなければ(S911のY)、全ての法人IDについて検索及び表示処理が終了したこととなる(S912)。
[表示画面(トップメニュー)]
図10は表示画面である。クライアントPC402のディスプレイ404に、webブラウザ403によって表示される内容である。
表示画面(トップメニュー)1001には、
・法人表示欄1002、
・医療法人リンク欄1003及び1004、
・卸業者リンク欄1005、
・全体情報リンク欄1006、
・法人向け情報表示欄1007、
・SNSリンクボタン1008
が設けられている。
また、医療法人リンク欄1003及び1004の左右には、スクロールボタン1009及び1010が設けられている。
このスクロールボタン1009及び1010を操作することにより、医療法人リンク欄1003及び1004の表示内容が医療法人毎に切り替わる。
なお、動的なhtml文書の書き換えを実現するために、Ajax(「エイジャックス」と読む。AsychronousJavaScript + XML の略。webブラウザに実装されているJavaScript(登録商標)のHTTP通信機能を使って、webページのリロードを伴わずに、webサーバとXML形式のデータのやり取りを行って処理を進めていく、対話型webアプリケーションの実装形態。)を用いることができる。
図11(a)及び(b)は、医療法人リンク欄の表示例である。
図11(a)は医師(ユーザ属性コードは1)及び看護師(ユーザ属性コードは2)における表示例である。
医療法人リンク欄1003に表示されている「紹介状」「セミナー情報」「検査予約」「セミナー視聴」の4つの項目は、リンクアクセス許可属性テーブル218に、各々のリンク毎に表示を許可されるユーザ属性コードである1と2が記されている。
図11(b)は事務員(事務担当:ユーザ属性コードは4)における表示例である。
医療法人リンク欄1004に表示されている「検査予約」の項目は、リンクアクセス許可属性テーブル218に、各々のリンク毎に表示を許可されるユーザ属性コードである4が記されている。
[プロキシサーバ機能]
図12は、本実施形態によるwebサーバ118の特徴的な機能の一つである、プロキシサーバ機能を説明する全体概略図である。
医師1202等のユーザがクライアントPC402を操作してwebサーバ118にログインし、医療法人リンク欄1003或は1004の中の所定のリンクをマウス等のポインティングデバイスでクリックする。
そのリンクには、本実施形態によるプロキシサーバ機能を提供するプロキシcgi209へのリンクが埋め込まれている。
webブラウザ403がこれをアクセスすると、webサーバ118内のプロキシcgi209は、URLにプロキシcgi209のパラメータとして記述されている、病院1204のwebサーバ(以下、「病院webサーバ」)1203へアクセスを行う。
このとき、プロキシcgi209は、病院webサーバ1203にアクセスする際に、病院webサーバ1203が要求するユーザ認証を行う。
プロキシ(proxy)サーバは代理サーバともいう。その意味である「代理」の通り、直接アクセスができないクライアントに代わって、アクセスを代行するサーバを指す。多くは企業内LANと外部のインターネットとの間に設けられたり、インターネット接続プロバイダのサービスの一環として設けられることが多い。
図13は、プロキシcgi209によるURLの変換処理の仕組みを説明する概略図である。
プロキシcgi209は、パラメータとして渡される、病院webサーバ1203のURLを読み取り、これに向かってアクセスを行う。
病院webサーバ1203から受信したデータは、プロキシcgi209によって、クライアントPC402に対する応答として返信される。
クライアントPC402は、URL文字列1302に従ってwebサーバ118にアクセスする。
webサーバ118内のプロキシcgi209は、URL文字列1302からパラメータを抜粋し、新たなURL文字列1303を生成し、これに従って病院webサーバ1203にアクセスする。
URLのフォーマットは、「(スキーム名):(スキーム毎に定められた表現形式)」という形式である。
スキームは情報源に対するアクセス方法を指し、プロトコル名が用いられていることが多い。
FQDNは「Fully Qualified Domain Name」の略で、「完全修飾ドメイン名」とも訳される。TCP/IPネットワーク上で、ドメイン名・サブドメイン名・ホスト名を省略せずにすべて指定した記述形式を指す。
パスは、ホストに要求する情報源の在り処を示す。
URL文字列1302のうち、「?」を挟んで右側の文字列は、プロキシcgi209のパスである「proxy.cgi」に渡されるパラメータである。
つまり、プロキシcgi209は、パラメータとして渡されたURL文字列1303を用いて、webクライアント210にて病院webサーバ1203にアクセスする。
改めて図2を参照して説明する。
プロキシcgi209は、上述のようにURL文字列1302のうち、アクセス要求として渡されるパス名と、それ以降の文字列を受けて、webクライアント210を実行し、病院webサーバ等にアクセスする。
このとき、セッション情報ファイル211には、アクセスをしてきたユーザが目的となる病院webサーバにおいてユーザ認証を済ませているか否か等の情報が記録されている。
スプールディレクトリ212は、webクライアントが病院webサーバ等から受信したデータを一時的に保存するディスク領域である。
以上に説明したプロキシcgi209の動作を、機能のブロック図にて説明する。なお、HTTPにおけるユーザ認証には多種多様なものが存在するが、ここでは代表的なユーザ認証技術として、Cookie認証とBASIC認証について、プロキシcgi209の機能を説明する。
図14はプロキシcgi209の機能を示すブロック図である。また、クライアントPC402からwebサーバ118に向けて発されるアクセス要求(リクエスト)の内容と、webクライアント210から病院webサーバ1203に向けて発されるアクセス要求の内容をも例示する。
クライアントPC402からwebサーバ118に向けて、リクエスト1406が発される。
リクエスト1406の一行目は
「GET /proxy.cgi?http://www.abchospital.xxxx/yoyaku.cgi」
という文字列である。HTTPのメソッドと、パラメータの組である。
二行目は
「Host: www.medicalsns.xxxx」
である。つまり、
「https://www.medicalsns.xxxx/proxy.cgi?http://www.abchospital.xxxx/yoyaku.cgi」
というURL文字列1302の、FQDNが二行目に、それ以降のcgiのパスとcgiに渡されるパラメータが一行目に配される。そして、所定の文字列が何行か続き、最後に
「Cookie: SESSIONID=qawsedrftgyhujikolp」
という行と、改行二つ(図示せず)が続く。最後の「Cookie: 」の行が、クライアントPC402を使用するユーザをwebサーバ118が認証した際に、webブラウザ403が保存したCookieである。
つまり、リクエスト1406は、クライアントPC402のユーザの認証情報を含んでいる。
リクエスト1406の最後は、改行コードが二つ連続して終了する。改行コード二つで、リクエストを受け取る側は、リクエストの終端を認識する。
リクエスト1406は暗号化モジュール203を含むwebサーバプログラム202を通じてプロキシcgi209に渡される。
プロキシcgi209の内部では、受信したリクエスト1406はアクセス要求受信部1402に供給される。ここでリクエスト1406に含まれているCookieを取り出し、ユーザ特定及び認証確認部1403に渡される。
ユーザ特定及び認証確認部1403は、Cookieからセッション情報ファイル211を読み取り、アクセスしてきているユーザのユーザIDを特定する。
次に、ユーザ特定及び認証確認部1403は、アクセス要求受信部1402から、リクエスト1406の一行目にある、プロキシcgi209に渡されるパラメータ文字列を取得する。そして、この文字列から病院webサーバ1203のFQDNを取り出す。
そして、セッション情報ファイル211を病院webサーバ1203のFQDNについて検索し、病院webサーバ1203において認証を行ったか否かを確認する。
認証が済んでいれば、ユーザ特定及び認証確認部1403は、認証部1404を通じてアクセス要求変換部1405にwebクライアント210を実行させるべく命ずる。
アクセス要求変換部1405は、アクセス要求受信部1402が受信したリクエスト1406からURL文字列1303を生成し、セッション情報ファイル211に記録されているユーザ認証のための情報を用いて、webクライアント210を実行する。
もし、病院webサーバ1203がCookie認証の場合は、病院webサーバ1203にアクセスするためのCookieを含むリクエスト1407を生成する。
もし、病院webサーバ1203がBASIC認証の場合は、病院webサーバ1203にアクセスするためのIDとパスワードをBase64エンコードした「Authorization: Basic 」文字列を含むリクエスト1408を生成する。
病院webサーバ1203からwebクライアント210へデータが送られると、その際に得られるHTTPメッセージヘッダをヘッダ解析部1410が解析する。
解析の結果、MIME宣言が「text/html」であれば、ヘッダ解析部1410はhtml文書書換部1409に命じて、受信したhtml文書にBASEタグ1603を挿入させる。なお、BASEタグ1603については後述する。
解析の結果、MIME宣言が「text/html」以外のものであれば、ヘッダ解析部1410はhtml文書書換部1409に命じて、受信したデータをそのまま素通りさせる。
そして、一旦受信したデータをスプールディレクトリ212に貯めた後、webサーバプログラム202を通じてクライアントPC402に送信する。
以上説明したように、ユーザ認証を要するwebサーバに対するアクセスのリクエストには、ユーザ認証の証拠となる文字列が含まれている。
Cookie認証であれば、「Cookie: 」で始まる文字列であり、BASIC認証であれば「Authorization: Basic 」で始まる文字列である。
[Cookie認証]
図15は、病院webサーバ1203においてアクセスしたい対象となるwebページがCookie認証を必要とする場合における、クライアントPC402と、プロキシcgi209と、病院webサーバ1203の動作の流れを示すフロー図である。
クライアントPC402がURL文字列1302を用いてwebサーバ(プロキシサーバ)118のプロキシcgi209にアクセスする(S1501)。
プロキシcgi209はクライアントPC402のアクセス要求に含まれているCookieを読み取り、アクセスしてきたユーザのユーザIDをセッション情報ファイル211から特定する。
次に、URL文字列1302からパラメータ(URL文字列1303)を抜き出す。
そして、セッション情報ファイル211を読み取り、当該ユーザが目的とする病院webサーバ1203において認証を済ませているか否かを見る。
ここで、未だに認証が行われていない状態であることを確認すると、webサーバ118のプロキシcgi209は、認証処理を開始する。
先に取得したユーザIDと、病院webサーバ1203のURL文字列1303をキーにして、プロキシ認証テーブル219を検索し、該当するレコードを得る。そして、サーバ用ID、サーバ用パスワード、認証cgiのURL、認証方式、メソッド、認証成功時のURLを取得する(S1502)。
(プロキシ認証テーブル)
ここでプロキシ認証テーブル219の各フィールドを説明する。
プロキシ認証テーブル219には、病院webサーバ1203にアクセスする際に行うユーザ認証に必要な情報が格納されている。
シリアルナンバーは、法人リンクテーブル217のシリアルナンバーである。
全体認証はフラグフィールドであり、このフィールドが「Y」のときには、ユーザIDの欄は空欄で、全てのアクセス可能なユーザが共通のサーバ用IDとサーバ用パスワードを用いて認証を行う。
ユーザIDはユーザテーブル205のユーザIDと等しい。
サーバ用IDとサーバ用パスワード(サーバ用PW)は、病院webサーバにアクセスする際に必要となるIDとパスワードである。
認証cgiのURLは、病院webサーバに設けられている認証cgiのURLである。(本実施形態のwebサーバ118の認証cgi204とは別であることに注意されたい。)このように記載を分けている理由は、法人リンクテーブル217に記載されるリンクURLにはログイン画面のURLが記載されるのに対し、認証cgiのURLはログイン画面のログインボタン等を押すことによりアクセスが行われ、実質的な認証処理が行われることに起因する。
認証方式は、認証の方法が記入される。本実施形態ではCookie認証とBASIC認証のいずれかの値が記入される。勿論、これらと認証の方法が異なる方式に対応する場合には、このフィールドに新たな値が追加されることとなる。
メソッドは、認証方式がCookie認証の場合における、IDとパスワードの送信方法である。POSTメソッドとGETメソッドのいずれかである。
認証成功時のURLは、Cookie認証の場合において、認証が成功した時にリダイレクトアクセスされるURLが記入される。これは認証の成功或は失敗の判断処理に用いられる。
以上説明したように、プロキシ認証テーブル219の各フィールドの内容は、HTTPのアクセスの詳細な内容に深く立ち入る内容である。したがって、システム管理者等がこのフィールドの中身を記述することとなる。
再び図15の説明に戻る。
認証方式がCookie認証であると判ると、webサーバ118のプロキシcgi209は、必要な情報を取得した後、URL文字列1303、つまり病院webサーバ1203のログインページにアクセスする(S1503)。
病院webサーバ1203はこれに呼応して、ログインページのhtml文書を送信する(S1504)。
次に、webサーバ118のプロキシcgi209は、ログインページのhtml文書の受信に呼応して、先にステップS1502においてプロキシ認証テーブル219の該当レコードから取得した(指定された)、病院webサーバ1203の認証cgiのURLに対し、サーバ用IDとサーバ用パスワードを、指定されたメソッドで、認証cgiに送信する(S1505)。
病院webサーバ1203の認証cgiはこれを受けて認証処理を行う(S1506)。
認証が正常に行われると、病院webサーバ1203はCookieと共にHTTP転送メッセージを送信する(S1507)。
webサーバ118のプロキシcgi209はこのHTTP転送メッセージを見る。
HTTPメッセージヘッダ中にあるURLを見て、これがプロキシ認証テーブル219の該当レコードにおける、認証成功時のURLであるか否かを比較する。HTTPメッセージヘッダ中にあるURLと認証成功時のURLが一致していれば、認証が成功したといえる。そこで、セッション情報ファイルに、プロキシ認証テーブル219の該当レコードのシリアルナンバーと、認証を行った旨のフラグと、HTTPメッセージ中に含まれているCookieを保存する(S1508)。
この時点で認証がなされたので、html変換処理を開始する(T1510)。
そして、認証がOKであれば、受信したHTTPメッセージのヘッダに含まれている転送URLにアクセスする(S1509)。
転送URLのアクセスに病院webサーバ1203が呼応した結果、認証を正常に済ませた際に表示されるトップページのhtml文書が病院webサーバ1203から送信される(S1511)。
webサーバ118のwebクライアント210はこれを受信し、プロキシcgi209を通じてスプールディレクトリ212に蓄積する。
なお、このとき、HTTPメッセージヘッダに含まれているMIME宣言を見て、「text/html」であれば、「<head>」タグ中に「<base href="...">」を埋め込む(S1512)。
ここで、図16を参照して、ステップS1512の処理の内容を説明する。
図16(a)及び(b)は、プロキシcgi209によって変換処理が行われるhtml文書の内容を示す。ステップS1512及びS1518においてなされる処理である。
図16(a)は、変換処理前のhtml文書である。つまり、病院webサーバ1203から受信した状態のhtml文書である。
図16(b)は、プロキシcgi209によって変換処理が行われた後のhtml文書である。図16(a)の「<head>〜</head>」(以下「HEADタグ」)1601と比べると、HEADタグ1602内に「<base href="...">」(以下「BASEタグ」)1603が埋め込まれている。
この処理を行うと、相対的に記述されているURLの絶対位置が、追加したBASEタグ1603によって変更される。つまり、画像データ等もwebサーバ118のプロキシcgi209を通じて取得することとなる。
図16(b)では、画像データのURLが相対的に記述されているタグが二つある。
BODYタグ1604はhtml文書の本文の始まりの宣言であり、この中の「background=」文字列以降に、背景画像を指定することができる。
IMGタグ1605はhtml文書中に画像を表示するタグである。
これらのデータの取得は、BASEタグ1603の存在により、webサーバ118のプロキシcgi209を通じて取得することとなる。
再び図15に戻る。
変換処理が行われたhtml文書は、スプールディレクトリ212に一旦保存された後、クライアントPC402に送信される(S1513)。
ステップS1514以降は、ユーザ認証が行われた以降の、プロキシcgi209の普遍的な動作を説明する。
html文書の内容次第では、図16にて示したように、画像データのURLが含まれている場合がある。その場合は、webブラウザ403が自動的にその取得を行う。或は、ユーザが自発的に表示されたhtml文書中のリンクをクリックする等で、アクセス要求を発する(S1514)。
webサーバ118のプロキシcgi209がクライアントPC402からアクセス要求を受けると、アクセス要求の中に含まれているCookieからセッション情報ファイル211を検索し、当該ユーザが目的とする病院webサーバ1203において認証処理を正常に済ませていることを知る。そこで、セッション情報ファイル211に保存されている、病院webサーバ1203のためのCookieを用いて、病院webサーバ1203へのアクセス要求を行う(S1516)。
病院webサーバ1203はその要求を受け、html文書或は画像データ等をwebサーバ118に送信する(S1517)。
webサーバ118のwebクライアント210はこれを受信し、プロキシcgi209に渡す。プロキシcgiはHTTPメッセージヘッダのMIME宣言を確認し、html文書であれば先に述べたBASEタグ挿入処理を施し、html文書でなければ何もせずにスプールディレクトリ212に一旦蓄積する(S1518)。
蓄積を完了したら、当該データファイルの中身をクライアントPC402に送信する(S1519)。
図17は、プロキシcgi209の全体動作のフローチャートである。
クライアントPC402からの要求に呼応して、webサーバプログラム202からプロキシcgi209が起動されると(S1701)、最初にクライアントPC402のリクエスト文字列から、病院webサーバ1203等にアクセスするURLを取得する(S1702)。
次に、このURLとユーザIDで検索を行い、当該webサーバにおいて既にユーザ認証は済んでいるか否かを確認する(S1703)。
もし、既に認証済みであれば、アクセスのメソッドがPOSTメソッドであれば(S1704)、POSTメソッドにてアクセスし、またこの時にクライアントPC402から受信した文字列をそのまま指定URLへ送信する(S1705)。或はGETメソッドであれば、GETメソッドでアクセスする(S1706)。いずれの場合にも、病院webサーバ1203から所定のデータを受信する(S1707)。
なお、ステップS1705及びS1706は、認証方式によって病院webサーバ1203に出すアクセス要求の形式が異なる。
BASIC認証であれば、IDとパスワードをBase64エンコードした文字列を、アクセス要求(リクエスト)のヘッダに含める。
Cookie認証であれば、Cookieをアクセス要求(リクエスト)のヘッダに含める。
受信の際に、HTTPメッセージのヘッダを見て(S1708)、受信したデータがhtml文書であるか否かを、HTTPメッセージヘッダ中の「Content-Type:」フィールドに記載されている、MIME宣言で確認する(S1709)。
MIME宣言が「text/html」であれば、受信したデータはhtml文書である。そこで、html文書の「<head>〜</head>」タグ内に「<base href="...">」を埋め込む(S1710)。
なお、MIME宣言が「text/html」でない場合は、このような処理をする必要はない(S1709のN)。
いずれにしろ、受信したデータはスプールディレクトリ212に一旦蓄積する(S1711)。そして、蓄積が完了したら、クライアントPC402に送信して(S1712)、処理を終了する(S1713)。
ステップS1703で、ユーザ認証が済んでいないと判った場合は、ユーザ認証処理を行う(S1714)。
図18は、そのユーザ認証処理の動作の流れを示すフローチャートである。
処理を開始すると(S1801)、プロキシcgi209は、先にCookieからセッション情報ファイル211を通じて取得したユーザIDと、病院webサーバ1203のURL文字列1303をキーにして、プロキシ認証テーブル219を検索し、該当するレコードを得る。そして、サーバ用ID、サーバ用パスワード、認証cgiのURL、認証方式、メソッド、認証成功時のURLを取得する(S1802)。
次に、プロキシ認証テーブル219から取得した認証方式がBASIC認証であるか否かを見る(S1803)。
BASIC認証であれば、BASIC認証用ログイン処理を行う(S1804)。
Cookie認証であれば、Cookie認証用ログイン処理を行う(S1805)。
いずれかのログイン処理が完了すると、処理を終了する(S1806)。
図19は、Cookie認証の動作の流れを示すフローチャートである。図18のステップS1805の中身であり、図15のステップS1502からS1509までの処理に該当する。
図18のステップS1803にて、Cookie認証と判断されると(S1901)、プロキシcgi209のパラメータとして記述されている、URL−PATHにて指定されたURL(病院webサーバ1203のURL)にアクセスする(S1902)。
程なくして、病院webサーバ1203からログイン用webページ(html文書)が受信される(S1903)。
受信に呼応して、ステップS1802にて予め取得していた
・指定メソッド(GETかPOSTか)、
・病院webサーバ1203にアクセスするためのユーザID、
・病院webサーバ1203にアクセスするためのパスワード、
・病院webサーバ1203の認証cgi204のURL
を用いて、病院webサーバ1203の認証cgi204にアクセスし、指定メソッドにてユーザIDとパスワードを送信する(S1904)。
程なくして、病院webサーバ1203から転送メッセージ、つまりステータスコードが「302」或は「303」のHTTPメッセージを受信する(S1905)。
この転送メッセージのヘッダから、転送先URLを取得して、それが認証成功時のURLであるか否かを判断する(S1906)。つまり、病院webサーバ1203の認証cgi204における分岐処理である、認証結果を検証するのである。
もし、正常認証におけるURLであれば、そのHTTPメッセージのヘッダには必ずCookieが含まれている。そこで、これをセッション情報ファイル211に記録する。また、認証が正常に行われた旨のフラグ情報も、セッション情報ファイル211に記録する(S1907)。そして、転送先URLにアクセスして(S1908)、このサブルーチンの処理を終了する(S1909)。
もし、認証失敗におけるURLであれば、エラーメッセージをクライアントPC402に送信し(S1910)、異常終了とする(S1911)。
図20は、BASIC認証の動作の流れを示すフロー図である。
BASIC認証は正しいIDとパスワードをアクセス要求の一部であるリクエストヘッダに含めればよいので、Cookie認証と比べると認証処理は単純になる。
クライアントPC402がURL文字列1302を用いてwebサーバ(プロキシサーバ)118のプロキシcgi209にアクセスする(S2001)。
プロキシcgi209はクライアントPC402のアクセス要求に含まれているCookieを読み取り、アクセスしてきたユーザのユーザIDをセッション情報ファイル211から特定する。
次に、URL文字列1302からパラメータ(URL文字列1303)を抜き出す。
そして、セッション情報ファイル211を読み取り、当該ユーザが目的とする病院webサーバ1203において認証を済ませているか否かを見る。
ここで、未だに認証が行われていない状態であることを確認すると、webサーバ118のプロキシcgi209は、認証処理を開始する。
先に取得したユーザIDと、病院webサーバ1203のURL文字列1303をキーにして、プロキシ認証テーブル219を検索し、該当するレコードを得る。そして、サーバ用ID、サーバ用パスワード、認証cgiのURL、認証方式、メソッド、認証成功時のURLを取得する(S2002)。
なお、認証方式がBASIC認証の場合は、メソッドと認証成功時のURLの各フィールドは空である。
ステップS2003以降は、プロキシcgi209の普遍的な動作を説明する。
IDとパスワードをBase64エンコードした文字列を、アクセス要求(リクエスト)のヘッダに含める(S2003)。そして、病院webサーバ1203に送信する(S2004)。
病院webサーバ1203はこれに呼応して、要求されたwebページのhtml文書を送信する(S2005)。
webサーバ118のwebクライアント210はこれを受信し、プロキシcgi209に渡す。プロキシcgi209はHTTPメッセージヘッダのMIME宣言を確認し、html文書であれば先に述べたBASEタグ挿入処理を施し、html文書でなければ何もせずにスプールディレクトリ212に一旦蓄積する(S2006)。
蓄積を完了したら、当該データファイルの中身をクライアントPC402に送信する(S2007)。
これ以降は、上記と同様の処理が続く。
クライアントPC402からwebサーバ118のプロキシcgi209へのアクセスは(S2008)、IDとパスワードをBase64エンコードした文字列を、アクセス要求(リクエスト)のヘッダに含めて(S2009)、病院webサーバ1203に送信する(S2010)。
病院webサーバ1203はその要求を受け、html文書或は画像データ等をwebサーバ118に送信する(S2011)。
webサーバ118のwebクライアント210はこれを受信し、プロキシcgi209に渡す。プロキシcgiはHTTPメッセージヘッダのMIME宣言を確認し、html文書であれば先に述べたBASEタグ挿入処理を施し、html文書でなければ何もせずにスプールディレクトリ212に一旦蓄積する(S2012)。
蓄積を完了したら、当該データファイルの中身をクライアントPC402に送信する(S2013)。
クライアントPC402のICカードリーダ405に載置してあったICカード406が取り除かれると、webブラウザ403はwebサーバ118に対し、ログオフ処理を行う。
ログオフがなされると、セッション情報ファイル211と、これに付随して、病院webサーバ1203からダウンロードして、一時的にスプールディレクトリに蓄積されていたファイル群が削除される。
なお、必要に応じて、病院webサーバ1203に対するログオフ処理を実行するとよい。
本実施形態には、以下のような応用例が考えられる。
(1)クライアントPC402のwebブラウザ403に代えて、Macromedia社のShockwave(登録商標)やFlash(登録商標)、或はJava(登録商標)アプレット等の技術が利用可能である。
(2)プロキシcgi209に代えて、ApacheのモジュールやSquid(http://www.squid-cache.org/)等、専用のプロキシサーバソフトウェアに本実施形態の認証機能を組み込むこともできる。
(3)図17のステップS1704では、メソッドをPOSTとGETしか記述していないが、HTTPのメソッドはこれ以外にも多々ある。他のメソッドは、その用途等に応じて、POST或はGETに準じた処理を施すこととなる。
病院webサーバ1203の認証方法は、Cookie認証とBASIC認証に限られない。ダイジェスト認証、HTTPネゴシエーション等、認証方式に応じて多種多様な対応が考えられる。
同様に、本実施形態のwebサーバ118の認証方法も、多種多様なバリエーションが考えられる。
本実施形態においては、認証代行機能付プロキシサーバを開示した。
本実施形態によるプロキシサーバを用いることにより、多数のユーザ認証を要するwebサーバへのユーザ認証処理を、プロキシサーバが全て代行することができる。
ユーザはプロキシサーバにログインさえすれば、他のwebサーバに透過的にアクセスできるので、他のwebサーバのID及びパスワードの維持管理をせずに済む。
更に、プロキシサーバがユーザのアクセス権限を制御することにより、ユーザに他のwebサーバのアクセスを許可するか否かを制御できる。
以上、本発明の実施形態例について説明したが、本発明は上記実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含むことは言うまでもない。
本発明の一実施の形態による医業SNSサービスシステムの全体を示す概略図である。 webサーバの機能的な構成を示すブロック図である。 webサーバの各テーブルのフィールドを示す図である。 クライアントPCの機能ブロック図である。 webサーバとクライアントPCとの間で行われる、ユーザ認証から表示cgiによるトップページを表示するまでの動作の流れを示すフロー図である。 クライアントPCの、ユーザ認証から表示cgiによるトップページを表示するまでの動作の流れを示すフローチャートである。 webサーバの、認証cgiの動作の流れを示すフローチャートである。 webサーバの、表示cgiの動作の流れを示すフローチャートである。 表示cgiにおけるhtml文書を作成する動作の流れを示すフローチャートである。 表示cgiが生成するhtml文書を、クライアントPCのwebブラウザによって表示した、表示画面を示す。 医療法人リンク欄の表示例を示す。 本実施形態によるwebサーバの特徴的な機能の一つである、プロキシサーバ機能を説明する全体概略図である。 プロキシcgiによるURLの変換処理の仕組みを説明する概略図である。 プロキシcgiの機能を示すブロック図である。 病院webサーバにおいてアクセスしたい対象となるwebページがCookie認証を必要とする場合における、クライアントPCと、プロキシcgiと、病院webサーバの動作の流れを示すフロー図である。 プロキシcgiによって変換処理が行われるhtml文書の内容を示す。 プロキシcgiの全体動作のフローチャートである。 ユーザ認証処理の動作の流れを示すフローチャートである。 Cookie認証の動作の流れを示すフローチャートである。 BASIC認証の動作の流れを示すフロー図である。
符号の説明
101…医業SNSサービスシステム、102…総合病院、103…院内LAN、104、112、1202…医師、105、113…看護師、106…事務担当者、107、108、109、111、115、402…クライアントPC、110…開業医、114…卸業者、116…営業担当者、117…インターネット、118…webサーバ、202…webサーバプログラム、203…暗号化モジュール、204…認証cgi、205…ユーザテーブル、206…表示cgi、207…ユーザ登録cgi、208…法人登録cgi、209…プロキシcgi、210…webクライアント、211…セッション情報ファイル、212…スプールディレクトリ、213…ユーザ属性テーブル、214…ユーザ属性マスタ、215…法人テーブル、216…法人種別マスタ、217…法人リンクテーブル、218…リンクアクセス許可属性テーブル、219…プロキシ認証テーブル、220…ユーザページ構成テーブル、403…webブラウザ、404…ディスプレイ、405…ICカードリーダ、406…ICカード、407…ICカードリーダドライバ、408…セキュリティ担保機能部、409…暗号化モジュール、1001…表示画面、1002…法人表示欄、1003、1004…医療法人リンク欄、1005…卸業者リンク欄、1006…全体情報リンク欄、1007…法人向け情報表示欄、1008…SNSリンクボタン、1009、1010…スクロールボタン、1203…病院webサーバ、1302…URL文字列、1303…URL文字列、1402…アクセス要求受信部、1403…ユーザ特定及び認証確認部、1404…認証部、1405…アクセス要求変換部、1406、1407、1408…リクエスト、1409…html文書書換部、1410…ヘッダ解析部、1602…HEADタグ、1603…BASEタグ、1604…BODYタグ、1605…IMGタグ

Claims (4)

  1. クライアントから発せられる、外部サーバのURLと第1のユーザ認証情報を含む第1のアクセス要求を受信するアクセス要求受信部と、
    前記第1のユーザ認証情報に基づいて前記ユーザを特定すると共に、前記ユーザが前記外部サーバにおいてユーザ認証を行ったか否かを確認するユーザ特定及び認証確認部と、
    前記ユーザ特定及び認証確認部の確認結果に基づいてユーザ認証を実行し、前記外部サーバのアクセス要求に用いる第2のユーザ認証情報を生成する認証部と、
    前記外部サーバのURLに基づいて前記第2のユーザ認証情報を含む第2のアクセス要求を前記外部サーバに送信するクライアント部と、
    前記クライアント部が前記外部サーバから受信したデータを書き換える書換部と
    を具備することを特徴とする代理サーバ。
  2. 前記外部サーバはwebサーバであり、
    前記クライアント部は前記webサーバからhtml文書を受信するwebクライアントであり、
    前記書換部は前記クライアント部が受信したhtml文書に所定のタグを挿入して前記クライアントに送信することを特徴とする、請求項1記載の代理サーバ。
  3. コンピュータを、
    クライアントから発せられる、外部サーバのURLと第1のユーザ認証情報を含む第1のアクセス要求を受信するアクセス要求受信部と、
    前記第1のユーザ認証情報に基づいて前記ユーザを特定すると共に、前記ユーザが前記外部サーバにおいてユーザ認証を行ったか否かを確認するユーザ特定及び認証確認部と、
    前記ユーザ特定及び認証確認部の確認結果に基づいてユーザ認証を実行し、前記外部サーバのアクセス要求に用いる第2のユーザ認証情報を生成する認証部と、
    前記外部サーバのURLに基づいて前記第2のユーザ認証情報を含む第2のアクセス要求を前記外部サーバに送信するクライアント部と、
    前記クライアント部が前記外部サーバから受信したデータを書き換える書換部
    を有する代理サーバとして機能させるためのプログラム。
  4. クライアントから発せられる、外部サーバのURLと第1のユーザ認証情報を含む第1のアクセス要求を受信するステップと、
    前記第1のユーザ認証情報に基づいて前記ユーザを特定すると共に、前記ユーザが前記外部サーバにおいてユーザ認証を行ったか否かを確認するステップと、
    前記ユーザ認証を行ったか否かを確認するステップの確認結果に基づいてユーザ認証を実行し、前記外部サーバのアクセス要求に用いる第2のユーザ認証情報を生成するステップと、
    前記外部サーバのURLに基づいて前記第2のユーザ認証情報を含む第2のアクセス要求を前記外部サーバに送信するステップと、
    前記外部サーバから受信したデータを書き換えるステップと
    を含むことを特徴とする代理アクセス方法。
JP2007059010A 2007-03-08 2007-03-08 代理サーバ、代理サーバのためのプログラム及び代理アクセス方法 Pending JP2008225573A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007059010A JP2008225573A (ja) 2007-03-08 2007-03-08 代理サーバ、代理サーバのためのプログラム及び代理アクセス方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007059010A JP2008225573A (ja) 2007-03-08 2007-03-08 代理サーバ、代理サーバのためのプログラム及び代理アクセス方法

Publications (1)

Publication Number Publication Date
JP2008225573A true JP2008225573A (ja) 2008-09-25

Family

ID=39844166

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007059010A Pending JP2008225573A (ja) 2007-03-08 2007-03-08 代理サーバ、代理サーバのためのプログラム及び代理アクセス方法

Country Status (1)

Country Link
JP (1) JP2008225573A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011010119A (ja) * 2009-06-26 2011-01-13 Fujitsu Ltd 継承通信管理装置
JP2011028687A (ja) * 2009-07-29 2011-02-10 Sony Corp 情報処理装置、情報提供サーバ、プログラム、通信システム及びログイン情報提供サーバ
JP2012014419A (ja) * 2010-06-30 2012-01-19 Yahoo Japan Corp セキュリティトークンを返信するプログラム及び方法
JP2012048693A (ja) * 2010-08-24 2012-03-08 Takafumi Tanzawa 携帯識別暗号化方式及びクッキーとurl埋め込みの自動切換え方式を使ったログイン方式。
JP2014514670A (ja) * 2011-05-04 2014-06-19 アルカテル−ルーセント コンピュータ・ネットワーク内のサーバにアクセスするサーバ、システム、方法、コンピュータ・プログラム、およびコンピュータ・プログラム製品
JP5565408B2 (ja) * 2009-04-15 2014-08-06 日本電気株式会社 Id認証システム、id認証方法、認証サーバ、端末装置、認証サーバの認証方法、端末装置の通信方法、及びプログラム
JP2017033085A (ja) * 2015-07-29 2017-02-09 株式会社ファーストキャメル コンテンツ提供サイトのコンテンツ情報の操作を代行する情報処理装置、情報処理システム、及び情報処理プログラム
JP2022138831A (ja) * 2021-03-11 2022-09-26 国立大学法人京都大学 ウェブブラウザ、クライアント、情報閲覧支援システム、および情報閲覧支援方法
JP2023055689A (ja) * 2021-03-11 2023-04-18 国立大学法人京都大学 ウェブブラウザ、クライアント、情報閲覧支援システム、および情報閲覧支援方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177552A (ja) * 1996-12-17 1998-06-30 Fuji Xerox Co Ltd 認証応答方法およびその方法を用いた認証応答装置
JPH11149451A (ja) * 1997-11-14 1999-06-02 Fujitsu Ltd 複数サーバ間のid共有方法及びシステム及び複数サーバ間のid共有プログラムを格納した記憶媒体及び管理装置及び管理プログラムを格納した記憶媒体
JP2002215503A (ja) * 2001-01-17 2002-08-02 Sony Corp 変換装置及び方法、課金方法、並びにスクリプト変換システム及び方法
JP2003242119A (ja) * 2002-02-20 2003-08-29 Pfu Ltd ユーザ認証サーバおよびその制御プログラム
JP2004094805A (ja) * 2002-09-03 2004-03-25 Internatl Business Mach Corp <Ibm> ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177552A (ja) * 1996-12-17 1998-06-30 Fuji Xerox Co Ltd 認証応答方法およびその方法を用いた認証応答装置
JPH11149451A (ja) * 1997-11-14 1999-06-02 Fujitsu Ltd 複数サーバ間のid共有方法及びシステム及び複数サーバ間のid共有プログラムを格納した記憶媒体及び管理装置及び管理プログラムを格納した記憶媒体
JP2002215503A (ja) * 2001-01-17 2002-08-02 Sony Corp 変換装置及び方法、課金方法、並びにスクリプト変換システム及び方法
JP2003242119A (ja) * 2002-02-20 2003-08-29 Pfu Ltd ユーザ認証サーバおよびその制御プログラム
JP2004094805A (ja) * 2002-09-03 2004-03-25 Internatl Business Mach Corp <Ibm> ネットワークシステム、リバースプロキシ、コンピュータ装置、データ処理方法及びプログラム

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5565408B2 (ja) * 2009-04-15 2014-08-06 日本電気株式会社 Id認証システム、id認証方法、認証サーバ、端末装置、認証サーバの認証方法、端末装置の通信方法、及びプログラム
US8875270B2 (en) 2009-04-15 2014-10-28 Nec Corporation ID authentication system, ID authentication method, and non-transitory computer readable medium storing ID authentication program
JP2011010119A (ja) * 2009-06-26 2011-01-13 Fujitsu Ltd 継承通信管理装置
US9756038B2 (en) 2009-07-29 2017-09-05 Sony Corporation Information processing apparatus, information providing server, program, communication system, and login information providing server
US8650626B2 (en) 2009-07-29 2014-02-11 Sony Corporation Information processing apparatus, information providing server, program, communication system, and login information providing server
JP2011028687A (ja) * 2009-07-29 2011-02-10 Sony Corp 情報処理装置、情報提供サーバ、プログラム、通信システム及びログイン情報提供サーバ
JP2012014419A (ja) * 2010-06-30 2012-01-19 Yahoo Japan Corp セキュリティトークンを返信するプログラム及び方法
JP2012048693A (ja) * 2010-08-24 2012-03-08 Takafumi Tanzawa 携帯識別暗号化方式及びクッキーとurl埋め込みの自動切換え方式を使ったログイン方式。
JP2014514670A (ja) * 2011-05-04 2014-06-19 アルカテル−ルーセント コンピュータ・ネットワーク内のサーバにアクセスするサーバ、システム、方法、コンピュータ・プログラム、およびコンピュータ・プログラム製品
US9998461B2 (en) 2011-05-04 2018-06-12 Alcatel Lucent Server, a system, a method, a computer program and a computer program product for accessing a server in a computer network
JP2017033085A (ja) * 2015-07-29 2017-02-09 株式会社ファーストキャメル コンテンツ提供サイトのコンテンツ情報の操作を代行する情報処理装置、情報処理システム、及び情報処理プログラム
JP2022138831A (ja) * 2021-03-11 2022-09-26 国立大学法人京都大学 ウェブブラウザ、クライアント、情報閲覧支援システム、および情報閲覧支援方法
JP2023055689A (ja) * 2021-03-11 2023-04-18 国立大学法人京都大学 ウェブブラウザ、クライアント、情報閲覧支援システム、および情報閲覧支援方法
JP7286073B2 (ja) 2021-03-11 2023-06-05 国立大学法人京都大学 ウェブブラウザ、クライアント、情報閲覧支援システム、および情報閲覧支援方法

Similar Documents

Publication Publication Date Title
JP2008225573A (ja) 代理サーバ、代理サーバのためのプログラム及び代理アクセス方法
JP3780507B2 (ja) セッション情報の引継ぎ方法、アプリケーションサーバ、Webサイト、およびプログラム
JP4624376B2 (ja) データのビジュアルキャビネットシステム及びそのシステムを利用したデータ表示方法
US20020133492A1 (en) System and methods for web browser based document scanning, remote storage, and retrieval
US20070174762A1 (en) Personal web page annotation system
JP2018205840A (ja) システム、その方法およびそのプログラム
CN106104498B (zh) 信息处理系统、数据处理控制方法、程序和记录介质
US7752438B2 (en) Secure resource access
US20030090502A1 (en) Method and apparatus for indicating information
US20060031398A1 (en) Apparatus, method, and computer product for web-based data management
JP5593370B2 (ja) アクセス履歴提供システム及びアクセス履歴提供方法
JP2005346570A (ja) 認証システム、認証方法及びコンピュータプログラム
CN102193623B (zh) 信息输入辅助设备和信息输入辅助方法
JP2003058503A (ja) ユーザ認証方法、及び、ユーザ認証システム
JP2016146123A (ja) 管理装置とその制御方法、情報処理装置とその制御方法、個人番号管理システム、及びプログラム
JP2007206850A (ja) ログイン管理装置及びプログラム
JP4944060B2 (ja) グループウェアサーバ装置、グループウェアサーバプログラム及びグループウェアサーバ装置の動作方法
JP2006285405A (ja) コンテンツ仲介方法、コンテンツ仲介システムおよびコンテンツ仲介サーバ
WO2023132049A1 (ja) 個人情報制御方法、情報処理装置、及び個人情報制御プログラム
KR20090112840A (ko) 문서 저작권 관리 방법 및 시스템과 이를 위한 기록매체
JP6530607B2 (ja) システムおよびその制御方法、情報処理装置およびその制御方法、並びにプログラム
JP4563775B2 (ja) 認証情報自動入力装置、方法およびプログラム
JP6318759B2 (ja) 情報管理装置、情報管理システム、情報管理方法、及びプログラム
JP2001325224A (ja) 通信システム
JP2005293161A (ja) 認証システム、認証方法及びコンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120323

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120612