特許第6136980号(P6136980)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士ゼロックス株式会社の特許一覧

<>
  • 特許6136980-情報処理システム及びプログラム 図000002
  • 特許6136980-情報処理システム及びプログラム 図000003
  • 特許6136980-情報処理システム及びプログラム 図000004
  • 特許6136980-情報処理システム及びプログラム 図000005
  • 特許6136980-情報処理システム及びプログラム 図000006
  • 特許6136980-情報処理システム及びプログラム 図000007
  • 特許6136980-情報処理システム及びプログラム 図000008
  • 特許6136980-情報処理システム及びプログラム 図000009
  • 特許6136980-情報処理システム及びプログラム 図000010
  • 特許6136980-情報処理システム及びプログラム 図000011
  • 特許6136980-情報処理システム及びプログラム 図000012
  • 特許6136980-情報処理システム及びプログラム 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6136980
(24)【登録日】2017年5月12日
(45)【発行日】2017年5月31日
(54)【発明の名称】情報処理システム及びプログラム
(51)【国際特許分類】
   G06F 21/62 20130101AFI20170522BHJP
【FI】
   G06F21/62 318
【請求項の数】10
【全頁数】17
(21)【出願番号】特願2014-36503(P2014-36503)
(22)【出願日】2014年2月27日
(65)【公開番号】特開2015-162057(P2015-162057A)
(43)【公開日】2015年9月7日
【審査請求日】2016年3月9日
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士ゼロックス株式会社
(74)【代理人】
【識別番号】110000154
【氏名又は名称】特許業務法人はるか国際特許事務所
(72)【発明者】
【氏名】寺尾 太郎
【審査官】 岸野 徹
(56)【参考文献】
【文献】 特表2008−547118(JP,A)
【文献】 国際公開第2014/011601(WO,A1)
【文献】 特開2008−124649(JP,A)
【文献】 特開平11−249918(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理する管理手段と、
権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む実行する処理の要求を受け付ける受付手段と、
前記権限オブジェクトに関連付けられた関数オブジェクトを取得する取得手段と、
前記関数オブジェクトにより前記要求を処理する処理手段と、を含む
情報処理システム。
【請求項2】
前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの情報の比較結果に基づいて、前記要求を受理するか否かを判断する判断手段を含み、
前記処理手段は、前記要求を受理すると判断した場合に、前記関数オブジェクトにより前記要求を処理する
請求項1に記載の情報処理システム。
【請求項3】
前記判断手段は、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとが一致する場合に、前記要求を受理する
請求項2に記載の情報処理システム。
【請求項4】
前記判断手段は、前記権限情報を認可したオブジェクトである所有者オブジェクトの親であるオブジェクト、さらに該所有者オブジェクトの親の親であるオブジェクトを順次接続した経路の中に、前記権限オブジェクトの親であるオブジェクトが含まれる場合に、前記要求を受理する
請求項2に記載の情報処理システム。
【請求項5】
前記判断手段は、前記権限オブジェクトが前記管理手段により管理されない場合には、前記要求を受理しない
請求項2乃至4のいずれかに記載の情報処理システム。
【請求項6】
前記判断手段は、前記権限オブジェクトが、前記権限情報を認可したオブジェクトである所有者オブジェクト、前記権限情報の委譲先を示すオブジェクトであるクライアントオブジェクト、前記権限情報により実行が許可される関数をそれぞれ指定するデータを含まない場合には、前記要求を受理しない
請求項2乃至5のいずれかに記載の情報処理システム。
【請求項7】
関数のソースコードを含むデータオブジェクトを登録する手段と、
所与の所有者オブジェクト、所与のクライアントオブジェクト、前記データオブジェクトを指定する情報を含む権限オブジェクトを生成する生成手段と、を含む
請求項6に記載の情報処理システム。
【請求項8】
前記権限オブジェクトに含まれる情報により指定される前記データオブジェクトに含まれる関数のソースコードに基づいて関数オブジェクトが生成できない場合には、前記要求を受理しない
請求項7に記載の情報処理システム。
【請求項9】
前記取得手段は、前記権限オブジェクトに含まれる処理指定オブジェクトにより指定される前記データオブジェクトに含まれる関数のソースコードに基づいて生成された関数オブジェクトを取得する
請求項7又は8に記載の情報処理システム。
【請求項10】
それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理する管理手段と、
権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む実行する処理の要求を受け付ける受付手段と、
前記権限オブジェクトに関連付けられた関数オブジェクトを取得する取得手段と、
前記関数オブジェクトにより前記要求を処理する処理手段
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム及びプログラムに関する。
【背景技術】
【0002】
オブジェクトを管理するサーバでは、処理の要求元であるクライアントが有する権限に応じてオブジェクトを処理(生成、取得、変更、削除等)することがある。ここで、サーバで管理するオブジェクトには生成、変更、削除等が行われることがあるため、クライアントに対してオブジェクトとは独立に権限を固定的に紐付けておくと、クライアントの権限に応じてオブジェクトを柔軟に処理することが困難となることがある。また、サーバにおいて実行される処理の指定を拡張可能に構成することで、システムの開発や利用性が向上することが期待される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平09−251425号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、クライアントから受け付けた要求に係る権限オブジェクトに応じて決定される関数により要求を処理できる情報処理システム及びプログラムを提供することにある。
【課題を解決するための手段】
【0005】
請求項1に係る発明は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理する管理手段と、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む実行する処理の要求を受け付ける受付手段と、前記権限オブジェクトに関連付けられた関数オブジェクトを取得する取得手段と、前記関数オブジェクトにより前記要求を処理する処理手段と、を含む情報処理システムである。
【0006】
請求項2に係る発明は、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとの情報の比較結果に基づいて、前記要求を受理するか否かを判断する判断手段を含み、前記処理手段は、前記要求を受理すると判断した場合に、前記関数オブジェクトにより前記要求を処理する請求項1に記載の情報処理システムである。
【0007】
請求項3に係る発明は、前記判断手段は、前記権限情報を認可したオブジェクトである所有者オブジェクトと、前記権限オブジェクトの親であるオブジェクトとが一致する場合に、前記要求を受理する請求項2に記載の情報処理システムである。
【0008】
請求項4に係る発明は、前記判断手段は、前記権限情報を認可したオブジェクトである所有者オブジェクトの親であるオブジェクト、さらに該所有者オブジェクトの親の親であるオブジェクトを順次接続した経路の中に、前記権限オブジェクトの親であるオブジェクトが含まれる場合に、前記要求を受理する請求項2に記載の情報処理システムである。
【0009】
請求項5に係る発明は、前記判断手段は、前記権限オブジェクトが前記管理手段により管理されない場合には、前記要求を受理しない請求項2乃至4のいずれかに記載の情報処理システムである。
【0010】
請求項6に係る発明は、前記判断手段は、前記権限オブジェクトが、前記権限情報を認可したオブジェクトである所有者オブジェクト、前記権限情報の委譲先を示すオブジェクトであるクライアントオブジェクト、前記権限情報により実行が許可される関数をそれぞれ指定するデータを含まない場合には、前記要求を受理しない請求項2乃至5のいずれかに記載の情報処理システムである。
【0011】
請求項7に係る発明は、関数のソースコードを含むデータオブジェクトを登録する手段と、所与の所有者オブジェクト、所与のクライアントオブジェクト、前記データオブジェクトを指定する情報を含む権限オブジェクトを生成する生成手段と、を含む請求項6に記載の情報処理システムである。
【0012】
請求項8に係る発明は、前記権限オブジェクトに含まれる情報により指定される前記データオブジェクトに含まれる関数のソースコードに基づいて関数オブジェクトが生成できない場合には、前記要求を受理しない請求項7に記載の情報処理システムである。
【0013】
請求項9に係る発明は、前記取得手段は、前記権限オブジェクトに含まれる前記処理指定オブジェクトにより指定される前記データオブジェクトに含まれる関数のソースコードに基づいて生成された関数オブジェクトを取得する請求項7又は8に記載の情報処理システムである。
【0014】
請求項10に係る発明は、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理する管理手段と、権限情報が関連付けられたオブジェクトである権限オブジェクトの指定を含む実行する処理の要求を受け付ける受付手段と、前記権限オブジェクトに関連付けられた関数オブジェクトを取得する取得手段と、前記関数オブジェクトにより前記要求を処理する処理手段としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【0015】
請求項1及び10に記載の発明によれば、クライアントから受け付けた要求に係る権限オブジェクトに応じて決定される関数により要求を処理できる。
【0016】
請求項2に記載の発明によれば、クライアントから受け付けた要求に係る権限オブジェクトが適正である場合に要求を処理できる。
【0017】
請求項3に記載の発明によれば、クライアントから受け付けた要求に係る権限オブジェクトの所有者が、権限オブジェクトの親である場合に要求を処理できる。
【0018】
請求項4に記載の発明によれば、クライアントから受け付けた要求に係る権限オブジェクトの親が、権限オブジェクトの所有者の祖先に当たる場合に要求を処理できる。
【0019】
請求項5に記載の発明によれば、不適正な権限に基づく要求に対する処理の実行を防止できる。
【0020】
請求項6に記載の発明によれば、権限オブジェクトに関数オブジェクトが関連付けられていない場合にはクライアントからの要求を受理しないようにできる。
【0021】
請求項7に記載の発明によれば、関数オブジェクトが関連付けられた権限オブジェクトを生成できる。
【0022】
請求項8に記載の発明によれば、権限オブジェクトに適正な関数オブジェクトが関連付けられていない場合にはクライアントからの要求を受理しないようにできる。
【0023】
請求項9に記載の発明によれば、権限オブジェクトに予め登録したソースコードに基づいて生成した関数オブジェクトを関連付けることができる。
【図面の簡単な説明】
【0024】
図1】本実施形態に係る情報処理システムのシステム構成図である。
図2】情報管理装置の機能ブロック図である。
図3】オブジェクトのデータ構成の一例を示す図である。
図4】プロトタイプベースオブジェクト管理テーブルの一例を示す図である。
図5】バリュー管理テーブルの一例を示す図である。
図6】データオブジェクト管理テーブルの一例を示す図である。
図7】アクセストークンの生成処理の一例を示すフロー図である。
図8】ユーザ端末から受け付けたリクエストに対する処理の一例を示すフロー図である。
図9】アクセストークンの検証処理の一例を示すフロー図である。
図10】ユーザ端末から受け付けたデータ取得要求に対する処理の一例を示すフロー図である。
図11】プロトタイプベースのオブジェクトにより構成される木構造の一例である。
図12】オブジェクトが有するデータの一例を示す図である。
【発明を実施するための形態】
【0025】
以下、本発明を実施するための実施の形態(以下、実施形態という)を、図面に基づいて説明する。
【0026】
[1.システム構成の説明]
図1には、本実施形態に係る情報処理システムSのシステム構成図を示した。図1に示されるように、情報処理システムSは、情報管理装置10と、1以上のユーザ端末5とを含み、情報管理装置10とユーザ端末5とはそれぞれネットワーク2を介してデータ通信可能に接続される。
【0027】
また、図1に示されるように、情報管理装置10は、ハードウェア構成の一例として、制御部10A、記憶部10B、通信部10Cを備える。
【0028】
制御部10Aは、CPU(Central Processing Unit)を含み、記憶部10Bに記憶されたプログラムに基づいて、各種の演算処理を実行するとともに情報管理装置10の各部を制御する。
【0029】
記憶部10Bは、情報管理装置10のオペレーティングシステム等の制御プログラムやデータを記憶するほか、制御部10Aのワークメモリとしても用いられる。プログラムは、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等の情報記憶媒体に格納された状態で情報管理装置10に供給されてもよいし、インターネット等のデータ通信網を介して情報管理装置10に供給されてもよい。
【0030】
通信部10Cは、例えばネットワークインターフェースカード(NIC)を含み、NICを介してネットワーク2に接続して、ネットワーク2に接続されるユーザ端末5と通信する。
【0031】
本実施形態では、情報管理装置10は、プロトタイプベースのオブジェクトを管理する。ここで、プロトタイプベースのオブジェクトとは、プロトタイプベースのオブジェクトの集合に唯一存在するルートオブジェクトを除けば、唯一つの親のオブジェクト(プロトタイプ)を持つオブジェクトのことであり、ルートオブジェクトは自身のプロトタイプを持たない。また、オブジェクトAがオブジェクトBのプロトタイプであるとき、オブジェクトBはオブジェクトAのアーティファクトであるともいう。オブジェクト間のプロトタイプ関係により、プロトタイプベースのオブジェクト全体の集合は木構造で表現される。また、オブジェクトにより構成される木構造を破壊しないならば、プロトタイプを再接続することで木構造を変形することが可能である。さらに、情報管理装置10で管理するオブジェクトには、属性及び属性値を持たせることができる。REST(REpresentational State Transfer)アーキテクチャスタイルにおいては、オブジェクトをリソース、値を表現と呼ぶこともある。値を持つオブジェクトには、アクセストークンと呼ばれる権限情報を表すものがある。オブジェクトには、単にオブジェクト識別子とプロトタイプのみからなる純粋なアイデンティティのみを表すもの、任意のコンテント型の値を持つデータを表現するもの、アクセス資格を証明するクレデンシャルであるアクセストークン、あるいはオブジェクトの所有者であるリソースオーナーやリソースオーナーの認可のもとにオブジェクトへのアクセスを行うアプリケーション(クライアント)のようなエンティティを表すものが含まれることとしてよい。そして、これらのオブジェクトが1つの木構造の中に含まれる。
【0032】
本実施形態では、情報管理装置10は、ユーザ端末5から受け付けたリクエストに従って、管理するオブジェクトの追加、更新、情報の読み出し、削除等を実行する。また、情報管理装置10は、アクセストークンと呼ばれる権限オブジェクトに対して、関数を識別する識別情報を関連付けておき、ユーザ端末5からリクエストとともに受け付けた権限オブジェクトに関連付けられた関数により、ユーザ端末5から受け付けたリクエストを処理することとする。以下では、以上の処理を実現するために、情報管理装置10に備えられた機能の一例について詳細に説明する。
【0033】
[2.情報管理装置10に備えられた機能の説明]
次に、図2に示される情報管理装置10の機能ブロック図に基づき、情報管理装置10に備えられた機能の一例について説明する。図2に示されるように、情報管理装置10は、オブジェクト情報管理部11、リクエスト受付部12、権限情報取得部13、検証部14、関数オブジェクト取得部15、関数オブジェクト生成部16、リクエスト処理部17、処理データ提供部18を備える。
【0034】
情報管理装置10に備えられる上記の各部の機能は、情報管理装置10に備えられる制御部10Aが、記憶部10Bやコンピュータ読み取り可能な情報記憶媒体に格納されたプログラムを読み込み実行することで実現されるものとしてよい。なお、プログラムは光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等の情報記憶媒体によって情報管理装置10に供給されることとしてもよいし、インターネット等のデータ通信網を介して情報管理装置10に供給されることとしてもよい。以下、情報管理装置10に備えられる各部の機能の詳細について説明する。
【0035】
オブジェクト情報管理部11は、プロトタイプベースのオブジェクトの情報、データオブジェクトの情報を管理する。ここで、プロトタイプベースのオブジェクトには、権限情報が関連付けられたアクセストークンと呼ばれる権限オブジェクトを含む。プロトタイプベースのオブジェクトは変更可能(ミュータブル)なオブジェクトであり、典型的にはランダムに生成されたIDで識別される。データオブジェクトは変更不能(イミュータブル)なオブジェクトであり、典型的には対応するデータのハッシュ値として計算されたIDで識別される。また、データオブジェクトには、例えば、関数オブジェクトを生成するためのソースコード、ソースコードから生成された関数オブジェクトの識別情報等を含む関数データオブジェクトを含む。以下、図3に基づき、プロトタイプベースのオブジェクトと、データオブジェクトのデータ構成の一例について説明する。なお、図3に示した例では、データを構成する要素に対し、要素の具体的な内容を[要素]と表記している。
【0036】
図3の(A)には、プロトタイプベースのオブジェクトの基本的なデータ構成を示した。図3(A)に示されるように、プロトタイプベースのオブジェクトは、オブジェクトの識別情報であるid、オブジェクトの親(プロトタイプ)オブジェクトの識別情報であるproto、オブジェクトの型を示すtype、オブジェクトのデータ内容を格納したデータオブジェクトの識別情報を表すetag、オブジェクトの生成日時を表すtimeを含む。なお、プロトタイプベースのオブジェクトのデータ構成は、図3(A)に示された例に限定されるものではなく、id、protoを含んでいれば、上述した要素以外の要素を含み構成されていても構わない。
【0037】
図3の(B)には、アクセストークンのデータ構成を示した。図3の(B)に示されるように、アクセストークンは、{“owner”: owner(オーナー)のオブジェクトID、“client”: client(クライアント)のオブジェクトID、“スコープ”:関数を識別する識別情報}の情報を含む。本実施形態に係る情報処理システムSでは、ユーザ端末5から受け付ける処理要求にはアクセストークンが添付されるが、ここで、オーナーが処理のリクエスタ、クライアントが処理の代理リクエスタとして扱われ、スコープには、関数データオブジェクトの識別情報が格納される。
【0038】
図3の(C)には、データオブジェクト(関数データオブジェクト)のデータ構成を示した。図3の(C)に示されるように、関数データオブジェクトは、ソースコード(スクリプト)を格納したcontent、ソースコード(スクリプト)から生成(評価)された関数オブジェクトの識別情報であるfunc、データ内容のオクテット長を表すlength、データが登録された日時を示すtimeが含まれる。もちろん、データオブジェクトは図3の(C)に示した構成に限られるものではない。例えば、データオブジェクトに、データにアクセスしたクライアントのリストを格納するようにすることとしてもよく、この場合には、特定のオクテット配列にアクセスした全てのクライアントのリストを生成可能となる。
【0039】
次に、図4乃至図6に基づき、図3に示したデータ構成のプロトタイプベースのオブジェクトとデータオブジェクトとを管理するための管理テーブルの一例について説明する。
【0040】
まず、図4には、プロトタイプベースのオブジェクトの情報を管理するプロトタイプベースオブジェクト管理テーブルを示した。図4に示されるように、プロトタイプベースオブジェクト管理テーブルには、オブジェクトを識別するオブジェクトID、オブジェクトの親(プロトタイプ)であるプロトタイプオブジェクトを識別するプロトタイプID、オブジェクトの属性情報が関連付けて記憶される。例えば、オブジェクトの属性情報には、オブジェクトの型情報(type)、オブジェクトに格納される(関連付けられる)値(バリュー)を格納したデータ(オブジェクト)の識別情報(etag)、オブジェクトの生成日時(time)等の情報が含まれる。
【0041】
図5には、プロトタイプベースのオブジェクトのetagに対応するデータを格納したバリュー管理テーブルの一例を示した。図5に示されるように、バリュー管理テーブルには、etagのID(キー)に関連付けてバリューの情報が記憶される。例えば、アクセストークンであれば、バリューは{“owner”: owner(オーナー)のオブジェクトID、“client”: client(クライアント)のオブジェクトID、“スコープ”:関数を識別する識別情報}というapplication/jsonのタイプのデータ形式に記述される。
【0042】
図6には、データオブジェクト(ここでは関数データオブジェクト)の情報を管理するデータオブジェクト管理テーブルの一例を示した。図6に示されるように、データオブジェクト管理テーブルには、データオブジェクトを識別するデータID、関数オブジェクトのソースコード(スクリプト)を格納したcontent、ソースコードを評価して生成した関数オブジェクトの識別情報(func)、データ内容のオクテット長を表すlength、データが登録された日時を示すtimeが関連付けて記憶される。
【0043】
リクエスト受付部12は、ユーザ端末5からオブジェクト情報管理部11で管理されるオブジェクトの処理に関するリクエストを受け付ける。リクエスト受付部12は、例えばユーザ端末5からHTTPリクエストの形式でリクエストを受け付けることとしてよい。
【0044】
権限情報取得部13は、リクエスト受付部12で受け付けたリクエストに係るアクセストークン(権限オブジェクト)の情報を取得する。例えば、権限情報取得部13は、アクセストークンの情報は、HTTPリクエストのAuthorizationフィールドから得てもよいし、アクセストークンの情報を含むクッキーが存在すれば、クッキーから得てもよい。
【0045】
検証部14は、権限情報取得部13で取得されたアクセストークン(権限オブジェクト)の情報が正当なものであるか否かを検証する。以下、検証部14による検証処理の具体例について説明する。
【0046】
まず、検証部14は、権限情報取得部13で取得されたアクセストークンのIDが、オブジェクト情報管理部11で管理するプロトタイプベースオブジェクト管理テーブルに含まれているか否か(第1の条件の適否)を判断し、含まれていない場合には検証失敗と判断する。
【0047】
次に、検証部14は、第1の条件が満たされている場合に、アクセストークンのデータ形式(タイプ)が所定の型(すなわち、application/json)であるか否か(第2の条件の適否)を判断し、所定の型でない場合には検証失敗と判断する。
【0048】
次に、検証部14は、第2の条件が満たされている場合に、アクセストークンのバリューの値(owner、client、scopeの値)を取得し、owner、client、scopeのそれぞれの値がオブジェクト情報管理部11で管理されるデータであるか否か(第3の条件の適否)を判断し、いずれかの値がオブジェクト情報管理部11で管理されるデータでない場合には検証失敗と判断する。
【0049】
次に、検証部14は、第3の条件が満足されている場合に、オブジェクト情報管理部11からアクセストークンのプロトタイプの情報を取得し、アクセストークンのプロトタイプが、アクセストークンのオーナーと一致しているか、オーナーのプロトタイプチェーン(オーナーの親、さらにその親へとオーナーの祖先を順に接続した経路)に含まれるか否か(第4の条件の適否)を判断し、上記のいずれにも合致しない場合には検証失敗と判断する。
【0050】
次に、検証部14は、第4の条件が満足されている場合に、アクセストークンのスコープの情報に関数オブジェクトが割り当てられているか否か(第5の条件の適否)を判断し、スコープに関数オブジェクトが割り当てられていない場合には検証失敗と判断し、スコープに関数オブジェクトが割り当てられている場合には検証成功と判断する。なお、スコープに関数オブジェクトが割り当てられているか否かは、スコープの情報に基づいて関数オブジェクト取得部15により関数オブジェクトが取得されるか否かに基づいて判断することとしてよい。
【0051】
関数オブジェクト取得部15は、アクセストークンのスコープの情報に基づいて、オブジェクト情報管理部11から、スコープに関連付けられた関数オブジェクトの情報を取得する。例えば、関数オブジェクト取得部15は、アクセストークンのスコープの情報(データオブジェクトのID)に基づいて、オブジェクト情報管理部11で管理されるデータオブジェクト管理テーブルの中から対応するレコードを検索する。そして、関数オブジェクト取得部15は、検索されたレコードのfunc属性を参照し、func属性に値が格納されている場合には、func属性の値を関数オブジェクトの識別情報として得る。また、関数オブジェクト取得部15は、検索されたレコードのfunc属性に値が格納されていない場合には、content属性に格納されたソースコードに基づく関数オブジェクトの生成(評価)を関数オブジェクト生成部16に依頼する。
【0052】
関数オブジェクト生成部16は、関数オブジェクト生成部16による依頼に係るソースコードを関数として評価できるかを判断し、関数として評価できない場合には関数オブジェクト取得部15にエラーを返し、関数として評価できる場合にはソースコードに基づいて生成した関数オブジェクトの識別情報を関数オブジェクト取得部15に返す。
【0053】
関数オブジェクト取得部15は、関数オブジェクト生成部16からエラーが返ってきた場合には、検証部14に関数オブジェクトの未割り当てを報告し、関数オブジェクト生成部16から関数オブジェクトの識別情報が返ってきた場合には、その関数オブジェクトの識別情報を対応するレコードのfunc属性の値に格納するとともに、検証部14にスコープに割り当てられた関数オブジェクトの識別情報を報告する。
【0054】
リクエスト処理部17は、リクエスト受付部12で受け付けたリクエストについて権限情報取得部13で取得したアクセストークン(権限オブジェクト)についての検証部1414から通知された検証結果と、該受け付けたアクセストークンについて関数オブジェクト取得部15で取得された関数オブジェクトに基づいて、リクエスト受付部12で受け付けたリクエストの処理を制御する。例えば、リクエスト処理部1715は、リクエスト受付部12で受け付けたリクエストに係るアクセストークンについての検証結果が検証失敗である場合には、リクエストに係る処理を不受理としてエラーを処理データ提供部18に出力することとしてよい。また、リクエスト処理部1715は、リクエスト受付部12で受け付けたリクエストに係るアクセストークンについての検証結果が検証成功である場合には、リクエスト受付部1212で受け付けたリクエストを、該リクエストに関して受け付けたアクセストークンについて関数オブジェクト取得部15で取得された関数オブジェクトに基づいて処理し、その実行結果を処理データ提供部1816に出力する。
【0055】
処理データ提供部18は、リクエスト処理部17による処理結果を、リクエストの要求元であるユーザ端末5に対して提供する。
【0056】
[3.処理の一例についての説明]
次に、図7乃至図10に示されたフロー図に基づいて、情報処理システムSで実行される処理の一例について詳細に説明する。
【0057】
[3.1.トークンの生成処理]
まず、図7に示したフロー図に基づいて、情報管理装置10が実行するアクセストークンの生成処理の一例について説明する。まず、図7のフローにおいては、アクセストークンtが既に存在し、アクセストークンtはオブジェクトの生成、取得、更新、削除が可能なスコープを有していることとする。
【0058】
図7に示されるように、情報管理装置10は、例えばユーザ端末5からアクセストークンtを利用した、所望の関数のソースコードをバリューとして持つオブジェクト(関数データオブジェクト)fの生成要求を受け付けると(S101)、オブジェクトfを生成する(S102)。ここで、情報管理装置10は、S102で生成したオブジェクトfの識別情報(ID)をユーザ端末5に通知することとしてよい。
【0059】
さらに、情報管理装置10は、例えばユーザ端末5からアクセストークンtを利用した、オーナーo、クライアントc、スコープf(オブジェクトfの識別情報)としたアクセストークンTの生成要求を受け付けると(S103)、アクセストークンTを生成する(S104)。そして、情報管理装置10は、S104で生成したアクセストークンTの情報(アクセストークンTのID)を例えばユーザ端末5に提供して(S105)、処理を終了する。
【0060】
[3.2.リクエストの処理]
次に、図8に示したフロー図に基づいて、情報管理装置10がアクセストークンTを利用したリクエストの処理の一例について説明する。
【0061】
[3.2.1.リクエストの処理(S201〜S203)]
情報管理装置10は、例えばユーザ端末5からリクエストを受け付けると(S201)、リクエストに係るアクセストークン(ここではアクセストークンTとする)を取得する(S202)。例えば、情報管理装置10は、アクセストークンのオブジェクトIDを、ユーザ端末5からのHTTPリクエストにおけるAuthorizationフィールドから得てもよいし、アクセストークンの情報を含むクッキーが存在すれば、クッキーから得てもよい。
【0062】
情報管理装置10は、S202で取得したアクセストークンに基づく検証処理を実行する(S203)。ここで、アクセストークンに基づく検証処理の詳細については、図9に示したフロー図に基づき説明する。
【0063】
[3.2.2.アクセストークンの検証処理]
図9には、アクセストークンの検証処理のフロー図を示した。図9に示されるように、情報管理装置10は、検証対象となるアクセストークンのIDが、オブジェクト情報管理部11で管理するIDの中に存在するか否かを判断する(S301)。例えば、情報管理装置10は、オブジェクト情報管理部11で管理するプロトタイプベースオブジェクト管理テーブルのオブジェクトIDの中に検証対象となるアクセストークンのIDが含まれるか否かにより、上記の判断を行うこととしてよい。そして、情報管理装置10は、検証対象となるアクセストークンのIDが、オブジェクト情報管理部11で管理するIDの中に存在する場合には(S301:Y)、S302に進み、検証対象となるアクセストークンのIDが、オブジェクト情報管理部11で管理するIDの中に存在しない場合には(S301:N)、検証失敗として(S312)、リターンする。
【0064】
情報管理装置10は、S301で検証対象となるアクセストークンのIDが、オブジェクト情報管理部11で管理するIDの中に存在する場合には(S301:Y)、アクセストークンのIDをキーとしてアクセストークンのデータを参照し、アクセストークンのデータ形式が正当であるか否かを判断する(S302)。例えば、情報管理装置10は、アクセストークンに設定されたtype属性がapplication/jsonである場合には正当と判断し、そうでない場合には正当でないと判断することとしてよい。そして、情報管理装置10は、アクセストークンのデータ形式が正当である場合には(S302:Y)、S303に進み、アクセストークンのデータ形式が正当でない場合には(S302:N)、検証失敗として(S312)、リターンする。
【0065】
情報管理装置10は、アクセストークンのデータ形式が正当である場合には(S302:Y)、さらにアクセストークンについて指定されたオーナー、クライアント、スコープのバリュー(ID)を取得し(S303)、オーナー、クライアント、スコープで指定されるオブジェクトIDがオブジェクト情報管理部11で管理するIDの中に存在するか否かを判断する(S304)。例えば、情報管理装置10は、オーナー、クライアント、スコープで指定されるオブジェクトIDがプロトタイプベースオブジェクト管理テーブルかデータオブジェクト管理テーブルのいずれかに含まれているか否かに基づいて上記の判断を行うこととしてよい。そして、情報管理装置10は、アクセストークンについて指定されたオーナー、クライアント、スコープのオブジェクトIDがオブジェクト情報管理部11で管理するIDの中に含まれる場合には(S304:Y)、S305に進み、オーナー、クライアント、スコープのオブジェクトIDがオブジェクト情報管理部11で管理するIDの中に含まれない場合には(S304:N)、検証失敗として(S312)、リターンする。
【0066】
情報管理装置10は、アクセストークンについて指定されたオーナー、クライアント、スコープのオブジェクトIDがオブジェクト情報管理部11で管理するIDの中に含まれる場合には(S304:Y)、アクセストークンのプロトタイプの情報(親オブジェクトのオブジェクトID)を取得する(S305)。そして、情報管理装置10は、アクセストークンのプロトタイプオブジェクトが、アクセストークンについて指定されたオーナーと一致するか、オーナーのプロトタイプチェーン(オーナーの祖先のオブジェクトを順に接続した経路)に含まれるか否かを判断し(S306)、含まれると判断する場合には(S306:Y)、S307に進み、含まれないと判断する場合には(S306:N)、検証失敗として(S312)、リターンする。
【0067】
情報管理装置10は、アクセストークンのプロトタイプオブジェクトが、アクセストークンについて指定されたオーナーと一致するか、オーナーのプロトタイプチェーンに含まれる場合には(S306:Y)、アクセストークンについて指定されたスコープのオブジェクトIDのデータを参照する(S307)。例えば、情報管理装置10は、スコープのオブジェクトIDをキーとして、データオブジェクト管理テーブルに格納されるレコードの情報を参照することとしてよい。
【0068】
情報管理装置10は、S307で参照したスコープのデータに、関数オブジェクトが割り当てられているか否かを判断する(S308)。例えば、情報管理装置10は、スコープのデータにおけるfunc属性に識別情報が格納されているか否かに基づいて上記の判断を行うこととしてよい。そして、情報管理装置10は、スコープに関数オブジェクトが割り当てられている場合には(S308:Y)、検証成功として(S309)、リターンする。また、情報管理装置10は、スコープに関数オブジェクトが割り当てられていない場合には(S308:N)、スコープのデータに含まれるソースコードが関数として評価できるか否かを判断する(S310)。そして、情報管理装置10は、S310でスコープのデータに含まれるソースコードが関数として評価できる場合には(S310:Y)、ソースコードに基づいて関数オブジェクトを生成して、生成した関数オブジェクトのIDをスコープのfunc属性に格納してスコープのデータを更新する(S311)。また、情報管理装置10は、S310でスコープのデータに含まれるソースコードが関数として評価できない場合には(S310:N)、検証失敗として(S312)、リターンする。
【0069】
以上が、アクセストークンに基づく検証処理の流れである。ここで再び図8に示したフロー図に戻り説明を続ける。
【0070】
[3.2.3.リクエストの処理(S204〜S208)]
図8に示されるように、情報管理装置10は、アクセストークンについての検証処理を終えると(S203)、アクセストークンの検証処理の結果が検証成功である場合には(S204:Y)、アクセストークンのスコープに割り当てられた関数オブジェクトを取得する(S205)。例えば、情報管理装置10は、アクセストークンのスコープのデータにおけるfunc属性に格納された識別情報により識別される関数オブジェクトを取得することとしてよい。
【0071】
次に、情報管理装置10は、S205で取得したアクセストークンに関連付けられた関数オブジェクトに基づいて、S201で受け付けたリクエストを処理する(S206)。そして、情報管理装置10は、S206で処理した結果生成した処理データを、リクエストに対する応答として、リクエスト元であるユーザ端末5に対して提供して(S207)、処理を終える。
【0072】
また、情報管理装置10は、S204でアクセストークンの検証処理の結果が検証失敗である場合には(S204:N)、リクエスト元であるユーザ端末5に対してエラーを通知して(S208)、処理を終える。ここで、情報管理装置10は、検証失敗の内容(原因)に応じて対応するエラーコードをユーザ端末5に対して通知することとしてよい。
【0073】
以上の説明した情報管理装置10によれば、アクセストークンに任意のサーバサイド処理を対応付けておくことが可能となる。これにより、一つのエンドポイントに対して、アクセストークンに紐付くスコープの値を変更することで、実行される処理を切り替えることもできる。
【0074】
[3.3.リクエストの処理の具体例について]
次に、図10に示されたフロー図、図11及び図12に示したオブジェクトの構成例に基づいて、情報管理装置10において実行されるリクエストの処理の一例について説明する。以下に説明する例においては、プロトタイプベースのオブジェクトにユーザ端末5に提供するコンテンツ(例えばウェブページ)を構成する要素及びその値を、属性及び属性値としたデータが付与されていることとする。まず、図11及び図12に基づいて、オブジェクトの構成例について説明する。
【0075】
図11には、プロトタイプベースのオブジェクトを木構造に表した図を示した。図11に示されるように、「root」オブジェクトP1はルートオブジェクトであり、「generic」オブジェクトP11はP1をプロトタイプとするオブジェクトである。さらに、「customer」オブジェクトP111と、「A社」オブジェクトP112は、P11をプロトタイプとするオブジェクトである。「B社」オブジェクトP1111、「C社」オブジェクトP1112は、P111をプロトタイプとするオブジェクトである。「開発」オブジェクトP1121、「営業」オブジェクトP1122は、P112をプロトタイプとするオブジェクトである。「ユーザa」オブジェクトP11211は、P1121をプロトタイプとするオブジェクトである。「アクセストークンTa」オブジェクトP112111、「aのカスタムコンテンツ」P112112は、P11211をプロトタイプとするオブジェクトである。
【0076】
図12には、図11に示された各オブジェクトに属性として付与されたデータの一例を示した。各オブジェクトデータには、’属性’と’属性値’の組が1以上含まれている。
【0077】
次に、図10に示されたフロー図に基づいて、プロトタイプベースのオブジェクトからリクエストに係るデータを読み出して応答する処理について説明する。なお、図10に示す例では、情報管理装置10がユーザ端末5からのリクエストの際に受け付けたアクセストークンには、オブジェクトのデータの読み出し(read)が許可される関数が関連付けられていることとする。
【0078】
図10に示されるように、情報管理装置10は、例えばユーザ端末5からリクエストURIであるuriを取得すると(S401)、uriがオブジェクトIDの形式である場合には(S402:Y)、uriで指定されるオブジェクトIDのデータが存在するか否かを判断し(S403)、データが存在する場合には(S403:Y)、データを読み出してリクエストの応答として返し(S404)。データが存在しない場合には(S403:N)、エラーを通知して(S405)、処理を終了する。
【0079】
また、情報管理装置10は、S401で取得したuriがオブジェクトIDの形式でない場合には(S402:N)、uriには属性名が指定されているものと判断し、ユーザ端末5から受け付けたリクエストに係るアクセストークンのクライアントの情報により指定されるオブジェクトを注目オブジェクトに設定する(S406)。
【0080】
そして、情報管理装置10は、注目オブジェクトに付与されたデータの中に、uriで指定された属性が含まれているか否かを判断し(S407)、含まれている場合には(S407:Y)、注目オブジェクトに付与されたデータをリクエストに係る属性の属性値として返して(S408)、処理を終了する。
【0081】
また、情報管理装置10は、注目オブジェクトに付与されたデータの中に、uriで指定された属性が含まれていない場合には(S407:N)、現在の注目オブジェクトの親(すなわちプロトタイプ)のオブジェクトがあるときには(S409:Y)、現在の注目オブジェクトの親を新たな注目オブジェクトに設定して(S410)、S407に戻る。また、情報管理装置10は、S409で現在の注目オブジェクトの親(すなわちプロトタイプ)のオブジェクトがないときには(S409:N)、対応するデータなしとしてエラーを通知して(S405)、処理を終了する。
【0082】
以上のオブジェクト構成及びリクエストの処理によれば、データの読み出しの関数は共通としつつも、アクセストークンで指定されるクライアントのオブジェクトと、そのプロトタイプチェーン上にあるオブジェクトに付与された属性及び属性値に応じて、ユーザ端末5に対してリクエストに係る属性の値を提供できる。
【0083】
なお、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。
【符号の説明】
【0084】
S 情報処理システム、5 ユーザ端末、10 情報管理装置、11 オブジェクト情報管理部、12 リクエスト受付部、13 権限情報取得部、14 検証部、15 関数オブジェクト取得部、16 関数オブジェクト生成部、17 リクエスト処理部、18 処理データ提供部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12