<システム構成>
図1を参照して、本実施形態のシステムについて説明する。
本実施形態では、委託元(例えば製造開発元)の担当者が文書管理システム300に登録した電子文書(例えば設計図ファイル)のアクセス権を一次委託先(例えば製造委託先)の担当者に付与し、一次委託先の担当者がそのアクセス権を二次委託先の担当者に委譲する仕組みを説明する。
本実施形態のシステムは、認証・認可サーバ100及び中間サーバ200を含み、これら両者の協調動作により、文書管理システム300に対してアクセス管理のサービスを提供する。
文書管理システム300は、設計図面データ等の電子文書(例えば文書ファイル)を格納し、それら格納した電子文書をユーザからのリクエストに応じて提供するサーバである。文書管理システム300は、受け取ったリクエストに含まれるトークンを認証・認可サーバ100に送って検証を依頼する機能(トークン検証依頼部310)を有する。この機能は、UMA(User Managed Access)という、Webベースの標準的なアクセス管理プロトコルに定義された機能である。そして、トークン検証依頼部310の依頼に対して認証・認可サーバ100から返される検証結果に従い、電子文書へのアクセスを許可又は拒否する。文書管理システム300は、標準的なプロトコルであるUMA(あるいはこれと同様の、トークンの検証を依頼する機能を定義したプロトコル)をサポートしていれば、本実施形態のシステム(認証・認可サーバ100及び中間サーバ200)からサービスを受けることができる。
認証・認可サーバ100は、ユーザの認証と、トークンの発行及び管理を行う。トークンとは、認証・認可サーバ100が、ユーザにリソースへのアクセスを認可する場合にそのユーザに対して発行するデータであり、アクセストークンとも呼ばれる。また、認証・認可サーバ100は、ユーザから提示されたトークンを検証することで、ユーザのリソースに対するアクセス権の有無を判定する。
この実施形態では、認証・認可サーバ100は、文書管理システム300に保持されたリソース(図面等の文書のデータ)に対するユーザのアクセスの認証や認可(トークン発行)の処理を行う。ここでは文書管理システム300のみを示したが、認証・認可サーバ100は、他のシステムに対してもユーザ認証やトークンの発行、検証のサービスを提供可能である。
認証・認可サーバ100は、ユーザ認証及びトークンの発行・管理のために、トークン照合テーブル121、トークン管理テーブル123、アクセス権テーブル125、証明書条件テーブル127、ユーザ属性条件テーブル129を有する。これら各テーブルのデータ構造の例を図2に示す。
トークン照合テーブル121は、一次トークンと二次トークンとを対応づけて記憶するテーブルである。一次トークンは、委託元の担当者から委託を受けた一次委託先の担当者が取得するトークンである。二次トークンは、一次委託先から委託を受けた二次委託先の担当者が取得するトークンである。一次トークン及び二次トークンの役割及び使われ方については、後で詳しく説明する。
トークン管理テーブル123は、トークンと、その発行先のユーザのユーザID(識別情報)との対応関係を記憶している。
アクセス権テーブル125は、文書管理システム300に記憶された各電子文書(例えば設計図面データ等)に対する各ユーザのアクセス権の情報を記憶している。図示例では、電子文書の文書ID(識別情報)に対応づけて、その電子文書に対してアクセス権を付与されたユーザのユーザIDと、付与されたアクセス権の内容とを記憶している。アクセス権の内容を表す記号のうち「r」は読み出し権、「w」は書き込み権、「x」は実行権を表す。
証明書条件テーブル127は、二次委託先の担当者が満たすべき条件のうちの1つである証明書条件を規定するテーブルである。証明書条件は、二次委託先担当者が認証・認可サーバ100に対して提出(送信)したクライアント証明書に含まれる属性情報が、二次委託先として認められるために満たすべき条件である。図2に示す例では、証明書条件テーブル127には、証明書条件の項目毎に、「No.」、「種別」、「パーミッション」、「アクセスパターン」の値が記憶されている。「No.」は当該条件項目の識別番号である。「種別」は、その条件項目が対象とする属性の「種別」である。「パーミッション」は、その条件項目が満たされた場合にそのクライアント証明書を信頼できるものとして受け入れるのか否かを示す。「パーミッション」の値「DENY」は「受け入れない(信頼できない)」ことを意味し、値「PERMIT」は「受け入れる」ことを意味する。「アクセスパターン」は、提出されたクライアント証明書の、「種別」に対応する属性についての条件となる値である。条件の値のデータ型及び意味は、その属性の「種別」毎に異なる。例えば「VALIDITY」(有効期間)という種別の属性の場合、「アクセスパターン」の値は正の整数値であり、この属性「VALIDITY」の値がこの「アクセスパターン」値以上の場合に当該条件項目が満たされることを意味する。したがって、「1」番の条件項目の場合、ユーザから提示されたクライアント証明書の有効期間が1825日(約5年)以上の場合にこの条件項目が満たされ、この結果、この項目の「パーミッション」の値は「DENY」に従ってそのクライアント証明書は受け入れられない(したがってこれを提示したユーザは二次委託先として認められない)こととなる。
図2では、クライアント証明書の有効期間を例示したが、条件項目の対象となる属性の種別としてこのほかに例えばそのクライアント証明書を発行した認証局名(「ISSUER」)等もある。この発行認証局名についての「アクセスパターン」は、例えば、認証・認可サーバ100が信頼する認証局の名前のリスト(ホワイトリスト)、又は信頼しない認証局の名前のリスト(ブラックリスト)である。ホワイトリストの場合「パーミッション」の値は「PERMIT」であり、ブラックリストの場合は「パーミッション」の値は「DENY」である。
証明書条件テーブル127に複数の条件項目が含まれる場合、クライアント証明書の受け入れ可否を、それら複数の条件項目の判定結果をどのように組み合わせて判定するかは適宜定めればよい。例えば、「パーミッション」の値が「DENY」の条件項目が1つでも満たされれば、他の条件項目の判定結果によらず当該クライアント証明書を受け入れ不可と判定し、かつ、「パーミッション」の値が「PERMIT」の条件項目についてはすべての項目が満たされた場合に受け入れ可能と判定する、などの判定方式が考えられる。
なお、「0」番の条件項目は、「1」番以降の各条件項目に係る属性「種別」がすべて提出されたクライアント証明書に含まれていない場合に適用される条件項目であり、この場合は、当該クライアント証明書は受け入れ不可と判定される。
証明書条件テーブル127は、1つの例では、委託元の会社全体で共通のものが用いられる。この場合、証明書条件テーブル127に示される証明書条件は、委託元会社が指定したものである。
別の例として、委託元会社の部署毎に証明書条件テーブル127を用意してもよい。この場合、証明書条件テーブル127に示される証明書条件は部署により指定され、その部署のIDに対応づけて認証・認可サーバ100に保持される。
更に別の例として、委託元会社の担当者毎に証明書条件テーブル127を用意してもよい。この場合、証明書条件テーブル127に示される証明書条件はその委託元担当者により指定され、委託元担当者のユーザIDに対応づけて認証・認可サーバ100に保持される。
更に別の例として、文書管理システム300に記憶された電子文書毎に証明書条件テーブル127を用意してもよい。この場合、電子文書に対するアクセス権を他者に付与する権限を有するユーザである委託元担当者が、その電子文書に対応する証明書条件を指定する。このように指定された証明書条件を表す証明書条件テーブル127がその電子文書の文書IDと対応づけて認証・認可サーバ100に登録される。
ユーザ属性条件テーブル129は、二次委託先の担当者が満たすべき条件のうちの1つであるユーザ属性条件を規定するテーブルである。ユーザ属性条件は、二次委託先として適格なユーザの属性が満たすべき条件である。図2に例示するユーザ属性条件テーブル129では、ユーザ属性条件の項目毎に、「No.」、「種別」、「パーミッション」、「アクセスパターン」の値が記憶されている。「No.」は当該条件項目の識別番号である。「種別」はその条件項目が対象とするユーザ属性の「種別」である。「パーミッション」は、その条件項目が満たされた場合にそのユーザが二次委託先として適格(値「PERMIT」)、不適格(値「DENY」)のいずれであるかを示す。「アクセスパターン」は、その「種別」の属性についての条件となる値である。条件の値のデータ型及び意味は、その属性の「種別」毎に異なる。例えば「COMPANY NUMBER OF EMPLOYEES」(会社の従業員数)及び「COMPANY CAPITAL」(会社の資本金)という種別の場合、「アクセスパターン」の値は正の整数値であり、これらの属性の値がこの「アクセスパターン」値以上の場合に、当該条件項目が満たされることを意味する。また「COMPANY REGION」(会社の所在地域)と言う種別では、「アクセスパターン」の値は、適格(値「PERMIT」)又は不適格(値「DENY」)と判断する国名又は地域名のリストである。
ユーザ属性条件テーブル129内の複数の条件項目を組み合わせて適格か否かを判定する仕方は、証明書条件テーブル127の場合と同様でよい。
ユーザ属性条件テーブル129も、証明書条件テーブル127の場合と同様、委託元の会社全体で共通のものとしてもよいし、委託元会社の部署毎、委託元担当者毎、又は電子文書毎に用意してもよい。
この実施形態では、ユーザが提出したクライアント証明書が証明書条件を満たし、かつ、そのユーザのユーザ属性がユーザ属性条件を満たす場合に、そのユーザが、一次委託先から権限委譲を受ける二次委託先として適格であると判定する。
また、認証・認可サーバ100は、委託先情報検証部110を有する。委託先情報検証部110は、証明書条件テーブル127及びユーザ属性条件テーブル129を参照して、二次委託先担当者が権限委譲を受ける条件を満たすかどうか(すなわち適格な二次委託先であるか否か)、検証する。委託先情報検証部110は、ユーザ属性についての検証のために、属性プロバイダ400を利用する。
属性プロバイダ400は、認証されたユーザのユーザ属性の情報を提供する装置である。属性プロバイダ400としてトラストフレームワークに参加しているものを用いることで、属性プロバイダ400から提供されるユーザ属性情報の信頼性がトラストフレームワークにより保証される。トラストフレームワークとは、ユーザ認証サービスを提供する提供者(アイデンティティ・プロバイダ:IdP。本実施形態の認証・認可サーバ100に)、IdPから提供されるユーザID等の情報に従ってユーザに対してオンラインサービスを提供するサービス提供者(リライイング・パーティ:RP。本実施形態の文書管理システム300)、及びユーザの属性情報をIdPやRPに提供する提供者(アトリビュート・プロバイダ:AP。本実施形態の属性プロバイダ400)の間での、ID連携、属性交換のための信頼の枠組みである。このような属性プロバイダの実装例としては、「学認トラストフレームワーク」や米国政府の「ICAM」(Identity Credentialing and Access Management)トラストフレームワークで用いられる「Attribute eXchange Network」等がある。
委託先情報検証部110が実行する検証処理については後で詳しい例を説明する。
中間サーバ200は、ユーザからの文書管理システム300へのアクセスを仲介するサーバである。中間サーバ200は、ユーザからの文書管理システム300へのリクエストを文書管理システム300の代わりに受信し、そのリクエストの正当性を検証し、正当なリクエストと判断した場合に、そのリクエストを文書管理システム300に転送する。中間サーバ200は、特に二次委託先担当者からのリクエストの正当性を検証するために、一次委託先担当者からの一次トークンを提示した二次委託先担当者のWebブラウザ700に対してセッションIDを発行する。セッションIDは、一意な文字列であり、二次委託先担当者とのセッションを識別するために用いられる。このセッションIDの発行処理は、状態セッション生成部210により行われる。セッションIDは、二次委託先担当者のWebブラウザ700に対して、Cookie(クッキー)として設定される。以降、二次委託先担当者と中間サーバ200とのやりとりは、1つのセッションとして、このセッションIDにより管理される。このセッションのことは、以下では状態セッションと呼ぶ。
また、状態セッション生成部210は、Webブラウザ700を認証・認可サーバ100にリダイレクトして二次トークンを取得させる。そして、その二次トークンをWebブラウザ700から受け取り、元の一次トークン及びセッションIDと対応づけて状態セッション照合テーブル220に保持する。状態セッション照合テーブル220は、図3に示すように、セッションID、一次トークン、及び二次トークンの対応関係を保持するテーブルである。その後、二次委託先担当者(Webブラウザ700)から文書管理システム300へのリクエストを受け取ると、中間サーバ200は、そのリクエストと共にWebブラウザ700から提示される二次トークン及びセッションIDが、状態セッション照合テーブル220に保持している二次トークン及びセッションIDの組合せに合致するか否かを判定し、合致する場合に、そのリクエストを(中間サーバ200にとって)正当なものと判定する。そして、正当なものと判定した場合、そのリクエストに対してその二次トークンを付加し、二次トークン付加後のリクエストを文書管理システム300に転送する。
二次委託先担当者からのリクエストの検証のために、中間サーバ200は、状態セッション生成部210及び状態セッション照合テーブル220を有する。
<処理の流れ>
以下、図1のシステムにおける処理の流れを説明する。以下の説明では、図1に示した「(1)」等の括弧付きの処理順序の番号に従って、順に説明を行う。この例では、本システムが、委託元の会社全体で共通の証明書条件テーブル127及びユーザ属性条件テーブル129を用いる場合を説明する。
(1) 委託元(製品開発元)の担当者は、自分の端末500から、製造委託を行う製品の設計図面のデータ(以下単に「図面」と呼ぶ)を文書管理システム300に登録する。
(2) 委託元担当者は、ステップ(1)で登録した図面に対するアクセス権を一次委託先の担当者に付与する場合、その一次委託先担当者に付与するアクセス権をアクセス権テーブル125に設定する。このアクセス権設定により、一次委託先の担当者が文書管理システム300内のその図面に対するアクセス権を有する状態となる。
この例では、委託元の会社全体で共通の証明書条件テーブル127及びユーザ属性条件テーブル129を用いる。これら証明書条件テーブル127及びユーザ属性条件テーブル129は、その会社内のしかるべき権限を持つユーザによりあらかじめ作成されているものとする。
委託元担当者は、一次委託先の担当者に、委託を行う旨の連絡を行う。この時点では、トークン照合テーブル121、トークン管理テーブル123及び状態セッション照合テーブル220は、図2及び図3に示すように、空(何もデータが無い)状態であるとする。
(3) 委託元担当者から委託の連絡を受けた一次委託先の担当者は、自分の端末のWebブラウザ600を操作して、文書管理システム300内の図面についてのアクセス権委譲用のURLにアクセスする。このURLは、例えば、認証・認可サーバ100のポータルのWebページ上のメニュー項目「アクセス権委譲」に埋め込まれている。このURLは、認証・認可サーバ100が実行するアクセス権委譲処理を指しており、一次委託先担当者がこのURLにアクセスすることにより、認証・認可サーバ100がアクセス権委譲処理を開始する。
(4) このアクセス権委譲処理にて認証・認可サーバ100は、まずユーザ認証のための認証情報(例えばユーザIDとパスワード)の入力画面のWebページを一次委託先担当者のWebブラウザ600に返す。一次委託先担当者は、認証・認可サーバ100が返す入力画面に認証情報の入力等を行い、ユーザ認証を受ける。この例では、その一次委託先担当者が、文書管理システム300にアクセス権を持つ正当なユーザであると認証される。
(5) このように一次委託先担当者が文書管理システム300にアクセス権を持つ正当な担当者で有ると判定した場合、認証・認可サーバ100は、一次トークンを発行する。
(6) 認証・認可サーバ100は、トークン照合テーブル121の「一次トークン」列に、その一次トークンを保存するとともに、トークン管理テーブル123に、その一次トークンを一次委託先担当者のユーザIDと対応づけて保存する。このステップ(6)の時点でのトークン照合テーブル121、トークン管理テーブル123及び状態セッション照合テーブル220の状態を図4に示す。図4に示すように、この時点では、トークン管理テーブル123には、発行したトークン(一次トークン)と一次委託先担当者のユーザIDの値がそれぞれ登録され、トークン照合テーブル121にはその一次トークンのみが登録される(対応する二次トークンの欄は空)。また状態セッション照合テーブル220は空のままである。
(7) 次に認証・認可サーバ100は、一次委託先担当者に対して、二次委託先の担当者に通知するURL(以下「一次トークン登録アドレス」という)を送付する。
図5に一次トークン要求アドレスの具体例を示す。図示のように、一次トークン要求アドレスは、中間サーバ200の一次トークン登録用のエンドポイントURLの後に、パラメータとして一次トークンとリダイレクトURI(Uniform Resource Identifier)とがクエリ文字列の形で付加されて構成されたものである。一次トークンはパラメータ名が「delegator_token」であり、この例では一次トークンの値は「vfrcde3」である。リダイレクトURIは「redirect_uri」というパラメータ名で示されている。パラメータ「redirect_uri」は、OpenID Connectに規定されるパラメータであり、認証後のリダイレクト先(すなわち認証結果の応答の宛先)のURIを示す。図5では煩雑さを避けるために一部省略したが、この例のリダイレクトURIは図7に示す二次トークン発行要求のエンドポイントである。すなわち、このリダイレクトURIは、認証・認可サーバ100のエンドポイントURLの後に、一次トークンと、中間サーバ200の二次トークン発行要求のエンドポイントURLがクエリ文字列として続いたものとなっている。
(8) 一次委託先担当者は、認証・認可サーバ100から受け取った一次トークン登録アドレスを、例えば電子メール等により二次委託先担当者に送付する。ここで、一次委託先担当者は、見積もり等の目的で、複数の二次委託先担当者(見積もり段階なので厳密には候補者であるが、煩雑さを避けるためにこのような場合にも「二次委託先担当者」と呼ぶ)に対して一次トークン登録アドレスを送ることも考えられる。以降の処理は、一次トークン登録アドレスを渡した二次委託先担当者(あるいは候補者)毎に行われる。
(9) 二次委託先担当者は、一次委託先担当者から受け取った一次トークン登録アドレスにアクセスする。これにより、二次委託先担当者のWebブラウザ700から中間サーバ200に対して、一次トークンと認証・認可サーバ100へのリダイレクト指示とをパラメータとして含んだ、一次トークン登録処理へのアクセス指示がHTTPリクエストとして送信される。
(10)このHTTPリクエストを受けた中間サーバ200は、一次トークン登録処理を開始する。この処理では、まず状態セッションのセッションIDを発行する。
(11)また中間サーバ200は、状態セッション照合テーブル220に、発行したセッションIDと、HTTPリクエスト中に含まれる一次トークンとを対応付けて保存する。この時点でのトークン照合テーブル121、トークン管理テーブル123及び状態セッション照合テーブル220の状態を図6に示す。図6に示すように、この時点では、トークン照合テーブル121及びトークン管理テーブル123は図4に示したステップ(6)の時点と同じ状態だが、状態セッション照合テーブル220にはそのセッションIDと一次トークンとのペアが新たに登録されている。
(12)また中間サーバ200は、(9)のHTTPリクエストに対するレスポンスで、状態セッションのセッションID、及び一次トークンをCookie(クッキー)として二次委託先担当者のWebブラウザ700に設定する。さらに、中間サーバ200は、ステップ(9)のHTTPリクエストに含まれ、クエリとして一次トークンと中間サーバの二次トークン受付処理のエンドポイントURLを付加した文字列で表されるURIにリダイレクトする。このリダイレクトURIは、図7に示す二次トークン要求アドレスである。リダイレクトにより、Webブラウザ700から認証・認可サーバ100に対し、一次トークンと、中間サーバ200の二次トークン受付処理のエンドポイントURLがパラメータとして送られる。
(13)このリダイレクトを受けた認証・認可サーバ100は、ユーザ認証用の画面(認証情報を入力するためのWebページ)を二次委託先担当者のWebブラウザ700に返す。二次委託先担当者は、その認証用の画面にしたがって、ユーザ認証処理を行う。例えば、その画面に対して自分のユーザID及びパスワードを入力する。ここではこのユーザ認証は成功したとする。また認証・認可サーバ100は、Webブラウザ700にクライアント証明書の提示を要求する。Webブラウザ700には、前もって二次委託先担当者のクライアント証明書がインストールされている。Webブラウザ700は、その要求に応じて、そのクライアント証明書を認証・認可サーバ100に返す。なお、クライアント証明書は、認証局から発行された、その二次委託先担当者を証明するデジタル証明書である。
(14)クライアント証明書を受け取った認証・認可サーバ100では、委託先情報検証部110が、二次委託先担当者から提示されたクライアント証明書が証明書条件テーブル127に設定された証明書条件を満たすかどうかを判定する。証明書条件が満たされない場合、今回アクセスしてきた二次委託先担当者は委託元の課した二次委託先の条件を満たさないと言うことである。この場合、認証・認可サーバ100は、二次委託先担当者のWebブラウザ700に対し、二次委託先の条件を満たさないこと等を示すエラーメッセージを返し、処理を終了する。ここでは証明書条件が満たされたとし、説明を続ける。
(15)また委託先情報検証部110は、ステップ(13)のユーザ認証で確認した二次委託先担当者のユーザIDに対応するユーザ属性を属性プロバイダ400に問い合わせる。そして、この問合せにより属性プロバイダ400から取得したユーザ属性が、ユーザ属性条件テーブル129に設定されたユーザ属性条件を満たすかどうかを判定する。ユーザ属性条件が満たされない場合、今回アクセスしてきた二次委託先担当者は委託元の課した二次委託先の条件を満たさないので、認証・認可サーバ100は、二次委託先担当者のWebブラウザ700に対してエラーメッセージを返し、処理を終了する。ここではユーザ属性条件が満たされたとし、説明を続ける。
(16)この例では、ユーザ認証が成功し、証明書条件及びユーザ属性条件も満たされたので、その二次委託担当者は一次委託先担当者から権限を委譲される二次委託先として適格である。そこで認証・認可サーバ100は、その二次委託先担当者のために二次トークンを発行し、トークン照合テーブル121及びトークン管理テーブル123に対してその二次トークンの情報を反映する。すなわち、トークン照合テーブル121内の、ステップ(10)でリダイレクトのパラメータとして受け取った一次トークンに対応するレコード内の「二次トークン」列に、その発行した二次トークンの値を保存するとともに、トークン管理テーブル123に、その二次委託先担当者のユーザIDと対応づけてその二次トークンを保存する。この時点でのトークン照合テーブル121、トークン管理テーブル123及び状態セッション照合テーブル220の状態を図8に示す。図8に示すように、この時点では状態セッション照合テーブル220は図6に示したステップ(6)の時点と同じ状態だが、トークン照合テーブル121には一次トークンに対応する二次トークンが登録され、トークン管理テーブル123にはその二次トークンと二次委託先担当者のユーザIDのペアが追加(同テーブルの内容の2行目)されている。
(17)次に認証・認可サーバ100は、二次委託先担当者のWebブラウザ700を、中間サーバ200の二次トークン登録用のURL(以下、「二次トークン登録アドレス」という)にリダイレクトする。この二次トークン登録アドレスは、二次トークン要求アドレス(図7参照)内にパラメータとして含まれた中間サーバ200の二次トークン登録用のエンドポイントURLの後に、二次トークンがパラメータとして付加されたものである(図9参照)。このリダイレクトにより、Webブラウザ700から中間サーバ200に対して、二次トークンが伝達される。また、このときWebブラウザ700に保持された中間サーバ200のCookie(ステップ(12)で設定されたもの)が、中間サーバ200に送られる。
(18)リダイレクトされたアクセスを受けた中間サーバ200は、二次トークン登録アドレスのパラメータから二次トークンを抽出する。さらに、Webブラウザ700が提示したCookieからセッションIDと一次トークンを抽出する。
(19)次に中間サーバ200は、状態セッション照合テーブル220上で、ステップ(18)で抽出したセッションIDと一次トークンとが同一レコード上に保存されているかどうかを判定する。それらセッションIDと一次トークンとが同一レコード上に保存されていない場合、何らかの誤りが生じているということなので、この場合、中間サーバ200は二次委託先担当者のWebブラウザ700にエラーメッセージを送り、一連の処理を中止する。それらセッションIDと一次トークンとが同一レコード上に保存されていれば、正しいセッションが行われていると言うことなので、中間サーバ200は処理を続行する。ここではそれらセッションIDと一次トークンとが同一レコード上に保存されているとして説明を続ける。
(20)この場合、中間サーバ200は、二次トークン登録アドレスから抽出した二次トークンを、状態セッション照合テーブル220内の、そのセッションIDと一次トークンとを含むレコード内の、二次トークンのフィールドに登録する。この時点でのトークン照合テーブル121、トークン管理テーブル123及び状態セッション照合テーブル220の状態を図10に示す。図10に示すように、この時点ではトークン照合テーブル121及びトークン管理テーブル123は図8に示したステップ(16)の時点と同じ状態だが、状態セッション照合テーブル220には、ステップ(16)の時点では空欄だった二次トークンの欄に、今回抽出した二次トークンが登録されている。
(21)そして中間サーバ200は、Webブラウザ700へのレスポンスの際に、Webブラウザ700に対してその二次トークンをCookieとして設定する。これにより、Webブラウザ700は、中間サーバ200に対応するCookieとして、一次トークン、セッションID、及び二次トークンを保持していることとなる。Webブラウザ700は、それらCookieの期限が切れるまでは、中間サーバ200にアクセスする際には、それらCookieを中間サーバ200に送る。
(22)以上の二次トークン取得の処理を成功裏に終えた後、二次委託先担当者は、Webブラウザ700を操作して、文書管理システム300内に格納されている委託対象業務で用いる図面を取得するためのURL(「図面取得アドレス」)にアクセスする。図面取得アドレスは、図11に示すように、中間サーバ200の文書要求受付用のエンドポイントのURLの後に、委託対象業務で用いる図面の文書IDがパラメータとして付加されたものである。この図面取得アドレスは、例えば、委託元の担当者から一次委託先担当者へ電子メール等で伝達され、更に一次委託先担当者から二次委託先担当者へ電子メール等で伝達される。
(23)Webブラウザ700から図面取得アドレスにアクセスするHTTPリクエストを受けた中間サーバ200は、そのHTTPリクエストに対応づけてWebブラウザ700から送信されたCookieから、セッションIDと二次トークンを抽出する。
(24)次に中間サーバ200は、そのCookieから抽出したセッションIDと二次トークンとのペアを含んだレコードが状態セッション照合テーブル220内にあるか(すなわちそれら両者が互いに対応づけられているか)を判定する。そのセッションIDと二次トークンとのペアを含んだレコードが状態セッション照合テーブル220から見つからない場合、何らかのエラーが生じたということなので、中間サーバ200はWebブラウザ700にエラーメッセージを返し、処理を終了する。ここでは、そのセッションIDと二次トークンとのペアを含んだレコードが状態セッション照合テーブル220から見つかったものとして説明を進める。
(25)この場合、中間サーバ200は、ステップ(23)でWebブラウザ700から受け取ったHTTPリクエストに対してその二次トークンを付加し、二次トークン付加後のリクエストを文書管理システム300に転送する。ここで、中間サーバ200は、二次トークンを、UMAに準拠した単なるトークン(一次、二次の区別のないもの)としてリクエストに付加する。これにより、UMAに準拠した文書管理システム300は、その二次トークンをトークンと認識できる。
(26)中間サーバ200から転送されたリクエストを受け取った文書管理システム300では、トークン検証依頼部310が実行される。トークン検証依頼部310は、そのリクエストからトークン(二次トークン)と文書IDを抽出し、抽出したトークン及び文書IDを認証・認可サーバ100に送付して検証を依頼する。
(27)認証・認可サーバ100は、トークン照合テーブル121から、その検証依頼中のトークンを二次トークンとして持つレコードを探し、そのレコード中から一次トークンを取得する。そして、その一次トークンで、文書管理システム300上のその文書IDに対応する図面に対するアクセスが可能かどうかを検証する。すなわち、その一次トークンに対応するユーザIDをトークン管理テーブル123から求め、求めたユーザIDのその文書IDに対するアクセス権の情報をアクセス権テーブル125から求める。そして、求めたアクセス権により、その文書IDの図面にアクセスが可能かどうかを検証(判定)する。ここで、ステップ(26)での文書管理システム300から認証・認可サーバ100への検証依頼に、二次委託先担当者から要求された文書に対する操作の種類の情報を含め、この検証ステップ(27)で、認証・認可サーバ100が、求めたアクセス権によりその種類の操作が可能かどうかを判定してもよい。
(28)認証・認可サーバ100は、ステップ(27)の検証結果を、文書管理システム300に応答する。
(29)文書管理システム300は、ステップ(28)の応答が「アクセス権なし」であれば、中間サーバ200を介して二次委託先担当者のWebブラウザ700に対して、要求された図面にアクセスできない旨などを示すエラーメッセージを返し、図面を提供せずに処理を終える。逆に、ステップ(28)の応答が、読出権等のアクセス権があることを示すものであれば、文書管理システム300は、中間サーバ200を経由してWebブラウザ700に対して図面を提供する。
<一次委託先担当者との間での処理>
次に、図12を参照して、一次委託先担当者の認証から一次トークンの発行までの処理(図1のステップ(3)〜(6))の流れを更に詳しく説明する。以下の説明では、図12に示した「(1)」等の括弧付きの処理順序の番号に従って、順に説明を行う。
(1) 一次委託先担当者は、Webブラウザ600からアクセス権委譲処理のURLにアクセスする。このURLには、パラメータとして、アクセス権委譲の対象となる図面の文書IDが含まれている。
(2) 認証・認可サーバ100は、その一次委託先担当者が認証・認可サーバ100にログイン済みかどうか確認する。ログイン済みでなければ、以下のステップ(3)〜(5)の処理を実行する。
(3) 認証・認可サーバ100は、ログイン認証画面(ユーザID/パスワードの入力画面)を一次委託先担当者のWebブラウザ700に返す。
(4) 一次委託先担当者は、ログイン認証画面にユーザID及びパスワードを入力し、認証・認可サーバ100に送信する。
(5) 認証・認可サーバ100は、Webブラウザ600から受け取ったユーザIDとパスワードのペアが、自分が保持している正当なユーザIDとパスワードのペアに合致するかどうかを検証する。ここではこの検証が成功したものとする(ログイン認証成功)。
(6) ステップ(2)で一次委託先担当者が既にログイン済みであると分かった場合、又はステップ(3)〜(5)のログイン認証が成功した場合、認証・認可サーバ100は、一次トークンを発行する。
(7) 認証・認可サーバ100は、トークン照合テーブル121の「一次トークン」列に、ステップ(6)で発行した一次トークンを保存する。
(8) 認証・認可サーバ100は、トークン管理テーブル123に、一次委託先担当者のユーザIDと紐付けてその一次トークンを保存する。
(9) 認証・認可サーバ100は、一次委託先担当者に一次トークン登録アドレスを送付する。この送付には、例えばS/MIMEメール等、第三者が閲覧できない方法を用いることが考えられる。ただし、送付の仕方はこれに限定されるものではない。
<二次委託先担当者との間での処理>
次に、図13及び図14を参照して、二次委託先担当者の認証から二次トークンの発行までの処理(図1のステップ(9)〜(17))の流れを更に詳しく説明する。以下の説明では、図13及び図14に示した「(1)」等の括弧付きの処理順序の番号に従って、順に説明を行う。
(1) 二次委託先担当者は、Webブラウザ700から一次委託先担当者から受け取った一次トークン登録アドレス(図5参照)にアクセスする。一次トークン登録アドレスは、中間サーバ200の一次トークン登録処理用のURLであり、一次トークンをパラメータとして含んでいる。
(2) アクセスを受けた中間サーバ200は、状態セッションのセッションIDを発行する。
(3) 中間サーバ200は、状態セッション照合テーブル220に、そのセッションIDと、一次トークン登録アドレスに含まれる一次トークンとを対応付けて保存する。
(4) 中間サーバ200は、Webブラウザ700を二次トークン要求アドレス(図7参照)にリダイレクトする。二次トークン要求アドレスは、認証・認可サーバ100のエンドポイントのURLを示している。
(5) 二次委託先担当者(Webブラウザ700)からアクセスを受けた認証・認可サーバ100は、二次委託先担当者が認証・認可サーバ100にログイン済みかどうか確認する。ログイン済みでない場合に、以下のステップ(6)〜(8)の処理を実行する。
(6) 認証・認可サーバ100は、ログイン認証画面をWebブラウザ700に返す。
(7) 二次委託先担当者は、そのログイン認証画面にユーザID及びパスワードを入力する。Webブラウザ700は、入力されたユーザID及びパスワードを認証・認可サーバ100に送信する。
(8) 認証・認可サーバ100は、Webブラウザ700から受け取ったユーザID及びパスワードが、自分が保持している正当なユーザID及びパスワードのペアに該当するかどうかを検証する。ここでは、検証が成功したものとする(ログイン認証成功)。
(9) ステップ(5)で一次委託先担当者が既にログイン済みであると分かった場合、又はステップ(6)〜(8)のログイン認証が成功した場合、認証・認可サーバ100は、二次委託先担当者(Webブラウザ700)にクライアント証明書の提示を要求する。
(10)二次委託先担当者は、クライアント証明書を認証・認可サーバ100に送付する。
(11)認証・認可サーバ100は、受け取ったクライアント証明書が信頼する証明機関が発行したものかどうかを検証する。
(12)クライアント証明書が信頼する証明機関が発行したものではない場合、エラー画面を返して処理を終了する。
(13) クライアント証明書が信頼する証明機関が発行したものである場合、認証・認可サーバ100は、そのクライアント証明書に含まれる属性情報が、証明書条件テーブル127に含まれる証明書条件を満たすかどうか判定する。以下、図14の処理に移る。
(14)クライアント証明書が証明書条件を満たさない場合、エラー画面を返して処理を終了する。
(15)クライアント証明書が証明書条件を満たす場合、認証・認可サーバ100は、二次委託先担当者のユーザIDに対応するユーザ属性を属性プロバイダ400に問い合わせる。
(16)認証・認可サーバ100は、ステップ(15)で取得したユーザ属性が、ユーザ属性条件テーブル129に保持されるユーザ属性条件を満たすかどうか判定する。
(17)ユーザ属性条件が満たされない場合、エラー画面を返して処理を終了する。
(18)ユーザ属性条件が満たされた場合、認証・認可サーバ100は、二次トークンを発行する。
(19)認証・認可サーバ100は、一次トークン登録アドレス(ステップ(1)参照)から抽出した一次トークンに対応する「二次トークン」として、その二次トークンをトークン照合テーブル121に保存する。
(20)認証・認可サーバ100は、トークン管理テーブル123に、二次委託先担当者のユーザIDと紐付けてその二次トークンを保存する。
(21)認証・認可サーバ100は、二次委託先担当者のWebブラウザ700を、二次トークン登録アドレスにリダイレクトする。
<変形例>
以上、本発明の一つの実施形態を説明した。
以上の実施形態では、委託元の会社全体で共通の証明書条件テーブル127及びユーザ属性条件テーブル129を用いる場合を例にとった。
この代わりに、証明書条件テーブル127及びユーザ属性条件テーブル129を図面毎に設定する仕組みを採用している場合には、図1のステップ(2)において、委託元担当者が、一次委託先担当者に委託する図面に適用する証明書条件及びユーザ属性条件を指定する。指定された証明書条件及びユーザ属性条件を示す証明書条件テーブル127及びユーザ属性条件テーブル129が、その図面の文書IDと対応づけて認証・認可サーバ100に登録される。この場合、認証・認可サーバ100は、その図面についてのアクセス権委譲用のURLを生成し、そのURLを委託元担当者に提供する。このURLは、その図面の文書IDに対応づけられている(例えばその文書ID又はこれに一意に関連付けられた情報をパラメータとして含んでいる)。委託元担当者は、そのURLを一次委託先担当者に送信する。一次委託先担当者は、図1のステップ(3)において、そのURLにアクセスする。認証・認可サーバ100は、そのURLへのアクセス要求(HTTPリクエスト)に含まれる情報から、そのURLに対応する文書IDを特定する。そして、ステップ(4)では、認証した一次委託先担当者が、その文書IDに対するアクセス権を持つかどうかをアクセス権テーブル125を参照して確認してもよい。一次委託先担当者がその文書IDに対するアクセス権を持たない場合、一次トークンを発行しない。一次委託先担当者がその文書IDに対するアクセス権を持つ場合には、ステップ(5)で一次トークンを発行する。この例では、トークン照合テーブル121に文書IDの欄を設け、ステップ(6)ではトークン照合テーブル121に、発行した一次トークンとその文書IDとを登録する。また、ステップ(12)で中間サーバ200から二次委託先担当者の二次トークン要求のリダイレクトを受けた認証・認可サーバ100は、そのリダイレクトの際に受け取った一次トークンに対応する文書IDをトークン照合テーブル121から求める。そして、ステップ(13)〜(15)では、その求めた文書IDに対応する証明書条件テーブル127及びユーザ属性条件テーブル129を用いて、二次委託先担当者が、委託元が想定する当該図面についての二次委託先として適格であるかどうかを判定する。
また、証明書条件テーブル127及びユーザ属性条件テーブル129を委託元会社の部署毎、又は委託元の担当者毎に設定する仕組みを採用している場合には、証明書条件テーブル127及びユーザ属性条件テーブル129は、図1のステップ(2)の時点ではすでに設定済みであると考えられる。この例では、認証・認可サーバ100は、ステップ(2)で、その図面についてのアクセス権委譲用のURLを生成し、そのURLを委託元担当者に提供する。このURLは、委託元担当者のユーザIDに対応づけられている(例えばそのユーザID又はこれに一意に関連付けられた情報をパラメータとして含んでいる)。委託元担当者は、そのURLを一次委託先担当者に送信する。一次委託先担当者は、図1のステップ(3)において、そのURLにアクセスする。認証・認可サーバ100は、そのURLへのアクセス要求(HTTPリクエスト)に含まれる情報から、そのURLに対応するユーザID(委託元担当者)を特定する。この例では、トークン照合テーブル121に「委託元担当者のユーザID」の欄を設け、ステップ(6)ではトークン照合テーブル121に、発行した一次トークンとそのユーザIDとを登録する。また、ステップ(12)で中間サーバ200から二次委託先担当者の二次トークン要求のリダイレクトを受けた認証・認可サーバ100は、そのリダイレクトの際に受け取った一次トークンに対応するユーザIDをトークン照合テーブル121から求める。そして、ステップ(13)〜(15)では、その求めたユーザIDに対応する証明書条件テーブル127及びユーザ属性条件テーブル129(又はそのユーザIDが属する部署を組織情報データベースから求め、その部署に対応する証明書条件テーブル127及びユーザ属性条件テーブル129)を用いて、二次委託先担当者が、委託元が想定する当該図面についての二次委託先として適格であるかどうかを判定する。
また以上に説明した実施形態では、一次トークンは一次委託先担当者のユーザIDに対応づけられるのみ(トークン管理テーブル123。図2参照)であり、対象の文書を限定していない。このため、一次委託先担当者から一次トークンを受け取った二次委託先担当者は、一次委託先担当者がアクセス権を持つすべての文書(図面)にアクセスできる可能性がある。これに対し、変形例として、対象となる文書を特定して一次トークンを発行するようにしてもよい。この変形例では、図1のステップ(4)の一次委託先担当者の認証の成功後、認証・認可サーバ100は、一次委託先担当者に対し、二次委託先に権限を委譲する文書を選択させる。ここでは、認証・認可サーバ100は、例えば、アクセス権テーブル125からその一次委託先担当者がアクセス権を持つ文書を特定し、特定した文書のリストをWebブラウザ600に返し、一次委託先担当者がそのリストから権限委譲の対象とする文書を選択すればよい。認証・認可サーバ100は、その指定された文書についての一次トークンを発行する。すなわち、この変形例では、トークン照合テーブル121には、文書IDの欄が設けられ、認証・認可サーバ100は、発行した一次トークンを、一次委託先担当者が選択した文書の文書IDと対応づけて、トークン照合テーブル121に登録する。そして、認証・認可サーバ100は、文書管理システム300からトークン(二次トークン)と文書IDを含む検証依頼を受けた場合、図1のステップ(27)にて、そのトークンを二次トークンとして持ち、かつその文書IDを含んだレコードをトークン照合テーブル121から求める。そのようなレコードが見つかれば、図1のステップ(27)と同様、そのレコード中の一次トークンに対応するユーザ(一次委託先担当者)のアクセス権で、その文書IDにアクセス可能かどうかを判定する。一方、そのようなレコードが見つからない場合は、アクセス権無しと判定する。
また、別の変形例として、認証・認可サーバ100に、二次委託先用アクセス権テーブルと二次委託先用アクセス権設定部を追加してもよい(いずれも図示省略)。
二次委託先用アクセス権テーブルは、二次委託先担当者に付与するアクセス権を、一次トークンと対応づけて保持するテーブルである。
二次委託先用アクセス権設定部は、一次委託先担当者から二次委託先担当者に付与するアクセス権の設定を受け付ける。
すなわち、二次委託先用アクセス権設定部は、一次トークンの発行後、アクセス権設定用の画面(Webページ)を一次委託先担当者のWebブラウザ600に送信する。より詳しくは、この例では、一次トークンの対象となる文書IDが1つに特定されており、その文書IDに対するその一次委託先担当者のアクセス権をアクセス権テーブル125から求め、求めたアクセス権の範囲内のアクセス権を選択可能としたユーザインタフェース部品を含んだWebページを作成し、Webブラウザ600に送信する。このWebページに対して一次委託先担当者が入力したアクセス権の情報が、その一次トークンに対応づけて、二次委託先用アクセス権テーブルに登録される。
認証・認可サーバ100は、文書管理システム300から二次トークンの検証依頼(図1のステップ(26))を受け取ると、その二次トークンに対応する一次トークンをトークン照合テーブル121から求める。そして、求めた一次トークンに対応するアクセス権情報を二次委託先用アクセス権テーブルから求め、求めたアクセス権情報に従い、当該文書IDを持つ図面に対する二次委託先担当者の操作の可否、あるいは許可可能な操作の種類を判定する。
以上に例示した認証・認可サーバ100、中間サーバ200及び文書管理システム300は、例えば、汎用のコンピュータに当該装置の各機能モジュールの処理を表すプログラムを実行させることにより実現してもよい。ここで言うコンピュータは、例えば、ハードウエアとして、CPU等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)等のメモリ(一次記憶)、HDD(ハードディスクドライブ)やSSD(ソリッドステートドライブ)、フラッシュメモリ等の二次記憶を制御する二次記憶コントローラ、各種I/O(入出力)インタフェース、無線又は有線のネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばI/Oインタフェース経由で、CDやDVD、ブルーレイディスクなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、フラッシュメモリ等の二次記憶装置に保存され、コンピュータにインストールされる。二次記憶装置に記憶されたプログラムがRAMに読み出されCPU等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。
以上の実施形態及び変形例において、認証・認可サーバ100と中間サーバ200が同一のコンピュータにインストールされていてもよい。また、認証・認可サーバ100と中間サーバ200のうちの一方又は両方が、文書管理システム300と同一のコンピュータにインストールされていてもよい。