以下、本発明の実施例について、図面を用いて詳細に説明する。
なお、以下の実施例1および2では、SIP(Session Initiation Protocol)を用いたアクセス認可システム10を一例に説明する。SIPはIETFにおいてRFC3261で定義された、通信セッションの管理や制御を行う通信プロトコルである。また、各実施例に登場するシステム構成要素のうち、同一の要素が複数登場する場合には、SP(サービス提供サーバ)−α、SP−βのように表記する。また、例えばSP−αとSP−βをサービス提供サーバとして説明する場合のように複数の要素をまとめて説明する場合は、単にSPのように表現する。
また、以下の各実施例において、ユーザとは、ユーザ端末(US)500を操作する人間を指す。サービスとは、SP600上で動作する、ユーザがUS500を介して利用するアプリケーションの特徴を示したものである。属性情報とは、ユーザやサービスの特性を示した情報で、例えばユーザの性別、名前、もしくは年齢、または、サービスの種別(動画配信または商取引等)、料金、もしくは品質等を計算機が解釈可能な形式で記述した情報である。
サービスポリシ情報とは、サービスの利用基準を定めた情報であり、例えば、20歳以上のユーザのみ利用可能、特定の地域に在住のユーザのみ利用可能、または、一定額以上の費用を支払ったユーザのみ利用可能等のルールを計算機が解釈可能な形式で記述した情報である。認可情報とは、SP600がユーザに対するアクセス制御を実施するための情報であり、認可サーバ(AuS)400の判定結果を基にアクセス制御サーバ(ACS)100が作成する。制御通信とは、例えばSIPを用いた通信であり、US500と通信管理サーバ(CMS)300との間の通信、およびSP600とCMS300との間の通信を指す。データ通信とは、US500とSP600とがCMS300を介さずに行う通信を指す。
<実施例1>
まず、本発明の第1実施例について説明する。
図1は、第1実施例におけるアクセス認可システム10の構成を例示するシステム構成図である。アクセス認可システム10は、アクセス制御サーバ(ACS)100、ポリシ管理サーバ(PMS)200、通信管理サーバ(CMS)300、認可サーバ(AuS)400、ユーザ端末(US)500、および複数のサービス提供サーバ(SP)600を備える。ACS100、PMS200、CMS300、AuS400、US500、およびSP600は、ネットワーク11を介して互いに通信する。
図1に示すアクセス認可システム10は、ユーザがUS500を介してサービスを利用する際に、第三者機関であるACS100が、PMS200およびAuS400と連携して当該ユーザに対する当該サービスの認可判定を行い、その結果に基づいてCMS300がアクセス制御を行う。
次に、本実施例におけるアクセス認可システム10の各構成要素が備える機能について述べる。
まずUS500について説明する。US500は、通信部501、通信アプリケーション502、SIPクライアント503、通信管理テーブル格納部504、および通信制御エンジン505を備える。なお、本実施例では、SP600からのサービスを受ける通信装置をUS500として説明するが、US500は端末装置である必要はなく、プロキシサーバ等のサーバ装置であってもよい。
通信部501は、通信アプリケーション502またはSIPクライアント503からの指示に応じて、ネットワーク11を介して他の装置と通信を行う。通信管理テーブル格納部504には、例えば図2に示すような通信管理テーブル5040が格納されている。通信管理テーブル5040には、現在提供を受けているサービスを特定するサービスID5041毎に、SIPクライアント503によって作成された通信ID5042が格納される。
本実施例においてサービスID5041には、例えば当該サービスID5041で特定されるサービスを提供するSP600のURL(Uniform Resource Locator)が格納される。また、本実施例において通信ID5042としては、例えばSIP通信におけるCall_IDが使用される。
SIPクライアント503は、制御通信を実行する機能ブロックである。SIPクライアント503は、US500に接続されている入力装置を介して入力されたユーザからの指示に応じて、通信部501を介してCMS300との間で認証処理を実行する。また、SIPクライアント503は、ユーザからの指示に応じて、通信部501を介して、SIPに規定されている位置登録の処理をCMS300との間で実行する。
位置登録の処理とは、例えば自US500のSIP-URI(Uniform Resource Identifier)と位置情報の組をSIPサーバに登録する処理を指す。位置情報としては、例えばIPアドレスであってもよく、IPアドレスとポート番号の組等であってもよい。本実施例において、認証処理および位置登録処理を実行することをログインと呼ぶ。本実施例において、US500およびそれぞれのSP600は、CMS300との間で予めログインの処理をそれぞれ実行しているものとする。
ログインの処理後、SIPクライアント503は、通信制御エンジン505からサービスIDを受け取った場合に、当該サービスIDを記載した通信開始要求を作成し、作成した通信開始要求を、通信部501を介してCMS300へ送信する。本実施例において通信開始要求は、例えば図4(a)に示すように、SIPにおいて定義されているINVITEリクエストと同様のメッセージフォーマットで作成される。通信開始要求のBODY部30には、通信制御エンジン505から通知されたサービスIDが記載される。
なお、サービスが提供されているSP600のURLはユーザから指示されるが、宛先のSP600のSIP-URIは不明であるため、SIPクライアント503は、宛先のSIP-URIを「anonymous」として通信開始要求を作成する。
また、SIPクライアント503は、通信部501を介してCMS300から通信開始応答を受信した場合に、当該通信開始応答に記載されているCall_ID、および、当該通信開始応答に対応する通信開始要求に記載したサービスIDを、通信路が確立している旨を示す情報と共に通信制御エンジン505へ送る。本実施例において通信開始応答は、例えば図4(b)に示すように、SIPにおいて定義されている200OKレスポンスと同様のメッセージフォーマットでCMS300によって作成される。
また、SIPクライアント503は、BYEリクエストをCMS300から受信することにより通信が終了した場合に、通信の終了を示す情報と共に、当該BYEリクエストに含まれているCall_IDを通信制御エンジン505へ送る。
また、SIPクライアント503は、ユーザからユーザ属性情報の変更を指示された場合に、登録情報更新要求を作成し、作成した登録情報更新要求を通信部501を介してCMS300へ送信する。そして、SIPクライアント503は、CMS300から登録情報更新応答を受信することにより、ユーザ属性情報が正常に変更されたことを認識する。
本実施例において登録情報更新要求は、例えば図6(a)に示すように、SIPにおいて定義されているUPDATEリクエストと同様のメッセージフォーマットで作成される。登録情報更新要求のBODY部31には、ユーザから指示された、変更すべきユーザ属性情報が記載される。本実施例において登録情報更新応答は、例えば図6(b)に示すように、SIPにおいて定義されている200OKレスポンスと同様のメッセージフォーマットでCMS300によって作成される。
通信制御エンジン505は、通信アプリケーション502からサービスIDを受け取った場合に、通信管理テーブル格納部504を参照して、当該サービスIDが通信管理テーブル5040に登録されているか否かを判定する。当該サービスIDが通信管理テーブル5040に登録されている場合、通信制御エンジン505は、通信路が確立している旨を示す情報を通信アプリケーション502に返す。
当該サービスIDが通信管理テーブル5040に登録されていない場合、通信制御エンジン505は、当該サービスIDをSIPクライアント503へ送ることにより、SIPクライアント503に、当該サービスIDに示されたURLのSP600との間に通信路を確立させる。
そして、通信制御エンジン505は、通信路が確立している旨を示す情報と共に、Call_IDおよびサービスIDをSIPクライアント503から受け取った場合に、受け取ったCall_IDを通信IDとして、通信IDおよびサービスIDの組を通信管理テーブル5040に登録する。そして、通信制御エンジン505は、通信路が確立している旨を示す情報を通信アプリケーション502に通知する。
また、通信の終了を示す情報と共に、Call_IDをSIPクライアント503から受け取った場合、通信制御エンジン505は、Call_IDに対応する通信IDおよび当該通信IDに対応付けられているサービスIDを通信管理テーブル5040から削除する。
通信アプリケーション502は、データ通信を実行する機能ブロックである。通信アプリケーション502は、ユーザからサービスの要求を受け付けた場合に、当該サービスに対応するサービスIDを通信制御エンジン505へ送る。そして、通信アプリケーション502は、通信制御エンジン505から、当該サービスIDに対応するサービスの提供を受けるための通信路が確立している旨を通知された場合に、当該サービスIDに示されるURLのSP600へアクセスして対応するサービスの提供を受ける。
次に、SP600について説明する。SP600は、通信部601、サービスアプリケーション602、SIPクライアント603、通信管理テーブル格納部604、および通信制御エンジン605を備える。通信部601は、サービスアプリケーション602またはSIPクライアント603からの指示に応じて、ネットワーク11を介して他の装置と通信を行う。
通信管理テーブル格納部604には、例えば図3に示すような通信管理テーブル6040が格納されている。通信管理テーブル6040には、ユーザを特定するユーザID6041毎に、当該ユーザに対して提供が許可されたサービスのサービスID6042、当該サービスを提供する際に使用する通信路を特定する通信ID6043、および当該ユーザに当該サービスの提供が許可されたことを示す認可情報6044が格納される。
SIPクライアント603は、制御通信を実行する機能ブロックである。SIPクライアント603は、SP600に接続された入力装置を介して入力された管理者からの指示に応じて、通信部601を介してCMS300との間で認証処理と位置登録処理とを実行することにより、ログインを行う。
その後、SIPクライアント603は、CMS300から、BODY部30にさらに図5(e)に示す形式の認可情報を含む通信開始要求(図4(a)参照)を受信した場合に、当該通信開始要求に含まれる送信元のユーザID、サービスID、通信ID、および認可情報を通信制御エンジン605に送る。そして、SIPクライアント603は、図4(b)に示した通信開始応答を作成し、作成した通信開始応答を通信部601を介してCMS300へ送信する。
また、SIPクライアント603は、BYEリクエストを受信することにより通信が終了した場合に、通信の終了を示す情報と共に、当該BYEリクエストに含まれているCall_IDを通信制御エンジン605へ送る。
また、SIPクライアント603は、通信部601を介して、ACS100から認可情報削除要求を受信した場合に、当該認可情報削除要求に含まれているユーザIDに対応するレコードを通信管理テーブル6040から全て削除する。そして、SIPクライアント603は、削除結果を含む認可情報削除応答を作成し、作成した認可情報削除応答を通信部601を介してACS100へ送信する。
本実施例において認可情報削除要求は、例えば図6(e)に示すように、delAuthorizationAssertionRequestタグを用いたXMLメッセージとして作成される。図6(e)は、認可情報削除要求のうち、本実施例の説明に必要な部分のみを示している。subjectタグにはユーザIDが記載される。resourceタグにはサービスIDが記載される。seqタグには、認可情報削除要求と認可情報削除応答とを対応付けるためのリクエスト番号が記載される。
また、本実施例において認可情報削除応答は、例えば図6(f)に示すように、delAuthorizationAssertionResponseタグを用いたXMLメッセージとして作成される。図6(f)は、認可情報削除応答のうち、本実施例の説明に必要な部分のみを示している。resultタグには認可情報の削除結果が記載される。seqタグには、認可情報削除要求と認可情報削除応答とを対応付けるためのリクエスト番号が記載される。
通信制御エンジン605は、SIPクライアント603から認可情報を受け取った場合に、受け取った認可情報がサービス提供を許可する旨を示すならば、当該認可情報、ならびに、当該認可情報と共に受け取ったユーザID、サービスID、および通信IDを6040に登録する。また、通信の終了を示す情報と共に、Call_IDをSIPクライアント603から受け取った場合、通信制御エンジン605は、Call_IDに対応する通信ID、ならびに、当該通信IDに対応付けられているユーザID、サービスID、および認可情報を通信管理テーブル6040から削除する。
また、通信制御エンジン605は、サービスアプリケーション602からユーザIDおよびサービスIDの組を受け取った場合に、当該ユーザIDおよびサービスIDの組が通信管理テーブル6040内に存在するか否かを判定する。当該ユーザIDおよびサービスIDの組が通信管理テーブル6040内に存在する場合、通信制御エンジン605は、当該ユーザIDに対応するユーザに対して、当該サービスIDに対応するサービスの提供が許可されている旨をサービスアプリケーション602に返す。当該ユーザIDおよびサービスIDの組が通信管理テーブル6040内に存在しない場合、通信制御エンジン605は、当該ユーザIDに対応するユーザに対して、当該サービスIDに対応するサービスの提供が許可されていない旨をサービスアプリケーション602に返す。
サービスアプリケーション602は、データ通信を実行する機能ブロックである。サービスアプリケーション602は、通信部601を介して、サービスIDおよび当該サービスIDに対応するサービスの提供先のユーザのユーザIDを含むサービス提供要求を受信した場合に、当該ユーザIDおよびサービスIDを通信制御エンジン605に送る。そして、当該ユーザIDに対応するユーザに対して、当該サービスIDに対応するサービスの提供が許可されていない旨が通信制御エンジン605から返された場合、サービスアプリケーション602は、その旨を通信部601を介して当該ユーザIDに対応するユーザが使用しているUS500へ返信する。
一方、当該ユーザIDに対応するユーザに対して、当該サービスIDに対応するサービスの提供が許可されている旨が通信制御エンジン605から返された場合、サービスアプリケーション602は、当該ユーザIDに対応するユーザに対して、当該サービスIDに対応するサービスの提供を開始する。
次に、CMS300について説明する。CMS300は、位置情報格納部301、ログイン処理部302、アクセス履歴格納部303、SIPメッセージ制御部304、および通信部305を備える。通信部305は、ログイン処理部302またはSIPメッセージ制御部304からの指示に応じて、ネットワーク11を介して他の装置と通信を行う。
ログイン処理部302は、US500およびSP600のそれぞれとの間で位置登録処理および認証処理を含むログインに関する処理を実行し、位置登録において受信したSIP-URIと位置情報の組を位置情報格納部301に登録する。なお、本実施例では、CMS300は位置情報格納部301およびログイン処理部302を備えるが、他の例として、位置情報格納部301およびログイン処理部302は、CMS300の外部の装置により実現されていてもよい。
アクセス履歴格納部303には、例えば図7に示すように、SIP通信におけるCall_IDを示す通信ID3031、US500のユーザのSIP-URIを示すSubject_ID3032、サービスを提供するSP600のSIP-URIを示すTarget_ID3033、サービスIDを示すService_ID3034、SIPによる通信の開始日時を示すStart3035、およびSIPによる通信の終了日時を示すEnd3036が、それぞれのレコードを識別する番号3030に対応付けて格納されている。
SIPメッセージ制御部304は、通信部305を介して、US500から図4(a)に示した通信開始要求を受信した場合に、当該通信開始要求のBODY部30に記載されているサービスIDで特定されるURLから、外部のDNSサーバ等を参照して当該URLに対応するSP600の位置情報(IPアドレス)を特定し、特定した位置情報に対応するSIP-URIを位置情報格納部301から抽出する。
そして、SIPメッセージ制御部304は、当該通信開始要求に含まれているCall_IDを通信IDとし、当該通信開始要求の送信元のSIP-URIをSubject_IDとし、当該通信開始要求に含まれているサービスIDに基づいて特定したSIP-URIをTarget_IDとし、当該通信開始要求に含まれているサービスIDをService_IDとして、新たに割り振った番号に対応付けてアクセス履歴格納部303に格納する。
そして、SIPメッセージ制御部304は認可情報取得要求を作成し、作成した認可情報取得要求を通信部305を介してACS100へ送信する。本実施例において認可情報取得要求は、図4(c)に示すように、getAuthAssertionRequestタグを用いたXMLメッセージとして作成される。図4(c)は、認可情報取得要求のうち、本実施例の説明に必要な部分のみを示している。subjectタグにはUS500のSIP-URIが記載される。resourceタグにはサービスIDが記載される。seqタグには、認可情報取得要求とその応答である認可情報取得応答とを対応付けるためのリクエスト番号が記載される。
また、SIPメッセージ制御部304は、通信部305を介して、ACS100から認可情報取得応答を受信した場合に、BODY部30にさらに図5(e)に示す形式の認可情報を含む通信開始要求(図4(a)参照)を作成し、作成した通信開始要求を、通信部305を介してSP600へ送信する。本実施例において認可情報取得応答は、図4(d)に示すように、getAuthAssertionResponseタグを用いたXMLメッセージとして作成される。図4(d)は、認可情報取得応答のうち、本実施例の説明に必要な部分のみを示している。assertionタグには認可情報(図5(e)参照)が記載される。seqタグには、認可情報取得要求と認可情報取得応答とを対応付けるためのリクエスト番号が記載される。
また、SIPメッセージ制御部304は、通信部305を介して、SP600から通信開始応答を受信した場合に、アクセス履歴格納部303を参照して、当該通信開始応答に含まれているCall_IDと同一の通信ID、当該通信開始応答に含まれている送信元のSIP-URIと同一のSubject_ID、および、当該通信開始応答に含まれている宛先のSIP-URIと同一のTarget_IDに対応付けられているレコードを特定し、特定したレコードのStartの欄に、当該通信開始応答を受信した日時を登録する。そして、SIPメッセージ制御部304は、当該通信開始応答内の一部の情報(例えばviaヘッダの内容)を書き換えて宛先のUS500へ送信する。
また、SIPメッセージ制御部304は、通信部305を介して、BYEリクエストに対する200OKレスポンスを受信した場合に、当該200OKレスポンスに含まれているCall_IDと同一の通信ID、当該200OKレスポンスに含まれている送信元のSIP-URIと同一のSubject_ID、および、当該200OKレスポンスに含まれている宛先のSIP-URIと同一のTarget_IDに対応付けられているレコードを特定し、特定したレコードのEndの欄に、当該200OKレスポンスを受信した日時を登録する。
また、SIPメッセージ制御部304は、通信部305を介して、US500から図6(a)に示した登録情報更新要求を受信した場合に、異なる形式の登録情報更新要求を作成し、作成した登録情報更新要求を通信部305を介してACS100へ送信する。本実施例においてSIPメッセージ制御部304によって作成される登録情報更新要求は、例えば図6(c)に示すように、updateAttributeRequestタグを用いたXMLメッセージとして作成される。図6(c)は、SIPメッセージ制御部304によって作成される登録情報更新要求のうち、本実施例の説明に必要な部分のみを示している。subjectタグにはUS500のSIP-URIが記載される。attributeタグには更新すべきユーザ属性情報が記載される。seqタグには、登録情報更新要求とその応答である登録情報更新応答とを対応付けるためのリクエスト番号が記載される。
また、SIPメッセージ制御部304は、通信部305を介して、ACS100から登録情報更新応答を受信した場合に、異なる形式の登録情報更新応答(図6(b)参照)を作成し、作成した登録情報更新要求を通信部305を介してUS500へ送信する。本実施例においてACS100から送信される登録情報更新応答は、例えば図6(d)に示すように、updateAttributeResponseタグを用いたXMLメッセージとして作成される。図6(d)は、ACS100から送信される登録情報更新応答のうち、本実施例の説明に必要な部分のみを示している。resultタグにはユーザ属性情報の変更結果が記載される。seqタグには、登録情報更新要求と登録情報更新応答とを対応付けるためのリクエスト番号が記載される。
次に、ACS100について説明する。ACS100は、次サービスID格納部101、次サービスID特定部102、認可情報格納部103、認可判定要求部104、および通信部105を備える。通信部105は、認可判定要求部104からの指示に応じて、ネットワーク11を介して他の装置と通信を行う。
認可情報格納部103には、例えば図8に示すように、US500のユーザのSIP-URIを示すSubject1031、サービスIDを示すResource1032、認可判定要求部104によって作成された認可情報(図5(e)参照)に記載されているアサーションID1033、認可情報を格納している場所を示す認可情報参照点1034、Resource1032に対応するサービスがSubject1031に対応するユーザに提供されている状態か否かを示す通信フラグ1035が、それぞれのレコードを識別する番号1030に対応付けて格納されている。
次サービスID格納部101には、例えば図9に示すように、それぞれのサービスのサービスID1010毎に、次に提供されるべきサービスのサービスIDを示す次サービスID1011が格納されている。本実施例では、それぞれのサービスは、予め定められたワークフロー内の一部を構成するものであり、それぞれのワークフロー毎に、サービスの提供順番が予め定められている。
次サービスID特定部102は、認可判定要求部104からユーザIDおよびサービスIDを受け付けた場合に、次サービスID格納部101を参照して、当該サービスIDに対応付けられている次サービスIDを抽出する。そして、次サービスID特定部102は、抽出した次サービスIDを、認可判定要求部104から受け付けたユーザIDと共に認可判定要求部104へ送る。なお、認可判定要求部104から受け取ったサービスIDに対応する次サービスIDが次サービスID格納部101内に存在しない場合(例えばワークフローの内の最後のサービスの次に提供されるべきサービスのサービスID等)、次サービスID特定部102は、認可判定要求部104から受け取ったユーザIDを認可判定要求部104へ返す。
認可判定要求部104は、通信部105を介して、CMS300から認可情報取得要求(図4(c)参照)を受信した場合に、認可情報格納部103を参照して、当該認可情報取得要求のsubjectタグで示されるユーザIDおよびresourceタグで示されるサービスIDの組み合わせに対応する認可情報が存在するか否かを判定する。当該ユーザIDおよびサービスIDの組み合わせに対応する認可情報が存在する場合、認可判定要求部104は、当該認可情報を認可情報格納部103から取得して、図4(d)で説明した認可情報取得応答を作成し、作成した認可情報取得応答を通信部105を介してCMS300へ送信する。
認可情報取得要求に含まれているユーザIDおよびサービスIDの組み合わせに対応する認可情報が認可情報格納部103内に存在しない場合、認可判定要求部104は、登録情報取得要求を作成し、作成した登録情報取得要求を通信部105を介してPMS200へ送信する。本実施例において登録情報取得要求は、図4(e)に示すように、getAttributeAndPolicyRequestタグを用いたXMLメッセージとして作成される。図4(e)は、登録情報取得要求のうち、本実施例の説明に必要な部分のみを示している。subjectタグにはUS500のSIP-URIが記載される。resourceタグにはサービスIDが記載される。seqタグには、登録情報取得要求と登録情報取得応答とを対応付けるためのリクエスト番号が記載される。
そして、通信部105を介して登録情報取得応答をPMS200から受信した場合、認可判定要求部104は、認可判定要求を作成し、作成した認可判定要求を、通信部105を介してAuS400へ送信する。本実施例において登録情報取得応答は、図4(f)に示すように、getAttributeAndPolicyResponseタグを用いたXMLメッセージとして作成される。図4(f)は、登録情報取得応答のうち、本実施例の説明に必要な部分のみを示している。
登録情報取得応答のresultタグにはUS500のユーザの属性情報およびサービスポリシ情報の取得結果が記載される。取得結果としては、例えば、ユーザの属性情報とサービスポリシ情報を両方取得できた場合にはOKが記載され、ユーザ属性情報およびサービスポリシ情報のいずれか一方が取得できなかった場合にはNGが記載される。登録情報取得応答のseqタグには、登録情報取得要求と登録情報取得応答とを対応付けるためのリクエスト番号が記載される。
登録情報取得応答のattributeタグにはユーザの属性情報が記載される。ユーザ属性情報は、例えば図5(a)に示すようなXMLメッセージとして記述される。属性情報のidタグにはユーザのSIP-URIが記載される。nameタグにはユーザの名前が記載される。ageタグにはユーザの年齢が記載される。sexタグにはユーザの性別が記載される。addressタグにはユーザの住所が記載される。interestsタグにはユーザの嗜好がitemタグで挟んでそれぞれ記載される。itemタグは1つ以上記載される。idタグ以外のタグの要素はオプションであり、記載しない場合は各タグの要素に「null」が記載される。
登録情報取得応答のpolicyタグにはサービスポリシ情報が記載される。サービスポリシ情報は、例えば図5(b)のようなXMLメッセージとして記述される。idタグにはサービスIDが記載される。ruleListsタグには認可判定を行うための基準となるルールがruleタグで挟んで記載される。algorithmタグにはruleListsタグに記載している各ルールを用いた認可判定に使用されるアルゴリズムの名前が記載される。Ruleタグは1つ以上記載される。また、idタグ以外のタグの要素はオプションであり、記載しない場合は各タグの要素に「null」が記載される。
本実施例では、使用可能な認可判定アルゴリズムの例として2種類の認可判定アルゴリズムを想定する。サービスポリシ情報に記載するalgorithmタグの要素には、例えば以下の2つのアルゴリズムが指定可能である。「Deny-overrides」は、全てのルールに対して判定を行い、全てのルールについて「Permit」である場合のみ認可判定結果を「Permit」とし、それ以外の全ての場合については認可判定結果を「Deny」とする認可判定アルゴリズムである。「Permit-overrides」は、全てのルールに対して判定を行い、どれか一つのルールについて「Permit」であれば認可判定結果を「Permit」とし、全てのルールについて「Deny」である場合にのみ認可判定結果を「Deny」とする認可判定アルゴリズムである。認可判定の必要がないサービスを利用する場合には、認可判定アルゴリズムとして「null」が指定される。
また、本実施例において認可判定要求は、図5(c)に示すように、judgeAuthorizationRequestタグを用いたXMLメッセージとして作成される。図5(c)は、認可判定要求のうち、本実施例の説明に必要な部分のみを示している。attributeタグにはユーザの属性情報が記載される。policyタグにはサービスポリシ情報が記載される。seqタグには認可判定要求と認可判定応答とを対応付けるためのリクエスト番号が記載される。
そして、通信部105を介して認可判定応答をAuS400から受信した場合、認可判定要求部104は、認可情報を作成する。本実施例において認可判定応答は、図5(d)に示すように、judgeAuthorizationResponseタグを用いたXMLメッセージとして作成される。図5(d)は、認可判定応答のうち、本実施例の説明に必要な部分のみを示している。resultタグには認可判定の結果が記載される。seqタグには認可判定要求と認可判定応答とを対応付けるためのリクエスト番号が記載される。
そして、当該認可判定応答に含まれている認可判定結果が、サービスの提供を許可する旨を示す場合、認可判定要求部104は、作成した認可情報をACS100内のメモリまたはACS100の外部の装置内のメモリに保存し、保存先を示す情報を当該認可情報の対象となるユーザIDおよびサービスIDに対応付けて認可情報格納部103に登録する。そして、認可判定要求部104は、認可情報取得応答(図4(d)参照)を作成して、通信部105を介してCMS300へ送信する。
本実施例において認可情報は、図5(e)に示すように、assertion-Bodyタグを用いたXMLメッセージとして作成される。図5(e)は、認可情報のうち、本実施例の説明に必要な部分のみを示している。assertionIDタグには認可情報を識別する識別情報が記載される。subjectタグには認可判定応答に対応する認可判定要求内のユーザ属性情報に含まれるユーザIDが記載される。resourceタグには認可判定応答に対応する認可判定要求内のサービスポリシ情報に含まれるサービスIDが記載される。decisionタグには認可判定応答に含まれている認可判定の結果が記載される。signatureタグにはassertion-Bodyタグ全体を対象としたXML署名が記載される。
認可情報取得応答をCMS300へ送信した後、認可判定要求部104は、当該認可情報取得応答に含まれているユーザIDおよびサービスIDを次サービスID特定部102へ送る。そして、次サービスID特定部102からユーザIDおよび次サービスIDを受け取った場合、認可判定要求部104は、当該ユーザIDおよび次サービスIDの組み合わせに対応する認可情報が認可情報格納部103に登録されているか否かを判定する。
当該ユーザIDおよび次サービスIDの組み合わせに対応する認可情報が認可情報格納部103に登録されていない場合、認可判定要求部104は、当該ユーザIDおよび次サービスIDを含む登録情報取得要求(図4(e)参照)を作成してPMS200へ送る。なお、当該ユーザIDおよび次サービスIDの組み合わせに対応する認可情報が認可情報格納部103に既に登録されている場合、または、次サービスID特定部102がユーザIDと共に次サービスIDを出力しなかった場合、認可判定要求部104は、予め認可判定を行う処理を実行しない。
そして、認可判定要求部104は、PMS200から登録情報取得応答(図4(f))を受け取り、受け取った登録情報取得応答に基づいて認可判定要求(図5(c))を作成してAuS400へ送る。そして、認可判定要求部104は、AuS400から認可判定応答(図5(d))を受け取り、受け取った認可判定応答に含まれている認可判定結果がサービスの提供を許可する旨を示す場合に、認可情報を作成し、作成した認可情報をACS100内のメモリまたはACS100の外部の装置内のメモリに保存し、保存先を示す情報を当該認可情報の対象となるユーザIDおよびサービスIDに対応付けて認可情報格納部103に登録する。
このように、認可判定要求部104は、あるユーザについて認可判定を行ったサービスの次に提供されるべきサービスの認可判定を、当該ユーザから要求される前に実行する。これにより、アクセス認可システム10は、ユーザからサービスの要求を受け付けた場合に、認可判定の間ユーザを待たせることなく、ユーザに対する認可判定結果に基づいてより迅速にサービスの提供を開始することができる。
なお、本実施例において、認可判定要求部104は、認可情報取得応答をCMS300へ送信してから、当該認可情報取得応答に記載したサービスIDで特定されるサービスの次に提供されるべきサービスに対する認可情報取得要求をCMS300から受信する前までの間に、当該認可情報取得応答に含まれるユーザIDに対応するユーザについて、当該次に提供されるべきサービスの認可判定に関する処理を実行する。
より好ましくは、認可判定要求部104は、認可情報取得応答をCMS300へ送信してから、当該認可情報取得応答に記載したサービスIDで特定されるサービスの次に提供されるべきサービスに対する認可情報取得要求をCMS300から受信する前までの間であって、ACS100の処理負荷が低いときに、当該次に提供されるべきサービスの認可判定を実施する。処理負荷が低いときとは、例えばACS100の処理負荷が予め定められた閾値よりも低いときを指す。例えば、ACS100のCPU使用率が50%未満のときに、認可判定要求部104は、当該次に提供されるべきサービスの認可判定を実施する。
また、認可判定要求部104は、通信部105を介して、CMS300から登録情報更新要求(図6(c)参照)を受信した場合に、受信した登録情報更新要求をPMS200に転送する。そして、PMS200から登録情報更新応答(図6(d)参照)を受信した場合、認可判定要求部104は、認可情報格納部103を参照して、当該登録情報更新応答に対応する登録情報更新要求に含まれているユーザIDが認可情報格納部103に登録されているか否かを判定する。当該ユーザIDが認可情報格納部103に登録されていない場合、認可判定要求部104は、PMS200から受信した登録情報更新応答をCMS300へ転送する。
一方、PMS200から受信した登録情報更新応答に対応する登録情報更新要求に含まれているユーザIDが認可情報格納部103に登録されている場合、認可判定要求部104は、認可情報格納部103を参照して、当該ユーザIDに対応付けられているサービスIDを抽出する。そして、認可判定要求部104は、抽出したそれぞれのサービスIDについて認可情報削除要求(図6(e)参照)を作成し、作成した認可情報削除要求を、通信部105を介してそれぞれの宛先のSP600へ送信する。
そして、認可情報削除要求を送信した全てのSP600から認可情報削除応答(図6(f))を受信した場合、認可判定要求部104は、送信した認可情報削除要求に含まれるユーザIDを含む全てのレコードを認可情報格納部103から削除し、PMS200から受信した登録情報更新応答をCMS300へ転送する。
次に、PMS200について説明する。PMS200は、サービスポリシ情報格納部201、ユーザ属性情報格納部202、情報管理部203、および通信部204を備える。通信部204は、情報管理部203からの指示に応じて、ネットワーク11を介して他の装置と通信を行う。
サービスポリシ情報格納部201には、例えば図10に示すように、サービスID2010毎に、当該サービスID2010に対応するサービスのサービスポリシ情報の実体が格納されているPMS200のメモリ内の場所を示す参照先アドレス2011が格納されている。サービスポリシ情報の実体は、例えば図5(b)に示すようなデータ構造である。
ユーザ属性情報格納部202には、例えば図11に示すように、ユーザID2020毎に、当該ユーザID2020に対応するユーザの属性情報の実体が格納されているPMS200のメモリ内の場所を示す参照先アドレス2021が格納されている。ユーザ属性情報の実体は、例えば図5(a)に示すようなデータ構造である。
情報管理部203は、通信部204を介して、登録情報取得要求(図4(e)参照)をACS100から受信した場合に、当該登録情報取得要求に含まれているサービスIDに対応するサービスポリシ情報をサービスポリシ情報格納部201から取得し、当該登録情報取得要求に含まれているユーザIDに対応するユーザ属性情報をユーザ属性情報格納部202から取得する。そして、情報管理部203は、取得したサービスポリシ情報およびユーザ属性情報に基づいて登録情報取得応答(図4(f)参照)を作成し、作成した登録情報取得応答を、通信部204を介してACS100へ送信する。
また、情報管理部203は、通信部204を介して、ACS100から登録情報更新要求(図6(c)参照)を受信した場合に、ユーザ属性情報格納部202を参照して、当該登録情報更新要求に含まれるユーザIDに対応するユーザ属性情報を、当該登録情報更新要求に含まれるユーザ属性情報で更新する。そして、情報管理部203は、更新結果を含む登録情報更新応答(図6(d))を作成し、作成した登録情報更新応答を、通信部204を介してACS100へ送信する。
次に、AuS400について説明する。AuS400は、認可判定部401および通信部402を備える。通信部402は、認可判定部401からの指示に応じて、ネットワーク11を介して他の装置と通信を行う。
認可判定部401は、通信部402を介して、認可判定要求(図5(c)参照)をACS100から受信した場合に、当該認可判定要求に含まれるユーザ属性情報が、当該認可判定要求に含まれるサービスポリシ情報を満たすか否かを判定する認可判定を実行する。そして、認可判定部401は、認可判定結果を含む認可判定応答(図5(d)参照)を作成し、作成した認可判定応答を、通信部402を介してACS100へ送信する。
次に、第1実施例において、ユーザの要求に応じてサービスの提供が開始される場合のアクセス認可システム10の一連の動作について図12を用いて説明する。
まず、US500のSIPクライアント503は、ユーザからの要求に応じて図4(a)に示した通信開始要求を作成し、作成した通信開始要求をCMS300へ送信する(S100)。ここで、US500のユーザのSIP-RUIは「jiro@sipdomain.com」であり、ユーザが希望するサービスのサービスIDは「http://travel.testservice1.com/」であるものと仮定する。CMS300のSIPメッセージ制御部304は、US500から受信した通信開始要求に基づいて図4(c)に示した認可情報取得要求を作成し、作成した認可情報取得要求をACS100へ送信する(S101)。
次に、ACS100の認可判定要求部104は、CMS300から受信した認可情報取得要求に含まれるユーザIDおよびサービスIDの組み合わせに対応する認可情報が認可情報格納部103に格納されているか否かを判定する(S102)。当該ユーザIDおよびサービスIDの組み合わせに対応する認可情報が認可情報格納部103に格納されている場合(S102:Yes)、認可判定要求部104は、ステップS109に示す処理を実行する。
ここで、ステップS102が実行される前の認可情報格納部103には、例えば図13(a)に示すようなデータが格納されているものとする。本シーケンス図で示される例では、CMS300から受信した認可情報取得要求に含まれるユーザIDおよびサービスIDの組み合わせに対応する認可情報が認可情報格納部103に格納されておらず(S102:No)、認可判定要求部104は、当該ユーザIDおよびサービスIDに基づいて、図4(e)に示した登録情報取得要求を作成し、作成した登録情報取得要求をPMS200へ送信する(S103)。
PMS200の情報管理部203は、ACS100から受信した登録情報取得要求に含まれているユーザIDおよびサービスIDに基づいて、サービスポリシ情報格納部201およびユーザ属性情報格納部202から対応するユーザ属性情報およびサービスポリシ情報をそれぞれ取得する。そして、情報管理部203は、取得したユーザ属性情報およびサービスポリシ情報を含む登録情報取得応答(図4(f)参照)を作成し、作成した登録情報取得応答をACS100へ送信する(S104)。
次に、ACS100の認可判定要求部104は、PMS200から受信した登録情報取得応答に含まれているユーザ属性情報およびサービスポリシ情報を含む認可判定要求(図5(c)参照)を作成し、作成した認可判定要求をAuS400へ送信する(S105)。AuS400の認可判定部401は、ACS100から受信した認可判定要求に含まれるユーザ属性情報が、当該認可判定要求に含まれているサービスポリシ情報を満たすか否かを判定する(S106)。そして、認可判定部401は、認可判定結果を含む認可判定応答(図5(d)参照)を作成し、作成した認可判定応答をACS100へ送信する(S107)。
次に、ACS100の認可判定要求部104は、AuS400から受信した認可判定応答に基づいて、図5(e)に示した認可情報を作成し、当該認可応答に含まれる判定結果がサービスの利用を許可する旨を示す場合に、当該認可情報を、対応するユーザIDおよびサービスID等の情報と共に認可情報格納部103に保存する(S108)。この時点で、認可情報格納部103内のデータは、例えば図13(b)に示すような構成になる。そして、認可判定要求部104は、図4(d)に示した認可情報取得応答を作成し、作成した認可情報取得応答をCMS300へ送信する(S109)。
CMS300のSIPメッセージ制御部304は、図4(a)に示した通信開始要求において、宛先をサービスIDに対応するサービスを提供するSP600のSIP-URIとし、BODY部30にACS100から受信した認可情報取得応答に含まれている認可情報を含めた通信開始要求を作成し、作成した通信開始要求をSP600へ送信する(S110)。
SP600のSIPクライアント603は、CMS300から受信した通信開始要求に応じて、図4(b)に示した通信開始応答を作成し、作成した通信開始応答をCMS300へ送信する(S111)。CMS300のSIPメッセージ制御部304は、SP600から受信した通信開始応答の一部を書き換えてUS500へ送信する(S112)。そして、SP600のサービスアプリケーション602は、US500へのサービスの提供を開始する(S113)。
次に、ACS100の認可判定要求部104は、ステップS109において送信した認可情報取得応答内の認可情報に含まれているユーザIDおよびサービスIDを次サービスID特定部102へ送る。次サービスID特定部102は、次サービスID格納部101を参照して、当該サービスIDに対応付けられている次サービスIDを抽出することにより、次に提供されるべきサービスのサービスIDを特定する(S114)。
次に、次サービスID特定部102は、抽出した次サービスIDを、認可判定要求部104から受け付けたユーザIDと共に認可判定要求部104へ返す。そして、認可判定要求部104は、次サービスID特定部102から受信したユーザIDおよびサービスIDを用いて、ステップS102からステップS108に示した処理Aを実行する(S115)。ステップS115の処理が終了すると、認可情報格納部103内のデータは、例えば図13(c)に示すような構成になる。これにより、アクセス認可システム10は、同一のユーザから次のサービスの提供を要求された場合に、認可情報格納部103内の認可情報をもとに迅速にサービスの提供を開始することができる。
なお、本シーケンス図では、ステップS114およびS115で示される処理が、ステップS113で示される処理の後に実行されているが、本発明はこれに限られず、認可判定要求部104は、ステップS109で示される処理を実行してから、次のサービスの要求に対応する認可情報取得要求を受信するまでの間に、ステップS114およびS115で示される処理を実行すればよい。
次に、第1実施例において、US500を介したユーザによる登録情報の更新に関する一連の処理について図14を用いて説明する。
まず、US500のSIPクライアント503は、ユーザからの要求に応じて図6(a)に示した登録情報更新要求を作成し、作成した登録情報更新要求をCMS300へ送信する(S200)。CMS300のSIPメッセージ制御部304は、US500から受信した登録情報更新要求に基づいて図6(c)に示した登録情報更新要求を作成し、作成した登録情報更新要求をACS100へ送信する(S201)。
ACS100の認可判定要求部104は、CMS300から受信した登録情報更新要求をPMS200へ転送する(S202)。PMS200の情報管理部203は、ACS100から受信した登録要求更新要求に含まれているユーザIDに対応するユーザ属性情報格納部202内のユーザ属性情報を、当該登録情報更新要求に含まれているユーザ属性情報で更新する(S203)。そして、情報管理部203は、図6(d)に示した登録情報更新応答を作成し、作成した登録情報更新応答をACS100へ送信する(S204)。
次に、ACS100の認可判定要求部104は、ステップS201で受信した登録情報更新要求に含まれているユーザIDに対応する認可情報が認可情報格納部103に格納されているか否かを判定する(S205)。当該ユーザIDに対応する認可情報が認可情報格納部103に格納されていない場合(S205:No)、認可判定要求部104は、ステップS213に示す処理を実行する。
ステップS201で受信した登録情報更新要求に含まれているユーザIDに対応する認可情報が認可情報格納部103に格納されている場合(S205:Yes)、認可判定要求部104は、当該認可情報に対応付けられているサービスIDを認可情報格納部103から抽出し、抽出したそれぞれのサービスIDについて、図6(e)に示した認可情報削除要求を作成し、作成した認可情報削除要求を送信する(S206、S209)。本例では、SP600−αとSP600−βにはサービスの提供を許可する旨を示す認可情報が既に渡されており、SP600−γにはサービスの提供を許可する旨を示す認可情報が渡されていないものとする。
SP600−αおよびSP600−βのそれぞれのSIPクライアント603は、通信管理テーブル格納部604を参照して、ACS100から受信した認可情報削除要求に含まれているユーザIDに対応するレコードを通信管理テーブル6040から全て削除する(S207、S210)。そして、SIPクライアント603は、図6(f)に示した認可情報削除応答を作成し、作成した認可情報削除応答をACS100へ送信する(S208、S211)。
次に、ACS100の認可判定要求部104は、ステップS201で受信した登録情報更新要求に含まれているユーザIDに対応する認可情報を認可情報格納部103から全て削除し(S212)、ステップS204で受信した登録情報更新応答をCMS300へ転送する(S213)。CMS300のSIPメッセージ制御部304は、ACS100から受信した登録情報更新応答に基づいて、図6(b)に示した登録情報更新応答を作成し、作成した登録情報更新応答をUS500へ送信する(S214)。
以上、本発明の第1実施例について説明した。上記説明から明らかなように、本実施例のアクセス認可システム10によれば、ユーザから要求されたサービスの提供開始までのユーザの待ち時間を少なくすることができる。
また、本実施例において、ACS100は、事前に行った認可判定の結果を保持し、CMS300から認可情報取得要求を受信した場合に、保持していた認可情報を用いて認可情報取得応答を返信する。これにより、実際にはユーザが提供を受けていないサービスに関する認可情報は、ACS100内に存在する。そのため、ユーザの属性情報が変更された場合に、認可判定のやり直しに伴う認可情報の削除を実行する必要があるが、認可情報が保存されている装置を少なくできるため、認可情報の削除に伴う通信トラフィックを低減することができる。
<実施例2>
次に、本発明の第2実施例について説明する。
図15は、第2実施例におけるアクセス認可システム10の構成を例示するシステム構成図である。アクセス認可システム10は、アクセス制御サーバ(ACS)100、ポリシ管理サーバ(PMS)200、通信管理サーバ(CMS)300、認可サーバ(AuS)400、ユーザ端末(US)500、および複数のサービス提供サーバ(SP)600を備える。なお、以下に説明する点を除き、図15において、図1と同じ符号を付した構成は、図1における構成と同一または同様の機能を有するため説明を省略する。
SP600のSIPクライアント603は、ACS100からユーザID、サービスID、および認可情報を含む認可情報送信通知を受信した場合に、受信したこれらの情報を通信管理テーブル格納部604に登録し、認可情報送信完了通知をACS100へ送信する。
本実施例において認可情報送信通知は、例えば図16(a)に示すように、sendAuthorizationAssertionNotifyタグを用いたXMLメッセージとして作成される。図16(a)は、認可情報送信通知のうち、本実施例の説明に必要な部分のみを示している。subjectタグにはユーザIDが記載される。resourceタグにはサービスIDが記載される。assertionタグには認可情報(図5(e)参照)が記載される。seqタグには、認可情報送信通知と認可情報送信完了通知とを対応付けるためのリクエスト番号が記載される。
また、本実施例において認可情報送信完了通知は、例えば図16(b)に示すように、sendAuthorizationAssertionReportタグを用いたXMLメッセージとして作成される。図16(b)は、認可情報送信完了通知のうち、本実施例の説明に必要な部分のみを示している。statusタグには認可情報送信通知の受信結果が記載される。seqタグには、認可情報送信通知と認可情報送信完了通知とを対応付けるためのリクエスト番号が記載される。
ACS100は、次サービスID格納部101、次サービスID特定部102、認可情報格納部103、認可判定要求部104、通信部105、およびサービス履歴格納部106を備える。
認可情報格納部103には、例えば図17に示すように、US500のユーザのSIP-URIを示すSubject1031、および、サービスIDを示すResource1032が、それぞれのレコードを識別する番号1030に対応付けて格納されている。
サービス履歴格納部106には、例えば図18に示すように、ユーザID1061およびサービスID1062の組み合わせ毎に、履歴テーブル1060が格納されている。それぞれの履歴テーブル1060には、ユーザID1061に対応するユーザに対して、サービスID1062に対応するサービスが提供された後に、当該ユーザに対して次に提供されたサービスのサービスIDを示す次サービスID1063が、当該次サービスID1063に対応するサービスが提供された回数1064に対応付けて格納されている。
次サービスID特定部102は、認可判定要求部104からユーザIDおよびサービスIDを受け付けた場合に、次サービスID格納部101を参照して、当該サービスIDに対応付けられている次サービスIDが存在するか否かを判定する。当該サービスIDに対応付けられている次サービスIDが存在する場合、次サービスID特定部102は、当該次サービスIDを、認可判定要求部104から受け付けたユーザIDと共に認可判定要求部104へ送る。
一方、認可判定要求部104から受け取ったサービスIDに対応付けられている次サービスIDが次サービスID格納部101内に存在しない場合、次サービスID特定部102は、サービス履歴格納部106を参照し、認可判定要求部104から受け取ったユーザIDおよびサービスIDに対応する履歴テーブル1060を特定する。そして、次サービスID特定部102は、特定した履歴テーブル1060を参照して、予め定められた閾値以上(例えば20以上)の回数が対応付けられている次サービスIDを抽出し、抽出したサービスIDを、認可判定要求部104から受け取ったユーザIDと共に認可判定要求部104へ送る。図18に示した例において、予め定められた閾値が20回であるとすると、次サービスID特定部102は、2つのサービスIDを抽出することになる。
なお、認可判定要求部104から受け取ったユーザIDおよびサービスIDに対応する履歴テーブル1060がサービス履歴格納部106内に存在しない場合、または、予め定められた値以上の回数が対応付けられている次サービスIDが履歴テーブル1060内に存在しない場合、次サービスID特定部102は、認可判定要求部104から受け取ったユーザIDを認可判定要求部104へ返す。
認可判定要求部104は、通信部105を介して、CMS300から認可情報取得要求(図4(c)参照)を受信した場合に、当該認可情報取得要求のsubjectタグで示されるユーザIDおよびresourceタグで示されるサービスIDの組み合わせが認可情報格納部103内に存在するか否かを判定する。当該ユーザIDおよびサービスIDの組み合わせが認可情報格納部103内に存在する場合、認可判定要求部104は、図4(d)においてassertionタグを含まない認可情報取得応答を作成し、作成した認可情報取得応答を通信部105を介してCMS300へ送信する。
認可情報取得要求に含まれているユーザIDおよびサービスIDの組み合わせが認可情報格納部103内に存在しない場合、認可判定要求部104は、図4(e)に示した登録情報取得要求を作成し、作成した登録情報取得要求を通信部105を介してPMS200へ送信する。そして、通信部105を介して、図4(f)に示した登録情報取得応答をPMS200から受信した場合、認可判定要求部104は、図5(c)に示した認可判定要求を作成し、作成した認可判定要求を、通信部105を介してAuS400へ送信する。
また、通信部105を介して図5(d)に示した認可判定応答をAuS400から受信した場合、認可判定要求部104は認可情報を作成する。そして、当該認可判定応答に含まれている認可判定結果が、サービスの提供を許可する旨を示す場合、認可判定要求部104は、作成した認可情報に含まれているユーザIDおよびサービスIDを認可情報格納部103に保存する。そして、認可判定要求部104は、認可情報取得応答(図4(d)参照)を作成して、通信部105を介してCMS300へ送信する。
認可情報取得応答をCMS300へ送信した後、認可判定要求部104は、当該認可情報取得応答の契機となった認可情報取得要求に含まれているユーザIDおよびサービスIDを次サービスID特定部102へ送る。そして、次サービスID特定部102からユーザIDおよび次サービスIDを受け取った場合、認可判定要求部104は、当該ユーザIDおよび次サービスIDの組み合わせが認可情報格納部103に登録されているか否かを判定する。
当該ユーザIDおよび次サービスIDの組み合わせが認可情報格納部103に登録されていない場合、認可判定要求部104は、当該ユーザIDおよび次サービスIDを含む登録情報取得要求(図4(e)参照)を作成してPMS200へ送る。なお、当該ユーザIDおよび次サービスIDの組み合わせが認可情報格納部103に既に登録されている場合、または、次サービスID特定部102がユーザIDと共に次サービスIDを出力しなかった場合、認可判定要求部104は、予め認可判定を行う処理を実行しない。
そして、認可判定要求部104は、PMS200から登録情報取得応答(図4(f))を受け取り、受け取った登録情報取得応答に基づいて認可判定要求(図5(c))を作成してAuS400へ送る。そして、認可判定要求部104は、AuS400から認可判定応答(図5(d))を受け取り、認可情報を作成する。そして、当該認可判定応答に含まれている認可判定結果が、サービスの提供を許可する旨を示す場合、認可判定要求部104は、作成した認可情報に含まれているユーザIDおよびサービスIDを認可情報格納部103に保存する。
そして、認可判定要求部104は、作成した認可情報を含む認可情報送信通知(図16(a)参照)を作成し、作成した認可情報送信通知を通信部105を介してSP600へ送信する。そして、認可判定要求部104は、通信部105を介して、図16(b)に示した認可情報送信完了通知を受信する。
次に、第2実施例において、ユーザの要求に応じてサービスの提供が開始される場合のアクセス認可システム10の一連の動作について図19を用いて説明する。
まず、US500のSIPクライアント503は、ユーザからの要求に応じて図4(a)に示した通信開始要求を作成し、作成した通信開始要求をCMS300へ送信する(S300)。CMS300のSIPメッセージ制御部304は、US500から受信した通信開始要求に基づいて図4(c)に示した認可情報取得要求を作成し、作成した認可情報取得要求をACS100へ送信する(S301)。
ACS100の認可判定要求部104は、CMS300から受信した認可情報取得要求に含まれるユーザIDおよびサービスIDの組み合わせが認可情報格納部103に格納されているか否かを判定する(S302)。当該ユーザIDおよびサービスIDの組み合わせが認可情報格納部103に格納されている場合(S302:Yes)、認可判定要求部104は、ステップS309に示す処理を実行する。
CMS300から受信した認可情報取得要求に含まれるユーザIDおよびサービスIDの組み合わせが認可情報格納部103に格納されていない場合(S302:No)、認可判定要求部104は、当該ユーザIDおよびサービスIDに基づいて、図4(e)に示した登録情報取得要求を作成し、作成した登録情報取得要求をPMS200へ送信する(S303)。
PMS200の情報管理部203は、ACS100から受信した登録情報取得要求に含まれているユーザIDおよびサービスIDに基づいて、サービスポリシ情報格納部201およびユーザ属性情報格納部202から対応するユーザ属性情報およびサービスポリシ情報をそれぞれ取得する。そして、情報管理部203は、取得したユーザ属性情報およびサービスポリシ情報を含む登録情報取得応答(図4(f)参照)を作成し、作成した登録情報取得応答をACS100へ送信する(S304)。
次に、ACS100の認可判定要求部104は、PMS200から受信した登録情報取得応答に含まれているユーザ属性情報およびサービスポリシ情報を含む認可判定要求(図5(c)参照)を作成し、作成した認可判定要求をAuS400へ送信する(S305)。AuS400の認可判定部401は、ACS100から受信した認可判定要求に含まれるユーザ属性情報が、当該認可判定要求に含まれるサービスポリシ情報を満たすか否かを判定する(S306)。そして、認可判定部401は、認可判定結果を含む認可判定応答(図5(d)参照)を作成し、作成した認可判定応答をACS100へ送信する(S307)。
次に、ACS100の認可判定要求部104は、AuS400から受信した認可判定応答に基づいて、図5(e)に示した認可情報を作成し、当該認可応答に含まれる判定結果がサービスの利用を許可する旨を示す場合に、当該認可情報に含まれているユーザIDおよびサービスIDを認可情報格納部103に保存する(S308)。そして、認可判定要求部104は、図4(d)に示した認可情報取得応答を作成し、作成した認可情報取得応答をCMS300へ送信する(S309)。
次に、CMS300のSIPメッセージ制御部304は、図4(a)に示した通信開始要求において、宛先をサービスIDに対応するサービスを提供するSP600のSIP-URIとし、ACS100から受信した認可情報取得応答に含まれている認可情報を含めた通信開始要求を作成し、作成した通信開始要求をSP600へ送信する(S310)。
SP600のSIPクライアント603は、CMS300から受信した通信開始要求に応じて、図4(b)に示した通信開始応答を作成し、作成した通信開始応答をCMS300へ送信する(S311)。CMS300のSIPメッセージ制御部304は、SP600から受信した通信開始応答の一部を書き換えてUS500へ送信する(S312)。そして、SP600のサービスアプリケーション602は、US500へのサービスの提供を開始する(S313)。
なお、ステップS302において、CMS300から受信した認可情報取得要求に含まれるユーザIDおよびサービスIDの組み合わせが認可情報格納部103に格納されていると判定された後に(S302:Yes)、ステップS309において送信される認可情報取得応答およびステップS310において送信される通信開始要求には、認可情報が含まれない。
次に、ACS100の認可判定要求部104は、ステップS309において送信した認可情報取得応答内の認可情報に含まれているユーザIDおよびサービスIDを次サービスID特定部102へ送る。次サービスID特定部102は、次サービスID格納部101またはサービス履歴格納部106を参照して、当該サービスIDに対応付けられている次サービスIDを抽出することにより、次に提供されるべきサービスのサービスIDを特定する(S314)。
次に、次サービスID特定部102は、特定した次サービスIDを、認可判定要求部104から受け付けたユーザIDと共に認可判定要求部104へ返す。そして、認可判定要求部104は、次サービスID特定部102から受信したユーザIDおよびサービスIDを用いて、ステップS302からステップS308に示した処理Bを実行する(S315)。
そして、認可判定要求部104は、図16(a)に示した認可情報送信通知をSP600へ送信する(S316)。SP600のSIPクライアント603は、受信した認可情報送信通知に含まれているユーザID、サービスID、および認可情報を通信管理テーブル格納部604に格納し、図16(b)に示した認可情報送信完了通知をACS100へ送信する(S317)。
次に、第2実施例において、US500を介したユーザによる登録情報の更新に関する一連の処理について図20を用いて説明する。
まず、US500のSIPクライアント503は、ユーザからの要求に応じて図6(a)に示した登録情報更新要求を作成し、作成した登録情報更新要求をCMS300へ送信する(S400)。CMS300のSIPメッセージ制御部304は、US500から受信した登録情報更新要求に基づいて図6(c)に示した登録情報更新要求を作成し、作成した登録情報更新要求をACS100へ送信する(S401)。
ACS100の認可判定要求部104は、CMS300から受信した登録情報更新要求をPMS200へ転送する(S402)。PMS200の情報管理部203は、ACS100から受信した登録要求更新要求に含まれているユーザIDに対応するユーザ属性情報格納部202内のユーザ属性情報を、当該登録情報更新要求に含まれているユーザ属性情報で更新する(S403)。そして、情報管理部203は、図6(d)に示した登録情報更新応答を作成し、作成した登録情報更新応答をACS100へ送信する(S404)。
次に、ACS100の認可判定要求部104は、ステップS401で受信した登録情報更新要求に含まれているユーザIDが認可情報格納部103に格納されているか否かを判定する(S405)。当該ユーザIDが認可情報格納部103に格納されていない場合(S405:No)、認可判定要求部104は、ステップS413に示す処理を実行する。
ステップS401で受信した登録情報更新要求に含まれているユーザIDが認可情報格納部103に格納されている場合(S405:Yes)、認可判定要求部104は、当該ユーザIDに対応付けられているサービスIDを認可情報格納部103から抽出し、抽出したそれぞれのサービスIDについて、図6(e)に示した認可情報削除要求を作成し、作成した認可情報削除要求を送信する(S406、S409)。本例では、SP600−αとSP600−βにはサービスの提供を許可する旨を示す認可情報が既に渡されており、SP600−γにはサービスの提供を許可する旨を示す認可情報が渡されていないものとする。
SP600−αおよびSP600−βのそれぞれのSIPクライアント603は、通信管理テーブル格納部604を参照して、ACS100から受信した認可情報削除要求に含まれているユーザIDに対応するレコードを通信管理テーブル6040から全て削除する(S407、S410)。そして、SIPクライアント603は、図6(f)に示した認可情報削除応答を作成し、作成した認可情報削除応答をACS100へ送信する(S408、S411)。
次に、ACS100の認可判定要求部104は、ステップS401で受信した登録情報更新要求に含まれているユーザIDを含むレコードを認可情報格納部103から全て削除し(S412)、ステップS404で受信した登録情報更新応答をCMS300へ転送する(S413)。CMS300のSIPメッセージ制御部304は、ACS100から受信した登録情報更新応答に基づいて、図6(b)に示した登録情報更新応答を作成し、作成した登録情報更新応答をUS500へ送信する(S414)。
以上、本発明の第2実施例について説明した。本実施例のアクセス認可システム10においても、ユーザから要求されたサービスの提供開始までのユーザの待ち時間を少なくすることができる。
また、本実施例において、ACS100は、事前に行った認可判定の結果を、その認可判定結果を使用するSP600へ即座に送信する。これにより、ACS100からCMS300へ送信される認可情報取得応答、および、CMS300からSP600へ送信される通信開始要求内に認可情報を記述する必要がない。そのため、ユーザからサービスの提供を要求されてから送受信される認可情報取得応答および通信開始要求のデータ量を少なくすることができる。従って、アクセス認可システム10は、ユーザからサービスの提供を要求されてからのデータ通信にかかる時間を少なくすることができ、サービス提供開始までのユーザの待ち時間を少なくすることができる。
<実施例3>
次に、本発明の第3実施例について説明する。本実施例のビジネスプロセス実行システム40は、SAMLによってアクセス制御を実現している複数のWebサービスをサービスシナリオに従って連携させることで1つのサービスを実現するものである。
図21は、第3実施例におけるビジネスプロセス実行システム40の構成を例示するシステム構成図である。ビジネスプロセス実行システム40は、ポリシ管理サーバ(PMS)200、認可サーバ(AuS)400、ユーザ端末(US)500、複数のサービス提供サーバ(SP)600、サービス実行サーバ(SES)700、および属性管理サーバ(AS)800を備える。
図21に示すビジネスプロセス実行システム40は、ユーザがUS500を介してSES700で提供されているサービスシナリオを利用する際に、SES700がAuS400と連携して当該ユーザに対して当該サービスシナリオに含まれるそれぞれのWebサービスの提供が許可されているか否かを判定する認可判定を行い、その結果に基づいてサービスシナリオに規定されている順番でそれぞれのWebサービスを順次呼び出す。
次に、本実施例におけるビジネスプロセス実行システム40の各構成要素が備える機能について説明する。なお、以下に説明する点を除き、図21において、図1と同じ符号を付した構成は、図1における構成と同一または同様の機能を有するため説明を省略する。
まず、SES700について説明する。SES700は、シナリオ格納部701、プロセス情報格納部702、シナリオ実行部703、および通信部704を備える。通信部704は、シナリオ実行部703からの指示に応じて、ネットワーク11を介して他の装置と通信を行う。
シナリオ格納部701には、例えば図22に示すように、サービスシナリオ7011を、それぞれのサービスシナリオを識別するシナリオID7010に対応付けて格納している。ここで、サービスシナリオとは、例えば図23に示すようにXML形式で記述され、1つ以上のSP600で提供されているWebサービスをどの順序で連携させていくかを規定するものである。
図23には、シナリオIDが「Scenario1」であるサービスシナリオ50が例示されている。図23のサービスシナリオ50には、それぞれのWebサービスを識別するサービスIDが「SpAlpha」であるWebサービスを実行した後に(記述53参照)、サービスIDが「SpBeta」であるWebサービスが実行可能であれば(記述55参照)、サービスIDが「SpBeta」であるWebサービスを実行し(記述56参照)、さもなければサービスIDが「SpGamma」であるWebサービスを実行する(記述58参照)という連携順序が規定されている。
プロセス情報格納部702には、例えば図24に示すように、それぞれのビジネスプロセスを識別するプロセスID7020に対応付けて、実行中のサービスシナリオのシナリオID7021、実行中のWebサービスのサービスIDを示す現在実行点7022、および実行が禁止されているWebサービスのサービスIDを示す禁止サービス7023が格納されている。図24に示したプロセス情報格納部702において、プロセスIDが「1」のビジネスプロセスでは、シナリオIDが「Scenario1」であるサービスシナリオが実行中であり、その中でサービスIDが「SpAlpha」であるWebサービスが実行中であり、サービスIDが「SpGamma」であるWebサービスの実行が禁止されていることを示す情報等が格納されている。
シナリオ実行部703は、通信部704を介してUS500から、ユーザIDおよびシナリオIDを含むサービス要求を受信した場合に、プロセスIDを生成し、生成したプロセスIDに対応付けて、当該シナリオIDをプロセス情報格納部702に登録する(このとき、現在実行点および禁止サービスの欄は空欄となる)。そして、シナリオ実行部703は、当該シナリオIDに対応するサービスシナリオをシナリオ格納部701から抽出して、当該サービスシナリオに実行順番が規定されているそれぞれのWebサービスのサービスIDを抽出する。そして、シナリオ実行部703は、例えば図25(a)に示すような認可判定要求60を生成し、生成した認可判定要求60を通信部704を介してAuS400へ送信する。
認可判定要求60には、例えば図25(a)に示すように、それぞれの認可判定要求60を識別する識別子(記述61参照)と、認可判定の対象となるサービスシナリオに関する情報(記述62参照)、および、当該サービスシナリオに含まれる1つ以上のWebサービスに関する情報(記述63から記述65参照)が含まれる。認可判定要求60を識別する識別子には、例えばプロセスIDが用いられる。
図25(a)において、記述62には、対象となるサービスシナリオのシナリオIDである「Scenario1」と、当該サービスシナリオに対する認可判定の対象となるユーザのユーザIDである「User1」とが記述されており、記述63には、対象となるWebサービスのサービスIDである「SpAlpha」と、当該Webサービスに対する認可判定の対象となるユーザのユーザIDである「User1」とが記述されており、記述64には、対象となるWebサービスのサービスIDである「SpBeta」と、当該Webサービスに対する認可判定の対象となるユーザのユーザIDである「User1」とが記述されており、記述65には、対象となるWebサービスのサービスIDである「SpGamma」と、当該Webサービスに対する認可判定の対象となるユーザのユーザIDである「User1」とが記述されている。
シナリオ実行部703は、認可判定要求60に対する応答として、例えば図25(b)に示すような認可判定結果70を、通信部704を介してAuS400から受信する。認可判定結果70には、それぞれの認可判定結果70を識別する識別子(記述71参照)と、認可判定の対象となるサービスシナリオに関する認可判定結果(記述72参照)、および、当該サービスシナリオに含まれる1つ以上のWebサービスに関する認可判定結果(記述73から記述75参照)が含まれる。認可判定結果70を識別する識別子には、対応する認可判定要求60の識別情報が記述される。
図25(b)に示した例おいて、記述72には、対象となるサービスシナリオのシナリオIDである「Scenario1」と、当該サービスシナリオに対する認可判定結果が許可(Permit)である旨とが記述されており、記述73には、対象となるWebサービスのサービスIDである「SpAlpha」と、当該Webサービスに対する認可判定結果が許可(Permit)である旨とが記述されており、記述74には、対象となるWebサービスのサービスIDである「SpBeta」と、当該Webサービスに対する認可判定結果が許可(Permit)である旨とが記述されており、記述75には、対象となるWebサービスのサービスIDである「SpGamma」と、当該Webサービスに対する認可判定結果が拒否(Deny)である旨とが記述されている。
シナリオ実行部703は、AuS400から認可判定結果70を受信した場合に、受信した認可判定結果70に基づいて例えば図26および図27に示す禁止サービス登録処理を実行することにより、ユーザから要求されたサービスシナリオに含まれるそれぞれのサービスについて、禁止サービスとして登録すべきか否かを判定し、禁止サービスとして登録すべきと判定されたサービスのサービスIDを、プロセスIDに対応付けてプロセス情報格納部702に登録する。
図26において、まず、シナリオ実行部703は、ユーザから指定されたサービスシナリオが許可されているか否かを判定する(S500)。ユーザから指定されたサービスシナリオが許可されていない場合(S500:No)、シナリオ実行部703は、当該サービスシナリオに規定されている最初のWebサービスを禁止サービスとしてプロセスIDに対応付けてプロセス情報格納部702に登録し(S505)、シナリオ実行部703は、本フローチャートに示す処理を終了する。
ユーザから指定されたサービスシナリオが許可されている場合(S500:Yes)、シナリオ実行部703は、当該サービスシナリオに規定されている最初のWebサービスが許可されているか否かを判定する(S501)。最初のWebサービスが許可されていない場合(すなわち、認可判定結果が拒否である場合)(S501:No)、シナリオ実行部703は、ステップS505に示した処理を実行する。
最初のWebサービスが許可されている場合(S501:Yes)、シナリオ実行部703は、ユーザから指定されたサービスシナリオに基づいて、次に提供されるべきWebサービスを特定し、当該次に提供されるべきWebサービスの中で、許可されているWebサービスが少なくとも1つ存在するか否かを判定する(S502)。次に提供されるべきWebサービスが全て許可されていない場合(S502:No)、シナリオ実行部703は、ステップS505に示した処理を実行する。
次に提供されるべきWebサービスの少なくとも1つが許可されている場合(S502:Yes)シナリオ実行部703は、次に提供されるべきWebサービスの中で、許可されていないサービスがあればそのサービスのサービスIDを禁止サービスとしてプロセスIDに対応付けてプロセス情報格納部702に登録する(S503)。そして、シナリオ実行部703は、許可されている次のWebサービスについて後述する禁止判定処理を実行する(S600)。
次に、シナリオ実行部703は、次に提供されるべき全てのWebサービスが禁止サービスとしてプロセス情報格納部702に登録されているか否かを判定する(S504)。次に提供されるべき全てのWebサービスが禁止サービスとしてプロセス情報格納部702に登録されている場合(S504:Yes)、シナリオ実行部703は、ステップS505に示した処理を実行する。一方、次に提供されるべき少なくとも1つのWebサービスが禁止サービスとしてプロセス情報格納部702に登録されていない場合(S504:No)、シナリオ実行部703は、本フローチャートに示した処理を終了する。
図27は、シナリオ実行部703によって実行される禁止判定処理(S600)の一例を示すフローチャートである。
まず、シナリオ実行部703は、許可されている次のWebサービスの中で、未選択のWebサービスを1つ選択し(S601)、ユーザから指定されたサービスシナリオを参照して、選択したWebサービスの次に提供されるべきWebサービスが存在するか否かを判定する(S602)。選択したWebサービスの次に提供されるべきWebサービスが存在しない場合(S602:No)、シナリオ実行部703は、ステップS606に示す処理を実行する。
選択したWebサービスの次に提供されるべきWebサービスが存在する場合(S602:Yes)、シナリオ実行部703は、ユーザから指定されたサービスシナリオに基づいて、ステップS601において選択されたWebサービスの次に提供されるべきWebサービスを特定し、当該次に提供されるべきWebサービスの中で、許可されているWebサービスが少なくとも1つ存在するか否かを判定する(S603)。
次に提供されるべきWebサービスが全て許可されていない場合(S603:No)、シナリオ実行部703は、ステップS601において選択されたWebサービスのサービスIDを禁止サービスとしてプロセスIDに対応付けてプロセス情報格納部702に登録し(S605)、ステップS606に示す処理を実行する。
次に提供されるべきWebサービスの中で、許可されているWebサービスが少なくとも1つ存在する場合(S603:Yes)、シナリオ実行部703は、許可されている次のWebサービスについて禁止判定処理を再帰呼び出しにより実行する(S600)。そして、シナリオ実行部703は、ステップS601において選択されたWebサービスの次に提供されるべき全てのWebサービスが禁止サービスとしてプロセス情報格納部702に登録されているか否かを判定する(S604)。
ステップS601において選択されたWebサービスの次に提供されるべき全てのWebサービスが禁止サービスとしてプロセス情報格納部702に登録されている場合(S604:Yes)、シナリオ実行部703は、ステップS605に示した処理を実行する。一方、ステップS601において選択されたWebサービスの次に提供されるべきWebサービスの少なくとも1つが、禁止サービスとしてプロセス情報格納部702に登録されていない場合(S604:No)、シナリオ実行部703は、許可されているWebサービスがステップS601において全て選択されたか否かを判定する(S606)。
許可されているWebサービスがステップS601において全て選択されていない場合(S606:No)、シナリオ実行部703は、再びステップS601に示した処理を実行する。一方、許可されているWebサービスがステップS601において全て選択された場合(S606:Yes)、シナリオ実行部703は、本フローチャートに示した禁止判定処理を終了する。
図26および図27に示した処理を実行した後、シナリオ実行部703は、プロセス情報格納部702を参照して、ユーザから要求されたサービスシナリオに規定されている最初のWebサービスが禁止サービスとしてプロセス情報格納部702に登録されていない場合に、当該最初のWebサービスを提供するSP600に対して、当該WebサービスのサービスIDおよび当該Webサービスの提供対象となるユーザのユーザIDを含むサービス呼出を送信することにより、ユーザに一連のビジネスプロセスの提供を開始する。そして、シナリオ実行部703は、プロセス情報格納部702の現在実行点に、最初のWebサービスのサービスIDを登録する。なお、最初のWebサービスが禁止サービスとしてプロセス情報格納部702に登録されている場合、シナリオ実行部703は、指定されたサービスシナリオが実行できない旨をUS500に通知する。
また、シナリオ実行部703は、ユーザから指定されたサービスシナリオに従って、順次WebサービスをSP600に実行させる過程で、一連のビジネスプロセスの状態を示す情報を管理する。そして、サービスシナリオに従って、現在提供されているWebサービスの次に提供されるべきWebサービスが異なる分岐が存在する場合、シナリオ実行部703は、一連のビジネスプロセスの状態を示す情報に応じて、次に提供されるべきWebサービスを特定し、特定したWebサービスをSP600に実行させる。
なお、一連のビジネスプロセスの状態を示す情報に応じて特定した、次に提供されるべきWebサービスが、禁止サービスとしてプロセス情報格納部702に登録されている場合、シナリオ実行部703は、Webサービスの提供が許可されてない旨と共に当該Webサービスに関する情報をUS500に通知する。これにより、シナリオ実行部703は、US500のユーザが、それ以降のWebサービスの提供を無駄に受けることを防止することができる。
次に、AuS400について説明する。AuS400は、認可判定部401および通信部402を備える。認可判定部401は、通信部402を介してSES700から図25(a)に示した認可判定要求60を受信した場合に、当該認可判定要求60に含まれているシナリオIDおよびサービスIDのそれぞれについて、例えば図28(c)に示すようなポリシ取得要求82を作成し、作成したポリシ取得要求82を通信部402を介してPMS200へ送信する。図28(c)には、サービスシナリオに関するポリシを要求するポリシ取得要求82が示されている。
そして、通信部402を介してPMS200から、例えば図28(d)に示すようなポリシ取得応答83を受信した場合、認可判定部401は、当該ポリシ取得応答83に示されているユーザのパラメータ(図28(d)の例では年齢)、および、SES700から受信した認可判定要求60に含まれているユーザIDを含む属性取得要求を作成し、作成した属性取得要求を通信部402を介してAS800へ送信する。本実施例において、属性取得要求は、例えば図28(a)に示すようなデータ構造である。
そして、通信部402を介してAS800から、例えば図28(b)に示すような属性取得応答81を受信した場合、認可判定部401は、認可判定要求60で指定されたシナリオIDに対応するサービスシナリオおよびサービスIDに対応するWebサービスのそれぞれについて、属性取得応答81に含まれているユーザの属性が、ポリシ取得応答83に含まれているサービスポリシを満たしているか否かを判定する認可判定を実行する。
そして、認可判定部401は、図25(b)で説明した認可判定結果70を作成し、作成した認可判定結果70を通信部402を介してSES700へ送信する。また、認可判定部401は、それぞれのサービスIDにおいて、認可判定の結果が「許可」であるものについて、当該認可判定の結果を、対象となるユーザのユーザIDと共に、当該サービスIDに対応するWebサービスを提供するSP600に通知する。
なお、本実施例では、1つの属性取得要求80において1人のユーザのユーザ属性情報を要求するようにしているが、他の例として、1つの属性取得要求80で複数のユーザのユーザ属性情報を要求するようにしてもよい。具体的には、属性取得要求80内にユーザ毎にAttributeQueryタグを作成すればよい。また、本実施例では、1つのポリシ取得要求82において1つのWebサービスのサービスポリシ情報を要求するようにしているが、他の例として、1つのポリシ取得要求82で複数のWebサービスのサービスポリシ情報を要求するようにしてもよい。具体的には、ポリシ取得要求82内にWebサービス毎にAttributeQueryタグを作成すればよい。このようにすることで、AuS400とPMS200間の通信トラフィックを低減することができる。
次に、PMS200について説明する。PMS200は、サービスポリシ情報格納部201、通信部204、シナリオポリシ情報格納部205、およびポリシ情報管理部206を備える。サービスポリシ情報格納部201には、図10で説明した構造のデータが格納されている。シナリオポリシ情報格納部205には、例えば図29に示すように、シナリオID2050に対応付けて、当該シナリオID2050に対応するサービスシナリオのシナリオポリシ情報の実体が格納されているPMS200のメモリ内の場所を示す参照先アドレス2051が格納されている。
ポリシ情報管理部206は、通信部204を介してAuS400から図28(c)に示したポリシ取得要求82を受信した場合に、当該ポリシ取得要求82にサービスIDが格納されているならば、当該サービスIDに対応するサービスポリシ情報をサービスポリシ情報格納部201を参照して取得し、当該ポリシ取得要求82にシナリオIDが格納されているならば、当該シナリオIDに対応するシナリオポリシ情報をシナリオポリシ情報格納部205を参照して取得する。そして、ポリシ情報管理部206は、取得したサービスポリシ情報またはシナリオポリシ情報を含むポリシ取得応答83を作成し、作成したポリシ取得応答83を通信部204を介してAuS400へ送信する。
次に、AS800について説明する。AS800は、ユーザ属性情報格納部801、属性情報管理部802、および通信部803を備える。通信部803は、属性情報管理部802からの指示に応じて、ネットワーク11を介して他の装置と通信を行う。ユーザ属性情報格納部801には、例えば図11で説明した構造のデータが格納されている。
属性情報管理部802は、通信部803を介してAuS400から図28(a)に示した属性取得要求80を受信した場合に、当該属性取得要求80に格納されているユーザIDに対応するユーザ属性情報をユーザ属性情報格納部801から抽出する。そして、属性情報管理部802は、抽出したユーザ属性情報を含む属性取得応答81を作成し、作成した属性取得応答81を通信部803を介してAuS400へ送信する。
次に、SP600について説明する。SP600は、通信部601、サービスアプリケーション602、認可判定取得部606、および認可判定結果格納部607を備える。
認可判定取得部606は、通信部601を介してAuS400から、認可判定の結果が「許可」であるユーザのユーザIDを受信した場合に、受信したユーザIDを認可判定結果格納部607に格納する。なお、SP600によって提供可能なWebサービスが複数存在する場合、AuS400は、ユーザIDおよび「許可」である認可判定の結果と共に、対象となるWebサービスのサービスIDをSP600へ送信し、認可判定取得部606は、認可判定の結果が「許可」であるユーザのユーザIDを、対象となるサービスのサービスIDと共に認可判定結果格納部607に格納する。
サービスアプリケーション602は、通信部601を介してSES700からサービス呼出を受信した場合に、当該サービス呼出に含まれているユーザIDが認可判定結果格納部607に格納されているか否かを判定し、当該ユーザIDが認可判定結果格納部607に格納されている場合に、当該ユーザIDに対応するユーザに対してWebサービスの提供が許可されているものと判定し、当該ユーザIDに対応するユーザに対してWebサービスを提供する。
次に、第3実施例において、ユーザの要求に応じてWebサービスの提供が開始される場合のビジネスプロセス実行システム40の一連の動作について図30を用いて説明する。
まず、US500の通信アプリケーション502は、ユーザからの要求に応じてサービス要求を作成し、作成したサービス要求を通信部501を介してSES700へ送信する(S700)。SES700のシナリオ実行部703は、通信部704を介してサービス要求を受信した場合に、プロセスIDを生成し、生成したプロセスIDに対応付けて、当該サービス要求に含まれているシナリオIDをプロセス情報格納部702に登録する。そして、シナリオ実行部703は、当該シナリオIDに対応するサービスシナリオをシナリオ格納部701から取得して(S701)、当該サービスシナリオに実行順番が規定されているそれぞれのWebサービスのサービスIDを抽出する。そして、シナリオ実行部703は、例えば図25(a)に示した認可判定要求60を生成し、生成した認可判定要求60を通信部704を介してAuS400へ送信する(S702)。
次に、AuS400の認可判定部401は、通信部402を介してSES700から図25(a)に示した認可判定要求60を受信した場合に、後述する認可判定処理を実行する(S800)。そして、認可判定部401は、図25(b)で説明した認可判定結果70を作成し、作成した認可判定結果70を通信部402を介してSES700へ送信する(S703)。そして、認可判定部401は、それぞれのサービスIDにおいて、認可判定の結果が「許可」であるものについて、当該認可判定の結果を、対象となるユーザのユーザIDと共に、当該サービスIDに対応するWebサービスを提供するSP600に通知する(S704)。それぞれのSP600の認可判定取得部606は、通信部601を介してAuS400から受信した、認可判定の結果が「許可」であるユーザのユーザIDを認可判定結果格納部607に格納する(S705)。
次に、SES700のシナリオ実行部703は、AuS400から受信した認可判定結果に基づいて、図26および図27において説明した禁止サービス登録処理を実行する(S706)。そして、シナリオ実行部703は、プロセス情報格納部702を参照して、ユーザから要求されたサービスシナリオに規定されている最初のWebサービスが禁止サービスとしてプロセス情報格納部702に登録されているか否かを判定する(S707)。
最初のWebサービスが禁止サービスとしてプロセス情報格納部702に登録されている場合(S707:Yes)、シナリオ実行部703は、指定されたサービスシナリオが実行できない旨を示すエラー通知をUS500へ送信する(S708)。一方、最初のWebサービスが禁止サービスとしてプロセス情報格納部702に登録されていない場合(S707:No)、シナリオ実行部703は、当該最初のWebサービスを提供するSP600αに対して、当該WebサービスのサービスIDおよび当該Webサービスの提供対象となるユーザのユーザIDを含むサービス呼出を送信する(S709)。そして、シナリオ実行部703は、プロセス情報格納部702の現在実行点に、最初のWebサービスのサービスIDを登録する。
次に、SP600αのサービスアプリケーション602は、受信したサービス呼出に含まれているユーザIDが認可判定結果格納部607に格納されている場合に、当該ユーザIDに対応するユーザに対してWebサービスの提供が許可されているものと判定し、当該ユーザIDに対応するユーザのUS500に対してWebサービスを提供する(S710)。
そして、Webサービスの提供が終了した場合、サービスアプリケーション602は、提供されたWebサービスの実行結果を示す情報と共に、当該Webサービスの提供が終了した旨をSES700に通知する(S711)。SES700のシナリオ実行部703は、Webサービスの実行結果を示す情報に基づいて一連のビジネスプロセスの状態を示す情報を更新する。そして、シナリオ実行部703は、ユーザから指定されたサービスシナリオを参照して、次に提供されるべきWebサービスが存在するか否かを判定する(S712)。次に提供されるべきWebサービスが存在しない場合(S712:No)、シナリオ実行部703は、ビジネスプロセスの終了をユーザのUS500に通知する(S713)。
次に提供すべきWebサービスが存在する場合(S712:Yes)、シナリオ実行部703は、当該次に提供すべきWebサービスを提供するSP600αに対して、当該WebサービスのサービスIDおよび当該Webサービスの提供対象となるユーザのユーザIDを含むサービス呼出を送信する(S714)。そして、シナリオ実行部703は、プロセス情報格納部702の現在実行点に、当該次に提供すべきWebサービスのサービスIDを登録する。
SP600αのサービスアプリケーション602は、受信したサービス呼出に含まれているユーザIDが認可判定結果格納部607に格納されている場合に、当該ユーザIDに対応するユーザのUS500に対してWebサービスを提供する(S716)。そして、Webサービスの提供が終了した場合に、サービスアプリケーション602は、提供されたWebサービスの実行結果を示す情報と共に、当該Webサービスの提供が終了した旨をSES700に通知する(S711)。SES700のシナリオ実行部703は、Webサービスの実行結果を示す情報に基づいて一連のビジネスプロセスの状態を示す情報を更新し、再びステップS712に示した処理を実行する。
図31は、認可判定処理(S800)の一例を示すシーケンス図である。
まず、AuS400の認可判定部401は、通信部402を介してSES700から図25(a)に示した認可判定要求60を受信した場合に、当該認可判定要求60に含まれているシナリオIDおよびサービスIDのそれぞれについて、例えば図28(c)に示すようなポリシ取得要求82を作成し、作成したポリシ取得要求82を通信部402を介してPMS200へ送信する(S801)。
PMS200のポリシ情報管理部206は、通信部204を介してAuS400から受信したポリシ取得要求82にサービスIDが含まれている場合にはサービスポリシ情報格納部201を参照して対応するサービスポリシ情報を取得し、ポリシ取得要求82にシナリオIDが含まれている場合にはシナリオポリシ情報格納部205を参照して対応するシナリオポリシ情報を取得する(S802)。そして、ポリシ情報管理部206は、取得したサービスポリシ情報またはシナリオポリシ情報を含むポリシ取得応答83を作成し、作成したポリシ取得応答83を通信部204を介してAuS400へ送信する(S803)。
AuS400の認可判定部401は、通信部402を介してPMS200から受信したポリシ取得応答83の内容を解析して、ポリシ取得応答83に示されているユーザのパラメータおよびSES700から受信した認可判定要求60に含まれているユーザIDを含む属性取得要求80を作成し、作成した属性取得要求80を通信部402を介してAS800へ送信する(S805)。
AS800の属性情報管理部802は、通信部803を介してAuS400から受信した属性取得要求80に格納されているユーザIDに対応するユーザ属性情報をユーザ属性情報格納部801から取得する。そして、属性情報管理部802は、取得したユーザ属性情報を含む属性取得応答81を作成し、作成した属性取得応答81を通信部803を介してAuS400へ送信する(S807)。
AuS400の認可判定部401は、認可判定要求60で指定されたシナリオIDに対応するサービスシナリオおよびサービスIDに対応するWebサービスのそれぞれについて、AS800から受信した属性取得応答81に含まれているユーザの属性が、ポリシ取得応答83に含まれているサービスポリシを満たしているか否かを判定する認可判定を実行する(S808)。
以上、本発明の第3実施例について説明した。本実施例のビジネスプロセス実行システム40によれば、SP600で提供されているWebサービスの認可判定は、SES700がUS500からサービス要求を受信してから、SES700がSP600を呼び出すまでの間に行われる。また、AuS400は、認可判定を行った後にその結果をSP600へ送信し、SP600がその結果を保存する。これにより、SP600が呼び出された後に認可判定処理を行う必要がなく、ユーザの待ち時間を少なくすることができる。
また、本実施例のビジネスプロセス実行システム40では、SES700がUS500から要求されたサービスシナリオに含まれるWebサービスを列挙して、認可判定をAuS400に要求する。また、AuS400は認可判定結果をSP600へ送信し、SP600が認可判定結果を保存する。すなわち、SP600が保存している認可判定結果は、SES700が実行しようとしているサービスシナリオに関係したものであるため、比較的短時間でSP600にWebサービスの呼び出しが行われる可能性が高く、認可判定結果を無駄に保存することを少なくすることができる。
なお、上記した実施例におけるACS100、PMS200、CMS300、AuS400、US500、SP600、SES700、またはAS800は、例えば図32に示すような構成のコンピュータ20によって実現される。
コンピュータ20は、CPU21と、メモリ22と、インターネットやLAN等のネットワーク11を介して他のコンピュータ20と通信を行うための通信装置24と、キーボードやマウス等の入力装置を接続する入力インターフェイス25と、モニタやプリンタ等の出力装置を接続する出力インターフェイス26と、読取装置27と、ハードディスク等の外部記憶装置23とを備え、これらの各構成要素はバス28を介して互いに接続されている。また、読取装置27にはICカードやUSBメモリのような、可搬性を有する記憶媒体29を接続することができる。
コンピュータ20は、ACS100、PMS200、CMS300、AuS400、US500、およびSP600の中のいずれか1つの装置として機能する。コンピュータ20は、当該いずれか1つの装置の機能を実現するプログラムをメモリ22にロードし、当該プログラムをCPU21により実行することで、対応する装置の機能を実現する。これらのプログラムは、予め外部記憶装置23に格納されていてもよく、必要なときに、読取装置27または通信装置24により当該コンピュータ20が利用可能な媒体を介して、他の装置から取得されて外部記憶装置23に格納されてもよい。
媒体とは、例えば、読取装置27に着脱可能な記憶媒体29、または、通信装置24に接続されているネットワーク11またはネットワーク11を伝搬する搬送波やディジタル信号を指す。そして、これらのプログラムは、一旦外部記憶装置23に格納された後、そこからメモリ22上にロードされてCPU21に実行されてもよく、あるいは外部記憶装置23に格納されることなく、直接メモリ22上にロードされて、CPU21により実行されてもよい。
また、上記した第1または第2実施例において、次サービスID特定部102は、現在提供されているサービスの1つ次に提供されるべきサービスのサービスIDを特定したが、他の例として、次サービスID特定部102は、現在提供されているサービスを含むワークフローにおいて、当該サービスの後に実行されるべき全てのサービスのサービスIDを全て特定して認可判定要求部104に提供するようにしてもよい。
また、上記した第2実施例において、次サービスID特定部102は、現在提供されているサービスの次に提供されたサービスの回数を用いて次に提供されるべきサービスを推定したが、これ以外にも、ユーザの過去のサービス利用履歴や属性情報等を基にしてよく知られたデータマイニング手法により、次に要求される可能性の高いサービスを推定するようにしてもよい。
また、上記した第3実施例では、SES700によって提供されるサービスシナリオ、および、SP600によって提供されるWebサービスの認可判定をAuS400が一元的に判定しているが、本発明はそのような構成に限定されない。例えば、それぞれのSP600が、当該SP600で提供されているWebサービスについての認可判定を実行するようにしてもよい。すなわち、SP600内に、AuS400の機能が組み込まれていてもよい。また、PMS200またはAS800の機能もそれぞれのSP600内に組み込まれていてもよい。
SP600が当該SP600で提供されているWebサービスについての認可判定を実行するようにすれば、認可判定のために交換されるメッセージを少なくすることができ、ネットワークを効果的に利用することができる。このような構成においても、SES700からSP600にWebサービスの呼び出しが行われる前に認可判定処理を行い、各SP600が認可判定結果を保存しているため、実際にWebサービスの呼び出しが行われても認可判定処理を行う必要がなく、Webサービスの提供を迅速に開始することができる。
SP600内にAuS400の機能を組み込んだ場合のビジネスプロセス実行システム40の動作は例えば図33のようになる。なお、以下に説明する点を除き、図33において、図30と同じ符号を付した処理は、図30における処理と同様であるため説明を省略する。
SES700のシナリオ実行部703は、シナリオ格納部701から取得したサービスシナリオからサービスIDを抽出して、例えば図25(a)に示した認可判定要求60を生成する。そして、シナリオ実行部703は、生成した認可判定要求60を、抽出したサービスIDに対応するWebサービスを提供するそれぞれのSP600へ送信する(S720)。なお、シナリオ実行部703は、シナリオIDを含む認可判定要求60を、いずれかのSP600へ送信することにより、ユーザから指定されたサービスシナリオの認可判定をいずれかのSP600に実行させる。
それぞれのSP600は、図31で説明した認可判定処理(S800)を実行した後に、図25(b)で説明した認可判定結果70を作成し、作成した認可判定結果70をSES700へ送信する(S721)。そして、それぞれのSP600は、認可判定の結果が「許可」である場合に、当該認可判定の結果を、対象となるユーザのユーザIDと共に、認可判定結果格納部607に格納する(S722)。
また、上記した第3実施例において、シナリオ実行部703は、US500からサービス要求を受信した場合に、当該サービス要求に含まれているシナリオIDに対応するサービスシナリオに実行順番が規定されているWebサービスの認可判定を一括して実行するが、本発明はこれに限定されない。例えば、シナリオ実行部703は、ユーザから指定されたサービスシナリオおよび当該サービスシナリオに規定されている最初のWebサービスについてAuS400に認可判定を実行させ、当該サービスシナリオおよび当該最初のWebサービスのいずれも許可されている場合に、当該最初のWebサービスの提供を開始する。
そして、当該最初のWebサービスが提供されている間に、シナリオ実行部703は、ユーザから指定されたサービスシナリオを参照して、当該サービスシナリオに規定されているそれぞれのWebサービスの認可判定をAuS400に実行させてもよい。これにより、最初のWebサービスの提供が開始されるまでのユーザの待ち時間を低減することができる。なお、SP600が最初のWebサービスの提供を開始した後に、シナリオ実行部703が図26および図27に示した禁止サービスの登録処理を実行して、最初のWebサービスが禁止サービスとしてプロセス情報格納部702に登録された場合、シナリオ実行部703は、即座に、ユーザのUS500に、それ以降のWebサービスの提供が受けられない旨のエラー通知を送信することが好ましい。あるいは、サービスシナリオの中に含まれるWebサービスの提供を開始した後に、当該Webサービスが禁止サービスとして登録された場合も、即座に、US500に、それ以降のWebサービスの提供が受けられない旨のエラー通知を送信することが好ましい。
上記において、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
10・・・アクセス認可システム、11・・・ネットワーク、20・・・コンピュータ、21・・・CPU、22・・・メモリ、23・・・外部記憶装置、24・・・通信装置、25・・・入力インターフェイス、26・・・出力インターフェイス、27・・・読取装置、28・・・バス、29・・・記憶媒体、30・・・BODY部、31・・・BODY部、40・・・ビジネスプロセス実行システム、100・・・ACS、101・・・次サービスID格納部、102・・・次サービスID特定部、103・・・認可情報格納部、104・・・認可判定要求部、105・・・通信部、106・・・サービス履歴格納部、200・・・PMS、201・・・サービスポリシ情報格納部、202・・・ユーザ属性情報格納部、203・・・情報管理部、204・・・通信部、205・・・シナリオポリシ情報格納部、206・・・ポリシ情報管理部、300・・・CMS、301・・・位置情報格納部、302・・・ログイン処理部、303・・・アクセス履歴格納部、304・・・SIPメッセージ制御部、305・・・通信部、400・・・AuS、401・・・認可判定部、402・・・通信部、500・・・US、501・・・通信部、502・・・通信アプリケーション、503・・・SIPクライアント、504・・・通信管理テーブル格納部、505・・・通信制御エンジン、600・・・SP、601・・・通信部、602・・・サービスアプリケーション、603・・・SIPクライアント、604・・・通信管理テーブル格納部、605・・・通信制御エンジン、606・・・認可判定取得部、607・・・認可判定結果格納部、700・・・SES、701・・・シナリオ格納部、702・・・プロセス情報格納部、703・・・シナリオ実行部、704・・・通信部、800・・・AS、801・・・ユーザ属性情報格納部、802・・・属性情報管理部、803・・・通信部