(58)【調査した分野】(Int.Cl.,DB名)
第1のサービスを利用している第1のユーザから、第2のサービスを利用している第2のユーザに対して前記第1のサービスの情報を開示する指示を受け付けると、前記第2のユーザに対して認証情報を送付し、
前記認証情報を利用したユーザからのアクセスがあった場合に、前記第1のサービスから収集した情報を開示し、
前記第1のユーザから、前記第1、第2のサービスとは異なる第3のサービスを利用する第3のユーザに対して前記第1のサービスの情報を開示する指示を受け付け、かつ、前記第2のユーザ及び前記第3のユーザが同一人物である場合には、前記第2のユーザに対して送付した認証情報と同一の認証情報を前記第3のユーザに対して送付する、
処理をコンピュータに実行させるための情報開示プログラム。
第1のサービスを利用している第1のユーザから、第2のサービスを利用している第2のユーザに対して前記第1のサービスの情報を開示する指示を受け付けた場合に、前記第2のユーザに対して認証情報を送付し、
前記認証情報を利用したユーザからのアクセスがあった場合に、前記第1のサービスから収集した情報を開示し、
前記第1のユーザから、前記第1、第2のサービスとは異なる第3のサービスを利用する第3のユーザに対して前記第1のサービスの情報を開示する指示を受け付け、かつ、前記第2のユーザ及び前記第3のユーザが同一人物である場合には、前記第2のユーザに対して送付した認証情報と同一の認証情報を前記第3のユーザに対して送付する、
処理をコンピュータが実行することを特徴とする情報開示方法。
【発明を実施するための形態】
【0014】
《第1の実施形態》
以下、第1の実施形態に係る情報開示システムについて、
図1〜
図9に基づいて詳細に説明する。
【0015】
図1には、第1の実施形態の情報開示システム100の構成が概略的に示されている。
図1に示すように、情報開示システム100は、既存サービスA、新サービスX、仲介サーバ10、及びユーザ端末70を備えている。既存サービスA及び新サービスXは、1又は複数のサーバを含むサーバ群を有する。既存サービスA、新サービスX、仲介サーバ10、及びユーザ端末70は、インターネットなどのネットワーク80に接続されている。
【0016】
既存サービスAは、所定の情報をユーザに対して提供するサービスであり、ユーザ端末70を利用するユーザ(例えば、ユーザ1)がアカウント(ユーザID及びパスワード)を有しているものとする。すなわち、ユーザ1は、既存サービスAの配下のユーザであるものとする。
【0017】
新サービスXは、所定の情報をユーザに対して提供するサービスであり、ユーザ端末70を利用するユーザ(例えば、ユーザ2)がアカウント(ユーザID及びパスワード)を有しているものとする。すなわち、ユーザ2は、新サービスXの配下のユーザであるものとする。なお、本実施形態では、ユーザ1は、新サービスXの配下のユーザではないものとする。また、ユーザ2は、既存サービスAの配下のユーザではないものとする。
【0018】
仲介サーバ10は、既存サービスAが保持するデータをユーザ1のアカウント情報を用いて取得し、ユーザ1がデータを渡すことを許可したユーザ(例えば、ユーザ2)に対して取得したデータを提供するサーバである。
図2には、仲介サーバ10のハードウェア構成が概略的に示されている。
図2に示すように、仲介サーバ10は、CPU(Central Processing Unit)90、ROM(Read Only Memory)92、RAM(Random Access Memory)94、記憶部(ここではHDD(Hard Disk Drive))96、ネットワークインタフェース97、及び可搬型記憶媒体用ドライブ99等を備えている。これら仲介サーバ10の構成各部は、バス98に接続されている。仲介サーバ10では、ROM92あるいはHDD96に格納されているプログラム(情報開示プログラムを含む)、或いは可搬型記憶媒体用ドライブ99が可搬型記憶媒体91から読み取ったプログラム(情報開示プログラムを含む)をCPU90が実行することにより、
図3に示すアクセス設定部12、認可セッション設定部14、チケット発行部16、データ収集部18、チケット検証部20、及びアクセス制御部22としての機能が実現される。なお、
図3には、仲介サーバ10のHDD96等により実現されている、認可セッション保持部30、データ保持部32、アクセス制御ルール保持部34、及びチケット保持部36も図示されている。
【0019】
アクセス設定部12は、既存サービスAのユーザ(ユーザ1)からの要求に応じて、新サービスX側からユーザIDリスト(ユーザ2のIDを含む)を取得し、ユーザ(ユーザ1)に提供する。
【0020】
認可セッション設定部14は、既存サービスAのユーザ(ユーザ1)から既存サービスAのアカウント情報(ユーザID、パスワード)を取得し、認可セッションの作成を行う。なお、本実施形態では、既存サービスAに対して仲介サーバ10がユーザ1としてアクセスできるようにする技術としてOAuthを利用することとしている。しかしながら、これに限らず、他サービスにアクセス権限を移譲することが可能な他の方法(例えばSAML:Security Assertion Markup Language)などを採用することとしてもよい。
【0021】
認可セッション設定部14は、認可セッションを作成すると、認可セッション保持部30に認可セッションの情報を保存する。また、認可セッション設定部14は、データ提供元のユーザ(ユーザ1)が選択したデータ提供先のユーザ(例えばユーザ2)のIDと認可セッションのセッションIDをアクセス制御ルール保持部34に保存する。そして、認可セッション設定部14は、データ提供先のユーザのIDリストをチケット発行部16に通知する。
【0022】
ここで、認可セッション保持部30は、既存サービスのID、認可セッションのセッションIDを保持するテーブルであり、
図4(a)に示すようなデータ構造を有する。具体的には、
図4(a)に示すように、認可セッション保持部30は、既存サービスのIDを示す「サービスID」、「認可Code」及び「アクセストークン」、認可セッションのIDを示す「セッションID」の各フィールドを有している。また、アクセス制御ルール保持部34は、認可セッションのセッションIDとデータ提供先のユーザのIDと関係を保持するテーブルであり、
図4(c)に示すようなデータ構造を有する。具体的には、
図4(c)に示すように、アクセス制御ルール保持部34は、認可セッションの「セッションID」、データの提供先のユーザが利用する新サービスを示す「サービスID」、データが提供されるユーザを示す「ユーザID」の各フィールドを有している。
【0023】
チケット発行部16は、認可セッション設定部14からの通知を受けると、チケット保持部36にユーザIDのリストを保存する。ここで、チケット保持部36は、データ提供先のユーザのIDと識別情報としてのチケットとの関係を保持するテーブルであり、
図4(d)に示すようなデータ構造を有する。具体的には、
図4(d)に示すように、チケット保持部36は、データ提供先のユーザが利用する新サービスを示す「サービスID」、データ提供先のユーザの「ユーザID」、及び「チケット」の各フィールドを有している。なお、データ提供先のユーザからチケットの取得要求があるまでは、「チケット」のフィールドには、「未発行」が格納されるものとする。また、チケット発行部16は、データ提供先のユーザからのチケットの取得要求があると、チケットを新たに生成し、チケット保持部36に保存するとともに、データ提供先のユーザに対してチケットを渡す。
【0024】
なお、チケットとしては、UUID(Universally unique identifier)をランダムに生成して利用するものとする。本実施形態では、一例として、チケットT1が543b8d39-24a6-496f-8233-97808e9e625のような予測不可能な文字列であり、T2が23c4e2f4-8cfb-4f00-9537-70947d998a2eのような予測不可能な文字列であるものとする。なお、チケットは、バイナリデータであってもよい。また、チケット発行部16は、データ提供先のユーザにチケットを渡す場合、例えば、HTTP ResponseのBodyに文字列をそのまま記載して応答したり、構造化したデータ(XML:Extensible Markup LanguageやJSON:Java(登録商標)script Object Notation)のパラメータとして応答するなどすればよい。
【0025】
データ収集部18は、認可セッション保持部30から読み出したセッションIDを利用し、該当するセッション用のデータを既存サービスAから取得し、データ保持部32に格納する。なお、データ提供元のユーザ(ユーザ1)は、OAuthにおいて、どのような範囲のデータを取得するかを設定してもよいし、設定しないこととしてもよい。なお、範囲を設定しない場合には、データ収集部18によって、データ提供元のユーザの全てのデータが取得されることになる。ここで、データ保持部32は、認可セッションのセッションIDごとに、データ群を保持するテーブルであり、
図4(b)に示すようなデータ構造を有している。具体的には、データ保持部32は、データ提供元のサービスの「サービスID」、認可セッションの「セッションID」、収集したデータの「データID」、データそのものが格納される「データ」の各フィールドを有している。
【0026】
チケット検証部20は、データ提供先のユーザ(ユーザ2)からユーザIDおよびチケットを取得すると、チケット保持部36をチェックする。そして、チケット検証部20は、認証ができた場合に、アクセス制御部22に対してデータ提供先のユーザ(ユーザ2)のユーザIDを送信する。
【0027】
アクセス制御部22は、チケット検証部20からデータ提供先のユーザ(ユーザ2)のユーザIDを受け取ると、アクセス制御ルール保持部34を読み出し、ユーザIDに対応するセッションID(データ提供先のユーザがアクセスできるセッションID)のリストを取得する。そして、アクセス制御部22は、データ提供先のユーザ(ユーザ2)によってリクエストされたデータの種類(データリストや指定IDのデータ)に基づいて、データ保持部32から該当するデータ(もしくはデータ群)を読み出して、データ提供先のユーザ(ユーザ2)に提供する。
【0028】
(処理の概要)
次に、情報開示システム100における処理の概要について、
図5、
図6に沿って説明する。なお、本実施形態では、既存サービスAの配下のユーザ1のデータを新サービスXの配下のユーザ2に提供するものとする。ユーザ1及びユーザ2は、
図1のユーザ端末70から各サービスや仲介サーバ10に対してアクセスするものとする。また、情報開示システム100は、
図5に示すデータ取得処理と、
図6に示すデータ提供処理を実行する。
【0029】
(データ取得処理)
データ取得処理においては、
図5に示すような処理が実行される。
【0030】
図5においては、まず、ユーザ1が仲介サーバ10にアクセスし、データの提供先のサービスおよびデータの提供先のユーザを選択する(
図5のステップS1参照)。そして、仲介サーバ10は、OAuthを利用して、既存サービスからユーザ1のデータを取得できるようにアクセス権限の移譲等の手続きを行う(
図5のステップS2参照)。なお、
図5のステップS2は、ユーザ1が選択したデータ提供元のサービスの数だけ繰り返し実行する。
【0031】
次いで、仲介サーバ10は、既存サービスAからユーザ1のデータを取得(収集)する(
図5のステップS3参照)。なお、ユーザ2との間でどのようなデータを共有するのかをユーザ1が指定した場合は、指定されたデータのみを取得する。また、定期的にデータが更新・追加される場合は、仲介サーバ10も定期的にデータの取得を行うものとする。
【0032】
(データ提供処理)
データ提供処理においては、
図6に示すような処理が実行される。
【0033】
仲介サーバ10は、データ提供先のユーザから新サービスXに対して、既存サービスAのデータのリクエスト(開示要求)があった場合に、ユーザ2に対して、チケットを発行する。そして、ユーザ2が上記チケットを利用して仲介サーバ10に対してアクセスすると、仲介サーバ10がチケットを検証し、アクセス権限をチェックする。この場合、仲介サーバ10は、チケットが有効であることを確認すると、ユーザ2に対して提供可能なデータを提供する(
図6のステップS4参照)。
【0034】
なお、
図6のステップS5に示すように、ユーザ2は、新サービスXを介して間接的に仲介サーバ10にアクセスし、データの提供を受けることもできる。
【0035】
次に、上記各処理について、
図7〜
図9のフローチャートに沿って詳細に説明する。
【0036】
(ステップS1、S2について)
図7には、
図5のステップS1、S2における仲介サーバ10の処理がフローチャートにて示されている。なお、以下においても、データ提供元のサービスが既存サービスA、データ提供元のユーザがユーザ1、データ提供先のサービスが新サービスX、データ提供先のユーザがユーザ2であるものとする。
【0037】
図7の処理では、ステップS10において、アクセス設定部12は、既存サービスAからユーザ1のメッセージを受信するまで待機する。この場合、アクセス設定部12は、既存サービスA(ユーザ1)からメッセージを受信した段階で、ステップS12に移行する。
【0038】
ステップS12に移行すると、アクセス設定部12は、ユーザ(ユーザ1)からの初回リクエストであるか否かを判断する。ここでの判断が肯定された場合(ユーザ1からの初回リクエストである場合)には、ステップS14に移行し、否定された場合には、ステップS18に移行する。
【0039】
ステップS14に移行すると、アクセス設定部12は、ユーザ1からの初回リクエストに応じて、データ提供先のサービス(新サービスX)からユーザリストを取得する。このユーザリストは、データ提供先のサービスの配下の全ユーザのIDが格納された一覧であるものとする。
【0040】
次いで、ステップS16では、アクセス設定部12は、ユーザ1に対して、取得したユーザリストを応答する。なお、例えば、ユーザ1が特定のキーワードを特定してリクエストした場合には、アクセス設定部12は、ユーザリストのうち特定のキーワードを含むユーザの一覧(リスト)を応答することとしてもよい。その後は、
図7の全処理を終了する。
【0041】
一方、ユーザ1からのメッセージが初回リクエストでなく、ステップS12の判断が否定された場合には、ステップS18に移行する。ステップS18では、認可セッション設定部14は、ユーザ1からのメッセージがユーザID選択メッセージであるか否かを判断する。なお、ユーザID選択メッセージとは、ユーザ1がステップS16において取得したユーザリストの中からユーザ(ユーザID)を選択した結果を示すメッセージである。ここでは、ユーザ1がユーザリストの中からユーザ2を選択したものとする。この場合、ステップS18の判断が肯定され、ステップS20に移行する。なお、ステップS18の判断が否定された場合(既存サービスAからのメッセージが初回リクエストでなく、かつユーザID選択メッセージでなかった場合)には、
図7の全処理が終了する。
【0042】
ステップS20に移行すると、認可セッション設定部14は、認可セッションのセッションIDを作成する。そして、これ以降、ステップS22〜S30においては、認可セッション設定部14が、既存サービスAのユーザ1について、OAuthによるアクセス権限移譲処理を行う。
【0043】
例えばOAuth2.0の場合、まず、認可セッション設定部14は、ステップS22において、未認可サービス(ここでは、既存サービスA)へのリダイレクトを実行する。具体的には、認可セッション設定部14が、ユーザ1にリダイレクト指示の応答を返す。この場合、ユーザ1は、既存サービスAのログイン画面にアクセスし、ユーザIDとパスワードを用いてログインする。その後、既存サービスAが認可セッション設定部14にデータを提供することを確認する画面を返し、ユーザ1がその承認をする。そして、既存サービスAからの応答により、仲介サーバ10のURLにリダイレクトされることになる。
【0044】
次いで、ステップS24では、認可セッション設定部14は、URLのパラメータに含まれる文字列から認可Codeを受け取り、この認可Codeを既存サービスAに渡すことで、既存サービスAからアクセストークンを取得する。なお、これ以降は、データ収集部18は、取得されたアクセストークンを利用して、ユーザ1のデータを取得することができるようになっている。
【0045】
次いで、ステップS26では、認可セッション設定部14は、アクセストークンの文字列(例えば”SID1”)を認可セッションのセッションIDとし、既存サービスAのIDとともに認可セッション保持部30に格納する(エントリを作成する)。
【0046】
次いで、ステップS28では、認可セッション設定部14は、全ての既存サービス(ユーザが複数の既存サービスを選択した場合)の認可が完了したか否かを判断する。ここでの判断が否定された場合には、ステップS22に戻り、ステップS22〜S28の処理・判断を繰り返すが、ステップS28の判断が肯定された場合には、ステップS30に移行する。
【0047】
ステップS30に移行すると、認可セッション設定部14は、チケット保持部36及びアクセス制御ルール保持部34にエントリを追加する。具体的には、認可セッション設定部14は、データ提供先のユーザ(新サービスXのユーザ2(User2))をチケット発行部16に通知する。そして、チケット発行部16が、チケット保持部36に新サービスXのユーザ2が登録されているか否かを確認し、未登録の場合はチケット保持部36に登録する。また、認可セッション設定部14は、セッションIDおよびデータ提供先のユーザ(新サービスXのユーザ2(User2))をアクセス制御ルール保持部34に格納する。なお、ステップS30の処理が行われた後は、
図7の全処理を終了する。
【0048】
なお、アクセストークンには有効期限があり、有効期限が切れた場合には再取得して変更する必要がある。このため、認可CodeをセッションIDとして扱うこととしてもよい。
【0049】
(ステップS3について)
図8には、
図5のステップS3における仲介サーバ10の処理がフローチャートにて示されている。
【0050】
図8の処理においては、まず、ステップS40において、データ収集部18が、認可セッション保持部30のエントリを読み出す。次いで、ステップS42では、データ収集部18は、データ未取得セッションが存在するか否かをデータ保持部32を参照して判断する。ここでの判断が否定された場合には、ステップS40に戻るが、肯定された場合には、ステップS44に移行する。
【0051】
ステップS44に移行すると、データ収集部18は、データ未取得セッションに関し、データ提供元からデータを取得する。具体的には、データ収集部18は、既存サービスAに対してアクセストークン(又はセッションID)を付与してリクエストを送信する。この場合、既存サービスAは、アクセストークンを参照することでユーザ1の権限でアクセスが行われたことがわかるため、ユーザ1のデータを仲介サーバ10のデータ収集部18に返答する。これにより、データ収集部18は既存サービスAからデータを取得することができる。
【0052】
次いで、ステップS46では、データ収集部18は、データ保持部32にセッションIDと、取得したデータと、を書き込む。その後は、ステップS42に戻り、データ収集部18は、上記処理を繰り返し実行する。以上の処理により、必要なデータがデータ保持部32に順次収集されるようになっている。
【0053】
(ステップS4(S5)について)
図9には、
図6のステップS4における仲介サーバ10の処理がフローチャートにて示されている。
【0054】
図9の処理では、まず、ステップS50において、チケット発行部16が、チケット取得要求を受信したか否かを判断する。ここで、ユーザ2が新サービスXにアクセスし、新サービスXのユーザ2(User2)としてログインし、新サービスXが、ユーザ2(User2)のチケットを取得するために仲介サーバ10のチケット発行部16にリクエストを送ったとする。この場合、ステップS50の判断は肯定されて、チケット発行部16は、ステップS52に移行する。
【0055】
ステップS52に移行すると、チケット発行部16は、OAuthによるログインの確認、もしくは新サービスXと仲介サーバ10との間でサーバ間の認証(サーバIPチェック)を行うことでリクエストの送信元をチェックする。また、この際に合わせて送られる送信元ユーザのIDをもとに、データ提供先のユーザ2に関するチケット発行依頼であることを確認する。
【0056】
次いで、ステップS54では、チケット発行部16が、チケット保持部36のエントリを確認し、ユーザ2のチケットが未発行であれば、新たにチケット(
図4(d)ではT1)を作成し、新サービスXに応答する(送信する)。なお、新サービスXにおいては、受け取ったチケット(T1)をユーザ2の利用するユーザ端末70に転送する。その後は、
図9の全処理を終了する。
【0057】
一方、ステップS50の判断が否定された場合には、チケット検証部20は、ステップS56に移行し、データ取得要求を受信したか否かを判断する。ここでの判断が否定された場合には、
図8の全処理を終了するが、肯定された場合には、ステップS58に移行する。なお、ステップS56の判断が肯定される場合とは、ユーザ2がチケット(T1)、新サービスXのID(X)、ユーザ2のID(User2)を利用してチケット検証部20に対してデータの取得要求を行った場合である。
【0058】
ステップS56の判断が肯定され、ステップS58に移行すると、チケット検証部20は、受け取ったチケットとチケット保持部36(
図4(d))の内容を照合する。また、ステップS60では、チケット検証部20は、受け取ったチケットとチケット保持部36の内容とが正しい組み合わせであるか否かをチェックすることで、アクセス権限をチェックする。なお、アクセス権限がある場合には、チケット検証部20は、アクセス制御部22に対して新サービスXのユーザ2のID(User2)を送信する。
【0059】
そして、ステップS62では、アクセス制御部22が、データもしくはデータリストの応答を行う。具体的には、アクセス制御部22は、アクセス制御ルール保持部34(
図4(c))のエントリを読み出し、新サービスXのユーザ2がアクセスできるセッションID(SID1)を取得する。そして、アクセス制御部22は、上記セッションID(SID1)のデータのうち、リクエストされたデータをデータ保持部32(
図4(b))から読み出して、ユーザ2に応答する。なお、ユーザは、リクエストにおいて、データIDを指定して特定のデータを指示することとしてもよいし、データリストを指示することとしてもよい。
【0060】
なお、ステップS54において、ユーザ2が新サービスXを経由して仲介サーバ10にアクセスすることが保証されている場合は、ユーザ2にチケットを転送する代わりに新サービスXがチケットT1とユーザ2(User2)の関係を保持してもよい。この場合、ユーザ2が新サービスXを経由して仲介サーバ10にアクセスすることで、ステップS58以降の処理は、
図6のステップS5に示すように、新サービスX経由で行われることになる。
【0061】
以上の処理を実行することで、ユーザ1およびユーザ2が仲介サーバ10にアカウントを作らなくても、ユーザ1のデータをユーザ2に対して提供(開示)することが可能である。
【0062】
以上、詳細に説明したように、本第1の実施形態によると、情報開示システム100は、既存サービスA配下のユーザ1から、新サービスX配下のユーザ2に対してサービスAのデータを開示するリクエストを受け付けると(S18:肯定)、ユーザ2に対してチケットを送付し(S54)、ユーザ2からチケットを利用したアクセスがあった場合(S56:肯定)に、サービスAから収集した情報を開示する仲介サーバ10を備えている。これにより、ユーザ2が仲介サーバ10やサービスAにアクセスするためのアカウントを作成しなくても、ユーザ2に対して、ユーザ1のデータを開示することができる。
【0063】
また、本第1の実施形態では、仲介サーバ10がユーザ2に対して送信したチケットをユーザ2が用いることで、ユーザ1がユーザ2に対してアクセス設定した範囲(データ保持部32においてセッションIDに紐付けられたデータ)へのアクセスが可能となる。これにより、ユーザごとに適切なアクセスコントロールを行うことができる。
【0064】
ここで、比較例について説明する。
(比較例1)
図10には、比較例1の概要が示されている。
図10に示すように、比較例1では、既存サービスAのデータを新サービスXの配下のユーザ2に対して開示するため、既存サービスAのユーザ1のアカウント(ユーザIDおよびパスワード)をユーザ2に教える。そして、ユーザ2は新サービスXのアカウントと既存サービスAのユーザ1のアカウントの両方を仲介サービス10’に登録する。このようにすることで、仲介サービス10’は、既存サービスAからユーザ1のアカウントで情報を取得し、ユーザ2のアカウントで新サービスXにその情報を渡すようにすることができる。
【0065】
しかしながら、比較例1では、ユーザ1からユーザ2に対してアカウントを教える必要があるため、セキュリティ上のリスクを伴うと考えられる。また、既存サービスAのアカウントをユーザ2が使える状態になるため、ユーザ1がユーザ2と共有したくない情報まで共有してしまうおそれがある。また、ユーザ2がアカウントを利用して、ユーザ1の想定していない操作(データの書き込みなど)を行ってしまうおそれもある。これに対し、上記第1の実施形態の情報開示システム100では、ユーザ2に対してユーザ1のアカウントを教えなくてもよいため、上記のような事態は発生しない。
【0066】
(比較例2)
図11には、比較例2の概要が示されている。
図11の比較例2では、仲介サーバ10”内にユーザ1とユーザ2の両方がユーザアカウントを作成する。そして、ユーザ1が仲介サーバ10”内でユーザ2にデータを渡してもよいということを設定する。
【0067】
しかしながら、比較例2では、データを渡すためだけに、仲介サーバ10”にユーザアカウントを作らなくてはならないため、手間がかかる。これに対し、上記第1の実施形態の情報開示システム100では、アカウントの作成は不要である。
【0068】
《第2の実施形態》
次に、第2の実施形態について
図12〜
図15に基づいて説明する。
図12には、第2の実施形態に係る仲介サーバ210の機能ブロック図が示されている。
図12と
図3とを比較すると分かるように、仲介サーバ210は、ユーザグループ保持部38を有している点が第1の実施形態の仲介サーバ10と異なる。
【0069】
図13(a)には、ユーザグループ保持部38のデータ構造の一例が示されている。ユーザグループ保持部38は、
図13(a)に示すように、「ユーザグループID」、「サービスID」、「ユーザID」の各フィールドを有している。
【0070】
図14には、第2の実施形態のステップS1、S2の処理がフローチャートにて示されている。なお、
図14の処理は、第1の実施形態の
図7に対応する処理である。また、
図14において太線にて示す処理(ステップS29A〜S29C)が、第1の実施形態と異なる処理である。例えば、ユーザ1が、「新サービスXのユーザ2、新サービスYのユーザ2が同一人物である」旨を認可セッション設定部14に対して指定すると、認可セッション設定部14は、その情報をチケット発行部16に渡す。この場合、
図14のステップS20〜S28の後、ステップS29Aの判断(同一人物指定があったか否かの判断)は肯定されるので、チケット発行部16は、ステップS29Bに移行する。
【0071】
ステップS29Bに移行すると、チケット発行部16は、新たにユーザグループID(UGID1)を作成する。そして、チケット発行部16は、
図13(b)に示すように、チケット保持部36にサービスID=“Group”、ユーザID=“UGID1”のエントリを登録する。さらに、チケット発行部16は、ステップS29Cにおいて、ユーザグループ保持部38に、
図13(a)に示すように、(UGID1, X, User2)、(UGID1, Y, User2)の2エントリを登録(追加)する。
【0072】
図15には、第1の実施形態の
図9に対応する処理がフローチャートにて示されている。この処理においては、チケット発行部16は、
図15において太線で示すように、ステップS52とS54との間に、ステップS53の処理を実行する。
【0073】
図15の処理では、例えば、ユーザ2がサービスXのユーザとしてチケット取得要求を出すと、チケット発行部16は、ステップS53において、サービスX、User2のエントリをユーザグループ保持部38(
図13(a))において検索する。これにより、ユーザグループID(UGID1)を取得することができる。そして、ステップS54では、チケット発行部16は、サービスID=“Group”、ユーザID=“UGID1”でチケット保持部36を検索しする。この場合、チケットが未発行であれば、チケット発行部16は、新しくチケットの文字列を生成してユーザ2に対して応答(送信)し、チケット保持部36のエントリを更新する。なお、チケットが発行済みの場合は、該当チケットをチケット保持部36から取得してユーザ2に対して応答(送信)する。
【0074】
以上のように、本第2の実施形態によれば、複数のサービスの配下のユーザが同一人物である場合に、該ユーザに対して、同一の(共通の)チケットを発行することとしている。これにより、ユーザによるチケット管理を簡略化することができる。
【0075】
≪第3の実施形態≫
次に、第3の実施形態について、
図16〜
図18に基づいて説明する。なお、前述した第1の実施形態では、チケットを発行するタイミングとチケットを利用するタイミングが別である場合について説明したが、本第3の実施形態では、
図16に示すように新サービスXと仲介サーバ310との間でOAuth認可を行うことで、チケットの発行と1回目のデータ提供を同時に行えるようにしている。この場合、第1の実施形態で説明した
図9のステップS52、S54が不要となり、代わりに、
図17において太線で示す処理が実行される。
【0076】
図17のステップS150では、新サービスXのユーザ2(User2)から仲介サーバ310に対するデータの取得要求(リクエスト)があった場合に、チケット検証部20は、リクエストにチケットが付与されているか否かを判断する。ここでの判断が否定された場合、すなわち、データ提供を初めて受けるような場合(チケットを保有していない場合)には、ステップS151に移行する。なお、ステップS151に移行する場合、チケット検証部20は、チケット発行部16に対して新サービスXのID(X)およびユーザID(User2)を渡す。
【0077】
ステップS151、S152では、チケット発行部16は、新サービスXのUser2について、OAuthによるアクセス権限移譲を行う。例えばOAuth2.0の場合、まず仲介サーバ310がユーザ2にリダイレクト指示の応答を返して、ユーザ2が新サービスXのログイン画面にアクセスし、ログインする。その後、新サービスXが仲介サーバ310にデータを提供することを確認する画面を返し、ユーザ2がその承認をする。そして新サービスXからの応答で、仲介サーバ310のURLにリダイレクトされる(S151)。その際にURLのパラメータに含まれる文字列から仲介サーバ310が認可Codeを受け取り、仲介サーバ310が認可Codeを新サービスXに渡すことで、新サービスXよりアクセストークンを取得する(S152)。
【0078】
次いで、ステップS153では、チケット発行部16は、取得したアクセストークンを利用して、新サービスXより該当するユーザID(User2)を取得し、リクエストを受けたユーザID(User2)と同じであることを確認する。
【0079】
そして、ステップS154では、チケット発行部16は、新たにチケット(T1)を作成する。また、チケット発行部16は、チケット保持部36にサービスID = X, ユーザID = User2, チケット=T1のエントリを追加し、チケット検証部20に対して検証が終わったことおよびチケットT1を通知する。この場合、チケット検証部20は、アクセス制御部22に対して新サービスXのユーザUser2とチケットT1を伝える。その後は、第1の実施形態と同様、ステップS60、S62を実行する。
【0080】
なお、ステップS150の判断が肯定された場合、すなわち、データ提供を受けるのが2回目以降の場合には、ユーザはチケットを付与してデータ提供のリクエストを行うので、ステップS58に移行する。そして、ステップS58〜S62においては、第1の実施形態と同様の処理が行われることになる。
【0081】
なお、
図18には、
図17の処理の流れ(データのやり取り等)が示されている。
【0082】
以上のように、本第3の実施形態では、チケット発行のためだけの処理を削減し、チケットの発行と1回目のデータ提供とを同時に(一連の流れの中で)行うようにしている。これにより、新サービスXのユーザ2がより簡単にデータを受け取ることができるようになる。
【0083】
≪第4の実施形態≫
次に、第4の実施形態について、
図19、
図20に基づいて説明する。なお、本第4の実施形態の仲介サーバの構成は、
図3と同様となっている。上述した第1の実施形態において、データを提供するユーザ1が、新サービス配下の全員にデータを提供しても良いとする場合、全ユーザに対して異なるチケットを発行し、発行したチケットを管理する必要がある。この場合、チケットの管理数が膨大になるおそれがある。本第4の実施形態では、このような点を考慮し、チケット発行部16は、サービス全体にデータ提供することを許可した場合に、サービス全体用のチケット(サービスチケット)を発行することとする。
【0084】
具体的には、ユーザ1が仲介サーバに対して新サービスXの全ユーザにデータ提供することを指示した場合、認可セッション設定部14は、セッションIDおよびデータ提供先のサービス(サービスID=X、ユーザID=ワイルドカード“*”)をアクセス制御ルール保持部34に格納する(
図19(b)の最下行参照)。次いで、認可セッション設定部14は、データ提供先のサービス(種別=“Service”、サービスID=X、ユーザID=ワイルドカード “*”)をチケット発行部16に通知する。そして、チケット発行部16は、チケット保持部36に新サービスXが登録されているかを確認し、登録されていない場合にはチケット保持部36に登録する(
図19(a)の最下行参照)。なお、
図19(a)のチケット保持部36には、
図4(d)と比較すると分かるように、チケットの種別を示すフィールドが追加されているものとする。
【0085】
図19には、第1の実施形態の
図9の処理に対応する処理のフローチャートが示されている。
図19の処理では、
図9のステップS52とステップS54との間に、ステップS53Aの判断を行う。すなわち、ステップS52の終了後は、ステップS53Aにおいて、チケット発行部16は、ユーザIDのエントリがチケット保持部36にあるか否かを判断する。ここでの判断が肯定された場合には、チケット発行部16は、ステップS54において、ユーザ専用のチケットを生成し、応答する。
【0086】
一方、ステップS53Aの判断が否定された場合には、チケット発行部16は、サービス用のチケット(サービスチケット)を応答する。
【0087】
なお、アクセス制御部22は、ユーザがデータ提供を受ける際、ユーザ専用のチケットがリクエストに付与されていた場合には、アクセス制御ルール保持部34(
図19(b))のユーザIDが指定されたエントリ、およびユーザIDがワイルドカード “*” になっているエントリの両方のエントリをユーザがアクセス可能なデータ範囲(認可セッション群)として扱う。
【0088】
なお、上記においては、新サービスX配下のユーザ全員にデータを提供する場合に、各ユーザにサービス用のチケットを渡す場合について説明した。ただし、これに限らず、例えば、新サービスXに対してデータの取得を許可する場合にも上記と同様の仕組みを利用することが可能である。
【0089】
以上のように、本第4の実施形態では、サービス用のチケットを導入することで、データの提供先をサービス又はサービス内の全ユーザとした場合に、管理すべきチケット数を削減することができる。
【0091】
次に、第5の実施形態について、
図21、
図22に基づいて説明する。
図21には、第5の実施形態に係る仲介サーバ510の機能ブロック図が示されている。
図21と、
図3(第1の実施形態の仲介サーバ10)とを比較すると分かるように、仲介サーバ510は、
図3に示すデータ収集部18の代わりにデータ取得部26を有している。また、仲介サーバ510は、
図3に示すデータ保持部32の代わりに、データキャッシュ部40を有している。
【0092】
データ取得部26は、認可セッションのセッションIDをアクセス制御部22から取得すると、そのIDに対応するアクセストークンを認可セッション保持部30から読み出し、既存サービスAからデータを取得する。なお、データ取得部26は、データ取得前に、データキャッシュ部40を検索し、取得しようとしているデータがあった場合にはそのデータを取得しないこととする。一方、データキャッシュ部40に取得しようとしているデータがなかった場合には既存サービスAからデータを取得して、データキャッシュ部40に取得したデータを保存するとともに、当該データを返す。そして、データ取得部26は、データキャッシュ部40に存在しているデータ又は既存サービスAから取得してデータキャッシュ部40に保存したデータを、アクセス制御部22に渡す。なお、データキャッシュ部40は、認可セッションのセッションIDごとに、データ群を保持するテーブルであるものとする。
【0093】
図22には、第1の実施形態における
図9の処理に対応する処理が示されている。
図22の処理では、
図9のステップS60と、ステップS62との間に、データ取得部26がステップS61A〜S61Eの処理・判断を実行する。
【0094】
ユーザ2が、チケットT1、新サービスXのID(X)、ユーザのID(User2)を付与して、仲介サーバ510に対してデータの取得要求(リクエスト)を行うと、チケット検証部20は、受け取ったチケットとチケット保持部36の内容を照合する(S58)。そして、正しい組み合わせの場合には、チケット検証部20は、アクセス制御部22に対して、新サービスXのユーザ2のID(User2)を伝える(S60)。また、アクセス制御部22は、アクセス制御ルール保持部34のエントリを読み出し、新サービスXのユーザ2がアクセスできる認可セッションのセッションID(SID1)を取得する。その後、アクセス制御部22は、上記セッションID(SID1)をデータ取得部26に通知する。
【0095】
データ取得部26は、
図22のステップS61Aにおいて、セッションID(SID1)をキーにデータキャッシュ部40を検索し、データの有無を確認する。なお、ユーザ2よりデータのIDが指定されている場合にはそのIDもキーとして検索する。
【0096】
なお、リクエストが初回の場合にはデータが見つからないため、ステップS61Aの判断は否定されて、データ取得部26は、ステップS61Bに移行する。ステップS61Bでは、データ取得部26は、セッションID(SID1)をキーとして認可セッション保持部30を検索し、アクセストークン(Token1)を取得する。
【0097】
次いで、ステップS61Cでは、データ取得部26はアクセストークン(Token1)を使って、既存サービスAからデータを取得する。次いで、ステップS61Dでは、データ取得部26は、取得したデータをデータキャッシュ部40に保存する。そして、ステップS62では、データキャッシュ部40に保存したデータをアクセス制御部22に渡す。この場合、アクセス制御部22は、データ取得部26から渡されたデータをユーザ2に応答する。
【0098】
なお、ステップS61Aの判断が肯定された場合には、ステップS61Eにおいて、データ取得部26はデータキャッシュ部40からデータを読み出し、ステップS62において、そのデータをアクセス制御部22に渡す。この場合も、アクセス制御部22は、データ取得部26から渡されたデータをユーザ2に応答する。
【0099】
なお、既存サービスAにおいてデータ更新や追加・削除が行われる場合がある。このような場合には、従来のキャッシュ技術と同様、データに有効期限を設定してキャッシュ保持部よりデータを削除するようにしてもよい。あるいは、キャッシュ容量の上限を超えたら古いデータから消すようにしてもよい。あるいは、一部のデータのキャッシュを禁止するなどしてもよい。
【0100】
以上のように、本第5の実施形態によると、データ取得部26は、データを事前収集しないこととしている。これにより、膨大なデータを扱う既存サービスと連携した場合でも、性能をある程度維持したまま、仲介サーバ510が保持する必要のあるデータの容量を削減することができる。これにより、コストダウンを図ることができる。
【0101】
≪第6の実施形態≫
次に、第6の実施形態について、
図23〜
図25に基づいて説明する。
図23には、第6の実施形態に係る仲介サーバ610の機能ブロック図が示されている。
【0102】
仲介サーバ610は、第1の実施形態の仲介サーバ10の構成に加えて、変換後データ保持部44と、変換ルール保持部42と、データ変換部24とを有している。
【0103】
変換後データ保持部44は、認可セッションのセッションIDごとに、データ群を保持するテーブルであり、データ保持部32とデータ構造は同様となっている。
【0104】
変換ルール保持部42は、既存サービスと新サービスの組み合わせごとに、変換処理のルールを保持するテーブルである。具体的には、
図24(a)に示すようなデータ構造を有している。
図24(a)においては、既存サービスAから新サービスXにデータを渡す際には、JSON形式をXML形式に変換すること、および“Field1”のフィールド名を“Data_ID”に変換すること、が定義されている。
【0105】
データ変換部24は、データ保持部32のデータを読み出し、変換ルール保持部42のルールに従ってデータの変換を行った後、変換後データ保持部44に変換後のデータを保存する。例えば、
図24(b)に示すデータを、
図24(a)の変換ルールに従って変換すると、
図24(c)に示すデータとなる。
【0106】
なお、
図25は、データ変換部24の具体的な処理を示すフローチャートである。データ変換部24は、
図25のステップS200において、常時、データ保持部32のデータを確認しており、新しいデータが追加された場合に、ステップS202に移行する。ステップS202では、データ変換部24は、データ保持部32から新しく追加されたデータを読み出す。次いで、ステップS204では、データ変換部24は、読みだしたデータのサービスID(A)を検索キーに、変換ルール保持部42からエントリを読み出す。そして、ステップS204では、データ変換部24は、読みだしたエントリに基づいてデータを変換し、ステップS206において、変換後データ保持部44に変換後のデータを書き出す。その後は、ステップS200に戻り、上記処理を繰り返す。
【0107】
以上のように、本第6の実施形態によると、データ変換部24がデータの変換処理を行うことで、複数の既存サービスと連携することができるようになる。
【0108】
なお、
図24(a)では、既存サービスと新サービスとにより変換ルールを定義しているが、これに限らず、複数の既存サービスを共通的なデータフォーマットに変換するのみでもよい。このようにしても、新サービスXは仲介サーバ610の提供するデータフォーマットのみを意識するだけで、複数の既存サービスと連携することができるようになる。
【0109】
なお、上記第1〜第6の実施形態は適宜組み合わせ可能である。
【0110】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体(ただし、搬送波は除く)に記録しておくことができる。
【0111】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0112】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0113】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【0114】
なお、以上の第1〜第6の実施形態の説明に関して、更に以下の付記を開示する。
(付記1) 第1のユーザが利用可能な第1のサービスと、
第2のユーザが利用可能な第2のサービスと、
前記第1のユーザから、前記第2のユーザに対して前記第1のサービスの情報を開示する指示を受け付けると、前記第2のユーザに対して認証情報を送付し、前記第2のユーザから前記認証情報を利用したアクセスがあった場合に、前記第1のサービスから収集した情報を開示する仲介サーバと、を備える情報開示システム。
(付記2) 前記仲介サーバは、前記第1のユーザから、前記第1、第2のサービスとは異なる第3のサービスを利用する第3のユーザに対して前記第1のサービスの情報を開示する指示を受け付け、かつ、前記第2のユーザ及び前記第3のユーザが同一人物である場合には、前記第2のユーザに対して送付した認証情報と同一の認証情報を前記第3のユーザに対して送付することを特徴とする付記1に記載の情報開示システム。
(付記3) 前記仲介サーバは、前記第1のユーザから、前記第2のユーザを含む前記第2のサービスを利用可能な全ユーザに対して前記第1のサービスの情報を開示する指示を受け付けると、前記全ユーザに対して共通の認証情報を送付することを特徴とする付記1に記載の情報開示システム。
(付記4) 前記仲介サーバは、前記第1のサービスから収集した情報を所定の変換ルールに基づいて変換し、開示することを特徴とする付記1〜3のいずれかに記載の情報開示システム。
(付記5) 前記仲介サーバは、前記第2のユーザから前記認証情報を利用したアクセスがあったタイミングで、前記第2のユーザに開示する情報を前記第1のサービスから収集することを特徴とする付記1〜4のいずれかに記載の情報開示システム。
(付記6) 前記仲介サーバは、前記第1のサービスから収集した情報をキャッシュすることを特徴とする付記5に記載の情報開示システム。
(付記7) 第1のサービスを利用している第1のユーザから、第2のサービスを利用している第2のユーザに対して前記第1のサービスの情報を開示する指示を受け付けると、前記第2のユーザに対して認証情報を送付し、
前記第2のユーザから前記認証情報を利用したアクセスがあった場合に、前記第1のサービスから収集した情報を開示する、処理をコンピュータに実行させることを特徴とする情報開示プログラム。
(付記8) 前記第1のユーザから、前記第1、第2のサービスとは異なる第3のサービスを利用する第3のユーザに対して前記第1のサービスの情報を開示する指示を受け付け、かつ、前記第2のユーザ及び前記第3のユーザが同一人物である場合には、前記第2のユーザに対して送付した認証情報と同一の認証情報を前記第3のユーザに対して送付する処理を前記コンピュータに実行させることを特徴とする付記7に記載の情報開示プログラム。
(付記9) 前記認証情報を送付する処理では、前記第1のユーザから、前記第2のユーザを含む前記第2のサービスを利用可能な全ユーザに対して前記第1のサービスの情報を開示する指示を受け付けると、前記全ユーザに対して共通の認証情報を送付することを特徴とする付記7に記載の情報開示プログラム。
(付記10) 前記情報を開示する処理では、前記第1のサービスから収集した情報を所定の変換ルールに基づいて変換し、開示することを特徴とする付記7〜9のいずれかに記載の情報開示プログラム。
(付記11) 前記第2のユーザから前記認証情報を利用したアクセスがあったタイミングで、前記第2のユーザに開示する情報を前記第1のサービスから収集することを特徴とする付記7〜10のいずれかに記載の情報開示プログラム。
(付記12) 前記第1のサービスから収集した情報をキャッシュすることを特徴とする付記11に記載の情報開示プログラム。
(付記13) 第1のサービスを利用している第1のユーザから、第2のサービスを利用している第2のユーザに対して前記第1のサービスの情報を開示する指示を受け付けると、前記第2のユーザに対して認証情報を送付する工程と、
前記第2のユーザから前記認証情報を利用したアクセスがあった場合に、前記第1のサービスから収集した情報を開示する工程と、をコンピュータが実行することを特徴とする情報開示方法。
(付記14) 前記第1のユーザから、前記第1、第2のサービスとは異なる第3のサービスを利用する第3のユーザに対して前記第1のサービスの情報を開示する指示を受け付け、かつ、前記第2のユーザ及び前記第3のユーザが同一人物である場合には、前記第2のユーザに対して送付した認証情報と同一の認証情報を前記第3のユーザに対して送付する工程を前記コンピュータが実行することを特徴とする付記13に記載の情報開示方法。
(付記15) 前記認証情報を送付する工程では、前記第1のユーザから、前記第2のユーザを含む前記第2のサービスを利用可能な全ユーザに対して前記第1のサービスの情報を開示する指示を受け付けると、前記全ユーザに対して共通の認証情報を送付することを特徴とする付記13に記載の情報開示方法。
(付記16) 前記情報を開示する工程では、前記第1のサービスから収集した情報を所定の変換ルールに基づいて変換し、開示することを特徴とする付記13〜15のいずれかに記載の情報開示方法。
(付記17) 前記第2のユーザから前記認証情報を利用したアクセスがあったタイミングで、前記第2のユーザに開示する情報を前記第1のサービスから収集することを特徴とする付記13〜16のいずれかに記載の情報開示方法。
(付記18) 前記第1のサービスから収集した情報をキャッシュすることを特徴とする付記17に記載の情報開示方法。