図3は、認証サービス提供サーバの一例のハードウェア構成図である。
図3に示される認証サービス提供サーバ1のハードウェア構成は、それぞれバスBで相互に接続されている入力装置11と、表示装置12と、ドライブ装置13と、ROM(Read Only Memory)15と、RAM(Random Access Memory)16と、CPU(Central Processing Unit)17と、インターフェース装置18と、HDD(Hard Disk Drive)19とから構成されている。
入力装置11は、認証サービス提供サーバ1の利用者が操作するキーボード及びマウス等で構成され、認証サービス提供サーバ1に各種操作信号を入力するのに用いられる。
表示装置12は、認証サービス提供サーバ1の利用者が利用するディスプレイ等で構成され、各種情報を表示する。
インターフェース装置18は、認証サービス提供サーバ1をネットワーク等に接続するインターフェースである。
後述する認証サービス30に対応するアプリケーションプログラムや、認証サービス提供サーバ1の全体の処理を制御するメインプログラム等は、例えば、CD−ROM等の記録媒体14によって認証サービス提供サーバ1に提供されるか、ネットワークを通じてダウンロードされる。記録媒体14は、ドライブ装置13にセットされ、前記アプリケーションプログラムや前記メインプログラム等が記録媒体14からドライブ装置13を介してHDD19にインストールされる。
ROM15は、データ等を格納する。RAM16は、認証サービス提供サーバ1の起動時にHDD19から前記アプリケーションプログラムや前記メインプログラム等を読み出して格納する。CPU17は、RAM16に読み出され、格納された前記アプリケーションプログラムや前記メインプログラム等に従って処理を実行する。
HDD19は、プログラム以外に、例えば、後述する認証チケット50、Webサービス利用チケット60、ユーザ情報、グループ情報等を格納する。
以下、Webサービス提供サーバ2の一例のハードウェア構成を、図4を用いて説明する。
図4は、Webサービス提供サーバの一例のハードウェア構成図である。
図4に示されるWebサービス提供サーバ2のハードウェア構成は、それぞれバスBで相互に接続されている入力装置21と、表示装置22と、ドライブ装置23と、ROM(Read Only Memory)25と、RAM(Random Access Memory)26と、CPU(Central Processing Unit)27と、インターフェース装置28と、HDD(Hard Disk Drive)29とから構成されている。
入力装置21は、Webサービス提供サーバ2の利用者が操作するキーボード及びマウス等で構成され、Webサービス提供サーバ2に各種操作信号を入力するのに用いられる。
表示装置22は、Webサービス提供サーバ2の利用者が利用するディスプレイ等で構成され、各種情報を表示する。
インターフェース装置28は、Webサービス提供サーバ2をネットワーク等に接続するインターフェースである。
後述するディレクトリサービス40に対応するアプリケーションプログラムや、Webサービス提供サーバ2の全体の処理を制御するメインプログラム等は、例えば、CD−ROM等の記録媒体24によってWebサービス提供サーバ2に提供されるか、ネットワークを通じてダウンロードされる。記録媒体24は、ドライブ装置23にセットされ、前記アプリケーションプログラムや前記メインプログラム等が記録媒体24からドライブ装置23を介してHDD29にインストールされる。
ROM25は、データ等を格納する。RAM26は、Webサービス提供サーバ2の起動時にHDD29から前記アプリケーションプログラムや前記メインプログラム等を読み出して格納する。CPU27は、RAM26に読み出され、格納された前記アプリケーションプログラムや前記メインプログラム等に従って処理を実行する。
HDD29は、プログラム以外に、例えば、後述するセッション70及び/又はディレクトリサービス40を利用するときに必要となる認証に係るサービスを提供する認証サービス30のURLやディレクトリサービス40を利用するときに必要となるディレクトリサービス40を識別するrepositoryService等の文字列等を格納する。
上述したように、本発明の実施の形態においては、後述する認証サービス30は、認証サービス提供サーバ1に実装され、後述するディレクトリサービス40は、Webサービス提供サーバ2に実装されているものとして説明を行う。なお、認証サービス30及びディレクトリサービス40は同じサーバ等に実装されていてもよい。
以下、本発明における認証サービス提供方法及び/又はWebサービス提供方法の一例を、図5を用いて説明する。
図5は、認証サービス提供方法及び/又はWebサービス提供方法を説明するためのシーケンス図(その1)である。
図5に示されるように、Webサービス提供サーバ2が提供するWebサービスを利用するクライアント3は、クライアント3のユーザを認証する認証チケット50の取得リクエストを作成し、認証サービス30に送信する(図5のシーケンスSQ1。)。
なお、認証チケット取得リクエストの詳細は、後述する図8を用いて説明する。
認証サービス30は、クライアント3からの認証チケット取得リクエストに含まれるユーザ名、パスワード等を基に認証を行い、認証チケット50を作成し、該認証チケット50のID(認証チケットID)を含む認証チケット取得レスポンスを作成し、クライアント3に送信する(図5のシーケンスSQ2。)。
なお、認証チケット取得レスポンスの詳細は、後述する図9を用いて説明する。
クライアント3は、認証チケット取得レスポンスを受信すると、前記認証チケットIDを含む、Webサービス提供サーバ2が提供するWebサービス(例えば、ディレクトリサービス40)の利用を許可するWebサービス利用チケット60の取得リクエストを、認証サービス30に送信する(図5のシーケンスSQ3。)。
なお、Webサービス利用チケット取得リクエストの詳細は、後述する図14を用いて説明する。例えば、クライアント3は、利用したいWebサービス(例えば、ディレクトリサービス40)が要求する該Webサービスを識別する識別情報等を、Webサービス利用チケット取得リクエストに含め、認証サービス30に送信する。
認証サービス30は、Webサービス利用チケット取得リクエストに含まれる認証チケットIDを基に、対応する有効な認証チケット50が存在するかどうか等を判定し、対応する有効な認証チケット50が存在すると判定すると、前記Webサービス利用チケット取得リクエストに対応するWebサービス利用チケット60を作成し、該Webサービス利用チケット60のID(Webサービス利用チケットID)を含むWebサービス利用チケット取得レスポンスを作成し、クライアント3に送信する(図5のシーケンスSQ4。)。
例えば、認証サービス30は、Webサービス利用チケット取得リクエストに、Webサービスを識別する識別情報等が含まれていた場合、該Webサービスを識別する識別情報を含むWebサービス利用チケット60を作成し、該Webサービス利用チケット60のID(Webサービス利用チケットID)を含むWebサービス利用チケット取得レスポンスを作成し、クライアント3に送信する。
なお、Webサービス利用チケット取得レスポンスの詳細は、後述する図15を用いて説明する。ここで、クライアント3は、例えば認証チケット50の有効期限が有効な間は、シーケンスSQ2において受信した認証チケット取得レスポンスに含まれる認証チケットIDを用いて、該認証チケットIDを含むWebサービス利用チケット取得リクエストを、認証サービス30に送信することができる。認証サービス30は、Webサービス利用チケット取得リクエストに含まれる認証チケットIDを基に、対応する有効な認証チケット50が存在するかどうか等を判定し、対応する有効な認証チケット50が存在すると判定すると、前記Webサービス利用チケット取得リクエストに対応するWebサービス利用チケット60を作成し、Webサービス利用チケットIDを含むWebサービス利用チケット取得レスポンスを作成し、クライアント3に送信する。このように認証チケット50を繰り返し利用することによって、クライアント3は、一度認証がされれば、該認証が有効な間は、再び認証を行わなくても、使用したいWebサービスに対応するWebサービス利用チケット60(又はWebサービス利用チケットID)を取得することができる。
クライアント3は、Webサービス利用チケット取得レスポンスを受信すると、前記Webサービス利用チケットIDを含む、ディレクトリサービス40とのセッションの開始リクエストを、ディレクトリサービス40に送信する(図5のシーケンスSQ5。)。
なお、セッション開始リクエストの詳細は、後述する図19及び/又は図20を用いて説明する。
ディレクトリサービス40は、セッション開始リクエストに含まれるWebサービス利用チケットIDを基に、該Webサービス利用チケットIDと当該ディレクトリサービス40を識別する識別情報とを含むWebサービス利用チケット60の解読リクエストを作成し、認証サービス30に送信する(図5のシーケンスSQ6。)。
なお、Webサービス利用チケット解読リクエストの詳細は、後述する図21を用いて説明する。
認証サービス30は、Webサービス利用チケット解読リクエストに含まれるWebサービス利用チケットID及び/又はディレクトリサービス40を識別する識別情報を基に、有効なWebサービス利用チケット60かどうかを判定し、例えば、該判定の結果(解読結果)や、認証チケット50及び/又はWebサービス利用チケット60の内容を含むWebサービス利用チケット解読レスポンスを作成し、ディレクトリサービス40に送信する(図5のシーケンスSQ7。)。
なお、Webサービス利用チケット解読レスポンスの詳細は、後述する図22を用いて説明する。
ディレクトリサービス40は、Webサービス利用チケット解読レスポンスに含まれる前記判定の結果を基に、セッション70を作成し、該セッション70のIDを含むセッション開始レスポンスをクライアント3に送信する(図5のシーケンスSQ8。)。
なお、セッション開始レスポンスの詳細は、後述する図23を用いて説明する。
クライアント3は、セッション開始レスポンスを受信すると、セッションIDを含むディレクトリサービス40の利用リクエストを作成し、ディレクトリサービス40に送信する(図5のシーケンスSQ9。)。
なお、ディレクトリサービス利用リクエストの詳細は、後述する図27を用いて説明する。
ディレクトリサービス40は、ディレクトリサービス利用リクエストに含まれるセッションIDを基に、有効なセッションIDかどうかを判定し、有効なセッションIDであると判定するとディレクトリサービス利用リクエストに応じて処理を行い、該ディレクトリサービス利用リクエストに対応するディレクトリサービス利用レスポンスを作成し、クライアント3に送信する(図5のシーケンスSQ10。)。
なお、ディレクトリサービス利用レスポンスの詳細は、後述する図28を用いて説明する。
図5のシーケンスSQ6に示すように、本発明における認証サービス提供方法及び/又はWebサービス提供方法においては、クライアント3からのリクエストに含まれるWebサービス利用チケットIDが有効なWebサービス利用チケットIDかどうかを、Webサービス(例えば、ディレクトリサービス40)が、認証サービス30に問い合わせる。
また、図5のシーケンスSQ7に示したように、該問い合わせを受けた認証サービス30は、該Webサービス利用チケットIDが有効なWebサービス利用チケットIDかどうかの判定を行い、その結果を要求元のWebサービス(例えば、ディレクトリサービス40)に返す。
このような認証の方法にすることによって、例えば、認証サービス30は、Webサービス提供サーバ2に新たなWebサービスが追加された場合も、当該認証サービス30に新たな設定等をする必要なく、認証チケット50及び/又はWebサービス利用チケット60を管理しておくことによって、認証サービス及び/又はWebサービスを提供することができる。
以下、認証サービス30の一例の機能構成を、図6を用いて説明する。
図6は、認証サービスの一例の機能構成図である。
図6に示されるように、認証サービス30は、認証振り分け部31と、チケット管理部32と、認証プロバイダA33と、認証プロバイダB34と、SOAP(Simple Object Access Protocol)スタブ35とを含む。
SOAPスタブ35は、クライアント3及び/又はWebサービス提供サーバ2との間でSOAPによる通信を実現するためのモジュールである。
認証振り分け部31は、クライアント3及び/又はWebサービス提供サーバ2に対して、各種認証プロバイダに対する共通のインターフェースを提供するモジュールである。認証振り分け部31は、例えば、プロバイダ名に応じて認証を行う認証プロバイダを呼び出す。
認証プロバイダA33及び認証プロバイダB34等は、「認証プロバイダ」と呼ばれるモジュールである。ここで、認証プロバイダとは、様々な認証エンジンを認証サービス30に組み込むためのアダプタ、又は仲介者のような役割を果たすものである。なお、認証エンジンとは、ここでは実際にパスワードの照合等の認証処理を行うシステムをいう。
即ち、個々の認証エンジンは、それぞれ独自のインターフェース(プロトコル)を有している。一方、それぞれの認証エンジンにおける認証機能をWebサービスとしてクライアント3に提供するには認証振り分け部31との間で規定される所定のインターフェースに従う必要がある。かかる個々の認証エンジンによる独自のプロトコルを吸収し、認証振り分け部31に対して共通のインターフェースを提供するのが、認証プロバイダである。従って、新たな認証エンジンを認証サービス30に組み込むには、認証プロバイダを一つ実装することになる。但し、認証プロバイダ自身が、認証エンジンとしての機能を有していてもよい。
チケット管理部32は、認証に係るチケットを管理するモジュールである。チケット管理部32は、例えば、認証チケット50、ユーザ情報、グループ情報、Webサービス利用チケット60等を管理する。
なお、図6においては、複数の認証プロバイダを有する例を用いて認証サービス30の機能構成を説明したが、必ずしも複数の認証プロバイダを有する必要は無く、例えば、認証プロバイダA33のみを有する構成であってもよい。なお、このような構成の場合、認証振り分け部31は、認証サービス30の構成に必ずしも含まれない。
但し、以下では説明の簡略化のため、認証サービス30は、図6に示されるように複数の認証プロバイダを有し、また認証振り分け部31も認証サービス30に含まれるものとして説明を行う。なお、このことは、本発明の実施を制限するものではない。
以下、ディレクトリサービス40の一例の機能構成を、図7を用いて説明する。
図7は、ディレクトリサービスの一例の機能構成図である。
図7に示されるように、ディレクトリサービス40は、ディレクトリ振り分け部41と、セッション管理部42と、ディレクトリプロバイダA43と、ディレクトリプロバイダB44と、SOAPスタブ45とを含む。
SOAPスタブ45は、クライアント3及び/又は認証サービス提供サーバ1との間でSOAPによる通信を実現するためのモジュールである。
ディレクトリ振り分け部41は、クライアント3及び/又は認証サービス提供サーバ1に対して、各種ディレクトリプロバイダに対する共通のインターフェースを提供するモジュールである。ディレクトリ振り分け部41は、例えば、プロバイダ名に応じて、ディレクトリプロバイダを呼び出す。
ディレクトリプロバイダA43及びディレクトリプロバイダB44等は、「ディレクトリプロバイダ」と呼ばれるモジュールである。ここで、ディレクトリプロバイダとは、様々なディレクトリエンジンをディレクトリサービス40に組み込むためのアダプタ、又は仲介者のような役割を果たすものである。なお、ディレクトリエンジンとは、ここでは、例えば、該ディレクトリに係るユーザ情報やグループ情報等の管理及び/又はこれらの情報の提供を行うシステムをいう。
即ち、個々のディレクトリエンジンは、それぞれ独自のインターフェース(プロトコル)を有している。一方、それぞれのディレクトリエンジンにおける機能をWebサービスとしてクライアント3に提供するには、ディレクトリ振り分け部41との間で規定される所定のインターフェースに従う必要がある。かかる個々のディレクトリエンジンによる独自のプロトコルを吸収し、ディレクトリ振り分け部41に対して共通のインターフェースを提供するのが、ディレクトリプロバイダである。従って、新たなディレクトリエンジンをディレクトリサービス40に組み込むには、ディレクトリプロバイダを一つ実装することになる。但し、ディレクトリプロバイダ自身が、ディレクトリエンジンとしての機能を有していてもよい。
セッション管理部42は、セッション70を管理するモジュールである。
なお、図7においては、複数のディレクトリプロバイダを有する例を用いてディレクトリプロバイダ40の機能構成を説明したが、必ずしも複数のディレクトリプロバイダを有する必要は無く、例えば、ディレクトリプロバイダA43のみを有する構成であってもよい。なお、このような構成の場合、ディレクトリ振り分け部41は、ディレクトリサービス40の構成に必ずしも含まれない。
但し、以下では説明の簡略化のため、ディレクトリサービス40は、図7に示されるように複数のディレクトリプロバイダを有し、またディレクトリ振り分け部41もディレクトリサービス40に含まれるものとして説明を行う。なお、このことは、本発明の実施を制限するものではない。
以下、認証チケット取得リクエストの一例を、図8を用いて説明する。
図8は、認証チケット取得リクエストの一例を説明するための図である。
図8に示されるように、認証チケット取得リクエストの<providerName></providerName>のタグには、認証プロバイダを識別するプロバイダ名がパラメータとして含まれている。
また、<domainName></domainName>のタグには、ドメイン名がパラメータとして含まれている。
また、<authName></authName>のタグには、ユーザ名がパラメータとして含まれている。
また、<password></password>のタグには、パスワードがパラメータとして含まれている。
また、<duration></duration>のタグには、認証チケット50の有効時間が秒数を単位とし、パラメータとして含まれている。
例えば、図8に示されるような認証チケット取得リクエストを受信したSOAPスタブ35は、前記各パラメータを引数として、認証サービス30が提供するメソッドであるauthenticateByPasswordを呼び出す。
すると認証振り分け部31は、前記プロバイダ名を基に、対応する認証プロバイダ(例えば、認証プロバイダA33)に、前記ドメイン名、前記ユーザ名、前記パスワード等を渡し、認証を要求する。
認証の要求を受けた認証プロバイダA33は、前記ドメイン名、前記ユーザ名、前記パスワード等を含む該ユーザの認証要求を、例えば、外部の認証サーバ等に送信する。
例えば、正当なユーザである旨の認証結果と、該ユーザが所属するグループ情報とを前記外部の認証サーバ等より受信した認証プロバイダA33は、該受信した情報と、前記パスワード及び前記認証チケット50の有効時間等をチケット管理部32に渡し、認証チケット50の作成を要求する。
前記要求を受け取ったチケット管理部32は、後述する図10に示されるような認証チケット50を作成し、該認証チケット50を識別する識別情報である認証チケットIDを認証チケット50として認証プロバイダA33に渡す。
認証プロバイダA33は、前記認証チケットIDを、認証振り分け部31に渡す。
認証振り分け部31は、前記認証チケットID等を引数とし、認証サービス30が提供するメソッドであるauthenticateByPasswordResponseを呼び出す。
するとSOAPスタブ35は、前記認証チケットIDを含む後述する図9に示されるような認証チケット取得レスポンスを作成し、クライアント3に送信する。
以下、認証チケット取得レスポンスの一例を、図9を用いて説明する。
図9は、認証チケット取得レスポンスの一例を説明するための図である。
図9に示されるように、認証チケット取得レスポンスの<return xsi:type="xsd:base64Binary"></return>のタグには、前記認証チケットIDが含まれている。
該認証チケットIDを取得したクライアント3は、後述するように、該認証チケットIDを含んだWebサービス利用チケット60の取得リクエストを作成し、認証サービス30に送信する。
以下、認証チケット50の内部構造の一例を、図10を用いて説明する。
図10は、認証チケットの内部構造の一例を説明するための図である。
図10に示されるように、認証チケット50は、認証チケットIDと、プロバイダ名と、有効期限と、ユーザ情報と、グループ情報と、パスワードとを含む。
認証チケットIDには、認証チケット50を識別する識別情報が格納されている。プロバイダ名には、認証を行った認証プロバイダの名前が格納されている。有効期限には、認証を行った認証プロバイダより渡された、当該認証チケット50の有効期限が格納されている。ユーザ情報には、認証を行った認証プロバイダより渡された、ユーザのユーザ情報の構造体がそのまま格納されている。グループ情報には、認証を行った認証プロバイダより渡された、前記ユーザが所属するグループのグループ情報の構造体へのポインタの配列が格納されている。パスワードには、認証を行った認証プロバイダより渡された、パスワードが格納されている。
以下、ユーザ情報構造体の一例を、図11を用いて説明する。
図11は、ユーザ情報構造体の一例を説明するための図である。
図11に示されるようにユーザ情報構造体は、ユーザIDと、ドメイン名と、名前とを含む。
ユーザIDには、ユーザを識別する識別情報が格納されている。ドメイン名には、前記ユーザに対応するドメイン名が格納されている。名前には、前記ユーザの名前が格納されている。
なお、ユーザ情報構造体に、姓、名、ニックネーム、表示名、名前の読み、社員番号、住所、電話番号、メールアドレス、役職、所属組織、兼務情報、課金コード、所属グループ、管理者権限の有無等を更に含めるようにしてもよい。
以下、グループ情報構造体の一例を、図12を用いて説明する。
図12は、グループ情報構造体の一例を説明するための図である。
図12に示されるようにグループ情報構造体は、グループIDと、ドメイン名と、名前とを含む。
グループIDには、前記ユーザが所属するグループを識別する識別情報が格納されている。ドメイン名には、該グループに対応するドメイン名が格納されている。名前には、該グループの名前が格納されている。
なお、グループ情報構造体に、グループ名称、グループ説明文、上位グループ、下位グループ、グループメンバー、グループコード、課金用コード等を更に含めるようにしてもよい。
以下、認証チケット作成処理の一例を、図13を用いて説明する。
図13は、認証チケット作成処理の一例を説明するためのフローチャートである。
ステップS10において、SOAPスタブ35は、クライアント3より図8に示される認証チケット取得リクエストを受信する。上述したように、認証チケット取得リクエストを受信したSOAPスタブ35は、認証チケット取得リクエストに含まれる各パラメータを引数として、認証サービス30が提供するメソッドであるauthenticateByPasswordを呼び出す。
ステップS10に続いてステップS11に進み、認証振り分け部31は、前記パラメータの一つであるプロバイダ名を基に、該プロバイダ名が有効なプロバイダ名かどうかを判定する。
認証振り分け部31は、有効なプロバイダ名であると判定すると(ステップS11においてYES)、対応する認証プロバイダ(例えば、認証プロバイダA33)にドメイン名、ユーザ名、パスワード等のパラメータを渡し、認証を要求する。
一方、認証振り分け部31は、有効なプロバイダ名でないと判定すると(ステップS11においてNO)、処理を終了する。
例えば、認証振り分け部31は、認証プロバイダの名前を保持、管理し、前記パラメータに含まれるプロバイダ名と前記保持、管理している認証プロバイダ名とを比較し、対応する有効なプロバイダ名が存在するかどうかを判定する。
ステップS12において、前記認証の要求を受け取った認証プロバイダA33は、例えば、外部の認証サーバ等にユーザの認証を要求する場合、前記外部の認証サーバが動作中かどうかを判定する。
認証プロバイダA33は、対応する外部の認証サーバが動作中であると判定すると(ステップS12においてYES)、該外部の認証サーバに、ドメイン名、ユーザ名、パスワード等を含むユーザの認証要求を送信する。
一方、認証プロバイダA33は、対応する外部の認証サーバが動作していないと判定すると(ステップS12においてNO)、処理を終了する。
例えば、認証プロバイダA33は、対応する外部の認証サーバにping(Packet Internet Groper)を打って、前記外部の認証サーバが動作中かどうかを判定する。
ステップS13では、認証プロバイダA33が、認証が成功したかどうかを判定する。
認証プロバイダA33は、認証が成功したと判定すると(ステップS13においてYES)、前記外部の認証サーバ等より受信した前記ユーザが所属するグループ情報や、前記認証チケット取得リクエストに含まれていたユーザの情報やパスワード及び認証チケット50の有効時間等をチケット管理部32に渡し、認証チケット50の作成を要求する。
一方、認証プロバイダA33は、認証が失敗したと判定すると(ステップS13においてNO)、処理を終了する。
例えば、認証プロバイダA33は、前記外部の認証サーバより、認証が成功した旨の認証結果と、前記ユーザが所属するグループ情報等を受信すると、認証が成功したと判定する。
ステップS14では、前記認証チケット50の作成要求を受け取ったチケット管理部32が、図10に示されるような認証チケット50を作成し、該認証チケット50を識別する識別情報である認証チケットIDを認証チケット50として認証プロバイダA33に渡す。
ステップS14に続いてステップS15に進み、認証プロバイダA33より前記認証チケットIDを渡された認証振り分け部31は、前記認証チケットID等を引数とし、認証サービス30が提供するメソッドであるauthenticateByPasswordResponseを呼び出す。するとSOAPスタブ35は、認証振り分け部31からの要求に基づいて、図9に示されるような前記認証チケットIDを含んだ、認証チケット取得レスポンスを作成する。
ステップS15に続いてステップS16に進み、SOAPスタブ35は、ステップS15において作成した認証チケット取得レスポンスをクライアント3に送信する。
なお、外部の認証サーバ等を用いず、例えば、認証プロバイダA33が、認証エンジンとしての機能する場合、ステップS12に示す処理を行わず、直接認証プロバイダA33自身が認証を行い、認証が成功したかどうか判定するステップS13の処理を行うようにしてもよい。
以下、Webサービス利用チケット取得リクエストの一例を、図14を用いて説明する。
図14は、Webサービス利用チケット取得リクエストの一例を説明するための図である。
図14に示されるように、Webサービス利用チケット取得リクエストの<masterAuthTicket></masterAuthTicket>のタグには、認証チケットIDがパラメータとして含まれている。
また、<duration></duration>のタグには、Webサービス利用チケット60の有効時間が秒数を単位とし、パラメータとして含まれている。
また、<item></item>のタグには、クライアントが利用するWebサービス(例えば、ディレクトリサービス40)が要求する該Webサービスを識別する文字列(以下、単にターゲットともいう)がパラメータとして含まれている。
例えば、図14に示されるようなWebサービス利用チケット取得リクエストを受信したSOAPスタブ35は、前記各パラメータを引数として、認証サービス30が提供するメソッドであるcreateAuthTicketを呼び出す。
すると認証振り分け部31は、前記認証チケットIDを基に、該認証チケットIDに対応する有効な認証チケット50が存在するかどうか等を判定する。
認証振り分け部31は、前記認証チケットIDに対応する有効な認証チケット50がチケット管理部32に存在すると判定すると、前記認証チケットIDに対応する認証チケット50に含まれるプロバイダ名等をチケット管理部32より取得し、前記プロバイダ名に対応する認証プロバイダ(例えば、認証プロバイダA33)に、前記認証チケットID、前記Webサービス利用チケット60の有効時間、前記ターゲット等を渡す。
認証プロバイダA33は、前記認証チケットID、前記Webサービス利用チケット60の有効時間、前記ターゲット等をチケット管理部32に渡し、Webサービス利用チケット60の作成を要求する。
前記要求を受け取ったチケット管理部32は、後述する図16に示されるようなWebサービス利用チケット60を作成し、該Webサービス利用チケット60を識別する識別情報であるWebサービス利用チケットIDをWebサービス利用チケット60として認証プロバイダA33に渡す。
なお、図14に示されるWebサービス利用チケット取得リクエストの<item></item>のタグに何も含まれていなかった場合、チケット管理部32は、後述する図16のターゲットに何も含まない、どのWebサービスであっても利用可能なWebサービス利用チケット60を作成し、該Webサービス利用チケット60を識別する識別情報であるWebサービス利用チケットIDをWebサービス利用チケット60として認証プロバイダA33に渡すようにしてもよい。
なお、以下では説明の簡略化のため、Webサービス利用チケット取得リクエストの<item></item>のタグには、クライアント3が利用するWebサービス(例えば、ディレクトリサービス40)が要求する該Webサービスを識別する識別情報(例えば、repositoryService等の文字列)が含まれているものとして説明を行う。
認証プロバイダA33は、前記Webサービス利用チケットIDを、認証振り分け部31に渡す。
認証振り分け部31は、前記Webサービス利用チケットID等を引数とし、認証サービス30が提供するメソッドであるcreateAuthTicketResponseを呼び出す。
するとSOAPスタブ35は、前記Webサービス利用チケットIDを含む後述する図15に示されるようなWebサービス利用チケット取得レスポンスを作成し、クライアント3に送信する。
以下、Webサービス利用チケット取得レスポンスの一例を、図15を用いて説明する。
図15は、Webサービス利用チケット取得レスポンスの一例を説明するための図である。
図15に示されるように、Webサービス利用チケット取得レスポンスの<return xsi:type="xsd:base64Binary"></return>のタグには、前記Webサービス利用チケットIDが含まれている。
該Webサービス利用チケットIDを取得したクライアント3は、後述するように、該Webサービス利用チケットIDを含んだセッション開始リクエストをディレクトリサービス40に送信する。
以下、Webサービス利用チケット60の内部構造の一例を、図16を用いて説明する。
図16は、Webサービス利用チケットの内部構造の一例を説明するための図である。
図16に示されるように、Webサービス利用チケット60は、Webサービス利用チケットIDと、認証チケットIDと、ターゲットと、有効期限とを含む。
Webサービス利用チケットIDには、Webサービス利用チケット60を識別する識別情報が格納されている。認証チケットIDには、認証プロバイダ(例えば、認証プロバイダA33)より渡された、認証チケット50を識別する識別情報が格納されている。ターゲットには、認証プロバイダ(例えば、認証プロバイダA33)より渡された、Webサービスを識別する文字列が格納されている。有効期限には、認証プロバイダ(例えば、認証プロバイダA33)より渡された、当該Webサービス利用チケット60の有効期限が格納されている。
なお、認証チケットIDの替わりに、図10に示した認証チケット50の内容がそのままWebサービス利用チケット60に含まれていてもよい。
以下、チケット管理部32内のデータの概念図を、図17を用いて説明する。
図17は、チケット管理部内のデータの概念図である。
図17に示されるように、図10において説明した認証チケット50に対して図11において説明したユーザ情報は1対1に対応付けられている。
また、認証チケット50に対して図12において説明したグループ情報は1対n(但し、nは0以上の自然数)に対応付けられている。これは、認証されたユーザがどのグループにも所属していない場合もあれば、複数のグループに所属している場合もあるからである。
また、認証チケット50に対して図16において説明したWebサービス利用チケット60は、1対m(但し、mは1以上の自然数)に対応付けられている。これは、例えば、Webサービス提供サーバ2が提供するWebサービスが複数存在するためである。
以下、Webサービス利用チケット作成処理の一例を、図18を用いて説明する。
図18は、Webサービス利用チケット作成処理の一例を説明するためのフローチャートである。
ステップS20において、SOAPスタブ35は、クライアント3より図14に示されるWebサービス利用チケット取得リクエストを受信する。上述したように、Webサービス利用チケット取得リクエストを受信したSOAPスタブ35は、Webサービス利用チケット取得リクエストに含まれる各パラメータを引数として、認証サービス30が提供するメソッドであるcreateAuthTicketを呼び出す。
ステップS20に続いてステップS21に進み、認証振り分け部31は、前記パラメータの一つである認証チケットIDを基に、該認証チケットIDに対応する認証チケット50が存在するかどうかを判定する。
認証振り分け部31は、前記認証チケットIDに対応する認証チケット50が存在すると判定すると(ステップS21においてYES)、ステップS24に進み、前記認証チケットIDに対応する認証チケット50が存在しないと判定すると(ステップS21においてNO)、ステップS22に進む。
例えば、認証振り分け部31は、前記認証チケットIDを含む、該認証チケットIDに対応する認証チケット50が存在するかどうかの問い合わせをチケット管理部32に行い、対応する認証チケット50が存在する旨の応答がチケット管理部32よりあった場合、前記認証チケットIDに対応する認証チケット50が存在すると判定する。
一方、前記認証チケットIDに対応する認証チケット50が存在しない旨の応答をチケット管理部32より受け取ると、認証振り分け部31は、前記認証チケットIDに対応する認証チケット50が存在しないと判定する。
ステップS22において、認証振り分け部31は、認証サービス30が提供する所定のメソッドを呼び出して、対応する認証チケット50が存在しない旨のエラーメッセージの作成を要求する。SOAPスタブ35は、前記要求に応じて、対応する認証チケット50が存在しない旨のエラーメッセージを作成する。
ステップS22に続いてステップS23に進み、SOAPスタブ35は、ステップS22において作成したエラーメッセージをクライアント3に送信し、処理を終了する。
一方、ステップS24では、認証振り分け部31が、前記認証チケットIDを基に、該認証チケットIDに対応する認証チケット50の有効期限が切れていないかどうかを判定する。
認証振り分け部31は、前記認証チケットIDに対応する認証チケット50の有効期限が切れていないと判定すると(ステップS24においてYES)、前記認証チケットIDを基に、チケット管理部32より、前記認証チケットIDに対応する認証チケット50に含まれるプロバイダ名を取得し、該プロバイダ名に対応する認証プロバイダ(例えば、認証プロバイダA33)に対して、前記認証チケットID、前記Webサービス利用チケット60の有効時間、前記ターゲット等を渡す。
認証プロバイダA33は、前記認証チケットID、前記Webサービス利用チケット60の有効時間、前記ターゲット等をチケット管理部32に渡し、Webサービス利用チケット60の作成を要求し、ステップS27に進む。
一方、認証振り分け部31は、前記認証チケットIDに対応する認証チケット50の有効期限が切れていると判定すると(ステップS24においてNO)、ステップS25に進む。
例えば、認証振り分け部31は、前記認証チケットIDを含む、該認証チケットIDに対応する認証チケット50の有効期限が切れていないかどうかの問い合わせをチケット管理部32に行い、対応する認証チケット50の有効期限が切れていない旨の応答がチケット管理部32よりあった場合、前記認証チケットIDに対応する認証チケット50の有効期限が切れていないと判定する。
一方、前記認証チケットIDに対応する認証チケット50の有効期限が切れている旨の応答をチケット管理部32より受け取ると、認証振り分け部31は、前記認証チケットIDに対応する認証チケット50の有効期限が切れていると判定する。
ステップS25において、認証振り分け部31は、認証サービス30が提供する所定のメソッドを呼び出して、対応する認証チケット50の有効期限が切れている旨のエラーメッセージの作成を要求する。SOAPスタブ35は、前記要求に応じて、対応する認証チケット50の有効期限が切れている旨のエラーメッセージを作成する。
ステップS25に続いてステップS26に進み、SOAPスタブ35は、ステップS25において作成したエラーメッセージをクライアント3に送信し、処理を終了する。
一方、ステップS27では、前記Webサービス利用チケット60の作成要求を受け取ったチケット管理部32が、図16に示されるようなWebサービス利用チケット60を作成し、該Webサービス利用チケット60を識別する識別情報であるWebサービス利用チケットIDをWebサービス利用チケット60として認証プロバイダA33に渡す。
ステップS27に続いてステップS28に進み、認証プロバイダA33より前記Webサービス利用チケットIDを渡された認証振り分け部31は、前記Webサービス利用チケットIDを引数とし、認証サービス30が提供するメソッドであるcreateAuthTicketResponseを呼び出す。するとSOAPスタブ35は、認証振り分け部31からの要求に基づいて、図15に示されるような前記Webサービス利用チケットIDを含んだWebサービス利用チケット取得レスポンスを作成する。
ステップS28に続いてステップS29に進み、SOAPスタブ35は、認証振り分け部31からの要求に基づいて、ステップS28において作成したWebサービス利用チケット取得レスポンスをクライアント3に送信する。
なお、図18に示すように、認証サービス30は、認証チケット50が存在しない旨のエラーメッセージと、認証チケット50の有効期限が切れている旨のエラーメッセージとを分けてクライアント3に送信している。
例えば、クライアント3が、一度ユーザによって入力されたパスワード等を保持している場合、クライアント3は、認証サービス30より認証チケット50の有効期限が切れている旨のエラーメッセージを受信すると、前記パスワードを用いて、認証チケット50の取得リクエストを再び認証サービス30に送信することができる。
なお、認証サービス30は、当該認証サービス30が提供する削除メソッドが呼ばれるか、又はある定められた期間(例えば、認証チケット50が作成されてから1時間)経過すると、対応する認証チケット50を削除する。
以下、セッション開始リクエストの一例を、図19を用いて説明する。
図19は、セッション開始リクエストの一例を説明するための図である。
図19に示されるように、セッション開始リクエストの<authTicket></authTicket>のタグには、Webサービス利用チケットIDがパラメータとして含まれている。
また、<timeLimit></timeLimit>のタグには、セッション70の有効時間が秒数を単位とし、パラメータとして含まれている。
例えば、図19に示されるようなセッション開始リクエストを受信したSOAPスタブ45は、前記各パラメータを引数として、ディレクトリサービス40が提供するメソッドであるstartSessionByAuthTicketを呼び出す。
するとディレクトリ振り分け部41は、前記Webサービス利用チケットID及び当該ディレクトリサービス40が提供するサービスを識別する文字列を引数とし、ディレクトリサービス40が提供するメソッドであるdecodeAuthTicketを呼び出す。
するとSOAPスタブ45は、前記Webサービス利用チケットID及び当該ディレクトリサービス40が提供するサービスを識別する文字列を含む後述する図21に示されるようなWebサービス利用チケット解読リクエストを作成し、認証サービス30に送信する。
なお、送信先の認証サービス30に係る情報(例えば、URL等)は、ディレクトリ振り分け部41がHDD29等より取得し、メソッドdecodeAuthTicketの引数としてSOAPスタブ45に提供してもよいし、クライアント3が、セッション開始リクエストに、Webサービス利用チケット解読リクエストの送信先である認証サービス30のURL等を含めてディレクトリサービス40に送信し、該認証サービス30のURLをディレクトリ振り分け部41がメソッドdecodeAuthTicketの引数としてSOAPスタブ45に提供するようにしてもよい。
以下、セッション開始リクエストの他の例を、図20を用いて説明する。
図20は、セッション開始リクエストの他の例を説明するための図である。
図20に示されるセッション開始リクエストには、<uauthenticationUrl></uauthenticationUrl>のタグに、認証サービス30のURLがパラメータとして含まれている。
ディレクトリサービス40は、該認証サービス30のURLを基に、後述する図21に示されるようなWebサービス利用チケット解読リクエストを認証サービス30に送信する。
また、図示しないが、クライアント3は、図19及び/又は図20に示されるセッション開始リクエストに、ディレクトリプロバイダのプロバイダ名を含めて、ディレクトリサービス40に送信するようにしてもよい。このような構成にすることによって、クライアント3は、ディレクトリプロバイダを指定することができる。
以下、Webサービス利用チケット解読リクエストの一例を、図21を用いて説明する。
図21は、Webサービス利用チケット解読リクエストの一例を説明するための図である。
図21に示されるように、Webサービス利用チケット解読リクエストの<authTicket></authTicket>のタグには、Webサービス利用チケットIDがパラメータとして含まれている。
また、<target></target>のタグには、ディレクトリサービス40が提供するサービスを識別する文字列が含まれている。
例えば、図21に示されるようなWebサービス利用チケット解読リクエストを受信したSOAPスタブ35は、前記各パラメータを引数として、認証サービス30が提供するメソッドであるdecodeAuthTicketを呼び出す。
すると認証振り分け部31は、前記Webサービス利用チケットID及び/又は前記ディレクトリサービス40が提供するサービスを識別する文字列を用い、前記Webサービス利用チケットIDに対応する有効なWebサービス利用チケット60が存在するかどうか及び該Webサービス利用チケット60に含まれるターゲットと、前記ディレクトリサービス40が提供するサービスを識別する文字列とが同じかどうか等を判定する。
認証振り分け部31は、前記Webサービス利用チケットIDに対応する有効なWebサービス利用チケット60が存在し、且つ該Webサービス利用チケット60に含まれるターゲットと、前記ディレクトリサービス40が提供するサービスを識別する文字列とが同じであると判定すると、例えば、対応するWebサービス利用チケット60に含まれる認証チケットIDを基に、図10に示されるような認証チケット50の内容(但し、認証チケットID以外)及び/又は図16に示されるようなWebサービス利用チケット60の内容(但し、Webサービス利用チケットID及び認証チケットID以外)を取得し、これらの情報及び後述する判定結果等を引数とし、認証サービス30が提供するメソッドであるdecodeAuthTicketResponseを呼び出す。
するとSOAPスタブ35は、例えば、前記判定結果や、認証チケット50の内容及び/又はWebサービス利用チケット60の内容等を含むWebサービス利用チケット解読レスポンスを作成し、ディレクトリサービス40に送信する。
以下、Webサービス利用チケット解読レスポンスの一例を、図22を用いて説明する。
図22は、Webサービス利用チケット解読レスポンスの一例を説明するための図である。
図22に示されるように、Webサービス利用チケット解読レスポンスの<return xsi:type="xsd:string"></return>のタグには、判定結果が含まれている。
なお、判定結果としては、例えば、前記Webサービス利用チケット解読リクエストに含まれるWebサービス利用チケットIDに対応する有効なWebサービス利用チケット60が存在し、且つ該Webサービス利用チケット60に含まれるターゲットが、前記Webサービス利用チケット解読リクエストに含まれるディレクトリサービス40が提供するサービスを識別する文字列と同じであった場合は、OKが前記タグに含まれる。
一方、例えば、前記Webサービス利用チケット解読リクエストに含まれるWebサービス利用チケットIDに対応する有効なWebサービス利用チケット60が存在しなかったり、前記Webサービス利用チケット60に含まれるターゲットが、前記Webサービス利用チケット解読リクエストに含まれるディレクトリサービス40が提供するサービスを識別する文字列と同じでなかったりした場合は、NOが前記タグに含まれる。
なお、上述したように、Webサービス利用チケット解読レスポンスには、認証チケット50の内容(但し、認証チケットID以外)及び/又はWebサービス利用チケット60の内容(但し、Webサービス利用チケットID及び認証チケットID以外)等を含めるようにしてもよい。
図22に示されるようなWebサービス利用チケット解読レスポンスを受信したSOAPスタブ45は、例えば、該Webサービス利用チケット解読レスポンスに含まれるプロバイダ名を基に、対応するディレクトリプロバイダ(例えば、ディレクトリプロバイダA43)に、前記Webサービス利用チケットID及び前記セッション70の有効時間等を渡す。
なお、上述したように、セッション開始リクエストに、ディレクトリプロバイダのプロバイダ名が含まれていた場合は、該プロバイダ名を基の、対応するディレクトリプロバイダ(例えば、ディレクトリプロバイダA43)に、前記Webサービス利用チケットID及び前記セッション70の有効時間等を渡してもよい。
ディレクトリプロバイダA43は、前記Webサービス利用チケットID及び前記セッション70の有効時間等をセッション管理部42に渡し、セッション70の作成を要求する。
前記要求を受け取ったセッション管理部42は、後述する図24に示されるようなセッション70を作成し、該セッション70を識別する識別情報であるセッションIDをセッション70としてディレクトリプロバイダA43に渡す。
ディレクトリプロバイダA43は、前記セッションIDをディレクトリ振り分け部41に渡す。
ディレクトリ振り分け部41は、前記セッションID等を引数とし、ディレクトリサービス40が提供するメソッドであるstartSessionByAuthTicketResponseを呼び出す。
するとSOAPスタブ45は、前記セッションIDを含む後述する図23に示されるようなセッション開始レスポンスを作成し、クライアント3に送信する。
以下、セッション開始レスポンスの一例を、図23を用いて説明する。
図23は、セッション開始レスポンスの一例を説明するための図である。
図23に示されるように、セッション開始レスポンスの<returnValue xsi:type="xsd:string"></returnValue>のタグには、前記セッションIDが含まれている。
該セッションIDを取得したクライアント3は、例えば、後述するように、該セッションIDを含んだディレクトリサービス利用リクエストをディレクトリサービス40に送信する。
以下、セッション70の内部構造の一例を、図24を用いて説明する。
図24は、セッションの内部構造の一例を説明するための図である。
図24に示されるように、セッション70は、セッションIDと、Webサービス利用チケットIDと、有効期限とを含む。
セッションIDには、セッション70を識別する識別情報が格納されている。Webサービス利用チケットIDには、ディレクトリプロバイダ(例えば、ディレクトリプロバイダA43)より渡された、Webサービス利用チケット60を識別する識別情報が格納されている。有効期限には、ディレクトリプロバイダ(例えば、ディレクトリプロバイダA43)より渡された、セッション70の有効期限が格納されている。
以下、セッション作成処理の一例を、図25を用いて説明する。
図25は、セッション作成処理の一例を説明するためのフローチャートである。
ステップS30において、SOAPスタブ45は、クライアント3より図19に示されるようなセッション開始リクエストを受信する。上述したように、セッション開始リクエストを受信したSOAPスタブ45は、セッション開始リクエストに含まれるWebサービス利用チケットIDや、セッション70の有効時間等のパラメータを引数として、ディレクトリサービス40が提供するメソッドであるstartSessionByAuthTicketを呼び出す。
するとディレクトリ振り分け部41は、前記Webサービス利用チケットID及び当該ディレクトリサービス40が提供するサービスを識別する文字列を引数とし、ディレクトリサービス40が提供するメソッドであるdecodeAuthTicketを呼び出す。
ステップS30に続いてステップS31に進み、SOAPスタブ45は、前記Webサービス利用チケットID及び当該ディレクトリサービス40が提供するサービスを識別する文字列を含む図21に示されるようなWebサービス利用チケット解読リクエストを作成し、認証サービス30に送信する。
ステップS31に続いてステップS32に進み、SOAPスタブ45は、認証サービス30より図22に示されるようなWebサービス利用チケット解読レスポンスを受信する。上述したように、Webサービス利用チケット解読レスポンスを受信したSOAPスタブ45は、Webサービス利用チケット解読レスポンスに含まれる解読結果(以下、判定結果ともいう)や、認証チケット50の内容(但し、認証チケットID以外)及び/又はWebサービス利用チケット60の内容(但し、Webサービス利用チケットID及び認証チケットID以外)等を引数とし、ディレクトリサービス40が提供するメソッドであるdecodeAuthTicketResponseを呼び出す。
ステップS32に続いてステップS33に進み、ディレクトリ振り分け部41は、ステップS31においてWebサービス利用チケット解読リクエストに含めて認証サービス30に送信したWebサービス利用チケットIDが、有効なWebサービス利用チケット60のWebサービス利用チケットIDであったかどうかを判定する。
ディレクトリ振り分け部41は、前記Webサービス利用チケットIDが、有効なWebサービス利用チケット60のWebサービス利用チケットIDであったと判定すると(ステップS33においてYES)、例えば、該Webサービス利用チケット解読レスポンスに含まれるプロバイダ名を基に、対応するディレクトリプロバイダ(例えば、ディレクトリプロバイダA43)に、前記Webサービス利用チケットID及び前記セッション70の有効時間等を渡す。
ディレクトリプロバイダA43は、前記Webサービス利用チケットID及び前記セッション70の有効時間等をセッション管理部42に渡し、セッション70の作成を要求し、ステップS34に進む。
一方、ディレクトリ振り分け部41は、前記Webサービス利用チケットIDが、有効なWebサービス利用チケット60のWebサービス利用チケットIDでなかったと判定すると(ステップS33においてNO)、処理を終了する。
なお、ディレクトリ振り分け部41が、前記Webサービス利用チケットIDは、有効なWebサービス利用チケット60のWebサービス利用チケットIDでなかったと判定した場合、ディレクトリサービス40が提供する所定のメソッドを呼び出して、有効なWebサービス利用チケット60のWebサービス利用チケットIDでなかった旨のエラーメッセージを作成し、クライアント3に送信するようにしてもよい。
例えば、ディレクトリ振り分け部41は、ステップS32において受信したWebサービス利用チケット解読レスポンスに、OKのパラメータが含まれていた場合、有効なWebサービス利用チケット60のWebサービス利用チケットIDであったと判定し、Webサービス利用チケット解読レスポンスに、NOのパラメータが含まれていた場合、無効なWebサービス利用チケット60のWebサービス利用チケットIDであったと判定する。
ステップS34において、セッション管理部42は、図24に示されるようなセッション70を作成し、該セッション70を識別する識別情報であるセッションIDをセッション70としてディレクトリプロバイダA43に渡す。
ステップS34に続いてステップS35に進み、ディレクトリプロバイダA43より前記セッションIDを渡されたディレクトリ振り分け部41は、前記セッションID等を引数とし、startSessionByAuthTicketResponseを呼び出す。するとSOAPスタブ45は、ディレクトリ振り分け部41からの要求に基づいて、図23に示されるようなセッションIDを含んだセッション開始レスポンスを作成する。
ステップS35に続いてステップS36に進み、SOAPスタブ45は、ディレクトリ振り分け部41からの要求に基づいて、ステップS35において作成したセッション開始レスポンスをクライアント3に送信する。
以下、Webサービス利用チケット解読処理の一例を、図26を用いて説明する。
図26は、Webサービス利用チケット解読処理の一例を説明するためのフローチャートである。
ステップS40において、SOAPスタブ35は、ディレクトリサービス40より、図21に示されるようなWebサービス利用チケット解読リクエストを受信する。上述したように、Webサービス利用チケット解読リクエストを受信したSOAPスタブ35は、Webサービス利用チケット解読リクエストに含まれるWebサービス利用チケットIDやディレクトリサービス40が提供するサービスを識別する文字列等のパラメータを引数として、認証サービス30が提供するメソッドであるdecodeAuthTicketを呼び出す。
ステップS40に続いてステップS41に進み、認証振り分け部31は、前記パラメータの一つであるWebサービス利用チケットIDを基に、該Webサービス利用チケットIDが正しいものかどうかを判定する。
認証振り分け部31は、前記Webサービス利用チケットIDが正しいと判定すると(ステップS41においてYES)、ステップS42に進み、前記Webサービス利用チケットIDが正しくないと判定すると(ステップS41においてNO)、ステップS45に進む。
例えば、認証振り分け部31は、前記Webサービス利用チケットIDを含む、該Webサービス利用チケットIDに対応する有効なWebサービス利用チケット60が存在するかどうかの問い合わせをチケット管理部32に行い、対応する有効なWebサービス利用チケット60が存在する旨の応答がチケット管理部32よりあった場合、正しいWebサービス利用チケットIDであると判定する。
一方、前記Webサービス利用チケットIDに対応する有効なWebサービス利用チケット60が存在しない旨の応答をチケット管理部32より受け取ると、認証振り分け部31は、正しくないWebサービス利用チケットIDであると判定する。
ステップS42では、認証振り分け部31が、前記パラメータの一つであるディレクトリサービス40が提供するサービスを識別する文字列と、前記Webサービス利用チケットIDに対応するサービス利用チケット60に含まれるターゲットの文字列とが一致するかどうかを判定する。
認証振り分け部31は、前記二つの文字列が一致すると判定すると(ステップS42においてYES)、ステップS43に進み、前記二つの文字列が一致しないと判定すると(ステップS42においてNO)、ステップS45に進む。
ステップS43では、認証振り分け部31が、前記Webサービス利用チケットIDを基に、対応するWebサービス利用チケット60の内容(但し、Webサービス利用チケットID及び認証チケットID以外)及び/又は認証チケット50の内容(但し、認証チケットID以外)を取得し、これらの情報と共に、判定結果(YES)等を引数とし、認証サービス30が提供するメソッドであるdecodeAuthTicketResponseを呼び出す。
するとSOAPスタブ35は、例えば、前記判定結果(YES)や、認証チケット50の内容及び/又はWebサービス利用チケット60の内容等を含むWebサービス利用チケット解読レスポンスを作成する。
ステップS43に続いてステップS44に進み、SOAPスタブ35は、ステップS43において作成したWebサービス利用チケット解読レスポンスをディレクトリサービス40に送信する。
一方、ステップS45では、認証振り分け部31が、判定結果(NO)等を引数とし、認証サービス30が提供するメソッドであるdecodeAuthTicketResponseを呼び出す。
するとSOAPスタブ35は、例えば、前記判定結果(NO)等を含むWebサービス利用チケット解読レスポンスを作成する。
ステップS45に続いてステップS46に進み、SOAPスタブ35は、ステップS45において作成したWebサービス利用チケット解読レスポンスをディレクトリサービス40に送信する。
図25及び図26に示したように、ディレクトリサービス40は、クライアント3からのリクエストに含まれるWebサービス利用チケットIDと共に、当該自身の識別情報(例えば、repositoryService等の文字列)を認証サービス30に送信する。一方、認証サービス30は、前記Webサービス利用チケットIDを基に、ディレクトリサービス40から送信された識別情報(例えば、repositoryService等の文字列)と、Webサービス利用チケット60に含まれるターゲットとを比較することによって、Webサービス利用チケット60の有効性を判定する。
このような認証方法を取ることによって、クライアント3が利用し、且つ認証を必要とするWebサービスが、例えばWebサービス提供サーバ2等に新たに追加された場合も、認証サービス提供サーバ1及び/又は認証サービス30に新たな情報等を設定することなく、効率的に認証に係るサービスを提供することができる。
なお、図26のステップS43では、認証振り分け部31が、前記Webサービス利用チケットIDを基に、対応するWebサービス利用チケット60の内容(但し、Webサービス利用チケットID及び認証チケットID以外)及び/又は認証チケット50の内容(但し、認証チケットID以外)を取得するよう説明を行ったが、認証振り分け部31は、前記Webサービス利用チケットIDを基に、対応するプロバイダ名のみをチケット管理部32より取得し、該プロバイダ名に対応するプロバイダ(例えば、認証プロバイダA33)に、前記Webサービス利用チケットIDに対応するWebサービス利用チケット60の内容及び/又は認証チケット50の内容を取得するよう要求するようにしてもよい。
この場合、該要求を受け取った認証プロバイダA33は、該要求をチケット管理部32に渡す。該要求を受け取ったチケット管理部32は、該要求に含まれるWebサービス利用チケットIDを基に、対応するWebサービス利用チケット60の内容(但し、Webサービス利用チケットID及び認証チケットID以外)及び/又は認証チケット50の内容(但し、認証チケットID以外)を取得し、認証プロバイダA33に渡す。認証プロバイダA33は、取得したWebサービス利用チケット60の内容(但し、Webサービス利用チケットID及び認証チケットID以外)及び/又は認証チケット50の内容(但し、認証チケットID以外)を認証振り分け部31に渡す。
以下、ディレクトリサービス利用リクエストの一例を、図27を用いて説明する。
図27は、ディレクトリサービス利用リクエストの一例を説明するための図である。
図27に示されるように、ディレクトリサービス利用リクエストの<sessionId></sessionId>のタグには、セッションIDがパラメータとして含まれている。
ディレクトリサービス40は、ディレクトリサービス利用リクエストに含まれるセッションIDが有効なセッションIDかどうかを判定し、有効なセッションIDであると判定すると、クライアント3の要求に応じて、ユーザ一覧を取得し、後述する図28に示されるようなディレクトリサービス利用レスポンスを作成し、クライアント3に送信する。
以下、ディレクトリサービス利用レスポンスの一例を、図28を用いて説明する。
図28は、ディレクトリサービス利用レスポンスの一例を説明するための図である。
図28に示されるディレクトリサービス利用レスポンスの<item></item>のタグに含まれる各タグには、ユーザ一覧に係る情報が含まれている。
以下、ユーザ一覧取得処理の一例を、図29を用いて説明する。
図29は、ユーザ一覧取得処理の一例のフローチャートである。
ステップS50において、SOAPスタブ45は、クライアント3より図27に示されるようなディレクトリサービス利用リクエストを受信する。ディレクトリサービス利用リクエストを受信したSOAPスタブ45は、ディレクトリサービス利用リクエストに含まれる各パラメータを引数として、ディレクトリサービス40が提供するメソッドであるgetEntryListを呼び出す。
ステップS50に続いてステップS51に進み、ディレクトリ振り分け部41は、前記ディレクトリサービス利用リクエストに含まれていたパラメータの一つであるセッションIDが有効なセッションIDかどうかを判定する。
ディレクトリ振り分け部41は、有効なセッションIDであると判定すると(ステップS51においてYES)、ステップS52に進み、有効なセッションIDでないと判定すると(ステップS52においてNO)、処理を終了する。
なお、ディレクトリ振り分け部41が、有効なセッションIDでないと判定した場合、該旨のエラーメッセージを作成し、クライアント3に送信するようにしてもよい。
例えば、ディレクトリ振り分け部41は、ディレクトリサービス利用リクエストに含まれるセッションIDを用いて、前記セッションIDに対応するセッションIDを含むセッション70が存在するかどうか、及び/又は対応するセッションIDを含むセッション70の有効期限が切れていないかどうかの問い合わせをセッション管理部42に対して行い、対応するセッションIDが存在する及び/又は対応するセッションIDを含むセッション70の有効期限が切れていない旨の応答をセッション管理部42により取得すると、有効なセッションIDであると判定する。
ステップS52では、例えば、対応するディレクトリプロバイダ(例えば、ディレクトリプロバイダA43)が、ユーザ一覧を取得する。
ステップS52に続いてステップS53では、ディレクトリプロバイダA43より前記ユーザ一覧を渡されたディレクトリ振り分け部41は、前記ユーザ一覧を引数とし、ディレクトリサービス40が提供するメソッドであるgetEntryListResponseを呼び出す。するとSOAPスタブ45は、ディレクトリ振り分け部41からの要求に基づいて、図28に示されるような前記ユーザ一覧を含んだ、ディレクトリサービス利用レスポンスを作成する。
ステップS53に続いてステップS54に進み、SOAPスタブ45は、ステップS53において作成したディレクトリサービス利用レスポンスをクライアント3に送信する。
以下、認証サービス提供方法及び/又はWebサービス提供方法の他の例を、図30を用いて説明する。
例えば、図5において説明した認証サービス提供方法及び/又はWebサービス提供方法では、クライアント3が、Webサービス(例えば、ディレクトリサービス40)を利用する場合に、どの認証サービスに認証を要求すれば良いのか、該認証サービスのURLや、ディレクトリサービス40を利用する際に必要となるディレクトリサービス40を識別する識別情報(例えば、repositoryService等の文字列)を知っている場合を例に取って説明を行った。
以下に示す図30においては、最初にクライアント3が、ディレクトリサービス40を利用する場合に必要となる対応する認証サービスのURL及びディレクトリサービス40を識別する識別情報等をディレクトリサービス40に問い合わせる例を用いて説明を行う。
図30は、認証サービス提供方法及び/又はWebサービス提供方法を説明するためのシーケンス図(その2)である。
図30に示されるように、Webサービス提供サーバ2が提供するWebサービス(例えば、ディレクトリサービス40)を利用するクライアント3は、認証を行う認証サービスに係る情報(例えば、認証サービスのURL等)及び/又はディレクトリサービス40を利用するときに必要となる当該ディレクトリサービス40を識別する識別情報(例えば、repositoryService等の文字列)の取得リクエスト(情報取得リクエスト)をディレクトリサービス40に送信する(図30のシーケンスSQ20。)。
ディレクトリサービス40は、クライアント3からの前記情報取得リクエストに応じて、当該ディレクトリサービス40を利用するときに必要となる認証に係るサービスを提供する認証サービス30のURL及び/又は当該ディレクトリサービス40を利用するときに必要となる当該ディレクトリサービス40を識別するrepositoryService等の文字列を含む情報取得レスポンスを作成し、クライアント3に送信する(図30のシーケンスSQ21。)。
このような構成の場合、ディレクトリサービス40は、当該ディレクトリサービス40を利用するときに必要となる認証に係るサービスを提供する認証サービス30のURL及び/又は当該ディレクトリサービス40を利用するときに必要となる当該ディレクトリサービス40を識別するrepositoryService等の文字列を保持し、管理する。
前記情報取得レスポンスを受信したクライアント3は、該取得レスポンスに含まれる認証サービス30のURLを基に、クライアント3のユーザを認証する認証チケット50の取得リクエストを作成し、認証サービス30に送信する(図30のシーケンスSQ22。)。
認証サービス30は、クライアント3からの認証チケット取得リクエストに含まれるユーザ名、パスワード等を基に認証を行い、認証チケット50を作成し、該認証チケット50のID(認証チケットID)を含む認証チケット取得レスポンスを作成し、クライアント3に送信する(図30のシーケンスSQ23。)。
クライアント3は、認証チケット取得レスポンスを受信すると、前記認証チケットID及びシーケンスSQ21においてディレクトリサービス40より取得したディレクトリサービス40を識別するrepositoryService等の文字列を含む、Webサービス利用チケット60の取得リクエストを、認証サービス30に送信する(図30のシーケンスSQ24。)。
図30のシーケンスSQ25からシーケンスSQ31までの処理は、図5のシーケンスSQ4からシーケンスSQ10までの処理と同様である。
図30に示したように、Webサービス(例えば、ディレクトリサービス40)が、認証サービス30に係る情報(例えば、認証サービスのURL等)及び/又は当該ディレクトリサービス40を識別する識別情報(例えば、repositoryService等の文字列)を保持、管理することによって、クライアント3は、認証サービス30のURL及び/又はディレクトリサービス40を識別するrepositoryService等の文字列を知らなくても、ディレクトリサービス40等に問い合わせることによって、前記情報を取得することができる。
更に図30に示した処理の1つ前段階の処理として、例えば、クライアント3が、利用したいWebサービス(例えば、ディレクトリサービス40)のURL等を知らない場合、Webサービス等の検索を行うディスカバリサービス等にディレクトリサービス40のURLの検索要求を送信し、ディスカバリサービスより取得したディレクトリサービス40のURLを用いて、図30に示したシーケンスSQ20のように、ディレクトリサービス40に情報取得リクエストを送信するようにしてもよい。
このような構成の場合、クライアント3は、利用したいWebサービス(例えば、ディレクトリサービス40)のURL等を知らなくても、ディスカバリサービスを用い、ディレクトリサービス40等のURLを取得し、図30に示したような処理を行うことができる。
このようなディスカバリサービスは、例えば、認証サービス提供サーバ1に実装されていても良いし、Webサービス提供サーバ2に実装されていても良い。また、他のサーバ等に実装されていても良いし、認証サービス30及びディレクトリサービス40等と同じサーバ(装置)等に実装されていてもよい。