(57)【特許請求の範囲】
【請求項１】
情報処理装置が、
発行元の装置が提供するサービスに対するユーザの利用権を証明する証明情報であり、一の証明情報に基づき他の証明情報を発行する連鎖的な発行処理が行われた回数と、発行元の装置の識別子とを含む証明情報を、前記ユーザの使用する端末装置から受信し、
前記受信した証明情報の発行元の装置の識別子が、前記情報処理装置以外の識別子である場合に、前記受信した証明情報に示される回数に１を加算した回数と、前記情報処理装置の識別子とを含み、前記情報処理装置が提供するサービスに対する前記ユーザの利用権を証明する証明情報を生成し、
前記生成した証明情報を、前記端末装置に送信する、
サービス利用管理方法。
【請求項２】
前記証明情報には、証明情報を発行した装置の識別子のリストが含まれ、該証明情報の連鎖的な発行処理が行われた回数が、該リスト内の装置の識別子の数で表されており、
前記情報処理装置は、
前記証明情報の生成の際に、前記受信した証明情報に含まれている前記リスト内の識別子の数を計数して、該証明情報に対して行われた連鎖的な発行処理の回数を認識し、前記受信した証明情報に含まれている前記リストを更新し、該更新されたリストを、前記生成した証明情報に含める、
ことを特徴とする請求項１記載のサービス利用管理方法。
【請求項３】
前記情報処理装置は、
前記証明情報の生成の際に、前記受信した証明情報に含まれている前記リスト内に、前記情報処理装置の識別子である第一の識別子が含まれているかどうかを判断し、該第一の識別子が含まれている場合、該リストから該第一の識別子以降の識別子を削除して得られるリストを、前記更新されたリストとする、
ことを特徴とする請求項２記載のサービス利用管理方法。
【請求項４】
前記情報処理装置は、
前記証明情報の生成の際に、前記受信した証明情報に示される回数が、予め設定されている閾値以下か否かを判断し、該閾値以下でなければ、証明情報の生成を抑止する、
ことを特徴とする請求項１乃至３のいずれかに記載のサービス利用管理方法。
【請求項５】
前記情報処理装置は、
前記証明情報の生成の際に、前記情報処理装置との間で関係を有する装置の識別子が設定された関係情報を参照し、前記受信した証明情報の発行元の装置の識別子が、前記関係情報に登録されていなければ、証明情報の生成を抑止する、
ことを特徴とする請求項１乃至４のいずれかに記載のサービス利用管理方法。
【請求項６】
前記証明情報には、該証明情報を発行した装置が提供するサービス上での前記ユーザの役割が示されており、
前記情報処理装置は、
前記証明情報の生成の際に、前記情報処理装置との間で関係を有する装置の識別子、前記情報処理装置に対する該装置の関係、該装置で提供されたサービス上での役割と該関係との組に応じた閾値が予め設定された関係情報を参照し、前記受信した証明情報の発行元の装置の識別子が、前記情報処理装置との間で関係を有する装置の識別子であり、かつ前記受信した証明情報に示される回数が、前記受信した証明情報を発行した装置の関係と、該装置が提供するサービス上での前記ユーザの役割との組に応じた閾値以下であるという要件を満たすか否かを判断し、該要件を満たした場合、証明情報を生成し、該要件を満たさない場合、証明情報の生成を抑止する、
ことを特徴とする請求項１乃至５のいずれかに記載のサービス利用管理方法。
【請求項７】
前記証明情報には、該証明情報を発行した装置が提供するサービス上での前記ユーザの役割が示されており、
前記情報処理装置は、
前記証明情報の生成の際に、前記情報処理装置との間で関係を有する装置の識別子、前記情報処理装置に対する該装置の関係、該装置で提供されたサービス上での役割と該関係との組に応じた、前記情報処理装置で提供するサービス上での役割が予め設定された関係情報を参照し、前記受信した証明情報の発行元の装置の識別子に対応する装置の関係と、該装置が提供するサービス上での前記ユーザの役割との組に応じた、前記情報処理装置で提供するサービス上での役割を決定し、該決定した役割を含む証明情報を生成する、
ことを特徴とする請求項１乃至６のいずれかに記載のサービス利用管理方法。
【請求項８】
情報処理装置に、
発行元の装置が提供するサービスに対するユーザの利用権を証明する証明情報であり、一の証明情報に基づき他の証明情報を発行する連鎖的な発行処理が行われた回数と、発行元の装置の識別子とを含む証明情報を、前記ユーザの使用する端末装置から受信し、
前記受信した証明情報の発行元の装置の識別子が、前記情報処理装置以外の識別子である場合に、前記受信した証明情報に示される回数に１を加算した回数と、前記情報処理装置の識別子とを含み、前記情報処理装置が提供するサービスに対する前記ユーザの利用権を証明する証明情報を生成し、
前記生成した証明情報を、前記端末装置に送信する、
処理を実行させるプログラム。
【請求項９】
情報処理装置であって、
発行元の装置が提供するサービスに対するユーザの利用権を証明する証明情報であり、一の証明情報に基づき他の証明情報を発行する連鎖的な発行処理が行われた回数と、発行元の装置の識別子とを含む証明情報を、前記ユーザの使用する端末装置から受信する受信手段と、
前記受信した証明情報の発行元の装置の識別子が、前記情報処理装置以外の識別子である場合に、前記受信した証明情報に示される回数に１を加算した回数と、前記情報処理装置の識別子とを含み、前記情報処理装置が提供するサービスに対する前記ユーザの利用権を証明する証明情報を生成する生成手段と、
前記生成した証明情報を、前記端末装置に送信する送信手段と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はサービス利用管理方法、プログラム、および情報処理装置に関する。
【背景技術】
【０００２】
コンピュータネットワーク上のサーバからサービスの提供を受けるユーザは、複数のサーバそれぞれが提供するサービスを利用する場合がある。このような場合において、ユーザが、サービスの提供を利用する度に、各サーバで個別に個人認証を受けていたのでは、ユーザの手間が大きい。またこのような場合、各サーバにおいて、自己がサービスを提供するすべてのユーザのアカウント情報を個別に管理することとなり、サーバの管理者にとっての管理負担も過大となる。
【０００３】
そこで、シングル・サイン・オンという技術がある。シングル・サイン・オンは、一度の認証処理によって複数のコンピュータ上のリソースを利用できるようにする認証技術である。一般的に、シングル・サイン・オンでは、ユーザが認証を受けたサーバと所定の関係を有するサーバにおいて、そのユーザに対して、そのサーバでのユーザ認証を経ずにサービスが提供される。例えば、複数のドメインに存在する複数のネットワークにアクセスするためのシングル・サイン・オンを可能にする技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００８−５０６１３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ユーザ認証を行ったサーバは、例えば、サービスを利用する権利があることを証明する情報（以下、証明情報と呼ぶ）を、ユーザ宛に発行することができる。この場合、ユーザは、発行された証明情報を付与した要求をサーバに送信することで、サーバからサービスの提供を受けることができる。ここで、あるサーバが発行した証明情報を、別のサーバでも利用できるようにすれば、ユーザは、１つのサーバで認証を受けるだけで、複数のサーバのサービスを利用可能となる。
【０００６】
例えば、ユーザは、認証を受けた第１のサーバで発行された証明情報を、第２のサーバに送信する。第２のサーバは、処理要求に付与された証明情報に基づいて、そのユーザがサービスを利用する権利を有していることを認証し、自己のサービスを利用するための証明情報をそのユーザに対して連鎖的に発行する。すると、第２のサーバで発行された証明情報を用いて、ユーザは、第２のサーバからサービスの提供を受けることが可能となる。このようなシステムを構築すると、ユーザは、第２のサーバで連鎖的に発行された証明情報を用いて、第３のサーバから連鎖的な証明情報の発行を受け、第３のサーバからサービスの提供を受けることも可能となる。
【０００７】
しかし、このような連鎖的な証明情報の発行を無制限に許容すると、ユーザがサービスの提供を受けることができるサーバの範囲が無制限に広がってしまう。これは、サーバの管理者の立場から見ると、信頼できないユーザにまで、そのサーバを利用可能なユーザの範囲が広がってしまう可能性があることを意味する。このような連鎖的な証明情報の発行の無制限な繰り返しを抑止するには、連鎖的な証明情報の発行の回数を制限することが考えられるが、現在は、連鎖的な証明情報の発行回数を把握する技術がない。
【０００８】
１つの側面では、本発明は、サービスの利用権を証明する情報の連鎖的な発行回数を把握可能とするサービス利用管理方法、プログラム、および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、情報処理装置が、発行元の装置が提供するサービスに対するユーザの利用権を証明する証明情報であり、一の証明情報に基づき他の証明情報を発行する連鎖的な発行処理が行われた回数と、発行元の装置の識別子とを含む証明情報を、ユーザの使用する端末装置から受信し、受信した証明情報の発行元の装置の識別子が、情報処理装置以外の識別子である場合に、受信した証明情報に示される回数に１を加算した回数と、情報処理装置の識別子とを含み、情報処理装置が提供するサービスに対するユーザの利用権を証明する証明情報を生成し、生成した証明情報を、端末装置に送信する、サービス利用管理方法が提供される。
【発明の効果】
【００１０】
１態様によれば、サービスの利用権を証明する情報の連鎖発行回数を把握できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係るシステムの構成の一例を示す図である。
【図２】第１の実施の形態における連鎖的な証明情報の発行処理の手順の一例を示すシーケンス図である。
【図３】第２の実施の形態のシステム構成例を示す図である。
【図４】本実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。
【図５】複数のサービスを連携させて実行する業務の一例を示す図である。
【図６】第２の実施の形態における各装置の機能の一例を示す図である。
【図７】信頼関係情報記憶部の格納情報の一例を示す図である。
【図８】トークンに含まれる情報の一例を示す図である。
【図９】トークンを連鎖的に発行することによるサービス提供処理の第１の例を示すシーケンス図である。
【図１０】トークンを連鎖的に発行することによるサービス提供処理の第２の例を示すシーケンス図である。
【図１１】関係に基づくトークン発行処理の手順の一例を示すフローチャートである。
【図１２】有効性判定処理の手順の一例を示すフローチャートである。
【図１３】トークン生成処理の手順の一例を示すフローチャートである。
【図１４】発行されるトークンの推移例を示す第１の図である。
【図１５】発行されるトークンの推移例を示す第２の図である。
【図１６】第３の実施の形態におけるトークンに含まれる情報の一例を示す図である。
【図１７】発行履歴の一例を示す図である。
【図１８】第３の実施の形態における有効性判定処理の手順の一例を示すフローチャートである。
【図１９】第３の実施の形態におけるトークン生成処理の手順の一例を示すフローチャートである。
【図２０】第３の実施の形態において発行されるトークンの推移例を示す第１の図である。
【図２１】第３の実施の形態において発行されるトークンの推移例を示す第２の図である。
【図２２】第４の実施の形態における信頼関係情報記憶部の格納情報の一例を示す図である。
【図２３】第４の実施の形態におけるユーザ管理テーブルのデータ構造の一例を示す図である。
【図２４】第４の実施の形態における関係定義テーブルのデータ構造の一例を示す図である。
【図２５】役割割当ポリシ定義テーブルのデータ構造の一例を示す図である。
【図２６】サービス定義テーブルのデータ構造の一例を示す図である。
【図２７】第４の実施の形態におけるトークンに含まれる情報の一例を示す図である。
【図２８】自身が認証したユーザへのトークン発行処理の手順の一例を示すフローチャートである。
【図２９】関係に基づくトークン発行処理の手順の一例を示すフローチャートである。
【図３０】第４の実施の形態におけるトークン生成処理の手順の一例を示すフローチャートである。
【図３１】第５の実施の形態におけるトークンに含まれる情報の一例を示す図である。
【図３２】第５の実施の形態におけるトークン生成処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず第１の実施の形態について説明する。第１の実施の形態は、他の装置でユーザ認証されたユーザに対して発行された証明情報に基づいて、自装置で提供するサービスを利用する権利を証明する証明情報を連鎖的に発行する際に、連鎖的な証明情報の発行を行った回数をカウントアップするものである。
【００１３】
図１は、第１の実施の形態に係るシステムの構成の一例を示す図である。第１の実施の形態では、ネットワーク６を介して複数の情報処理装置１〜３と、ユーザ４が使用する端末装置５とが接続されている。情報処理装置１〜３は、端末装置５からの要求に応じて、サービスを提供する。ユーザ４は、端末装置５を用いて情報処理装置１〜３で提供されるサービスを利用する。また、情報処理装置１〜３は、予め登録されたアカウント情報に基づくユーザ認証機能を有している。そして情報処理装置１〜３は、ユーザ認証を行ったユーザに対して、自装置内で提供するサービスに対するユーザの利用権を証明する証明情報を発行することができる。
【００１４】
さらに情報処理装置１〜３は、他の装置で発行された証明情報に基づいて、連鎖的に、装置内で提供するサービスに対するユーザの利用権を証明する証明情報を発行することもできる。連鎖的に証明情報を発行する場合、情報処理装置１〜３は、連鎖的な証明情報の発行を行った回数を、認証情報内に設定する。図１には、代表的に、情報処理装置２における連鎖的な証明情報の発行を行うための機能を示している。
【００１５】
情報処理装置２は、連鎖的な証明情報の発行を行うために、受信手段２ａ、生成手段２ｂ、および送信手段２ｃを有する。
受信手段２ａは、発行元の装置が提供するサービスに対するユーザの利用権を証明する証明情報を、ユーザ４の使用する端末装置５から受信する。証明情報は、一の証明情報に基づき他の証明情報を発行する連鎖的な処理が行われた回数と、発行元の装置の識別子とが含まれる。
【００１６】
生成手段２ｂは、受信した証明情報の発行元の装置の識別子が、情報処理装置以外の識別子の場合に、情報処理装置２が提供するサービスに対するユーザ４の利用権を証明する証明情報を生成する。生成される証明情報には、受信した証明情報に示される回数に１を加算した回数と、情報処理装置２の識別子とが含まれる。
【００１７】
送信手段２ｃは、生成した証明情報を、端末装置５に送信する。
なお情報処理装置２と同様の機能を、他の情報処理装置１，３も有している。また受信手段２ａ、生成手段２ｂ、および送信手段２ｃは、情報処理装置が有するＣＰＵ（Central Processing Unit）により実現することができる。また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
【００１８】
次に、ユーザ４が情報処理装置３でユーザ認証を受け、情報処理装置１のサービスを利用する場合を例に採り、連鎖的な証明情報の発行処理の手順について説明する。
図２は、第１の実施の形態における連鎖的な証明情報の発行処理の手順の一例を示すシーケンス図である。図２の例では、情報処理装置１で提供されるサービスを「サービスＡ」、情報処理装置２で提供されるサービスを「サービスＢ」、情報処理装置３で提供されるサービスを「サービスＣ」とする。以下、図２に示す処理をステップ番号に沿って説明する。
【００１９】
［ステップＳ１］ユーザ４は、端末装置５に対して、情報処理装置３へのログイン操作を行う。例えばユーザ４は、認証情報（ユーザＩＤとパスワード）を端末装置５に入力する。
【００２０】
［ステップＳ２］端末装置５は、情報処理装置３に対して、認証情報を送信する。
［ステップＳ３］情報処理装置３は、認証情報に基づいて、ユーザ認証を行う。例えば情報処理装置３は、予め登録されたアカウント情報の中に、端末装置５から送られた認証情報に合致するアカウント情報があるか否かを判断する。情報処理装置３は、該当するアカウント情報があれば、ユーザ４を、そのアカウント情報に対応するユーザであると認証する。
【００２１】
［ステップＳ４］情報処理装置３は、ユーザ認証に成功すると、認証結果を端末装置５に応答する。
［ステップＳ５］端末装置５は、認証結果をモニタなどに表示する。
【００２２】
［ステップＳ６］ユーザ認証が成功したことを認識したユーザ４は、端末装置５に対して、サービスＡへのアクセスが必要となる操作を行う。
［ステップＳ７］端末装置５は、ユーザ４の操作に応答し、ユーザ認証を行った情報処理装置３に対して証明情報発行要求を送信する。例えば、証明情報発行要求の送信は、認証情報送信と同じセッションで行われる。
【００２３】
［ステップＳ８］情報処理装置３は、ユーザ認証を行ったユーザ４からの証明情報発行要求に応じて、サービスＣをユーザ４が利用する権利を証明する証明情報を発行する。例えば情報処理装置３は、認証情報を受信したセッションと同じセッションで証明情報発行要求を受信したことで、ユーザ認証を行ったユーザからの証明情報発行要求であると認識する。このとき発行される証明情報には、連鎖的な証明情報の発行処理の回数として「０」が設定される。また、証明情報には、発行元の装置の識別子として、情報処理装置３の識別子が含まれる。
【００２４】
［ステップＳ９］情報処理装置３は、発行したサービスＣ用の証明情報を端末装置５に送信する。
［ステップＳ１０］端末装置５は、サービスＣ用の証明情報を情報処理装置２に送信する。例えば端末装置５は、証明情報発行要求にサービスＣ用の証明情報を付与し、サービスＣ用の証明情報を含む証明情報発行要求を、情報処理装置２に送信する。
【００２５】
［ステップＳ１１］情報処理装置２は、自身以外の情報処理装置３が発行した証明情報であることを確認し、自身のサービスＢを利用する権利を証明する証明情報を、連鎖的に発行する。このとき発行される証明情報には、連鎖的な証明情報の発行処理の回数として「１」が設定される。
【００２６】
例えば情報処理装置２では、端末装置５から送られた証明情報を、受信手段２ａが受信する。受信手段２ａは、受信した証明情報を、生成手段２ｂに転送する。
生成手段２ｂは、取得した証明情報に、発行元の装置の識別子として情報処理装置３の識別子が設定されていることで、自身以外の装置で発行された証明情報であると認識する。次に生成手段２ｂは、情報処理装置２が提供するサービスＢに対するユーザ４の利用権を証明する証明情報を生成する。生成される証明情報には、受信した証明情報に示される回数に１を加算した回数と、情報処理装置２の識別子とが含まれる。受信したサービスＣ用の証明情報に示される回数は「０」であるため、生成手段２ｂが生成した証明情報には回数「１」が設定される。生成手段２ｂは、生成された証明情報を送信手段２ｃに渡す。
【００２７】
［ステップＳ１２］情報処理装置２の送信手段２ｃは、生成手段２ｂが生成した証明情報を、端末装置５に送信する。
［ステップＳ１３］端末装置５は、サービスＢ用の証明情報を情報処理装置１に送信する。例えば端末装置５は、証明情報発行要求にサービスＢ用の証明情報を付与し、サービスＢ用の証明情報を含む証明情報発行要求を、情報処理装置１に送信する。
【００２８】
［ステップＳ１４］情報処理装置１は、自身以外の情報処理装置２が発行した証明情報であることを確認し、自身のサービスＡを利用する権利を証明する証明情報を、連鎖的に発行する。このとき発行される証明情報には、連鎖的な証明情報の発行処理の回数として「２」が設定される。情報処理装置１による連鎖的な証明情報の発行処理の詳細は、情報処理装置２におけるステップＳ１１の処理と同様である。
【００２９】
［ステップＳ１５］情報処理装置１は、サービスＡ用の証明情報を端末装置５に送信する。
［ステップＳ１６］端末装置５は、サービスＡ用の証明情報を付与したサービス要求を、情報処理装置１に送信する。
【００３０】
［ステップＳ１７］情報処理装置１は、サービスＡ用の証明情報が付与されていることで、サービスＡを利用する権利を有するユーザからのサービス要求であると判断し、サービス要求に従った処理を実行する。そして情報処理装置１は、処理の実行結果を端末装置５に応答する。
【００３１】
［ステップＳ１８］端末装置５は、情報処理装置１から応答された処理結果を表示する。
このようにして、連鎖的な証明情報の発行を行う際に、その証明情報に、連鎖的な証明情報の発行を行った回数を付与することができる。その結果、各情報処理装置では、連鎖的な証明情報の発行が行われた回数を把握可能となり、その回数に基づいて、さまざまな制御を行うことができる。例えば、受信した証明情報に示される、連鎖的な証明情報の発行が行われた回数が、予め設定された閾値を超えた場合、証明情報の発行を抑止することができる。
【００３２】
しかも第１の実施の形態では、各情報処理装置１〜３は、受信した証明情報の発行元の装置が、他の装置である場合にのみ、連鎖的な証明情報の発行処理の回数をインクリメントした証明情報の発行を行う。これにより、同一の情報処理装置が繰り返し証明情報を発行することで発行回数がカウントアップされることを抑止できる。その結果、関連する装置間の連鎖的な証明情報の発行回数を、正確に把握することが可能となる。すなわち、同一の情報処理装置が繰り返し証明情報を発行しても、それによって、ユーザがサービスの提供を受けることが可能なサーバの範囲が広がるわけではない。そのため、同一の情報処理装置が繰り返し証明情報を発行した場合の発行回数のカウントアップを抑止することで、ユーザがサービスの提供を受けることができるサーバの範囲が広がった場合にのみ、発行回数がカウントアップされる。このようにして得られた発行回数は、ユーザがサービスの提供を受けることが可能なサーバの範囲を適切に表していることとなる。
【００３３】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、サービスを利用する権利を証明する証明情報に、証明情報の連鎖発行回数のカウンタを設けるものである。なお、第２の実施の形態では、証明情報の一例としてトークンを用いる。トークンには、発行者や連鎖発行回数以外に、電子署名を付与することができる。第２の実施の形態では、各サーバは、連鎖的なトークンの発行を行うごとに、カウンタの値をカウントアップする。
【００３４】
図３は、第２の実施の形態のシステム構成例を示す図である。第２の実施の形態のシステム構成例を示す図である。第２の実施の形態では、複数のサーバ１００，２００，３００，４００，・・・がネットワーク１０を介して接続されている。またネットワーク１０には、複数のユーザ２１，２２，２３，２４，・・・それぞれが使用する端末装置３１，３２，３３，３４，・・・が接続されている。
【００３５】
ユーザ２１，２２，２３，２４，・・・は、それぞれ、複数のサーバ１００，２００，３００，４００，・・・のうちの少なくとも１つのサーバに、ユーザアカウントを有している。例えばユーザ２１はサーバ１００にユーザアカウントを有し、ユーザ２２はサーバ２００にユーザアカウントを有し、ユーザ２３はサーバ３００にユーザアカウントを有し、ユーザ２４はサーバ４００にユーザアカウントを有する。
【００３６】
各サーバ１００，２００，３００，４００，・・・は、そのサーバにユーザアカウントを有するユーザに関するアカウント情報を管理している。アカウント情報には、ユーザの認証情報や、役割情報が含まれる。認証情報は、例えばユーザＩＤとパスワードとの組である。
【００３７】
図４は、本実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。サーバ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。なおサーバ１００が有するＣＰＵ数は１つに限定されず、複数であってもよい。サーバ１００が複数のＣＰＵを有する場合、複数のＣＰＵが連係動作し、装置全体を制御する。
【００３８】
ＲＡＭ１０２は、サーバ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００３９】
バス１０８に接続されている周辺機器としては、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７がある。
【００４０】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、サーバ１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００４１】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４２】
入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４３】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４４】
通信インタフェース１０７は、ネットワーク１０に接続されている。通信インタフェース１０７は、ネットワーク１０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４５】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお図４には、サーバ１００のハードウェア構成を示したが、他のサーバ２００，３００，４００，・・・や、端末装置３１，３２，３３，３４，・・・も同様のハードウェアで実現することができる。さらに、第１の実施の形態に示した情報処理装置１も、図４に示したサーバ１００と同様のハードウェアにより実現することができる。
【００４６】
次に第２の実施の形態によって提供されるサービスの一例について説明する。
図５は、複数のサービスを連携させて実行する業務の一例を示す図である。図５には、典型的なソフトウェア開発プロジェクトにおけるサービスの連携例が示されている。
【００４７】
例えば、元請企業１社、下請企業３社、孫請企業９社、および曾孫請企業２社によってソフトウェア開発プロジェクトが進められている。それぞれの会社には、複数のプロジェクト従事者がいる。
【００４８】
サーバ１００は、元請企業が管理している。サーバ２００，２００ａ，２００ｂは、下請企業が管理している。サーバ３００，３００ａ，３００ｂ，３００ｃ，３００ｄ，３００ｅ，３００ｆ，３００ｇ，３００ｈは、孫請企業が管理している。サーバ４００，４００ａは、曾孫請企業が管理している。各サーバには、管理している企業内のプロジェクト従事者のアカウント情報（例えばユーザＩＤとパスワード）が登録されている。各サーバは、登録されたアカウント情報を用いて、そのサーバを管理している企業の管理職や社員などのユーザ認証を行う。
【００４９】
図５の例では、ソフトウェア開発プロジェクトに関する共有情報１１１が、サーバ１００のデータベース（ＤＢ）１１０に格納されている。プロジェクトを円滑に進行させるには、プロジェクトに関与するメンバーで、できるだけ多くの情報を共有することが有効である。ただし、元請企業は、情報の機密を保持する上で信頼できる相手にしか、共有情報１１１を開示することはできない。
【００５０】
図５では、直接の信頼関係を有する企業間のサーバを矢印で接続している。例えば元請企業から見たときの下請企業との関係には、子会社、関連会社、取引会社などがある。同様に下請企業から見たときの孫請企業との関係にも、さまざまな関係がある。さらに孫請企業からみたときの曾孫請企業との関係にも、さまざまな関係がある。そうすると、元請企業と曾孫請企業との間の信頼関係は、かなり希薄なものとなる。図５の例では、元請企業において、下請企業、孫請企業までは、情報の機密を保持する上で信頼できるが、曾孫請企業は信頼に値しない場合が示されている。
【００５１】
ここで第２の実施の形態では、システム中の各サーバは、自己が管理するアカウント情報に基づいてユーザ認証を行ったユーザに対して、自己が提供するサービスを利用する権利があることを示すトークンを発行する。また各サーバは、直接の信頼関係を有する企業の管理するサーバで発行されたトークンを有するユーザに対しても、自己が提供するサービスを利用する権利があることを示すトークンを、連鎖的に発行する。このような連鎖的なトークン発行を行うことにより、例えば元請企業のサーバ１００で管理している共有情報１１１に対して、下請企業の社員であるユーザ２２や孫請企業の社員であるユーザ２３がアクセス可能となる。
【００５２】
ただし、元請企業から見たときの曾孫請企業については、信頼関係がない。そのため、元請企業では、曾孫請企業のサーバ４００において悪意または過失により、不適切なユーザにトークンを発行する可能性があることを前提として、サービスの提供相手を制限する。第２の実施の形態では、曾孫請企業の社員であるユーザ２４に対しては、共有情報１１１へのアクセスを遮断するために、各サーバが発行するトークンに、連鎖的なトークン発行回数を付与する。そして、サーバ１００では、連鎖的なトークン発行回数が所定回数以上の場合、下請企業のサーバで発行されたトークンを有するユーザであっても、共有情報１１１へのアクセスサービスの提供を拒絶する。このようにして、連鎖的なトークンの発行による効率的なサービス提供を行うと共に、サービス提供相手の必要以上の拡大を抑止することができる。
【００５３】
次に、このようなサービス提供管理を実現するための、各サーバの機能について説明する。
図６は、第２の実施の形態における各装置の機能の一例を示す図である。端末装置３１ではアプリケーション３１ａが実行されている。アプリケーション３１ａは、端末装置３１がアプリケーションソフトウェアを実行することによって実現されている機能である。アプリケーション３１ａは、ユーザ２１からの操作入力に応じて、サーバにサービス要求を送信し、各サーバで決定された役割に応じた範囲でのサービスを利用する。なおアプリケーション３１ａは、サーバにサービス要求を送信する前に、そのサーバにトークン発行要求を送信し、そのサーバで提供されるサービス上の役割を含むトークンを取得する。トークンは、決定された役割に応じた範囲内で、サーバで提供されるサービスを使用する権利を有しているユーザであることを証明する情報である。またアプリケーション３１ａは、ユーザ２１がアカウントを有しているサーバに対しては、認証要求を送信し、ユーザ認証を受けることができる。
【００５４】
同様に端末装置３２，３３，３４では、アプリケーション３２ａ，３３ａ，３４ａが実行されている。アプリケーション３２ａ，３３ａ，３４ａは、端末装置３１のアプリケーション３１ａと同様の機能を有する。
【００５５】
サーバ１００は、ＤＢ１１０、信頼関係情報記憶部１２０、認証部１３０、およびアクセス制御部１４０を有する。
ＤＢ１１０は、データ提供サービスによって提供するデータを記憶する。ＤＢ１１０としては、例えばＨＤＤ１０３内の記憶領域の一部が使用される。
【００５６】
信頼関係情報記憶部１２０は、サーバ１００にアカウントを有するユーザの認証情報や、直接の信頼関係を有するサーバの識別子などを記憶する。信頼関係情報記憶部１２０としては、例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が使用される。
【００５７】
認証部１３０は、信頼関係情報記憶部１２０を参照し、サービスを要求したユーザを認証する。例えば認証部１３０は、端末装置３１から送られた認証要求に応じて、認証要求に含まれる認証情報が正しいか否かを判断する。認証情報は、例えばユーザＩＤとクレデンシャル（信用情報）との組である。なおクレデンシャルには、例えばパスワードを用いることができる。またクレデンシャルとして、ユーザの指紋情報、手のひら静脈情報などの生体情報を用いることもできる。
【００５８】
また認証部１３０は、端末装置３１からのトークン発行要求に応じて、端末装置３１を使用するユーザ２１に対してトークンを発行する。認証部１３０は、生成したトークンを、処理結果として出力する。
【００５９】
さらに、認証部１３０は、トークン発行要求に応答し、信頼関係情報記憶部１２０を参照し、サーバ１００が提供するサービスを利用可能なユーザからのトークン発行要求であることを確認する。認証部１３０は、サーバ１００が提供するサービスを利用可能なユーザからのトークン発行要求であれば、自身が提供するサービスを利用する権利を証明するトークンを生成する。そして認証部１３０は、生成したトークンを処理結果として出力する。サーバ１００が提供するサービスを利用可能なユーザとは、例えばサーバ１００でユーザ認証を行ったユーザや、直接の信頼関係を有するサーバで発行されたトークンを有するユーザである。なお、直接の信頼関係を有するサーバで発行されたトークンを有するユーザであっても、そのトークンに含まれる連鎖発行回数が所定の閾値を超えている場合、そのユーザに対するサーバ１００が提供するサービスの提供は抑止される。
【００６０】
アクセス制御部１４０は、サーバ１００で提供されるサービスを利用する権利を示すトークンを付与したサービス要求に応じて、ＤＢ１１０から情報を抽出し、抽出した情報を端末装置３１に送信する。なお、アクセス制御部１４０は、端末装置３１から、認証要求またはトークン発行要求を受け取った場合、認証要求またはトークン発行要求を、認証部１３０に渡す。アクセス制御部１４０は、認証部１３０から認証要求またはトークン発行要求に応じた処理結果を受け取った場合、受け取った結果を端末装置３１に送信する。
【００６１】
サーバ２００は、ＤＢ２１０、信頼関係情報記憶部２２０、認証部２３０、およびアクセス制御部２４０を有する。同様にサーバ３００は、ＤＢ３１０、信頼関係情報記憶部３２０、認証部３３０、およびアクセス制御部３４０を有する。同様にサーバ４００は、ＤＢ４１０、信頼関係情報記憶部４２０、認証部４３０、およびアクセス制御部４４０を有する。サーバ２００，３００，４００内の各要素は、サーバ１００の同名の要素と同じ機能を有する。
【００６２】
なお、図６に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図６に示す認証部１３０，２３０，３３０，４３０は、図１に示した第１の実施の形態における受信手段２ａ、生成手段２ｂ、および送信手段２ｃを包含する機能の一例である。
【００６３】
次に、信頼関係情報記憶部１２０に格納されている情報について詳細に説明する。
図７は、信頼関係情報記憶部の格納情報の一例を示す図である。信頼関係情報記憶部１２０には、ユーザ管理テーブル１２１、関係定義テーブル１２２、および連鎖閾値１２３が格納されている。
【００６４】
ユーザ管理テーブル１２１は、サーバ１００にアカウントを有するユーザの認証情報を管理するデータテーブルである。ユーザ管理テーブル１２１には、ユーザＩＤとクレデンシャルとの欄が設けられている。ユーザＩＤの欄には、ユーザを一意に識別する識別子（ユーザＩＤ）が設定される。クレデンシャルの欄には、ユーザのパスワードなどのクレデンシャルが設定される。ユーザＩＤとクレデンシャルとの組が、そのユーザＩＤで示されるユーザの認証情報である。
【００６５】
関係定義テーブル１２２は、直接の信頼関係を有する企業のサーバを管理するデータテーブルである。関係定義テーブル１２２には、相手のＵＲＬ（Uniform Resource Locator）の欄が設けられている。相手のＵＲＬの欄には、サーバ１００を管理している企業と直接の信頼関係を有する企業のサーバで提供されるサービスを一意に示すＵＲＬが設定される。
【００６６】
連鎖閾値１２３は、トークン発行の連鎖発行回数の閾値である。サーバ１００は、他のサーバで発行されたトークンが付与されたトークン発行要求を受信した場合、付与されているトークンの連鎖発行回数が連鎖閾値１２３以下の場合のみ、自己のサービスを利用する権利を示すトークンを発行する。
【００６７】
次に、第２の実施の形態で用いるトークンの内容について説明する。
図８は、トークンに含まれる情報の一例を示す図である。トークン４０には、トークン発行者４１、連鎖発行回数４２、認証内容４３、および電子署名４４が含まれる。
【００６８】
トークン発行者４１は、トークンを発行したサーバの識別子である。サーバの識別子としては、例えばサーバのＵＲＬが用いられる。
連鎖発行回数４２は、他のサーバで発行されたトークンに基づいて、連鎖してトークンを発行した回数である。例えば、ユーザの個人認証を行ったサーバが発行したトークンには、連鎖発行回数として初期値「０」が設定される。そしてトークンを付与したトークン発行要求に応じて、サーバが自己のサービスを利用する権利があることを示すトークンを発行する際に、元となったトークンの連鎖発行回数をカウントアップした値が、新たに生成したトークンに設定される。
【００６９】
認証内容４３は、トークン発行相手のユーザの識別子や、トークンを発行したサーバが、ユーザに提供するサービスの内容などを定義する情報である。例えばサーバが提供するサービス上でユーザがどのような役割を有するのかを、認証内容４３として設定することができる。この場合、例えばサーバは、認証内容に設定された役割に応じた範囲に、サービスの提供内容を制限することができる。
【００７０】
電子署名４４は、トークン４０の正当性を保証するために、トークン４０の発行者が付与する情報である。電子署名４４は、トークン発行者を一意に示すと共に、トークンが改ざんされた場合に、改ざんされたことを検知可能とする情報である。
【００７１】
次に、トークンを連鎖的に発行することによるサービス提供例について説明する。
図９は、トークンを連鎖的に発行することによるサービス提供処理の第１の例を示すシーケンス図である。図９には、サーバ３００にアカウントを有するユーザ２３が、サーバ１００で提供されるサービスを利用する場合の例が示されている。なお、図９に示す処理では、既にユーザ２３は、端末装置３３を用いてサーバ３００からユーザ認証を受けているものとする。また、サーバ１００が提供するサービスを「サービスＡ」、サーバ２００が提供するサービスを「サービスＢ」、サーバ３００が提供するサービスを「サービスＣ」とする。各サーバ１００，２００，３００には、連鎖閾値「１」が設定されている。さらに、アプリケーション３３ａには、サーバ３００とサーバ１００とに、サーバ２００を間に挟んだ間接的な関係が存在していることが、予め定義されているものとする。
【００７２】
［ステップＳ１０１］ユーザ２３は、端末装置３３を操作し、アプリケーション３３ａに対して、サービスＡへのアクセスが必要となる処理を指示する。
［ステップＳ１０２］端末装置３３のアプリケーション３３ａは、ユーザ２３の操作に応答し、トークン発行要求をサーバ３００に送信する。
【００７３】
［ステップＳ１０３］サーバ３００では、アクセス制御部３４０がトークン発行要求を受信し、受信したトークン発行要求を認証部３３０に転送する。すると認証部３３０は、サービスＣを利用する権利を有することを示すトークン（サービスＣ用のトークン）を発行する。発行されるトークンの発行者には、サーバ３００の識別子が設定され、連鎖発行回数には初期値「０」が設定される。
【００７４】
［ステップＳ１０４］サーバ３００の認証部３３０は、サービスＣ用のトークンを、アクセス制御部３４０を介して端末装置３３に送信する。
［ステップＳ１０５］端末装置３３のアプリケーション３３ａは、サービスＣ用のトークンを付与した、サービスＢのトークン発行要求を生成する。そしてアプリケーション３３ａは、サービスＢのトークン発行要求をサーバ２００に送信する。
【００７５】
［ステップＳ１０６］サーバ２００のアクセス制御部２４０がトークン発行要求を受信し、受信したトークン発行要求を認証部２３０に転送する。そして、認証部２３０が、トークンの正当性を検証する。そして、認証部２３０は、トークン発行要求に付与されていた、サービスＣ用のトークンの連鎖発行回数が、サーバ２００における連鎖閾値以下であれば、サービスＢを利用する権利を示すトークン（サービスＢ用のトークン）を発行する。図９の例では、サービスＣ用のトークンの連鎖発行回数「０」は、サーバ２００の連鎖閾値「１」以下であるため、サービスＢ用のトークンが発行される。発行されるトークンの発行者には、サーバ２００の識別子が設定され、連鎖発行回数には、サービスＣ用のトークンの連鎖発行回数に１を加算した値「１」が設定される。
【００７６】
［ステップＳ１０７］サーバ２００の認証部２３０は、サービスＢ用のトークンを、アクセス制御部２４０を介して端末装置３３に送信する。
［ステップＳ１０８］端末装置３３のアプリケーション３３ａは、サービスＢ用のトークンを付与した、サービスＡのトークン発行要求を生成する。そしてアプリケーション３３ａは、サービスＡのトークン発行要求をサーバ１００に送信する。
【００７７】
［ステップＳ１０９］サーバ１００のアクセス制御部１４０がトークン発行要求を受信し、受信したトークン発行要求を認証部１３０に転送する。そして、認証部１３０が、トークンの正当性を検証する。そして、認証部１３０は、トークン発行要求に付与されていた、サービスＢ用のトークンの連鎖発行回数が、サーバ１００における連鎖閾値以下であれば、サービスＡを利用する権利を示すトークン（サービスＡ用のトークン）を発行する。図９の例では、サービスＢ用のトークンの連鎖発行回数「１」は、サーバ２００の連鎖閾値「１」以下であるため、サービスＡ用のトークンが発行される。発行されるトークンの発行者には、サーバ１００の識別子が設定され、連鎖発行回数には、サービスＢ用のトークンの連鎖発行回数に１を加算した値「２」が設定される。
【００７８】
［ステップＳ１１０］サーバ１００の認証部１３０は、サービスＡ用のトークンを、アクセス制御部１４０を介して端末装置３３に送信する。
［ステップＳ１１１］端末装置３３のアプリケーション３３ａは、サービスＡ用のトークンを付与した、サービスＡのサービス要求を生成する。そしてアプリケーション３３ａは、サービスＡのサービス要求をサーバ１００に送信する。
【００７９】
［ステップＳ１１２］サーバ１００のアクセス制御部１４０は、サービス要求に応じたＤＢ１１０へのアクセスを行い、処理結果を応答する。
［ステップＳ１１３］端末装置３３は、サーバ１００から処理結果の応答を受信すると、処理結果をモニタ１１に表示する。
【００８０】
このようにして、トークンを連鎖的に発行し、サーバ１００と直接的には関係を有していないサーバ３００のユーザ２３に対して、サーバ１００がサービスＡを提供できる。ただし、サーバ１００に対する関係が、サーバ３００より希薄なサーバ４００のユーザ２４が、サーバ１００からサービスＡの提供を受けようとしても、サーバ１００において、トークンの発行が拒否される。以下、トークンの発行が拒否される場合の処理の例について説明する。
【００８１】
図１０は、トークンを連鎖的に発行することによるサービス提供処理の第２の例を示すシーケンス図である。図１０には、サーバ４００にアカウントを有するユーザ２４が、サーバ１００で提供されるサービスを利用する場合の例が示されている。なお、図１０に示す処理では、既にユーザ２４は、端末装置３４を用いてサーバ４００からユーザ認証を受けているものとする。また、サーバ１００が提供するサービスを「サービスＡ」、サーバ２００が提供するサービスを「サービスＢ」、サーバ３００が提供するサービスを「サービスＣ」、サーバ４００が提供するサービスを「サービスＤ」とする。各サーバ１００，２００，３００，４００には、連鎖閾値「１」が設定されている。さらに、アプリケーション３４ａには、サーバ４００とサーバ１００とに、サーバ２００，３００を間に挟んだ間接的な関係が存在することが、予め定義されているものとする。
【００８２】
［ステップＳ１２１］ユーザ２４は、端末装置３４を操作し、アプリケーション３４ａに対して、サービスＡへのアクセスが必要となる処理を指示する。
［ステップＳ１２２］端末装置３４のアプリケーション３４ａは、ユーザ２４の操作に応答し、トークン発行要求をサーバ４００に送信する。
【００８３】
［ステップＳ１２３］サーバ４００では、アクセス制御部４４０がトークン発行要求を受信し、受信したトークン発行要求を認証部４３０に転送する。すると認証部４３０は、サービスＤを利用する権利を有することを示すトークン（サービスＤ用のトークン）を発行する。発行されるトークンの発行者には、サーバ４００の識別子が設定され、連鎖発行回数には初期値「０」が設定される。
【００８４】
［ステップＳ１２４］サーバ４００の認証部４３０は、サービスＤ用のトークンを、アクセス制御部４４０を介して端末装置３４に送信する。
［ステップＳ１２５］端末装置３４のアプリケーション３４ａは、サービスＤ用のトークンを付与した、サービスＣのトークン発行要求を生成する。そしてアプリケーション３４ａは、サービスＣのトークン発行要求をサーバ３００に送信する。
【００８５】
［ステップＳ１２６］サーバ３００のアクセス制御部３４０がトークン発行要求を受信し、受信したトークン発行要求を認証部３３０に転送する。そして、認証部３３０が、トークンの正当性を検証する。そして、認証部３３０は、トークン発行要求に付与されていた、サービスＤ用のトークンの連鎖発行回数が、サーバ３００における連鎖閾値以下であれば、サービスＣを利用する権利を示すトークン（サービスＣ用のトークン）を発行する。図１０の例では、サービスＤ用のトークンの連鎖発行回数「０」は、サーバ３００の連鎖閾値「１」以下であるため、サービスＣ用のトークンが発行される。発行されるトークンの発行者には、サーバ３００の識別子が設定され、連鎖発行回数には、サービスＤ用のトークンの連鎖発行回数に１を加算した値「１」が設定される。
【００８６】
［ステップＳ１２７］サーバ３００の認証部３３０は、サービスＣ用のトークンを、アクセス制御部３４０を介して端末装置３４に送信する。
［ステップＳ１２８］端末装置３４のアプリケーション３４ａは、サービスＣ用のトークンを付与した、サービスＢのトークン発行要求を生成する。そしてアプリケーション３４ａは、サービスＢのトークン発行要求をサーバ２００に送信する。
【００８７】
［ステップＳ１２９］サーバ２００のアクセス制御部２４０がトークン発行要求を受信し、受信したトークン発行要求を認証部２３０に転送する。そして、認証部２３０が、トークンの正当性を検証する。そして、認証部２３０は、トークン発行要求に付与されていた、サービスＣ用のトークンの連鎖発行回数が、サーバ２００における連鎖閾値以下であれば、サービスＢを利用する権利を示すトークン（サービスＢ用のトークン）を発行する。図１０の例では、サービスＣ用のトークンの連鎖発行回数「１」は、サーバ２００の連鎖閾値「１」以下であるため、サービスＢ用のトークンが発行される。発行されるトークンの発行者には、サーバ２００の識別子が設定され、連鎖発行回数には、サービスＣ用のトークンの連鎖発行回数に１を加算した値「２」が設定される。
【００８８】
［ステップＳ１３０］サーバ２００の認証部２３０は、サービスＢ用のトークンを、アクセス制御部２４０を介して端末装置３４に送信する。
［ステップＳ１３１］端末装置３４のアプリケーション３４ａは、サービスＢ用のトークンを付与した、サービスＡのトークン発行要求を生成する。そしてアプリケーション３４ａは、サービスＡのトークン発行要求をサーバ１００に送信する。
【００８９】
［ステップＳ１３２］サーバ１００のアクセス制御部１４０がトークン発行要求を受信し、受信したトークン発行要求を認証部１３０に転送する。そして、認証部１３０が、トークンの正当性を検証する。そして、認証部１３０は、トークン発行要求に付与されていた、サービスＢ用のトークンの連鎖発行回数が、サーバ１００における連鎖閾値以下であれば、サービスＡを利用する権利を示すトークン（サービスＡ用のトークン）を発行する。他方、認証部１３０は、サービスＢ用のトークンの連鎖発行回数が、サーバ１００における連鎖閾値を超えていればトークンの発行を拒否する。図１０の例では、サービスＢ用のトークンの連鎖発行回数「２」は、サーバ１００の連鎖閾値「１」を超えているため、サービスＡ用のトークンの発行は拒否される。
【００９０】
［ステップＳ１３３］サーバ１００の認証部１３０は、エラー応答を、アクセス制御部１４０を介して端末装置３４に送信する。
［ステップＳ１３４］端末装置３４は、サーバ１００からのエラー応答を受信すると、エラー終了したことを示す処理結果をモニタ１１に表示する。
【００９１】
図９、図１０に示したように、サーバ１００では、サーバ３００でユーザ認証を受けたユーザ２３に対してはサービスＡ用のトークンを発行するが、サーバ４００でユーザ認証を受けたユーザ２４に対してはトークンを発行しない。これにより、トークンの連鎖的な発行により、他のサーバで認証を受けたユーザへのサービスの提供を許容すると同時に、サービスを使用できるユーザの範囲を適切に制限することが可能となる。
【００９２】
次に、サーバ２００で発行されたトークンを添付したトークン発行要求に応じてサーバ１００が実行する、他のサーバとの間の関係に基づくトークン発行処理の手順について説明する。
【００９３】
図１１は、関係に基づくトークン発行処理の手順の一例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ１４１］認証部１３０は、サーバ２００で発行されたトークンを取得する。
【００９４】
［ステップＳ１４２］認証部１３０は、取得したトークンの有効性を判定する。この処理の詳細は後述する（図１２参照）。
［ステップＳ１４３］認証部１３０は、有効性の判定の結果、トークンが有効であれば処理をステップＳ１４５に進める。また認証部１３０は、トークンが無効であれば、処理をステップＳ１４４に進める。
【００９５】
［ステップＳ１４４］認証部１３０は、エラー応答を端末装置３２に送信し、処理を終了する。
［ステップＳ１４５］認証部１３０は、トークンを生成する。この処理の詳細は後述する（図１３参照）。
【００９６】
［ステップＳ１４６］認証部１３０は、ステップＳ１４５で生成したトークンを、トークン発行要求の送信元の端末装置に送信する。
次に、有効性判定処理について詳細に説明する。
【００９７】
図１２は、有効性判定処理の手順の一例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
［ステップＳ１５１］認証部１３０は、取得したトークンの電子署名が正しいか否かを判断する。例えば認証部１３０は、サーバ２００の公開鍵によって電子署名が正しい内容に復号できた場合に、電子署名が正しいと判断する。認証部１３０は、電子署名が正しい場合、処理をステップＳ１５２に進める。また認証部１３０は、電子署名が正しくない場合、処理をステップＳ１５５に進める。
【００９８】
［ステップＳ１５２］認証部１３０は、取得したトークンの発行者との間に、直接の信頼関係があるか否かを判断する。例えば認証部１３０は、トークンの発行者の値により、関係定義テーブル１２２の相手のＵＲＬの欄を検索する。認証部１３０は、該当するＵＲＬが検出された場合、トークンの発行者との間に直接の信頼関係があると判断する。認証部１３０は、直接の信頼関係がある場合、処理をステップＳ１５３に進める。また認証部１３０は、直接の信頼関係がない場合、処理をステップＳ１５５に進める。
【００９９】
［ステップＳ１５３］認証部１３０は、取得したトークンの連鎖発行回数は、サーバ１００の信頼関係情報記憶部１２０の連鎖閾値１２３の値以下か否かを判断する。認証部１３０は、連鎖発行回数が連鎖閾値以下であれば、処理をステップＳ１５４に進める。また認証部１３０は、連鎖発行回数が連鎖閾値を超えていれば、処理をステップＳ１５５に進める。
【０１００】
［ステップＳ１５４］認証部１３０は、連鎖発行回数が連鎖閾値以下であれば、取得したトークンが有効であると判定し、有効性判定処理を終了する。
［ステップＳ１５５］認証部１３０は、電子署名が正しくないか、トークン発行者との間に直接の信頼関係がないか、連鎖発行回数が連鎖閾値を超えているかのいずれかの場合、取得したトークンが無効であると判定し、有効性判定処理を終了する。すなわち、署名が正しくない場合、トークン発行者との間に信頼関係がない場合、または連鎖発行回数が連鎖閾値を超えている場合には、トークンの発行が抑止される。
【０１０１】
このようにして、他のサーバで発行されたトークンの有効性が判定される。次に、トークン生成処理の詳細について説明する。
図１３は、トークン生成処理の手順の一例を示すフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。
【０１０２】
［ステップＳ１６１］認証部１３０は、取得したトークンの発行者をＩとする。
［ステップＳ１６２］認証部１３０は、取得したトークンの連鎖発行回数をＬとする。
［ステップＳ１６３］認証部１３０は、サーバ１００自身の識別子（ＵＲＬなど）と、Ｉとが等しいか否かを判断する。認証部１３０は、等しい場合、処理をステップＳ１６５に進める。また認証部１３０は、等しくなければ、処理をステップＳ１６４に進める。
【０１０３】
［ステップＳ１６４］認証部１３０は、Ｌの値に１を加算し、新たなＬとする。
［ステップＳ１６５］認証部１３０は、自身の識別子を発行者とし、Ｌを連鎖発行回数として、トークンを生成する。
【０１０４】
このようにして、取得したトークンが他のサーバで発行されていれば、連鎖発行回数をカウントアップした新たなトークンが生成される。
以下、図１４、図１５を参照して、発行されるトークンの推移例について説明する。なお、図１４、図１５の例では、各サーバに設定されている連鎖閾値は「２」であるものとする。また端末装置３１からのトークン発行要求が、サーバ１００、サーバ２００（１回目）、サーバ２００（２回目）、サーバ１００、サーバ２００ａ、サーバ１００の順で送信されたものとする。
【０１０５】
図１４は、発行されるトークンの推移例を示す第１の図である。第１の状態（ＳＴ１）では、端末装置３１からのトークン発行要求に応じて、サーバ１００からトークン５１が発行されている。このトークン５１の発行者にはサーバ１００の識別子「ａ」が設定され、連鎖発行回数には初期値「０」が設定される。
【０１０６】
第２の状態（ＳＴ２）において、端末装置３１からサーバ２００に、トークン５１を付与したトークン発行要求が送信されたものとする。この場合、サーバ２００は、トークン５１の発行者がサーバ１００であり、連鎖発行回数が自己の連鎖閾値以下であることを確認し、トークン５２を発行する。このトークン５２の発行者にはサーバ２００の識別子「ｂ１」が設定され、連鎖発行回数には「１」が設定される。
【０１０７】
第３の状態（ＳＴ３）において、端末装置３１からサーバ２００に、トークン５２を付与したトークン発行要求が送信されたものとする。この場合、サーバ２００は、トークン５２の発行者が自分自身であり、連鎖発行回数が自己の連鎖閾値以下であることを確認し、トークン５３を発行する。このトークン５３の発行者にはサーバ１００の識別子「ｂ１」が設定され、連鎖発行回数には「１」が設定される。
【０１０８】
図１５は、発行されるトークンの推移例を示す第２の図である。第４の状態（ＳＴ４）において、端末装置３１からサーバ１００に、トークン５３を付与したトークン発行要求が送信されたものとする。この場合、サーバ１００は、トークン５３の発行者がサーバ２００であり、連鎖発行回数が自己の連鎖閾値以下であることを確認し、トークン５４を発行する。このトークン５４の発行者にはサーバ１００の識別子「ａ」が設定され、連鎖発行回数には「２」が設定される。
【０１０９】
第５の状態（ＳＴ５）において、端末装置３１からサーバ２００ａに、トークン５４を付与したトークン発行要求が送信されたものとする。この場合、サーバ２００ａは、トークン５４の発行者がサーバ１００であり、連鎖発行回数が自己の連鎖閾値以下であることを確認し、トークン５５を発行する。このトークン５５の発行者にはサーバ２００ａの識別子「ｂ２」が設定され、連鎖発行回数には「３」が設定される。
【０１１０】
第６の状態（ＳＴ６）において、端末装置３１からサーバ１００に、トークン５５を付与したトークン発行要求が送信されたものとする。この場合、サーバ１００は、トークン５５の発行者がサーバ２００ａであり、連鎖発行回数が自己の連鎖閾値を超えていることを確認し、トークンの発行を拒否する。
【０１１１】
このように、直接の信頼関係があるサーバで発行されたトークンに基づいて、各サーバがトークンを連鎖的に発行するようにしたことで、ユーザは、１つのサーバでユーザ認証を受けることで、複数のサーバからトークンを取得することができる。各トークンは、そのトークンを発行したサーバで提供されるサービスを利用する権利を示しているため、ユーザは、複数のサーバからサービスの提供を受けることができる。しかも第２の実施の形態では、連鎖発行回数が閾値を超えた場合には、新たなトークンが発行されないため、各ユーザが利用できるサービスの範囲が無制限に広がることを抑止できる。
【０１１２】
なお、第２の実施の形態では、トークン発行要求に付与されたトークンの発行元が、自身の場合、連鎖発行回数を据え置いたトークンを発行しているが、トークンの発行を抑止することも可能である。例えば、図１４の例では、第３の状態（ＳＴ３）において、サーバ２００は、取得したトークン５２の発行元が自分自身であるため、トークン５３を発行しないこととなる。この場合、端末装置３１は、サーバ２００に送信したトークン５２を付与したトークン発行要求を、サーバ１００などの別のサーバに送信することで、別のサーバから連鎖的にトークンを取得できる。
【０１１３】
〔第３の実施の形態〕
次に第３の実施の形態について説明する。第３の実施の形態は、第２の実施の形態における連鎖発行回数に代えて、トークンに、トークン発行者の識別子を発行履歴として設定するようにしたものである。
【０１１４】
例えばサーバ１００にアカウントを有するユーザは、サーバ１００から取得したトークンに基づいて、サーバ２００からトークンを取得できる。このユーザは、さらにサーバ２００が発行したトークンに基づいて、サーバ１００からトークンを取得できる。この場合、第２の実施の形態では、サーバ１００は、新たなトークンを発行すると共に、トークンに付与する連鎖発行回数をカウントアップする。しかし、ユーザは、サーバ１００にアカウントを有しているにも拘わらずトークンの連鎖発行回数がカウントアップされることで、そのトークンを用いてサービスを受けることができるサーバの範囲が狭まってしまう。
【０１１５】
そこで第３の実施の形態では、トークンに、連鎖発行回数に代えて発行履歴を設定する。トークン内の発行履歴には、例えば、そのトークンの発行以前に、そのトークンと連鎖関係を有するトークンの発行を行ったサーバの識別子が設定される。これにより、発行履歴のエントリ数を数えることで、連鎖発行回数が認識可能となる。また各サーバは、発行履歴内に自身の識別子が設定されたトークンに基づいて、新たなトークンを発行する場合、発行履歴内の自身の識別子以降のエントリを削除する。これにより、連鎖的にトークンの発行が行われる過程で、同じサーバでの２回目以降のトークン発行時には、トークン発行回数（発行履歴のエントリ数）は、そのサーバでの１回目のトークン発行時の値に戻される。その結果、各ユーザは、ユーザ認証を受けたサーバ、およびそのサーバから所定の範囲内の関係を有するサーバから、トークンを何度でも取得することができる。
【０１１６】
なお、第３の実施の形態のシステム構成は、図３〜図７に示した第２の実施の形態の構成と同様である。そこで以下、図３〜図７に示した各要素の符号を用いて、第３の実施の形態について説明する。
【０１１７】
図１６は、第３の実施の形態におけるトークンに含まれる情報の一例を示す図である。トークン６０には、トークン発行者６１、発行履歴６２、認証内容６３、および電子署名６４が含まれている。このうちトークン発行者６１、認証内容６３、および電子署名６４については、図８に示した第２の実施の形態のトークン４０に含まれる同名の要素と同種の情報である。
【０１１８】
発行履歴６２は、ユーザの認証を行ったサーバがトークンを発行してから、トークン６０を発行するまでの過程で、連鎖的にトークン発行を行ったサーバの識別子のリストである。発行履歴６２に登録されているサーバの数が、トークン６０の連鎖発行回数として用いられる。
【０１１９】
図１７は、発行履歴の一例を示す図である。図１７の例では、発行履歴６２に、ユーザの認証を行ったサーバの識別子と、そのサーバで発行したトークンから連鎖的にトークンを発行した各サーバの識別子とが設定されている。サーバの識別子としては、サーバのＵＲＬが用いられている。
【０１２０】
第３の実施の形態の処理は、有効性判定処理とトークン生成処理とが第２の実施の形態と異なる。
図１８は、第３の実施の形態における有効性判定処理の手順の一例を示すフローチャートである。図１８に示す処理のうち、ステップＳ２０１，Ｓ２０２，Ｓ２０５，Ｓ２０６の処理は、それぞれ図１２に示した第２の実施の形態におけるステップＳ１５１，Ｓ１５２，Ｓ１５４，Ｓ１５５の処理と同様である。第２の実施の形態と異なるステップＳ２０３，Ｓ２０４では、以下の処理が行われる。
【０１２１】
［ステップＳ２０３］認証部１３０は、取得したトークンの発行履歴内のエントリ数を計数する。計数された値は、取得したトークンが発行されるまでに、連鎖的なトークン発行が行われた回数（連鎖発行回数）を表している。
【０１２２】
［ステップＳ２０４］認証部１３０は、発行履歴内のエントリ数が、サーバ１００の連鎖閾値以下か否かを判断する。認証部１３０は、エントリ数が連鎖閾値以下であれば、処理をステップＳ２０５に進め、取得したトークンを有効であると判定する。また認証部１３０は、エントリ数が連鎖閾値を超えていれば、処理をステップＳ２０６に進め、取得したトークンを無効であると判定する。
【０１２３】
このように、発行履歴内のエントリ数を計数することで、取得したトークンが発行されるまでの、トークン発行の連鎖発行回数が算出される。そして算出された連鎖発行回数と連鎖閾値との比較により、取得したトークンの有効性が判定される。
【０１２４】
図１９は、第３の実施の形態におけるトークン生成処理の手順の一例を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。
［ステップＳ２１１］認証部１３０は、取得したトークンの発行者をＩとする。
【０１２５】
［ステップＳ２１２］認証部１３０は、取得したトークンの発行履歴の各エントリを要素とした配列ｈを定義する。なお配列ｈには、登録された順に、トークンを発行したサーバの識別子が設定されている。
【０１２６】
［ステップＳ２１３］認証部１３０は、サーバ１００自身の識別子（ＵＲＬなど）と、Ｉとが等しいか否かを判断する。認証部１３０は、等しい場合、処理をステップＳ２１７に進める。また認証部１３０は、等しくなければ、処理をステップＳ２１４に進める。
【０１２７】
［ステップＳ２１４］認証部１３０は、配列ｈにサーバ１００自身の識別子が含まれているか否かを判断する。認証部１３０は、サーバ１００自身の識別子が含まれている場合、処理をステップＳ２１５に進める。また認証部１３０は、サーバ１００自身の識別子が含まれていない場合、処理をステップＳ２１６に進める。
【０１２８】
［ステップＳ２１５］認証部１３０は、配列ｈの中のサーバ１００自身の識別子が設定されたエントリ以降のエントリを削除する。この際、サーバ１００自身の識別子が設定されたエントリも削除される。その後、認証部１３０は、処理をステップＳ２１７に進める。
【０１２９】
［ステップＳ２１６］認証部１３０は、配列ｈに、Ｉをエントリとして追加する。
［ステップＳ２１７］認証部１３０は、自身の識別子を発行者、配列ｈを発行履歴としてトークンを生成する。
【０１３０】
このようにして、取得したトークンに基づいて発行される新たなトークンの発行履歴に、取得したトークンを発行したサーバの識別子が追加される。ただし取得したトークンの発行履歴に、自身の識別子が含まれている場合、その識別子以降のエントリが削除される。
【０１３１】
以下、図２０、図２１を参照して、発行されるトークンの推移例について説明する。なお、図２０、図２１の例では、各サーバに設定されている連鎖閾値は「１」であるものとする。
【０１３２】
図２０は、第３の実施の形態において発行されるトークンの推移例を示す第１の図である。第１の状態（ＳＴ１）では、端末装置３１からのトークン発行要求に応じて、サーバ１００からトークン７１が発行されている。このトークン７１の発行者にはサーバ１００の識別子「ａ」が設定され、発行履歴は空集合である。
【０１３３】
第２の状態（ＳＴ２）において、端末装置３１からサーバ２００に、トークン７１を付与したトークン発行要求が送信されたものとする。この場合、サーバ２００は、トークン７１の発行者がサーバ１００であり、発行履歴内のエントリ数が自己の連鎖閾値以下であることを確認し、トークン７２を発行する。このトークン７２の発行者にはサーバ２００の識別子「ｂ１」が設定され、発行履歴には「ａ」が設定される。
【０１３４】
第３の状態（ＳＴ３）において、端末装置３１からサーバ３００に、トークン７２を付与したトークン発行要求が送信されたものとする。この場合、サーバ３００は、トークン７２の発行者がサーバ２００であり、発行履歴内のエントリ数が自己の連鎖閾値以下であることを確認し、トークン７３を発行する。このトークン７３の発行者にはサーバ３００の識別子「ｃ１」が設定され、発行履歴には「ａ，ｂ１」が設定される。
【０１３５】
図２１は、第３の実施の形態において発行されるトークンの推移例を示す第２の図である。第４の状態（ＳＴ４）において、端末装置３１からサーバ２００に、トークン７３を付与したトークン発行要求が送信されたものとする。この場合、サーバ２００は、トークン７３の発行者がサーバ３００であり、発行履歴内のエントリ数が自己の連鎖閾値以下であることを確認し、トークン７４を発行する。なおトークン７３の発行履歴には、サーバ２００自身の識別子「ｂ１」が含まれている。そのためトークン７４の履歴情報は、トークン７３の履歴情報から識別子「ｂ１」以降のエントリを削除したものとなる。その結果、トークン７４の発行者にはサーバ２００の識別子「ｂ１」が設定され、発行履歴には「ａ」が設定される。
【０１３６】
第５の状態（ＳＴ５）において、端末装置３１からサーバ３００ａに、トークン７４を付与したトークン発行要求が送信されたものとする。この場合、サーバ３００ａは、トークン７４の発行者がサーバ２００であり、発行履歴内のエントリ数が自己の連鎖閾値以下であることを確認し、トークン７５を発行する。このトークン７５の発行者にはサーバ３００ａの識別子「ｃ２」が設定され、発行履歴には「ａ，ｂ１」が設定される。
【０１３７】
このように、連鎖的なトークンの発行過程でサーバ２００が２回目に発行したトークン７４の発行履歴は、１回目に発行したトークン７２と同じとなる。そのため、トークン７４を付与したトークン発行要求を他のサーバ３００ａに送信した場合、サーバ３００ａでは、連鎖発行回数（発行履歴のエントリ数）が１回と判定され、新たなトークン７５が発行される。その結果、端末装置３１を使用するユーザ２１は、サーバ３００ａからもサービスの提供を受けることが可能となる。すなわち、各ユーザは、どのような過程で連鎖的なトークン発行が行われたかに関係なく、ユーザ認証を受けたサーバとの間で、関連上の距離が所定の範囲（連鎖閾値）内にあるサーバで提供されるサービスを利用可能となる。ここで、関係上の距離とは、例えばユーザがユーザ認証を受けたサーバと、トークン発行要求を受信したサーバとの間でトークンの連鎖的な発行を行ったサーバの台数である。
【０１３８】
例えば図２０、図２１の例では、端末装置３１からのトークン発行要求が、サーバ１００、サーバ２００、サーバ３００、サーバ２００、サーバ３００ａの順で出されている。このとき各サーバから発行されるトークン７１〜７５の発行履歴に基づく連鎖回数は「０」、「１」、「２」、「１」、「２」となる。これにより連鎖回数は、ユーザ認証を行ったサーバまでの関係上の距離を正しく表すことができる。
【０１３９】
〔第４の実施の形態〕
次に、第４の実施の形態について説明する。第４の実施の形態は、サーバ間の関係性に従って、各ユーザに役割を設定し、役割に応じた範囲内のサービスを提供するものである。
【０１４０】
なお、第４の実施の形態のシステム構成は、図３〜図７に示した第２の実施の形態の構成と同様である。そこで以下、図３〜図７に示した各要素の符号を用いて、第４の実施の形態について説明する。
【０１４１】
図２２は、第４の実施の形態における信頼関係情報記憶部の格納情報の一例を示す図である。第４の実施の形態では、信頼関係情報記憶部１２０に、ユーザ管理テーブル１２１ａ、関係定義テーブル１２２ａ、役割割当ポリシ定義テーブル１２４、およびサービス定義テーブル１２５が格納されている。
【０１４２】
図２３は、第４の実施の形態におけるユーザ管理テーブルのデータ構造の一例を示す図である。ユーザ管理テーブル１２１ａには、ユーザＩＤ、役割、およびクレデンシャルの欄が設けられている。
【０１４３】
ユーザＩＤの欄には、ユーザの識別子が設定される。役割の欄には、サーバ１００が提供するサービス「サービスＡ」上での、ユーザの役割が設定される。クレデンシャルの欄には、ユーザを認証に使用する信用情報が設定される。
【０１４４】
図２４は、第４の実施の形態における関係定義テーブルのデータ構造の一例を示す図である。関係定義テーブル１２２ａには、相手のＵＲＬ、および相手との関係の欄が設けられている。
【０１４５】
相手のＵＲＬの欄には、サーバ１００を管理している組織との間で直接の信頼関係を有する他の組織が管理するサーバ（相手サーバ）で提供されるサービスに割り当てられたＵＲＬが設定される。相手との関係の欄には、サーバ１００を管理している組織と、相手サーバを管理している組織との間の関係が設定される。相手との関係としては、例えば、取引先、子会社、連結対象会社などがある。
【０１４６】
図２５は、役割割当ポリシ定義テーブルのデータ構造の一例を示す図である。役割割当ポリシ定義テーブル１２４には、相手との関係、相手が認めた役割、連鎖閾値および自身が認める役割の欄が設けられている。
【０１４７】
相手との関係の欄には、サーバ１００を管理している組織と、相手サーバを管理している組織との間の関係が設定される。相手が認めた役割の欄には、相手サーバにおいて、ユーザに対して設定した役割が設定される。連鎖閾値の欄には、相手との関係と、相手が認めた役割との組に対応する、トークン発行の連鎖発行回数の閾値が設定される。連鎖閾値が空欄の場合、連鎖的なトークン発行が無制限に許容される。自身が認める役割の欄には、相手サーバで提供されているサービス上の役割を有するユーザに対して、サーバ１００自身が割り当てる役割が設定される。
【０１４８】
図２６は、サービス定義テーブルのデータ構造の一例を示す図である。サービス定義テーブル１２５には、役割とサービス内容との欄が設けられている。各欄の行方向に並んだデータが、役割に応じたサービス内容を定義したレコードを構成する。
【０１４９】
役割の欄には、ユーザの役割が設定される。サービス内容の欄には、対応する役割を有するユーザに対して提供するサービスの内容が設定される。サービスの内容としては、例えば、ＤＢ１１０内のすべてのデータへのアクセスを許容するのか、ある属性のデータへのアクセスのみに制限するのかなどが定義される。例えばユーザの役割が予算係であれば、予算関係データへのアクセスを許容するように、サービス内容が設定される。またユーザの役割が社員であれば、例えばサーバ１００を管理する企業の全社員の名簿に対するアクセスを許容するように、サービス内容が設定される。また役割が子会社の社員であれば、例えば、サーバ１００を管理する企業の各部署の代表者の名簿に対するアクセスを許容するように、サービス内容が設定される。
【０１５０】
次に、第４の実施の形態で用いるトークンの内容について説明する。
図２７は、第４の実施の形態におけるトークンに含まれる情報の一例を示す図である。トークン８０には、トークン発行者８１、連鎖発行回数８２、役割リスト８３、アクセス主体８４、および電子署名８５が含まれる。
【０１５１】
トークン発行者８１は、トークンを発行したサーバの識別子である。連鎖発行回数８２は、他のサーバで発行されたトークンに基づいて、連鎖してトークンを発行した回数である。役割リスト８３は、発行者がユーザの役割として認定した役割のリストである。ユーザが複数の役割を担う場合、リストには、複数の役割が設定される。アクセス主体８４は、アクセスを行うユーザの識別子である。電子署名８５は、トークン８０の正当性を保証するために、トークン８０の発行者が付与する情報である。
【０１５２】
次に、サーバにおける、自身が認証したユーザへのトークン発行処理の手順について、詳細に説明する。
図２８は、自身が認証したユーザへのトークン発行処理の手順の一例を示すフローチャートである。以下、図２８に示す処理をステップ番号に沿って説明する。なお、以下の処理は、既にユーザ認証を受けたユーザ２１が使用する端末装置３１から、トークン発行要求を受信したサーバ１００が実行するものとする。
【０１５３】
［ステップＳ３０１］認証部１３０は、現セッションの認証済みのユーザをｕとする。
［ステップＳ３０２］認証部１３０は、ユーザ管理テーブル１２１ａから、ユーザｕに対応するレコードを検索し、ユーザの役割ｒＡを決定する。
【０１５４】
［ステップＳ３０３］認証部１３０は、サーバ２００自身を発行者、役割をｒＡとして、トークンを生成する。
［ステップＳ３０４］認証部１３０は、割り当てる役割があるか否かを判断する。例えば認証部１３０は、ステップＳ３０２の検索において検出したレコードに、役割が設定されていれば、役割があると判断する。また認証部１３０は、ステップＳ３０２の検索において検出したレコードに、役割が設定されていなければ、役割がないと判断する。認証部１３０は、割り当てるべき役割がある場合、処理をステップＳ３０５に進める。また認証部１３０は、割り当てるべき役割がない場合、トークンを送信せずに処理を終了する。
【０１５５】
［ステップＳ３０５］認証部１３０は、ステップＳ３０３で生成したトークンを、端末装置３１に送信する。
このような手順で、ユーザ２１がアカウントを有するサーバ１００においてトークンが発行される。
【０１５６】
次に、サーバ２００で発行されたトークンを添付したトークン発行要求に応じてサーバ１００が実行する、他のサーバとの間の関係に基づくトークン発行処理の手順について説明する。
【０１５７】
図２９は、関係に基づくトークン発行処理の手順の一例を示すフローチャートである。以下、図２９に示す処理をステップ番号に沿って説明する。
［ステップＳ３１１］認証部１３０は、サーバ２００で発行されたトークンを取得する。
【０１５８】
［ステップＳ３１２］認証部１３０は、取得したトークンが有効か否かを判断する。例えば認証部１３０は、正当な電子署名が付与されていれば、有効なトークンであると判断する。認証部１３０は、有効なトークンであれば、処理をステップＳ３１３に進める。また認証部１３０は、無効なトークンであれば、トークンを発行せずに処理を終了する。
【０１５９】
［ステップＳ３１３］認証部１３０は、トークンを生成する。この処理の詳細は後述する（図３０参照）。
［ステップＳ３１４］認証部１３０は、割り当てるべき役割があるか否かを判断する。例えば認証部１３０は、トークン生成処理の結果、サーバ１００が提供するサービスにおける役割が設定されたトークンが生成されていれば、役割があると判断する。また認証部１３０は、トークン生成処理において、役割がないためにトークンの生成に失敗した場合、役割がないと判断する。認証部１３０は、役割があれば処理をステップＳ３１５に進める。また認証部１３０は、役割がなければ、トークンを発行せずに処理を終了する。
【０１６０】
［ステップＳ３１５］認証部１３０は、ステップＳ３１３で生成したトークンを、トークン発行要求の送信元である端末装置に送信する。
第４の実施の形態における関係に基づくトークン発行処理の手順は、図１１に示した第２の実施の形態の処理と同様である。ただし第４の実施の形態では、図１１に示した処理のうち、トークン生成処理（ステップＳ１４５）の詳細が第２の実施の形態と異なる。
【０１６１】
以下、第４の実施の形態におけるトークン生成処理の手順について説明する。
図３０は、第４の実施の形態におけるトークン生成処理の手順の一例を示すフローチャートである。以下、図３０に示す処理をステップ番号に沿って説明する。
【０１６２】
［ステップＳ３２１］認証部１３０は、取得したトークンの発行者をＩとする。
［ステップＳ３２２］認証部１３０は、取得したトークンの連鎖発行回数をＬとする。
［ステップＳ３２３］認証部１３０は、取得したトークンの役割リストに設定されている役割配列をｒＡとする。
【０１６３】
［ステップＳ３２４］認証部１３０は、サーバ１００自身の識別子（ＵＲＬなど）と、Ｉとが等しいか否かを判断する。認証部１３０は、等しい場合、処理をステップＳ３２８に進める。また認証部１３０は、等しくなければ、処理をステップＳ３２５に進める。
【０１６４】
［ステップＳ３２５］認証部１３０は、Ｉについて関係定義テーブル１２２ａの相手のＵＲＬと照合し、Ｉと一致する関係の配列Ｒを取り出す。
［ステップＳ３２６］認証部１３０は、ＲとｒＡとの組に該当するレコードを、役割割当ポリシ定義テーブル１２４から検索する。次に認証部１３０は、検索によって該当したレコードを、Ｌで絞り込む。例えば認証部１３０は、検索で該当したレコードを、連鎖閾値がＬ以上のレコードに絞り込む。そして認証部１３０は、絞り込まれたレコードそれぞれにおける自身が認める役割の配列をｒＢとする。
【０１６５】
［ステップＳ３２７］認証部１３０は、Ｌの値に１を加算し、新たなＬとする。
［ステップＳ３２８］認証部１３０は、自身の識別子を発行者、ｒＢを役割リスト、Ｌを連鎖発行回数として、トークンを生成する。
【０１６６】
このようにして、他のサーバとの関係、およびそのサーバでのユーザの役割の組に応じた、自身が提供するサービス上の役割を、他のサーバで認証されたユーザに対して割り当てることができる。例えば子会社の社員に対しては、孫会社の社員よりも広い範囲で、サービスを提供することができる。
【０１６７】
しかも他のサーバとの関係、およびそのサーバでのユーザの役割の組に応じて、連鎖閾値を設定することができる。これにより、ユーザの役割ごとのきめ細やかなトークン発行管理を行うことができる。例えば、子会社のサーバにおいて「子会社の社員」という役割を割り当てられたユーザ（自サーバでは役割「孫会社の社員」）に対しては、「孫会社の社員」の連鎖閾値を「１」としておくことでトークンを発行するようにできる。また関連会社のサーバにおいて「子会社の社員」という役割を割り当てられたユーザ（自サーバでは役割「関連会社の子会社の社員」）に対しては、「関連会社の子会社の社員」の連鎖閾値を「０」としておくことで、トークンの発行を抑止するようにできる。
【０１６８】
〔第５の実施の形態〕
次に、第５の実施の形態について説明する。第５の実施の形態は、第４の実施の形態における連鎖発行回数に代えて、発行履歴をトークンに含めるようにしたものである。
【０１６９】
なお、第５の実施の形態のシステム構成は、図３〜図７に示した第２の実施の形態の構成と同様である。そこで以下、図３〜図７に示した各要素の符号を用いて、第５の実施の形態について説明する。
【０１７０】
図３１は、第５の実施の形態におけるトークンに含まれる情報の一例を示す図である。トークン９０には、トークン発行者９１、発行履歴９２、役割リスト９３、アクセス主体９４、および電子署名９５が含まれる。
【０１７１】
トークン発行者９１は、トークンを発行したサーバの識別子である。発行履歴９２は、ユーザの認証を行ったサーバがトークンを発行してから、トークン９０を発行するまでの過程で、連鎖的にトークン発行を行ったサーバの識別子のリストである。発行履歴９２の内容は、例えば図１７に示した第２の実施の形態の発行履歴６２と同様である。役割リスト９３は、発行者がユーザの役割として認定した役割のリストである。アクセス主体９４は、アクセスを行うユーザの識別子である。電子署名９５は、トークン９０の正当性を保証するために、トークン９０の発行者が付与する情報である。
【０１７２】
第５の実施の形態の処理のうち、第４の実施の形態と異なるのは、有効性判定処理とトークン生成処理である。そのうち有効性判定処理の手順は、図１８に示した第２の実施の形態における有効性判定処理と同様である。そこで、第５の実施の形態におけるトークン生成処理の手順について以下に説明する。
【０１７３】
図３２は、第５の実施の形態におけるトークン生成処理の手順の一例を示すフローチャートである。以下、図３２に示す処理をステップ番号に沿って説明する。
［ステップＳ４０１］認証部１３０は、取得したトークンの発行者をＩとする。
【０１７４】
［ステップＳ４０２］認証部１３０は、取得したトークンの発行履歴の各エントリを要素とした配列ｈを定義する。
［ステップＳ４０３］認証部１３０は、取得したトークンの役割リストに設定されている役割配列をｒＡとする。
【０１７５】
［ステップＳ４０４］認証部１３０は、サーバ１００自身の識別子（ＵＲＬなど）と、Ｉとが等しいか否かを判断する。認証部１３０は、等しい場合、処理をステップＳ４０５に進める。また認証部１３０は、等しくなければ、処理をステップＳ４０６に進める。
【０１７６】
［ステップＳ４０５］認証部１３０は、取得したトークンの発行者Ｉが、サーバ１００自身の場合、配列ｒＡを配列ｒＢとする。その後、認証部１３０は処理をステップＳ４１２に進める。
【０１７７】
［ステップＳ４０６］認証部１３０は、Ｉについて関係定義テーブル１２２ａの相手のＵＲＬと照合し、Ｉと一致する関係の配列Ｒを取り出す。
［ステップＳ４０７］認証部１３０は、配列ｈにサーバ１００自身の識別子が含まれているか否かを判断する。認証部１３０は、サーバ１００自身の識別子が含まれている場合、処理をステップＳ４０８に進める。また認証部１３０は、サーバ１００自身の識別子が含まれていない場合、処理をステップＳ４０９に進める。
【０１７８】
［ステップＳ４０８］認証部１３０は、配列ｈの中のサーバ１００自身の識別子が設定されたエントリ以降のエントリを削除する。この際、サーバ１００自身の識別子が設定されたエントリも削除される。その後、認証部１３０は、処理をステップＳ４１０に進める。
【０１７９】
［ステップＳ４０９］認証部１３０は、配列ｈに、Ｉをエントリとして追加する。
［ステップＳ４１０］認証部１３０は、配列ｈのエントリ数を、連鎖発行回数Ｌとする。
【０１８０】
［ステップＳ４１１］認証部１３０は、ＲとｒＡとの組に該当するレコードを、役割割当ポリシ定義テーブル１２４から検索する。次に認証部１３０は、検索によって該当したレコードを、Ｌで絞り込む。例えば認証部１３０は、検索で該当したレコードを、連鎖閾値がＬ以上のレコードに絞り込む。そして認証部１３０は、絞り込まれたレコードそれぞれにおける自身が認める役割の配列をｒＢとする。
【０１８１】
［ステップＳ４１２］認証部１３０は、自身の識別子を発行者、ｒＢを役割リスト、ｈを発行履歴として、トークンを生成する。
このようにして、他のサーバとの関係、およびそのサーバでのユーザの役割との組に応じた、自身が提供するサービス上の役割を、他のサーバで認証されたユーザに対して割り当てることができる。例えば子会社の社員に対しては、孫会社の社員よりも広い範囲で、サービスを提供することができる。
【０１８２】
しかも他のサーバとの関係、およびそのサーバでのユーザの役割の組に応じて、連鎖閾値を設定することができる。この際、発行履歴を用いたことで、各ユーザは、どのような過程で連鎖的なトークン発行が行われたかに関係なく、ユーザ認証を受けたサーバとの間で、関連上の距離が所定の範囲（連鎖閾値）内にあるサーバで提供されるサービスを利用可能となる。
【０１８３】
〔その他の実施の形態〕
なお第４，第５の実施の形態では、取得したトークンの発行元のサーバが割り当てたユーザの役割と、そのサーバと自サーバとの関係との組に応じて、自サーバで提供するサービス上でのユーザの役割を決定しているが、他の方法で役割を決定してもよい。例えば、トークンの連鎖発行回数に応じて役割を決定することができる。この場合、連鎖発行回数が増加するほど、提供可能なサービスの内容の制限が多い役割を設定することで、自サーバとの間の信頼関係が低いサーバで認証を受けたユーザほど、提供するサービスの内容の制限を厳しくすることができる。
【０１８４】
また第２，第３の実施の形態では、サーバ内で共通の連鎖閾値を用いているが、例えば直接の信頼関係を有するサーバごとに連鎖閾値を定義することもできる。例えば、図７に示す関係定義テーブル１２２において、相手のＵＲＬそれぞれに対応する連鎖閾値を設定する。その場合、図１２の有効性判定処理におけるステップＳ１５３では、取得したトークン発行者に対応付けられた連鎖閾値と、連鎖発行回数とを比較する。
【０１８５】
上記の各実施の形態に示した処理機能は、コンピュータによって実現することができる。その場合、各サーバが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。なおプログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
【０１８６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１８７】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１８８】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１８９】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１９０】
１〜３  情報処理装置
２ａ  受信手段
２ｂ  生成手段
２ｃ  送信手段
４  ユーザ
５  端末装置
【図１】
0005845973.tif 000002
【図２】
0005845973.tif 000003
【図３】
0005845973.tif 000004
【図４】
0005845973.tif 000005
【図５】
0005845973.tif 000006
【図６】
0005845973.tif 000007
【図７】
0005845973.tif 000008
【図８】
0005845973.tif 000009
【図９】
0005845973.tif 000010
【図１０】
0005845973.tif 000011
【図１１】
0005845973.tif 000012
【図１２】
0005845973.tif 000013
【図１３】
0005845973.tif 000014
【図１４】
0005845973.tif 000015
【図１５】
0005845973.tif 000016
【図１６】
0005845973.tif 000017
【図１７】
0005845973.tif 000018
【図１８】
0005845973.tif 000019
【図１９】
0005845973.tif 000020
【図２０】
0005845973.tif 000021
【図２１】
0005845973.tif 000022
【図２２】
0005845973.tif 000023
【図２３】
0005845973.tif 000024
【図２４】
0005845973.tif 000025
【図２５】
0005845973.tif 000026
【図２６】
0005845973.tif 000027
【図２７】
0005845973.tif 000028
【図２８】
0005845973.tif 000029
【図２９】
0005845973.tif 000030
【図３０】
0005845973.tif 000031
【図３１】
0005845973.tif 000032
【図３２】
0005845973.tif 000033