以下、図面を参照して、本発明の実施形態について説明する。
図1は、本発明の各実施形態に共通するメッセージ検証システムの構成の一例を示す図である。
このメッセージ検証システムは、操作要求対象に対して操作要求を送信する第1ワークフロー装置(情報処理装置)100と、この第1ワークフロー装置100から送信される操作要求を受付けてその正当性を確認した上で当該操作要求を実行する第2ワークフロー装置(情報処理装置)200とを含む情報処理システムである。第1ワークフロー装置100には、例えば第1クライアント端末1A、第2クライアント端末1B、および第3クライアント端末1Cが接続される。一方、第2ワークフロー装置200には、例えば1つのクライアント端末2が接続される。
第1ワークフロー装置100側では、ある操作要求(例えば、新規アカウントの登録に関する操作要求)に関して「申請」、「承認(1)」、「承認(2)」の順でワークフローに従った手続が進められるものとする。この場合、例えば、第1クライアント端末1Aを使用するユーザが「申請」を行い、第2クライアント端末1Bを使用するユーザが「承認(1)」を行い、第3クライアント端末1Cを使用するユーザが「承認(2)」を行うものとする。
上記「申請」、「承認(1)」、「承認(2)」の各々は、図2に示すように、当該操作要求が第1ワークフロー装置100から第2ワークフロー装置200へ送信されるまでに行われる個々のアクティビティ(行為)に相当するものであり、各アクティビティが実行される毎にその内容を示すアクティビティ情報がコンテキストに格納されるようになっている。各アクティビティ情報は、いつ、誰が、何を使って、何をした、等を示す活動情報である。コンテキストは、複数のアクティビティ情報をひとまとめにしたものであり、ワークフローの過程において、個々の活動情報が記述されたデータである。
第1ワークフロー装置100が第2ワークフロー装置200へ操作要求を送信する際には、当該操作要求と共にコンテキストも第2ワークフロー装置200へ送信する。これにより、第2ワークフロー装置200側では、送信されてくる操作要求がどのようなアクティビティを経たものであるかを判断できるようになっている。
第2ワークフロー装置200は、要求された操作を実行する前に、現在でもその操作要求が正当(もしくは有効)なものであるかどうかを確認するため、第1ワークフロー装置100へコンテキストを送信して検証要求を行う。これにより、例えば申請者が退社、降格、もしくは部署移動したような場合に、その操作要求が無効であると判断できる。
以下、各実施形態について詳細に説明する。
(第1の実施形態)
図3は、本発明の第1の実施形態に係るメッセージ検証システムの構成の一例を示す図である。なお、図1と共通する要素には同一の符号を付している。また、説明の簡単化のため、前述した3台のクライアント端末1A,1B,1Cを、1台のクライアント端末1で表現している。
第1ワークフロー装置100は、アカウントの登録、更新、削除についての申請・承認などのワークフローを行うサーバである。具体的には、第2ワークフロー装置200自身、あるいは第2ワークフロー装置200に属するシステム、に対して実行して欲しい操作を操作要求として生成・申請し、操作要求と、後述するコンテキストとを第2ワークフロー装置200に送信するサーバである。また、第2ワークフロー装置200からの要求に応じて、後述するアクティビティ情報の検証を行う。
第2ワークフロー装置200は、第1ワークフロー装置100から送信されるアカウントの登録、更新、削除についての申請を承認し、申請内容を実行するサーバである。具体的には、第1ワークフロー装置100より送信された操作要求とコンテキストとを解釈し、操作要求の正当性を確認するサーバである。第2ワークフロー装置200は、操作要求時にコンテキストの検証を第1ワークフロー装置100に要求し、コンテキストが正当であることを示す判定が返ってきた場合、第1ワークフロー装置100より送信された操作要求を実行するか、あるいは第2ワークフロー装置200に属するシステムに対して操作要求を実行するよう依頼する。
クライアント端末1,2は、それぞれ、第1ワークフロー装置100,第2ワークフロー装置200に備えられる各種機能を利用するための端末装置である。ここでは、クライアント端末1,2は、一般的なパーソナルコンピュータや携帯電話などにより構成され、一般的なWebブラウザが利用できるものである。Webブラウザは、ユーザ認証を行うとき、アクティビティを実行するとき、操作要求を実行するとき、正当性検証を要求・確認するときのインタフェースを構成する。
図3では省略しているが、第1ワークフロー装置100、第2ワークフロー装置200には操作要求を実行する各種システムや装置が接続されていてもよい。
第1ワークフロー装置100は、ユーザ認証部11と、アクティビティ実行者情報管理部12と、アクティビティ実行部13と、操作要求管理部14と、コンテキスト管理部15と、正当性検証部16と、通信部17と、認証情報記憶部18と、アクティビティ実行者情報記憶部19と、操作要求記憶部20と、コンテキスト記憶部21とを有する。
ユーザ認証部11は、クライアント端末1のいずれかから送信されるユーザIDとパスワードとが、認証情報記憶部18に記憶されたユーザIDとパスワードとに一致しているか否かによりユーザを認証するものである。すなわち、ユーザIDとパスワードとが一致している場合には正当ユーザであると判定し、一致していない場合には不正ユーザであると判定する。ただし、これに限る必要はなく、ユーザの認証の方法は、例えば、証明書・生体情報を用いた認証方法であってもよい。上記ユーザ認証部11は、認証に成功した場合にのみ、操作要求についてのアクティビティを実行できるようにする。また、認証に成功した場合、認証に関するユーザ情報をアクティビティ実行者情報管理部12に送出する。
アクティビティ実行者情報管理部12に送出される、認証に関するユーザ情報の一例を図4に示す。図4の例では、認証に関するユーザ情報として、認証されたユーザを識別するユーザID、認証セッションがいつ開始したか(認証にいつ成功したか)を示す認証成功日時、認証セッションがいつ終了するかを示す認証有効期限日時が示されている。
アクティビティ実行者情報管理部12は、ユーザが認証に成功した際にユーザによって後述するアクティビティ実行部13によりアクティビティが実行された場合に、ユーザ認証部11より送出された認証に関するユーザ情報をアクティビティ実行者情報として生成し、アクティビティ実行者情報記憶部19に格納する。ただし、アクティビティ実行者情報管理部12は、ユーザが認証に成功した際に、ユーザ認証部11により送出された認証に関するユーザ情報アクティビティ実行者情報として生成し、アクティビティ実行者情報記憶部19に格納してもよい。つまり、アクティビティが実行される前にアクティビティ実行者情報がユーザ情報を利用して生成しても構わないものとする。図15のステップST13とステップST14では先にアクティビティ実行者情報が生成され、アクティビティが実行されるものとなっている。上記説明に従い、ステップST13とステップST14とは順序が入れ替わっても構わない。
アクティビティ実行者情報の一例を図5に示す。図5の例では、アクティビティ実行者情報はXML (eXtensible Markup Language)で記述されており、アクティビティ実行者情報を示す<ActivityActor>要素に、前記ユーザIDを示す<Id>要素と、前記認証成功日時を示す<NotBefore>要素と、前記認証有効期限日時を示す<NotOnOrAfter>要素とが含まれている。なお、アクティビティ実行者情報に格納する情報については、本実施形態に制限されるものではなく、図5に示すものの他にも例えば、異なる企業や組織のシステム間でも認証や認可などのセキュリティ情報をやりとりすることができるように定められた標準仕様であるSecurity Assertion Markup Language V2.0 (SAMLv2.0)で規定されている認証ステートメントを含むアサーションも利用できる。アサーションとは、ユーザが確かに認証されたことを他の主体に表明するためのメッセージである。アサーションの利用に関しては、“Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0”、[online]、OASIS Security Services (SAML) TC、[2006年4月19日検索]、インターネット<URL:http: //www.oasis-open.org/committees/download.php/11898/saml-core-2.0-os.pdf >を参照されたい。
アクティビティ実行部13は、操作要求に関するアクティビティ実行を行うものである。アクティビティの種類としては、操作要求の生成・申請処理、操作要求の変更処理、操作要求の取り消し処理、操作要求の閲覧処理、操作要求の承認処理、操作要求の差し戻し処理、操作要求の送信処理、操作要求の処理状態確認処理、などが挙げられる。なお、アクティビティの種類については、本実施形態に制限されるものではない。アクティビティ実行に関する情報は、コンテキスト管理部15に送出される。
アクティビティ実行に関する情報の一例を図6に示す。図6の例では、アクティビティ実行に関する情報として、アクティビティを識別するアクティビティID、どのようなアクティビティが行われたのかを示すアクティビティ名、いつアクティビティが実行されたかを示すアクティビティ実行日時が示されている。
操作要求管理部14は、アクティビティ実行部13において生成・申請された操作要求を操作要求記憶部20に格納するものである。また、操作要求を解釈し、実行する機能も有する。
新規アカウント登録に関する操作要求の一例を図7に示す。図7の例では、操作要求はXMLで記述されており、第2ワークフロー装置200に対して、Idが”ichiro”であり、その他の属性としてSn:”鈴木”、GivenName:”一郎”、Mail:”ichiro@xxxxxx.xx.xx”であるユーザを登録するための操作要求が示されている。なお、操作要求はコンピュータにより実行されるプログラムに限定されるものではなく、操作内容を記述したテキスト形式のものであってもよい。操作要求の好例としては、サービスを提供する際におけるユーザ管理などの処理を自動化するサービスプロビジョニングに関する標準仕様であるService Provisioning Markup Language V2.0 (SPMLv2.0)を利用したリクエストメッセージも挙げられる。リクエストメッセージに関しては、“OASIS Service Provisioning Markup Language (SPML) Version 2”、[online]、OASIS Provisioning Services TC、[2007年4月19日検索]、インターネット<URL:http://www.oasis-open.org/committees/download.php/17708/pstc-spml-2.0-os.zip >を参照されたい。
コンテキスト管理部15は、操作要求に対するアクティビティ実行に関する情報をアクティビティ実行情報として生成し、この生成したアクティビティ実行情報と、当該アクティビティ実行情報に対応するアクティビティ実行者情報と、をひとまとめにしたアクティビティ情報を生成し、この生成した複数のアクティビティ情報をさらにひとまとめにしたコンテキストを生成するものである。コンテキスト管理部15は、この生成したコンテキストをコンテキスト記憶部21に格納する。なお、コンテキスト管理部15はアクティビティ実行者情報をアクティビティ実行者情報記憶部19より取得する。
アクティビティ実行情報の一例を図8に示す。図8の例では、アクティビティ実行情報はXMLで記述されており、アクティビティ実行情報を示す<ActivityAction>要素に、前記アクティビティIDを示す<Id>要素と、前記アクティビティ名を示す<ActivityName>要素と、前記アクティビティ実行日時を示す<Date>要素とが含まれている。なお、アクティビティ実行情報に格納する情報については、本実施形態に制限されるものではなく、図8で挙げた以外の情報を含んでもよい。
また、アクティビティ情報の一例を図9に示す。図9の例では、アクティビティ情報はXMLで記述されており、図8に示されるアクティビティ実行情報を含む<ActivityAction>要素と、図5に示されるアクティビティ実行者情報を含む<ActivityActor>要素とを含む。なお、アクティビティ情報に格納する情報については、本実施形態に制限されるものではなく、図9で挙げた以外の情報を含んでもよい。
また、コンテキストの一例を図10に示す。図10の例では、コンテキストはXMLで記述されており、コンテキストを示す<Context>要素に、コンテキストを識別する<Id>要素と、当該コンテキストが対応する操作要求を識別する<requestId>要素と、コンテキスト生成日時を示す<Date>要素と、アクティビティ情報を格納する<Activities>要素とが含まれている。アクティビティ情報が複数存在する場合には、これらのアクティビティ情報は<Activities>要素に格納される。なお、コンテキストに格納する情報については、本実施形態に制限されるものではなく、図10で挙げた以外の情報を含んでもよい。
正当性検証部16は、コンテキストに含まれる情報についての正当性の検証要求を解釈し、正当性の検証要求を受けてコンテキストの正当性検証を行ない、検証結果を要求元に返すものである。具体的には、第2ワークフロー装置200から送信された検証要求を解釈し、検証要求の対象であるコンテキストに含まれる各アクティビティ情報について、そのアクティビティ実行情報とアクティビティ実行者情報とがアクティビティ実行時点と比較して正当であるかどうかを検証し、検証結果を検証応答として生成する。
検証要求の一例を図11に示す。検証要求はXMLで記述されており、検証要求を示す<VerifyRequest>要素に、正当性を検証したいコンテキストを示す<Context>要素が含まれている。なお、検証要求に格納する情報については、本実施形態に制限されるものではなく、図11で挙げた以外の情報を含んでもよい。
また、検証応答の一例を図12に示す。図12の例では、検証応答はXMLで記述されており、検証応答を示す<VerifyResponse>要素に、正当性の検証処理が成功したか失敗したかを示す<Status>要素と、正当性の検証結果を示す<Result>要素とが含まれている。なお、検証応答に格納する情報については、本実施形態に制限されるものではなく、図12で挙げた以外の情報を含んでもよい。
通信部17は、他のワークフロー装置に対して送信する情報を適切なプロトコルに変換し、他のワークフロー装置に対して送信するものである。また、他のワークフロー装置から送信された通信メッセージを受信し、解釈する。なお、通信時に利用するプロトコルについては、本実施形態に制限されるものではなく、例えば、HTTP (Hypertext Transfer Protocol)、HTTP (Hypertext Transfer Protocol Security)、FTP (File Transfer Protocol)で規定されたプロトコルを利用してもよいし、電子メールを利用してもよい。
認証情報記憶部18は、ユーザIDと、パスワードと、状態とを格納する。ユーザIDとパスワードは、ユーザが本人であるかどうかを認証する際に利用される。状態は、該当するユーザIDが有効であるか、無効であるかを指定する際に利用される。認証情報記憶部18のテーブル構成の一例を図13に示す。なお、情報の格納方法については、本実施形態に制限されるものではなく、また認証情報記憶部18は、ユーザIDとパスワードと状態以外の情報を含んでもよい。
アクティビティ実行者情報記憶部19は、アクティビティ実行者情報を格納する。アクティビティ実行者情報記憶部19に格納されたアクティビティ実行者情報は、コンテキスト管理部15により、アクティビティ情報を生成する際に利用される。なお、情報の格納方法については、本実施形態に制限されるものではなく、またアクティビティ実行者情報記憶部19は、アクティビティ実行者情報以外の情報を含んでもよい。
操作要求記憶部20は、アクティビティ実行部13において生成・申請された操作要求を格納する。操作要求記憶部20に格納された操作要求は、通信部17により、第2ワークフロー装置200に送信される。また、操作要求記憶部20に格納された操作要求は、操作要求の承認時などのアクティビティ実行の際にアクティビティ実行部13により参照されてもよい。なお、情報の格納方法については、本実施形態に制限されるものではなく、また操作要求記憶部20は、操作要求以外の情報を含んでもよい。
コンテキスト記憶部21は、コンテキスト管理部15において生成されたコンテキストを格納する。コンテキスト記憶部21に格納されたコンテキストは、通信部17により、第2ワークフロー装置200に送信される。また、操作要求記憶部20に格納された操作要求は、操作要求の承認時などのアクティビティ実行の際にアクティビティ実行部13により参照されてもよい。なお、情報の格納方法については、本実施形態に制限されるものではなく、またコンテキスト記憶部21は、コンテキスト以外の情報を含んでもよい。
一方、第2ワークフロー装置200は、操作要求実行部31と、正当性検証要求部32と、ユーザ認証部33と、通信部34と、認証情報記憶部35とを有する。
操作要求実行部31は、第1ワークフロー装置100より送信された操作要求を解釈し、実行するものである。また、操作要求の実行結果を操作応答として第1ワークフロー装置100に送信してもよいが、本実施形態ではその過程を省略している。
正当性検証要求部32は、コンテキストに含まれる情報についての正当性検証を要求し、返信された検証結果を確認するものである。具体的には、正当性検証の要求を検証要求として生成し、返信された検証応答として解釈する。
ユーザ認証部33と、通信部34と、認証情報記憶部35とについては、第1ワークフロー装置100と同一の処理を行うものであるため、その説明を省略する。
図3の構成におけるメッセージ検証の流れの一シナリオ例を図14に示す。
ここでは、第1ワークフロー装置100を管理する管理者taroが第2ワークフロー管理装置に新たなユーザichiroを登録したいという状況を想定している。管理者taroは第1ワークフロー装置100に認証成功後、第2ワークフローへのユーザ登録要求を申請する(ステップS1)。申請したユーザ登録要求は、コンテキストと共に第2ワークフロー装置200に送信される(ステップS2)。一定期間経過後に、第2ワークフロー装置200を管理する管理者jiroが、ユーザichiroのユーザ登録要求を実行しようとするが、その前にユーザ登録要求が現在でも正当であるかどうかの検証を第1ワークフロー装置100に要求する(ステップS3、S4)。第1ワークフロー装置100はユーザ登録要求の正当性を検証し(ステップS5)、検証結果を第2ワークフロー装置200に返す(ステップS6)。以下に、このシナリオ例に基づくメッセージ検証の流れの詳細を示す。なお、以下の説明では、第1ワークフロー装置100と第2ワークフロー装置200の認証情報記憶部35に図13の情報が格納されているものとする。
図15は、図3の構成において管理者taroがユーザichiroのユーザ登録要求を申請する際の動作を示すフローチャートである。
始めに、第1ワークフロー装置100は、クライアント端末から認証要求を受信する(ステップST11)。第1ワークフロー装置100は、認証要求を受け取るとユーザIDとパスワードとの入力を促すユーザ認証画面をクライアント端末に送信する。管理者taroは、このユーザ認証画面を介して、ユーザID:taroと、パスワード:abcdefと、を第1ワークフロー装置100に対して送信する。
続いて、第1ワークフロー装置100は、クライアント端末1により入力されたユーザIDとパスワードとに基づいてユーザの真正性を認証する(ステップST12)。詳しくは、クライアント端末により入力されたユーザIDおよびパスワードと、認証情報記憶部18に予め記憶されたユーザIDおよびパスワードとが一致するか否かにより、ユーザ認証部11がユーザを認証する。
ユーザ認証部11により、管理者taroが正当ユーザであることが認証されると(ステップST12のYES)、第1ワークフロー装置100へのログインが許可される。これにより、クライアント端末を利用するユーザが、クライアント端末をインタフェースとして、第1ワークフロー装置100でアクティビティを実行できるようになる。また、ユーザ認証部11からアクティビティ実行者情報管理部12に対して前述の図4に示される認証に関連する情報が送出される。アクティビティ実行者情報管理部12は、認証に関連する情報を前述の図5に示されるアクティビティ実行者情報として、アクティビティ実行者情報記憶部19に格納する(ステップST13)。
続いて、管理者taroはクライアント端末から操作要求についてのアクティビティを実行する。第1ワークフロー装置100は、ユーザとのインタフェースとしてGUIを備えていてもよく、管理者taroは例えば図16に示されるようなユーザ登録申請画面から、ユーザichiroを第2ワークフロー装置200に登録する申請を行う。これにより、第1ワークフロー装置100のアクティビティ実行部13で申請アクティビティが実行される(ステップST14)。なお、インタフェースについては、本実施形態に制限されるものではない。
アクティビティ実行部13は、操作要求管理部14に対してユーザ登録申請を送出し、操作要求管理部14はユーザ登録申請の内容を前述の図7に示される操作要求として操作要求記憶部20に格納する(ステップST15のYES、ST16)。また、コンテキスト管理部15は、後で生成される個々のアクティビティ情報を格納するためのコンテキストを生成し、これをコンテキスト記憶部21に記憶しておく(ステップST17)。
なお、操作要求に対する承認など、新たな操作要求で無い場合は(ステップST15のNO)、操作要求の格納やコンテキストの生成は不要となる。
また、アクティビティ実行部13は、前述の図6に示されるアクティビティ実行に関する情報をコンテキスト管理部15に送出する。コンテキスト管理部15は、アクティビティ実行に関する情報から前述の図8に示されるアクティビティ実行情報を生成し、このアクティビティ実行情報と前述のアクティビティ実行者情報とから前述の図9に示されるアクティビティ情報を生成し(ステップST18)、その登録を行う(ステップST19)。そして、このアクティビティ情報を前述の図10のようにコンテキストの中に格納する(ステップST20)。
その後、第1ワークフロー装置100は、第2ワークフロー装置200に対してユーザ登録申請を送信する要求を受ける(ステップST21のYES)。本実施形態では、申請処理が終了した後にユーザ登録申請を自動的に第2ワークフロー装置200に送信するようにしているが、ユーザ登録申請などの操作要求を送信するための要求を出す方法については、本実施形態に制限されるものではなく、例えば、承認処理が終了した後に自動的に操作要求の送信要求を行ってもよいし、ユーザがアクティビティとして操作要求の送信要求を明示的に行うようにしてもよい。
ユーザ登録申請を第2ワークフロー装置200に対して送信する要求を受け取ると、通信部34は、操作要求記憶部20内の指定されたユーザ登録申請(図7)と、コンテキスト記憶部21内の指定された操作要求に対応するコンテキスト(図10)とを取得し、取得したユーザ登録申請(操作要求)とコンテキストとを第2ワークフロー装置200に対して送信する(ステップST22)。
次に、図17〜図19のシーケンス図を参照し、前述の図15のフローチャートに示される動作を「申請」、「承認(1)」、「承認(2)」の処理毎に分けて詳細に説明する。
図17に示されるように、申請者が使用する第1クライアント端末1Aがユーザ認証部11にアクセスすると(ステップA1)、第1クライアント端末1A側に認証要求が返される。次に、第1クライアント端末1Aは、申請者により入力されるユーザIDとパスワードとをユーザ認証部11へ送信すると(ステップA2)、ユーザ認証部11は、認証情報記憶部18内の認証情報を用いてユーザIDとパスワードとの認証を行ない(ステップA3)、問題無ければ認証成功を得る。ユーザ認証部11がアクティビティ実行者情報管理部12へ認証に関する情報を送出すると(ステップA4)、アクティビティ実行者情報管理部12は、アクティビティ実行者情報を生成し、これをアクティビティ実行者情報記憶部19に格納する(ステップA5)。この処理が完了すると、第1クライアント端末1A側ではメニュー画面が表示される。第1クライアント端末1Aがアクティビティ実行部13にユーザ登録申請画面の表示を要求すると(ステップA6)、第1クライアント端末1A側でユーザ登録申請画面が表示される。
次に、第1クライアント端末1Aがアクティビティ実行部13に対してユーザ登録申請を行なうと(ステップA7)、アクティビティ実行部13は、操作要求管理部14へ操作要求に関する情報を送出する(ステップA8)。これにより、操作要求管理部14は、操作要求を操作要求記憶部20に格納する(ステップA9)。次に、アクティビティ実行部13がコンテキスト管理部15に対してコンテキスト生成を要求すると(ステップA10)、コンテキスト管理部15は、コンテキストを生成し(ステップA11)、生成したコンテキストをコンテキスト記憶部21に格納する(ステップA12)。次に、アクティビティ実行部13がコンテキスト管理部15に対してコンテキストへのアクティビティ情報の格納を要求すると(ステップA13)、コンテキスト管理部15は、アクティビティ実行部13に対してアクティビティ実行に関する情報を要求する(ステップA14)。この要求に対し、アクティビティ実行部13がアクティビティ実行に関する情報をコンテキスト管理部15に返すと、コンテキスト管理部15は、アクティビティ実行情報を生成する(ステップA15)。次に、コンテキスト管理部15は、アクティビティ実行者情報記憶部19からアクティビティ実行者情報を取得し(ステップA16)、取得したアクティビティ実行者情報と、生成したアクティビティ実行情報とから、アクティビティ情報を生成し(ステップA17)、生成したアクティビティ情報をコンテキスト記憶部21に格納する(ステップA18)。これにより、第1クライアント端末1A側では、ユーザ登録申請完了が通知される。
図18に示されるように、第1承認者が使用する第2クライアント端末1Bがユーザ認証部11にアクセスすると(ステップB1)、第2クライアント端末1B側に認証要求が返される。次に、第2クライアント端末1Bは、第1承認者により入力されるユーザIDとパスワードとをユーザ認証部11へ送信すると(ステップB2)、ユーザ認証部11は、認証情報記憶部18内の認証情報を用いてユーザIDとパスワードとの認証を行ない(ステップB3)、問題無ければ認証成功を得る。ユーザ認証部11がアクティビティ実行者情報管理部12へ認証に関する情報を送出すると(ステップB4)、アクティビティ実行者情報管理部12は、アクティビティ実行者情報を生成し、これをアクティビティ実行者情報記憶部19に格納する(ステップB5)。この処理が完了すると、第2クライアント端末1B側ではメニュー画面が表示される。
次に、第2クライアント端末1Bがアクティビティ実行部13にユーザ登録承認画面の表示を要求すると(ステップB6)、アクティビティ実行部13は、操作要求記憶部20からユーザ登録申請を取得し(ステップB7)、さらに、コンテキスト管理部15からコンテキストを取得し(ステップB8)、第2クライアント端末1B側にユーザ登録承認画面を表示させる。
次に、第2クライアント端末1Bがアクティビティ実行部13へユーザ登録の承認を伝えると(ステップB9)、アクティビティ実行部13は、コンテキスト管理部15に対してコンテキストへのアクティビティ情報の格納を要求する(ステップB10)。コンテキスト管理部15は、アクティビティ実行部13に対してアクティビティ実行に関する情報を要求し(ステップB11)、アクティビティ実行に関する情報を取得すると、アクティビティ実行情報を生成する(ステップB12)。次に、コンテキスト管理部15は、アクティビティ実行者情報記憶部19からアクティビティ実行者情報を取得し(ステップB13)、取得したアクティビティ実行者情報と、生成したアクティビティ実行情報とから、アクティビティ情報を生成し(ステップB14)、生成したアクティビティ情報をコンテキスト記憶部21に格納する(ステップB15)。これにより、第2クライアント端末1B側には、ユーザ登録申請の承認完了が通知される。
図19に示されるように、第2承認者が使用する第3クライアント端末1Cがユーザ認証部11にアクセスすると(ステップC1)、第3クライアント端末1C側に認証要求が返される。次に、第3クライアント端末1Cは、第1承認者により入力されるユーザIDとパスワードとをユーザ認証部11へ送信すると(ステップC2)、ユーザ認証部11は、認証情報記憶部18内の認証情報を用いてユーザIDとパスワードとの認証を行ない(ステップC3)、問題無ければ認証成功を得る。ユーザ認証部11がアクティビティ実行者情報管理部12へ認証に関する情報を送出すると(ステップC4)、アクティビティ実行者情報管理部12は、アクティビティ実行者情報を生成し、これをアクティビティ実行者情報記憶部19に格納する(ステップC5)。この処理が完了すると、第3クライアント端末1C側ではメニュー画面が表示される。
次に、第3クライアント端末1Cがアクティビティ実行部13にユーザ登録承認画面の表示を要求すると(ステップC6)、アクティビティ実行部13は、操作要求記憶部20からユーザ登録申請を取得し(ステップC7)、さらに、コンテキスト管理部15からコンテキストを取得し(ステップC8)、第3クライアント端末1C側にユーザ登録承認画面を表示させる。
次に、第3クライアント端末1Cがアクティビティ実行部13へユーザ登録の承認を伝えると(ステップC9)、アクティビティ実行部13は、コンテキスト管理部15に対してコンテキストへのアクティビティ情報の格納を要求する(ステップC10)。コンテキスト管理部15は、アクティビティ実行部13に対してアクティビティ実行に関する情報を要求し(ステップC11)、アクティビティ実行に関する情報を取得すると、アクティビティ実行情報を生成する(ステップC12)。次に、コンテキスト管理部15は、アクティビティ実行者情報記憶部19からアクティビティ実行者情報を取得し(ステップC13)、取得したアクティビティ実行者情報と、生成したアクティビティ実行情報とから、アクティビティ情報を生成し(ステップC14)、生成したアクティビティ情報をコンテキスト記憶部21に格納する(ステップC15)。次に、アクティビティ実行部13が通信部17に対してユーザ登録申請の送信を要求すると(ステップC16)、通信部17は、操作要求記憶部20からユーザ登録申請を取得し(ステップC17)、さらに、コンテキスト記憶部21からコンテキストを取得し(ステップC18)、取得したユーザ登録申請(操作要求)とコンテキストとを第2ワークフロー装置200へ送信する(ステップC19)。これにより、第3クライアント端末1C側には、ユーザ登録承認の完了およびユーザ登録申請送信の完了が通知される。図20には、「申請」および「承認」が完了した後のコンテキストの例が示されている。
図21は、図3の構成において第2ワークフロー装置200が第1ワークフロー装置100からユーザ登録申請とコンテキストとを受信した後に行う処理の動作を示すフローチャートである。
第2ワークフロー装置200は、第1ワークフロー装置100からユーザ登録申請とコンテキストとを受信する(ステップST31)。受信したユーザ登録申請とコンテキストとは、それぞれ、操作要求記憶部20とコンテキスト記憶部21とに格納される。
次に、第2ワークフロー装置200を管理する管理者jiroが、第2ワークフロー装置200で認証を行う(ST32、ST33)。認証処理については、第1ワークフロー装置100での処理(図15中のステップST11、ST12)と同一処理であるため、説明を省略する。
認証成功後、管理者jiroは第1ワークフロー装置100より送信されたユーザ登録申請を実行するが、その前に現在でもユーザ登録申請が正当であるかどうかを検証する要求を行う(ステップST34)。ユーザ登録申請が正当であるかどうかを検証する要求については、例えば図22に示されるユーザ登録確認画面から行うことができるが、要求する方法については、本実施形態に制限されるものではない。検証要求があった場合、第2ワークフロー装置200の正当性検証要求部32は、コンテキストの検証を第1ワークフロー装置200に対して依頼する。検証方法については後述する。検証結果が正当である場合(ステップST35のYES)、第2ワークフロー装置200は、操作要求実行部31においてでユーザichiroの登録を実行する(ステップST36)。検証結果が正当でない場合(ステップST35のNO)、第2ワークフロー装置200は、ユーザichiroの登録を実行せず、エラーとして処理する(ステップS37)。
なお、管理者jiroは検証要求を行わずにコンテキストの内容を確認するだけで、ユーザ登録を実行してもよい。また、操作要求とコンテキストとの受信から一定期間経過した操作要求については必ず第1ワークフロー装置100に検証するようにしてもよく、検査要求を行うか行わないかの判断方法については、特に制限されるものではない。
また、第2ワークフロー装置200は、ユーザ登録の実行結果を第1ワークフロー装置100に返信してもよい。操作要求に対する操作応答を返信することについては、特に制限されるものではない。
図23は、図3の構成において第2ワークフロー装置200が第1ワークフロー装置100に対してコンテキストの検証を要求する際の動作を示すフローチャートである。
始めに、第2ワークフロー装置200において、正当性検証要求部32は送信されたコンテキストをコンテキスト記憶部21から取得し(ステップST41)、そのコンテキストから前述の図11に示される検証要求を生成する(ステップST42)。通信部34は、正当性検証要求部32により生成された検証要求を第1ワークフロー装置100に対して送信する(ステップST43)。
続いて、第1ワークフロー装置100は、第2ワークフロー装置200から検証要求を受信する(ステップST51)。正当性検証部16は、受信した検証要求を解釈し、検証要求に含まれるコンテキストに含まれるアクティビティ情報を取得する(ステップST53)。正当性検証部16は、アクティビティ情報が正当であるかを、アクティビティの正当性検証と、アクティビティ実行者の正当性検証と、を行うことで確認する(ステップST54、ST55,ST56)。これらの検証を、コンテキストに含まれるすべてのアクティビティ情報に対して行う。
アクティビティの正当性検証では、ユーザ登録申請に対して実行されたアクティビティがユーザ登録申請を無効にするようなものであるかどうかを検証する。例えば、図24の判定基準の例に示されるように、ユーザ登録申請とコンテキストとを送信後に、ユーザ登録申請の変更処理が実行されていたり、ユーザ登録申請の取り消し処理が実行されていたり、ユーザ登録申請の差し戻し処理が実行されていたりした場合、アクティビティは正当でないと判定される。図24に示される個々の判定基準は、適宜組み合わせて採用するようにしてもよい。その際には、個々の判定基準を満たしているかをスコアにより総合的に判断するようにしてもよい。また、その際には、個々のスコアに対して重み付け処理を行ってもよい。なお、アクティビティの正当性の判定基準については、本実施形態に制限されるものではない。
アクティビティ実行者の正当性検証では、認証情報記憶部18に格納されるアクティビティ実行者の情報を利用してコンテキストに含まれるアクティビティ実行者情報が正当なものであるかどうかを検証する。例えば、図25の判定基準の例に示されるように、ユーザ登録申請とコンテキストとを送信後に、アクティビティ実行者のユーザIDが削除されていたり、アクティビティ実行者のユーザIDが無効になっていたりした場合、アクティビティ実行者情報は正当でないと判定される。図25に示される個々の判定基準は、適宜組み合わせて採用するようにしてもよい。その際には、個々の判定基準を満たしているかをスコアにより総合的に判断するようにしてもよい。また、その際には、個々のスコアに対して重み付け処理を行ってもよい。また、図24に示される個々の判定基準とも組み合せて総合的に判断するようにしてもよい。なお、アクティビティ実行者の正当性の判定基準については、本実施形態に制限されるものではない。
また、本実施形態は、アクティビティの正当性検証、アクティビティ実行者の正当性検証について、その検証順序を制限するものではなく、どちらを先に行ってもよい。
そして、前述の正当性検証部16は、アクティビティ情報の検証結果を元に検証応答を生成する(ステップST57)。通信部17は、正当性検証部16により生成された確認応答を第2ワークフロー装置200に対して送信する(ステップST58)。
続いて、第2ワークフロー装置200は、第1ワークフロー装置100から検証応答を受信する(ステップST44)。正当性検証要求部32は受信した検証応答を解釈することで、第2ワークフロー装置200はコンテキストの正当性を確認できる(ステップST45)。
なお、本実施形態では、各ワークフロー装置がそれぞれユーザ認証部を有しているが、ユーザ認証自体は別装置で行われてもよい。この場合、ワークフロー装置は認証結果をユーザ認証が行われた装置から受け取る必要がある。
また、機密性・完全性を維持するために、通信部17,34から送信される、操作要求と、コンテキストと、検証要求と、検証応答と、の通信時には、これらのメッセージを暗号化してもよい。また、これらのメッセージにメッセージダイジェスト、あるいはメッセージ識別子をつける、などによりメッセージが改ざんされているかどうかを確認してもよい。
また、本実施形態では、クライアント端末を用いてワークフロー装置でアクティビティを実行しているが、クライアント端末を利用せずにワークフロー装置で直接ユーザがアクティビティを実行してもよい。
このように第1の実施形態では、第1ワークフロー装置100は、操作要求と、操作要求に対して行ったアクティビティに関する情報(アクティビティ自体の情報、アクティビティ実行者情報)とをまとめたコンテキストを、第2ワークフロー装置200に対して送信する。第2ワークフロー装置200では、操作要求に付随したコンテキストを参照することで操作要求がどのようなプロセスで送信されたかを確認できる。さらに、操作要求が操作要求実行時でも正当であるかどうかを確認するために、第2ワークフロー装置200では、第1ワークフロー装置100に対してコンテキストの検証を要求することができる。第1ワークフロー装置100は、コンテキストの内容とユーザの属性情報を比較して、操作要求が現時点でも正当であるかどうかを、第2ワークフロー装置200に返す。これにより、第2ワークフロー装置200において操作要求実行時点での操作要求の正当性を確認できる。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。なお、前述の第1の実施形態と共通する部分の説明を省略し、異なる部分を中心に説明する。
図26は、本発明の第2の実施形態に係るメッセージ検証システムの構成の一例を示す図である。なお、図3と共通する要素には同一の符号を付している。
第1ワークフロー装置100は、前述した各要素に加え、ロールポリシ記憶部22を有する。すなわち、本実施形態では、発明の第1の実施形態における第1ワークフロー装置100に対して、ロール情報の優先順位をロールポリシとして管理する機能を追加している。ロールポリシを利用することで、ロール情報に優先順位がある場合のロール情報変更に対しても操作要求の正当性を判定できる。
ロール情報とは、権限範囲に基づいた概念情報であり、例えば、業務上の役割(一般利用者、システム管理者、など)、所属(会社、事業部、など)、役職(主任、課長、など)が挙げられる。例えば、操作要求を送信後にアクティビティ実行者の役職が変更されたとする。より上位の役職に変更された場合には操作要求が正当であると判定するが、より下位の役職に変更された場合には操作要求が正当でないと判定したい場合、ロールポリシでロール情報の優先順位を定めておくことで上記の判定を行うことができる。
ユーザ認証部11は、認証に成功した場合、認証に関するユーザ情報をアクティビティ実行者情報管理部12に送出する。アクティビティ実行者情報管理部12に送出される、認証に関するユーザ情報の一例を図27に示す。図27では、認証に関するユーザ情報として、認証されたユーザを識別するユーザID、認証セッションがいつ開始したか(認証にいつ成功したか)を示す認証成功日時、認証セッションがいつ終了するかを示す認証有効期限日時、ユーザの認証時点での役職を示す役職ID、が示されている。これ以外のユーザ認証部11の機能については、第1の実施形態と同様である。
アクティビティ実行者情報管理部12は、ユーザが認証に成功した際に、ユーザ認証部11より送出された認証に関するユーザ情報をアクティビティ実行者情報として生成し、アクティビティ実行者情報記憶部19に格納する。アクティビティ実行者情報の一例を図28に示す。図28の例では、アクティビティ実行者情報はXMLで記述されており、アクティビティ実行者情報を示す<ActivityActor>要素に、前記ユーザIDを示す<Id>要素と、前記認証成功日時を示す<NotBefore>要素と、前記認証有効期限日時を示す<NotOnOrAfter>要素と、前記役職IDを示す<postId>とが含まれている。これ以外のアクティビティ実行者情報管理部12の機能については、第1の実施形態と同様である。
認証情報記憶部18は、ユーザIDと、パスワードと、状態と、役職IDとを格納する。ユーザIDとパスワードは、ユーザが本人であるかどうかを認証する際に利用される。状態は、該当するユーザIDが有効であるか、無効であるかを指定する際に利用される。役職IDは、ユーザが現在どのような役職についているかを示すロール情報である。認証情報記憶部18のテーブル構成の一例を図29に示す。情報の格納方法については、本実施形態に制限されるものではなく、また認証情報記憶部18は、ユーザIDとパスワードと状態と役職ID以外の情報を含んでもよい。
ロールポリシ記憶部22は、ロール情報の優先順位を定義するロールポリシとを格納するものである。ロールポリシは正当性検証部16においてアクティビティ実行者情報を検証する際に利用される。ロールポリシ記憶部22のテーブル構成の一例を図30に示す。図30では、ロールポリシ情報として、役職を用いており、担当の上位の役職として課長、課長の上位の役職として部長というポリシを設定している。具体的には、ロールポリシ記憶部22は、役職を識別する役職IDと、役職の名称を示す役職名と、役職の上位の役職を示す上位役職IDと、を格納する。情報の格納方法については、本実施形態に制限されるものではなく、またロールポリシ記憶部22は、ロールポリシ以外の情報を含んでもよい。
以降、図26の構成におけるメッセージ検証の流れを前述の図14に示したシナリオ例を用いて説明する。なお、以下の説明では、第2ワークフロー装置200の認証情報記憶部35に図29の情報が、第1ワークフロー装置100のロールポリシ記憶部22に図30の情報が、それぞれ格納されているものとする。
本実施形態における動作は、基本的には、第1の実施形態の図15、図17〜図19、図21、図23で示した動作と同様であるため、説明を省略する。ただし、認証に関するユーザ情報、アクティビティ実行者情報は、それぞれ図27、図28に示される情報であるものとする。アクティビティ実行者の正当性の検証について、以下に説明する。
アクティビティ実行者の正当性検証では、例えば、図31の判定基準の例に基づき、認証情報記憶部18に格納されるアクティビティ実行者の情報が正当なものであるかどうかを検証する。ロール情報の正当性を検証する際には、認証情報記憶部18に記憶されるロール情報と、確認要求メッセージに含まれるアクティビティ情報に含まれるアクティビティ実行者情報のロール情報とを比較し、違いがあった場合にはロールポリシ記憶部22を参照して、ロール情報が正当であるかどうかを検証する。本シナリオ例では、検証要求に含まれるアクティビティ実行者情報の管理者taroの役職IDが1500であるため、認証記憶部に格納されているユーザID:taroの役職IDが、例えば1400に変更されていた場合には、上位役職に該当するため、アクティビティ実行者情報の役職IDは正当であると検証される。なお、アクティビティ実行者の正当性の判定基準については、本実施形態に制限されるものではなく、例えば、通信メッセージ送信後に、アクティビティ実行者のユーザIDが削除されていたり、アクティビティ実行者のユーザIDが無効になっていたり、アクティビティ実行者のロール情報がより下位のロール情報に変更されていたりした場合、アクティビティ実行者情報は正当でないと判定される。
このように第2の実施形態では、ロール情報の優先順位を定義するロールポリシを利用して、ロール情報が変更された際の正当性検証を行うことができる。
前述の各実施形態によれば、非同期の操作要求を送信し、一定期間経過後に操作要求を実行する際に、実行時点でも操作要求が正当であるかどうかを確認できる。また、コンピュータを利用してビジネスプロセスを促進あるいは自動化するワークフローに対しても適用できる。特に、アクティビティ実行装置と検証要求装置が別企業に配置されている場合や、操作要求が非同期に実行される(操作要求を受信する日時と、操作要求を実行する日時が離れている)ものである場合に、有効である。
なお、上述した実施形態で述べた本発明に係る各種の処理手順は、コンピュータプログラムとして、コンピュータ(情報処理装置)により読み取り可能な記憶媒体(例えば磁気ディスク,光ディスク,半導体メモリ)に記憶させておき、必要に応じてそれをプロセッサにより読み出して実行するようにしてもよい。また、このようなコンピュータプログラムは、通信媒体を介してあるコンピュータから他のコンピュータに伝送することにより配布することも可能である。
本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
1,1A,1B,1C,2…クライアント端末、11…ユーザ認証部、12…アクティビティ実行者情報管理部、13…アクティビティ実行部、14…操作要求管理部、15…コンテキスト管理部、16…正当性検証部、17…通信部、18…認証情報記憶部、19…アクティビティ実行者情報記憶部、20…操作要求記憶部、21…コンテキスト記憶部、22…ロールポリシ記憶部、31…操作要求実行部、32…正当性検証要求部、33…ユーザ認証部、34…通信部、100…第1ワークフロー装置、200…第2クライアント端末。