(57)【要約】【課題】ライセンス管理システムとの通信が可能でない場合に、アプリケーションの実行を制御することができるようにした情報処理装置を提供する。【解決手段】情報処理装置の要求手段は、アプリケーションの実行をライセンスにしたがって制御するライセンス管理システムとの通信が可能でない場合に、本情報処理装置内のライセンス管理手段に対して、ライセンス認証の要求を行い、指示手段は、ライセンス管理手段に対して検証トークンの検証を指示し、制御手段は、要求に対する認証結果、指示に対する検証結果にしたがって、アプリケーションの実行を制御し、ライセンス管理手段は、アプリケーションに関するライセンス認証の要求を受け付けた場合、ユーザのライセンス認証を行い、認証結果を制御手段に通知し、検証トークンの検証の指示を受け付けた場合、該検証トークンに基づいてアクセストークンの真正性を検証し、検証結果を制御手段に通知する。【選択図】図１
2019144995.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションの実行をライセンスにしたがって制御するライセンス管理システムとの通信が可能でない場合に、本情報処理装置内のライセンス管理手段に対して、該アプリケーションに関するライセンス認証の要求を行う要求手段と、
前記ライセンス管理手段に対して、アクセストークンの真正性を検証するための検証トークンの検証を指示する指示手段と、
前記要求に対する認証結果、前記指示に対する検証結果にしたがって、前記アプリケーションの実行を制御する制御手段
を有し、
前記ライセンス管理手段は、
前記アクセストークンを含む、前記アプリケーションに関するライセンス認証の要求を受け付けた場合、該アクセストークンに基づいてユーザのライセンス認証を行う認証手段と、
前記認証手段による認証結果を前記制御手段に通知する第１の通知手段と、
前記検証トークンの検証の指示を受け付けた場合、該検証トークンに基づいて前記アクセストークンの真正性を検証する検証手段と、
前記検証手段による検証結果を前記制御手段に通知する第２の通知手段
を有する情報処理装置。
【請求項２】
前記ライセンス管理システムとの通信が可能である場合に、本情報処理装置を識別する情報を該ライセンス管理システムに送信し、
前記ライセンス管理システムから本情報処理装置を識別する情報と該ライセンス管理システムでの検証した日時を受信した場合、該情報と該日時を記憶する記憶手段
をさらに有する請求項１に記載の情報処理装置。
【請求項３】
前記ライセンス管理システムとの通信が可能でない場合に、前記指示手段は、前記指示を行う場合に、本情報処理装置を識別する情報を前記ライセンス管理手段に渡し、
前記検証手段は、前記指示手段から渡された前記本情報処理装置を識別する情報と前記記憶手段に記憶されている本情報処理装置を識別する情報とが一致することを条件に加えて、前記アクセストークンの真正性を検証する、
請求項２に記載の情報処理装置。
【請求項４】
前記ライセンス管理システムでの検証した日時として、検証が成功した場合の日時とする、
請求項２に記載の情報処理装置。
【請求項５】
前記記憶手段は、前記ライセンス管理システムによる認証結果と前記アクセストークンを記憶する、
請求項２に記載の情報処理装置。
【請求項６】
前記ライセンス管理手段による処理は、前記ライセンス管理システムとの通信が可能である場合に、少なくとも１回以上のライセンス管理システムによる認証が行われていることを条件として行われる、
請求項１に記載の情報処理装置。
【請求項７】
前記ライセンス管理手段による処理として、検証の程度が複数用意されている、
請求項６に記載の情報処理装置。
【請求項８】
前記ライセンス管理手段による処理として、検証の程度が低いものとして、前記ライセンス管理システムによる検証結果を用いる、
請求項７に記載の情報処理装置。
【請求項９】
前記ライセンス管理手段による処理として、検証の程度が高いものとして、前記ライセンス管理システムによる検証の日時から予め定められた期間に、前記ライセンス管理システムによる検証結果を用いる、
請求項７に記載の情報処理装置。
【請求項１０】
情報処理装置であるコンピュータを、
アプリケーションの実行をライセンスにしたがって制御するライセンス管理システムとの通信が可能でない場合に、前記情報処理装置内のライセンス管理手段に対して、該アプリケーションに関するライセンス認証の要求を行う要求手段と、
前記ライセンス管理手段に対して、アクセストークンの真正性を検証するための検証トークンの検証を指示する指示手段と、
前記要求に対する認証結果、前記指示に対する検証結果にしたがって、前記アプリケーションの実行を制御する制御手段
として機能させ、
前記ライセンス管理手段を、
前記アクセストークンを含む、前記アプリケーションに関するライセンス認証の要求を受け付けた場合、該アクセストークンに基づいてユーザのライセンス認証を行う認証手段と、
前記認証手段による認証結果を前記制御手段に通知する第１の通知手段と、
前記検証トークンの検証の指示を受け付けた場合、該検証トークンに基づいて前記アクセストークンの真正性を検証する検証手段と、
前記検証手段による検証結果を前記制御手段に通知する第２の通知手段
として機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【０００２】
アプリケーションのライセンスをデバイスに対して付与することや、ユーザに対して付与することが行われている。例えば、デバイスに依存せずにユーザに付与したライセンスを管理する技術としては、以下の特許文献１に記載の発明がある。
特許文献１には、アプリケーションの不正利用を防止し、複数の機器で利用可能にする認証サーバを提供することを課題とし、認証サーバは、ユーザ端末にアプリケーションがインストールされ、試用を開始するために起動された際、ユーザ端末からの要求に応じてアプリケーションの正当性を確認した後、ユーザ端末の機器毎に付与される機器識別キーを発行し、ユーザ端末に送信し、試用を開始させる試用開始認証手段とライセンスキーが登録された後、ユーザ端末から、ライセンスキー及び機器識別キーを受信し、認証キー記憶装置に登録し、アプリケーションの利用を認証する利用認証手段とを備えることが開示されている。
【０００３】
特許文献２には、アプリケーションの個々の契約毎のインストール制御を行うことを課題とし、サーバは、それぞれ親又は子の少なくとも一方が定められたオブジェクトの情報を管理し、端末装置は、アプリケーションオブジェクトの子孫として生成した第１の権限オブジェクトを含むアプリケーションオブジェクトのインストーラを取得し、アプリケーションオブジェクトのライセンス先に対して生成される、アプリケーションオブジェクトの子孫のオブジェクトである第２の権限オブジェクトを取得し、インストーラに含まれる第１の権限オブジェクトと、第２の権限オブジェクトとに基づいて、インストーラによるインストールの実行を制御することが開示されている。
【０００４】
特許文献３には、電子データのライセンスをオフライン化し、ライセンスの安全を守りながら、利用者の利用に便利なライセンスの送信・流通システムを提供することを課題とし、電子データのライセンスを利用するＰＣや、コンテンツ配信サーバ、ＰＤにセットされる媒体は、ＬＡ（あるいは、同機能のＬｉｃｅｎｓｅ  Ｃｈｉｐ）を内蔵し、そして、コンテンツや電子データは、ライセンスに基づいて暗号化して、相互にやり取りされるが、ライセンスは、ＬＡ間のみで安全な通信方法でやり取りするようにし、これにより、ライセンスの管理を正しく行うと共に、ライセンスの移動を可能にすることが開示されている。
【０００５】
特許文献４には、主としてオフライン環境で使用されるアプリケーションについて、同時使用ライセンスと同等の管理を行うことを課題とし、端末から、サービスの利用に必要なデータに関するダウンロード要求を受け付ける受付部と、前記サービスに対して記憶部に記憶されているライセンスの管理情報が使用状態であるライセンス数が、所定の数を超えていない場合に、前記ダウンロード要求を受け付けたデータを前記端末へ送信する送信部と、前記端末から、前記データ又は該端末により該データが更新された更新データを受信する受信部と、前記送信部による前記端末への前記データの送信に応じて、前記記憶部に記憶されているライセンスの管理情報を使用状態に更新し、前記受信部による前記端末からの前記データの受信に応じて、前記ライセンスの管理情報を非使用状態に更新するライセンス管理部とを有することが開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−１３５３２５号公報
【特許文献２】特開２０１６−１７３７１５号公報
【特許文献３】特開２００３−０５８５１０号公報
【特許文献４】特開２０１７−０２１４１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
アプリケーションの実行をライセンスにしたがって制御することが行われている。その場合、通信回線を介して外部にあるライセンス管理システムとの通信を行って、そのライセンス管理システムによって、認証、検証等が行われている。
しかし、ライセンス管理システムとの通信ができない場合は、正当なライセンスがあるアプリケーションであっても、そのアプリケーションの実行をすることができなくなる。
本発明は、ライセンス管理システムとの通信が可能でない場合に、アプリケーションの実行を制御することができるようにした情報処理装置及び情報処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項１の発明は、アプリケーションの実行をライセンスにしたがって制御するライセンス管理システムとの通信が可能でない場合に、本情報処理装置内のライセンス管理手段に対して、該アプリケーションに関するライセンス認証の要求を行う要求手段と、前記ライセンス管理手段に対して、アクセストークンの真正性を検証するための検証トークンの検証を指示する指示手段と、前記要求に対する認証結果、前記指示に対する検証結果にしたがって、前記アプリケーションの実行を制御する制御手段を有し、前記ライセンス管理手段は、前記アクセストークンを含む、前記アプリケーションに関するライセンス認証の要求を受け付けた場合、該アクセストークンに基づいてユーザのライセンス認証を行う認証手段と、前記認証手段による認証結果を前記制御手段に通知する第１の通知手段と、前記検証トークンの検証の指示を受け付けた場合、該検証トークンに基づいて前記アクセストークンの真正性を検証する検証手段と、前記検証手段による検証結果を前記制御手段に通知する第２の通知手段を有する情報処理装置である。
【０００９】
請求項２の発明は、前記ライセンス管理システムとの通信が可能である場合に、本情報処理装置を識別する情報を該ライセンス管理システムに送信し、前記ライセンス管理システムから本情報処理装置を識別する情報と該ライセンス管理システムでの検証した日時を受信した場合、該情報と該日時を記憶する記憶手段をさらに有する請求項１に記載の情報処理装置である。
【００１０】
請求項３の発明は、前記ライセンス管理システムとの通信が可能でない場合に、前記指示手段は、前記指示を行う場合に、本情報処理装置を識別する情報を前記ライセンス管理手段に渡し、前記検証手段は、前記指示手段から渡された前記本情報処理装置を識別する情報と前記記憶手段に記憶されている本情報処理装置を識別する情報とが一致することを条件に加えて、前記アクセストークンの真正性を検証する、請求項２に記載の情報処理装置である。
【００１１】
請求項４の発明は、前記ライセンス管理システムでの検証した日時として、検証が成功した場合の日時とする、請求項２に記載の情報処理装置である。
【００１２】
請求項５の発明は、前記記憶手段は、前記ライセンス管理システムによる認証結果と前記アクセストークンを記憶する、請求項２に記載の情報処理装置である。
【００１３】
請求項６の発明は、前記ライセンス管理手段による処理は、前記ライセンス管理システムとの通信が可能である場合に、少なくとも１回以上のライセンス管理システムによる認証が行われていることを条件として行われる、請求項１に記載の情報処理装置である。
【００１４】
請求項７の発明は、前記ライセンス管理手段による処理として、検証の程度が複数用意されている、請求項６に記載の情報処理装置である。
【００１５】
請求項８の発明は、前記ライセンス管理手段による処理として、検証の程度が低いものとして、前記ライセンス管理システムによる検証結果を用いる、請求項７に記載の情報処理装置である。
【００１６】
請求項９の発明は、前記ライセンス管理手段による処理として、検証の程度が高いものとして、前記ライセンス管理システムによる検証の日時から予め定められた期間に、前記ライセンス管理システムによる検証結果を用いる、請求項７に記載の情報処理装置である。
【００１７】
請求項１０の発明は、情報処理装置であるコンピュータを、アプリケーションの実行をライセンスにしたがって制御するライセンス管理システムとの通信が可能でない場合に、前記情報処理装置内のライセンス管理手段に対して、該アプリケーションに関するライセンス認証の要求を行う要求手段と、前記ライセンス管理手段に対して、アクセストークンの真正性を検証するための検証トークンの検証を指示する指示手段と、前記要求に対する認証結果、前記指示に対する検証結果にしたがって、前記アプリケーションの実行を制御する制御手段として機能させ、前記ライセンス管理手段を、前記アクセストークンを含む、前記アプリケーションに関するライセンス認証の要求を受け付けた場合、該アクセストークンに基づいてユーザのライセンス認証を行う認証手段と、前記認証手段による認証結果を前記制御手段に通知する第１の通知手段と、前記検証トークンの検証の指示を受け付けた場合、該検証トークンに基づいて前記アクセストークンの真正性を検証する検証手段と、前記検証手段による検証結果を前記制御手段に通知する第２の通知手段として機能させるための情報処理プログラムである。
【発明の効果】
【００１８】
請求項１の情報処理装置によれば、ライセンス管理システムとの通信が可能でない場合に、アプリケーションの実行を制御することができる。
【００１９】
請求項２の情報処理装置によれば、ライセンス管理システムとの通信が可能である場合に、ライセンス管理システムから送信されてきた、本情報処理装置を識別する情報と検証した日時を記憶することができる。
【００２０】
請求項３の情報処理装置によれば、ライセンス管理システムとの通信が可能でない場合に、本情報処理装置を識別する情報と記憶手段に記憶されている本情報処理装置を識別する情報とが一致することを条件に加えて、アクセストークンの真正性を検証することができる。
【００２１】
請求項４の情報処理装置によれば、ライセンス管理システムでの検証が成功した場合の日時を記憶することができる。
【００２２】
請求項５の情報処理装置によれば、ライセンス管理システムによる認証結果とアクセストークンを記憶することができる。
【００２３】
請求項６の情報処理装置によれば、ライセンス管理手段による処理は、ライセンス管理システムによる認証が行われていることを条件として行わせることができる。
【００２４】
請求項７の情報処理装置によれば、ライセンス管理手段による処理として、検証の程度が複数用意されている。
【００２５】
請求項８の情報処理装置によれば、検証の程度が低いものとして、ライセンス管理システムによる検証結果を用いることができる。
【００２６】
請求項９の情報処理装置によれば、検証の程度が高いものとして、ライセンス管理システムによる検証の日時から予め定められた期間に、ライセンス管理システムによる検証結果を用いることができる。
【００２７】
請求項１０の情報処理プログラムによれば、ライセンス管理システムとの通信が可能でない場合に、アプリケーションの実行を制御することができる。
【図面の簡単な説明】
【００２８】
【図１】第１の実施の形態に係る情報処理システムのシステム構成例を示す説明図である。
【図２】情報処理システムの機能ブロック例を示す説明図である。
【図３】プロトタイプベースのオブジェクトの具体例を示す図である。
【図４】オブジェクト管理テーブルの一例を示す図である。
【図５】バリュー管理テーブルの一例を示す図である。
【図６】アプリケーションオブジェクトの生成処理例を示すシーケンス図である。
【図７】ライセンス先のユーザオブジェクトの生成処理を示すシーケンス図である。
【図８】インストール制御処理を示すシーケンス図である。
【図９】テナントオブジェクトの生成処理を示すシーケンス図である。
【図１０】テナント内ユーザオブジェクトの生成処理を示すシーケンス図である。
【図１１】テナントオブジェクトの子孫として生成される検証ログを記憶するオブジェクトの一例を示す図である。
【図１２】第２の実施の形態である端末装置の機能ブロック例を示す説明図である。
【図１３】リクエスト受付モジュールと通信可能である場合のアプリケーションの実行制御処理を示すシーケンス図である。
【図１４】リクエスト受付モジュールと通信可能でない場合のアプリケーションの実行制御処理を示すシーケンス図である。
【発明を実施するための形態】
【００２９】
以下、図面に基づき本発明を実現するにあたっての好適な各種の実施の形態の例を説明する。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム（コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム）、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するという意味である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係、ログイン等）の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態にしたがって、又はそれまでの状況・状態にしたがって定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、２以上の値（もちろんのことながら、全ての値も含む）が同じであってもよい。また、「Ａである場合、Ｂをする」という記載は、「Ａであるか否かを判断し、Ａであると判断した場合はＢをする」の意味で用いる。ただし、Ａであるか否かの判断が不要である場合を除く。また、「Ａ、Ｂ、Ｃ」等のように事物を列挙した場合は、断りがない限り例示列挙であり、その１つのみを選んでいる場合（例えば、Ａのみ）を含む。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」（社会システム）にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、外部記憶媒体、通信回線を介した記憶装置、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のレジスタ等を含んでいてもよい。
【００３０】
アプリケーションのライセンス契約は、個々のユーザと結ぶものや、組織と結び、組織に組織内の個々のユーザに対するライセンス付与の権限を与えるもの等多様な形態があるため、そうした多様な形態におけるライセンスを統一的に管理、制御する必要がある。
第１の実施の形態は、アプリケーションの個々の契約毎のインストール及び実行の制御を可能とするライセンス管理システムである。
【００３１】
［１−０．第１の実施の形態の説明］
［１−１．システム構成の説明］
図１には、第１の実施の形態に係る情報処理システム１のシステム構成例を示す説明図である。図１の例に示されているように、情報処理システム１は、サーバ１０と、第１端末装置３０−１、第２端末装置３０−２、第３端末装置３０−３、クラウドサービスサーバ５０とを含み、サーバ１０と第１端末装置３０−１、第２端末装置３０−２、第３端末装置３０−３、クラウドサービスサーバ５０とはそれぞれ通信回線であるネットワーク２を介してデータ通信可能に接続される。
【００３２】
ここで、第１端末装置３０−１は、アプリケーションのベンダー（ライセンサー）が利用する装置とし、第２端末装置３０−２は、アプリケーションのライセンシーが利用する装置とし、第３端末装置３０−３は、アプリケーションをテナント契約するテナント管理者が利用する装置とする。なお、ライセンシーは、個人のユーザである場合、テナント（会社等の組織）である場合がある。ここで、ライセンシーがテナントである場合には、契約の範囲内において、テナント側が、テナントに属するユーザに対してさらにライセンスを付与することがある。第１の実施の形態に係る情報処理システム１は、上記の様々なライセンス形態にも柔軟に対応可能となっている。
【００３３】
また、以下において、第１端末装置３０−１、第２端末装置３０−２、第３端末装置３０−３において共通する内容については端末装置３０と表記して説明することがある。
【００３４】
また、図１の例に示されるように、サーバ１０は、ハードウェア構成の一例として、制御モジュール１１、記憶モジュール１２、通信モジュール１３を備える。
【００３５】
制御モジュール１１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含み、記憶モジュール１２に記憶されたプログラムに基づいて、各種の演算処理を実行するとともにサーバ１０の各モジュールを制御する。
【００３６】
記憶モジュール１２は、サーバ１０のオペレーティングシステム等の制御プログラムやデータを記憶するほか、制御モジュール１１のワークメモリとしても用いられる。プログラムは、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等の情報記憶媒体に格納された状態でサーバ１０に供給されてもよいし、インターネット等のデータ通信網を介してサーバ１０に供給されてもよい。
【００３７】
通信モジュール１３は、例えばネットワークインターフェースカード（ＮＩＣ）を含み、ＮＩＣを介してネットワーク２に接続して、ネットワーク２に接続される端末装置等と通信する。
【００３８】
また、図１の例に示されるように、端末装置３０は、ハードウェア構成の一例として、制御モジュール３１、記憶モジュール３２、通信モジュール３３、入力モジュール３４、及び表示モジュール３５を備える。
【００３９】
制御モジュール３１は、ＣＰＵを含み、記憶モジュール３２に記憶されたプログラムに基づいて、各種の演算処理を実行するとともに端末装置３０の各モジュールを制御する。
【００４０】
記憶モジュール３２は、端末装置３０のオペレーティングシステム等の制御プログラムやデータを記憶するほか、制御モジュール３１のワークメモリとしても用いられる。プログラムは、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等の情報記憶媒体に格納された状態で端末装置３０に供給されてもよいし、インターネット等のデータ通信網を介して端末装置３０に供給されてもよい。
【００４１】
通信モジュール３３は、例えばネットワークインターフェースカード（ＮＩＣ）を含み、ＮＩＣを介してネットワーク２に接続して、ネットワーク２に接続される端末装置等と通信する。
【００４２】
入力モジュール３４は、例えばキーボード、マウス、タッチパネル等の入力デバイスからユーザの操作入力を受け付ける。
【００４３】
表示モジュール３５は、例えば液晶ディスプレイを含み、制御モジュール３１により生成されるグラフィックイメージを表示する。
【００４４】
なお、入力モジュール３４及び表示モジュール３５は端末装置３０の外部装置として設けられることとしても構わない。
【００４５】
第１の実施の形態では、サーバ１０は、プロトタイプベースのオブジェクトを管理する。ここで、プロトタイプベースのオブジェクトとは、プロトタイプベースのオブジェクトの集合に唯一存在するルートオブジェクトを除けば、唯一つの親のオブジェクト（プロトタイプ）を持つオブジェクトのことである。なお、ルートオブジェクトは自身のプロトタイプを持たない。
【００４６】
また、オブジェクトＡがオブジェクトＢのプロトタイプであるとき、オブジェクトＢはオブジェクトＡのアーティファクトであるともいう。オブジェクト間のプロトタイプ関係により、プロトタイプベースのオブジェクト全体の集合は木構造で表現される。また、オブジェクトにより構成される木構造を破壊しないならば、プロトタイプを再接続することで木構造を変形することが可能である。
【００４７】
さらに、サーバ１０で管理するオブジェクトには、属性及び属性値を持たせることができる。ＲＥＳＴ（ＲＥｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ）アーキテクチャスタイルにおいては、オブジェクトをリソース、値を表現と呼ぶこともある。オブジェクトには、単にオブジェクト識別子とプロトタイプのみからなる純粋なアイデンティティのみを表すもの、任意のコンテント型の値を持つデータを表現するもの、アクセス資格を証明するクレデンシャルであるアクセストークン、あるいはオブジェクトの所有者であるリソースオーナーやリソースオーナーの認可のもとにオブジェクトへのアクセスを行うアプリケーション（クライアント）のようなエンティティを表すものが含まれることとしてよい。そして、これらのオブジェクトが１つの木構造の中に含まれる。なお、上記のアクセストークンは、権限情報が関連づけられるオブジェクトともいえる。
【００４８】
第１の実施の形態に係る情報処理システム１では、サーバ１０は、アクセストークンを提示したリクエストを受け付け、アクセストークンが有効と検証された場合に、アクセストークンに基づき特定された権限の範囲で、上記受け付けたリクエストを処理する。例えば、アクセストークンにより特定される権限の範囲は、オブジェクトの作成（追加）、内容の参照、更新、削除等のいずれかを認可（又は不認可）したものである。また例えば、サーバ１０は、端末装置３０から受け付けたリクエストに従って、管理するオブジェクトの追加、更新、情報の読み出し、削除等を実行する。
【００４９】
以下では、情報処理システム１において実現される機能の一例について説明する。
【００５０】
［１−２．情報処理システム１において実現される機能の説明］
次に、図２に示される情報処理システム１の機能ブロック図に基づき、サーバ１０と端末装置３０に備えられる機能の一例について説明する。
【００５１】
［１−２．１．サーバ１０の機能］
図２の例に示されるように、サーバ１０は、データ格納モジュール１１０、リクエスト受付モジュール１２０、権限オブジェクト検証モジュール１３０、オブジェクト管理モジュール１４０、リクエスト処理モジュール１５０、処理結果提供モジュール１６０を備える。
【００５２】
サーバ１０に備えられる上記の各モジュールの機能は、サーバ１０に備えられる制御モジュール１１が、記憶モジュール１２やコンピュータ読み取り可能な情報記憶媒体に格納されたプログラムを読み込み実行することで実現されるものとしてよい。なお、プログラムは光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等の情報記憶媒体によってサーバ１０に供給されることとしてもよいし、インターネット等のデータ通信網を介してサーバ１０に供給されることとしてもよい。以下、サーバ１０に備えられる各モジュールの機能の詳細について説明する。
【００５３】
データ格納モジュール１１０は、プロトタイプベースのオブジェクトの情報を管理する。ここで、プロトタイプベースのオブジェクトには、権限情報が関連づけられたアクセストークンと呼ばれる権限オブジェクトを含む。プロトタイプベースのオブジェクトは変更可能（ミュータブル）なオブジェクトであり、典型的にはランダムに生成されたＩＤで識別される。
【００５４】
図３には、サーバ１０により管理されるプロトタイプベースのオブジェクトの具体例を示した。図３に示される例においては、プロトタイプベースのオブジェクトの親子関係を接続した木構造データを示している。
【００５５】
図３に示されるように、「ｒｏｏｔ」オブジェクトＤ１の子オブジェクトとして、「ａｐｉ」オブジェクトＤ１１、「ｖｅｎｄｏｒ」オブジェクトＤ１２、が設けられている。さらに、「ａｐｉ」オブジェクトＤ１１の子オブジェクトとして、「ａｕｔｈＬｉｃｅｎｓｅＳｃｏｐｅ」オブジェクトＤ１１１、「ｖｅｒｉｆｙＴｏｋｅｎＳｃｏｐｅ」オブジェクトＤ１１２が設けられている。
【００５６】
また、「ｖｅｎｄｏｒ」オブジェクトＤ１２の子オブジェクトとして、「ａｐｐｌｉｃａｔｉｏｎ」オブジェクトＤ１２１、「ｖｅｎｄｏｒＴｏｋｅｎ」オブジェクトＤ１２２が設けられている。
【００５７】
また、「ａｐｐｌｉｃａｔｉｏｎ」オブジェクトＤ１２１の子オブジェクトとして、「Ｕｓｅｒ」オブジェクトＤ１２１１、「ｔｅｎａｎｔ」オブジェクトＤ１２１２、「ｖｅｒｉｆｙＴｏｋｅｎ」オブジェクトＤ１２１３、「ａｐｐｌｉｃａｔｉｏｎＴｏｋｅｎ」オブジェクトＤ１２１４が設けられている。
【００５８】
また、「Ｕｓｅｒ」オブジェクトＤ１２１１の子オブジェクトとして、「ｌｉｃｅｎｓｅＴｏｋｅｎ」オブジェクトＤ１２１１１が設けられている。
【００５９】
また、「ｔｅｎａｎｔ」オブジェクトＤ１２１２の子オブジェクトとして、「ｕｓｅｒＩｎＴｅｎａｎｔ」オブジェクトＤ１２１２１、「ｔｅｎａｎｔＴｏｋｅｎ」オブジェクトＤ１２１２２が設けられている。
【００６０】
また、「ｕｓｅｒＩｎＴｅｎａｎｔ」オブジェクトＤ１２１２１の子オブジェクトとして、「ｌｉｃｅｎｓｅＴｏｋｅｎ」オブジェクトＤ１２１２１１が設けられている。
【００６１】
図３に示した例において、「ａｕｔｈＬｉｃｅｎｓｅＳｃｏｐｅ」オブジェクトＤ１１１はライセンス認証を許可するスコープ、「ｖｅｒｉｆｙＴｏｋｅｎＳｃｏｐｅ」オブジェクトＤ１１２はアクセストークンの検証を許可するスコープに相当する。
【００６２】
図３の例に示されるオブジェクトのうち、「ａｐｐｌｉｃａｔｉｏｎ」オブジェクトＤ１２１は、インストールの対象となるアプリケーションに相当する。また、「Ｕｓｅｒ」オブジェクトＤ１２１１は、インストールの対象となるアプリケーションのライセンシーのユーザに相当する。そして、「ｌｉｃｅｎｓｅＴｏｋｅｎ」オブジェクトＤ１２１１１は、ユーザに付与されたライセンスに相当する。
【００６３】
また、図３の例に示されるオブジェクトのうち、「ｖｅｒｉｆｙＴｏｋｅｎ」オブジェクトＤ１２１３は、「ａｐｐｌｉｃａｔｉｏｎ」オブジェクトＤ１２１の作成時に生成され、インストール対象となるアプリケーションのインストーラに埋め込まれるアクセストークンとなる。
【００６４】
また、図３の例に示されるオブジェクトのうち、「ｔｅｎａｎｔ」オブジェクトＤ１２１２は、アプリケーションのテナント契約者に相当する。そして、「ｕｓｅｒＩｎＴｅｎａｎｔ」オブジェクトＤ１２１２１は、テナントに属するアプリケーションのライセンシーに相当する。そして、「ｌｉｃｅｎｓｅＴｏｋｅｎ」オブジェクトＤ１２１２１１は、「ｕｓｅｒＩｎＴｅｎａｎｔ」オブジェクトＤ１２１２１に付与されたライセンスに相当する。
【００６５】
以上のプロトタイプベースのオブジェクトの関係は、例えば以下に示すオブジェクト管理テーブル１１１とバリュー管理テーブル１１２に記憶されるデータにより管理可能となっている。
【００６６】
すなわち、第１の実施の形態では、データ格納モジュール１１０には、オブジェクト管理テーブル１１１と、バリュー管理テーブル１１２が含まれ、プロトタイプベースのオブジェクトの情報を、オブジェクト管理テーブル１１１と、バリュー管理テーブル１１２に格納して管理している。
【００６７】
図４には、オブジェクト管理テーブル１１１の一例を、そして図５にはバリュー管理テーブル１１２の一例をそれぞれ示した。
【００６８】
図４の例に示されるように、オブジェクト管理テーブル１１１には、プロトタイプベースのオブジェクトの識別情報であるオブジェクトＩＤ、オブジェクトの親（プロトタイプ）オブジェクトの識別情報であるプロトタイプＩＤ、オブジェクトが有効化されているか否か（Ｔが有効、Ｆが無効）を示す有効化フラグ、オブジェクトの属性情報が関連づけて記憶される。また、オブジェクトの属性情報には、オブジェクトの型を示すｔｙｐｅ、オブジェクトのデータ内容を格納したデータオブジェクトの識別情報を表すｅｔａｇ、オブジェクトの名称を格納したｎａｍｅ、オブジェクトの生成日時を表すｔｉｍｅを含む。なお、プロトタイプベースのオブジェクトのデータ構成は、図４に示された例に限定されるものではなく、上述した要素以外の要素を含み構成されていても構わない。
【００６９】
また、図５の例に示されるように、バリュー管理テーブル１１２には、ｅｔａｇの値に関連づけて、ｅｔａｇの内容を格納したバリューが関連づけられている。
【００７０】
例えば、アクセストークンであればｅｔａｇのバリューとして、｛“ｏｗｎｅｒ”：  ｏｗｎｅｒ（オーナー）のオブジェクトＩＤ、“ｃｌｉｅｎｔ”：  ｃｌｉｅｎｔ（クライアント）のオブジェクトＩＤ、“スコープ”：認可された処理の範囲｝の形式の情報を含む。第１の実施の形態に係る情報処理システム１では、端末装置３０から受け付ける処理要求にはアクセストークンが添付されるが、ここで、アクセストークンを検証することにより、オーナー、クライアント、スコープの情報が特定される。なお、オーナーが処理のリクエスタ、クライアントが処理の代理リクエスタとして扱われる。
【００７１】
リクエスト受付モジュール１２０は、端末装置３０からリクエストを受け付ける。例えば、リクエスト受付モジュール１２０は、端末装置３０からデータ格納モジュール１１０で管理されるオブジェクトの処理に関するリクエストを受け付けることとしてよい。なお、リクエスト受付モジュール１２０は、端末装置３０からリクエストとともにリクエストに係るアクセストークンの情報を受け付けることとしてよい。この際、リクエスト受付モジュール１２０は、例えば端末装置３０からＨＴＴＰリクエストの形式でリクエストを受け付けることとしてよい。
【００７２】
権限オブジェクト検証モジュール１３０は、リクエスト受付モジュール１２０で受け付けたリクエストに係る権限オブジェクト（アクセストークン）の情報を取得し、取得した権限オブジェクトを検証する。例えば、権限オブジェクト検証モジュール１３０は、アクセストークンの情報を、ＨＴＴＰリクエストのＡｕｔｈｏｒｉｚａｔｉｏｎフィールドから得てもよいし、アクセストークンの情報を含むクッキーが存在すれば、クッキーから得てもよい。
【００７３】
権限オブジェクト検証モジュール１３０は、上記取得したアクセストークン（権限オブジェクト）の情報が正当なものであるか否かを検証する。以下、権限オブジェクト検証モジュール１３０による検証処理の具体例について説明する。
【００７４】
まず、権限オブジェクト検証モジュール１３０は、取得したアクセストークンのＩＤが、データ格納モジュール１１０で管理するオブジェクト管理テーブル１１１に含まれているか否か（第１の条件の適否）を判断し、含まれていない場合には検証失敗と判断する。
【００７５】
次に、権限オブジェクト検証モジュール１３０は、第１の条件が満たされている場合に、アクセストークンのデータ形式（タイプ）が所定の型（すなわち、ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ）であるか否か（第２の条件の適否）を判断し、所定の型でない場合には検証失敗と判断する。すなわち、アクセストークンのｅｔａｇについてバリュー管理テーブル１１２に記憶されるバリューが所定の型（ｏｗｎｅｒ、ｃｌｉｅｎｔ、ｓｃｏｐｅを指定したデータ形式）でない場合には、検証失敗と判断する。
【００７６】
次に、権限オブジェクト検証モジュール１３０は、第２の条件が満たされている場合に、アクセストークンのバリューの値（ｏｗｎｅｒ、ｃｌｉｅｎｔ、ｓｃｏｐｅの値）を取得し、ｏｗｎｅｒ、ｃｌｉｅｎｔ、ｓｃｏｐｅのそれぞれの値がデータ格納モジュール１１０で管理されるデータであるか否か（第３の条件の適否）を判断し、いずれかの値がデータ格納モジュール１１０で管理されるデータでない場合には検証失敗と判断する。
【００７７】
次に、権限オブジェクト検証モジュール１３０は、第３の条件が満足されている場合に、データ格納モジュール１１０からアクセストークンのプロトタイプの情報を取得し、アクセストークンのプロトタイプが、アクセストークンのオーナーと一致しているか、オーナーのプロトタイプチェーン（オーナーの親、さらにその親へとオーナーの祖先を順に接続した経路）に含まれるか否か（第４の条件の適否）を判断し、上記のいずれにも合致しない場合には検証失敗と判断する。なお、以上の第１乃至第４の条件を満足した場合には、権限オブジェクト検証モジュール１３０は、アクセストークンの検証を成功と判断することとしてよい。
【００７８】
権限オブジェクト検証モジュール１３０は、上記の検証の結果と、アクセストークンにより認可されているスコープ（処理の範囲）の情報と、受け付けたリクエストをリクエスト処理モジュール１５０に通知する。
【００７９】
リクエスト処理モジュール１５０は、リクエスト受付モジュール１２０で受け付けたリクエストについて取得したアクセストークン（権限オブジェクト）についての権限オブジェクト検証モジュール１３０から通知された検証結果と、該受け付けたアクセストークンについて認可されたスコープ（処理の範囲）に基づいて、リクエスト受付モジュール１２０で受け付けたリクエストの処理を制御する。例えば、リクエスト処理モジュール１５０は、リクエスト受付モジュール１２０で受け付けたリクエストに係るアクセストークンについての検証結果が検証失敗である場合には、リクエストに係る処理を不受理としてエラーを処理結果提供モジュール１６０に出力することとしてよい。また、リクエスト処理モジュール１５０は、リクエスト受付モジュール１２０で受け付けたリクエストに係るアクセストークンについての検証結果が検証成功である場合には、リクエスト受付モジュール１２０で受け付けたリクエストを、該リクエストに関して受け付けたアクセストークンについて認可されたスコープに基づいて処理し、その実行結果を処理結果提供モジュール１６０に出力する。
【００８０】
例えば、リクエスト処理モジュール１５０は、受け付けたリクエストに基づいて、オブジェクト管理モジュール１４０にオブジェクトの生成、読み出し、更新、削除を依頼し、オブジェクト管理モジュール１４０から処理結果を受け取る。
【００８１】
具体的には、リクエスト処理モジュール１５０は、端末装置３０から受け付けたリクエストに基づいて、アプリケーションオブジェクトの生成、アプリケーションオブジェクトの子オブジェクトでありアプリケーションインストール時のライセンストークンの検証を行う権限が定められた検証用トークンの生成、ライセンシーに相当するユーザやテナントに対応するライセンシーオブジェクトの生成、ライセンシーオブジェクトの子でありライセンシーに付与するライセンスを示すライセンストークンの生成等をオブジェクト管理モジュール１４０に実行させる。
【００８２】
例えば、図３における「ａｐｐｌｉｃａｔｉｏｎ」オブジェクトＤ１２１が上記の「アプリケーションオブジェクト」に相当し、「ｖｅｒｉｆｙＴｏｋｅｎ」オブジェクトＤ１２１３が上記の「検証用トークン」に相当する。また、図３の例における「Ｕｓｅｒ」オブジェクトＤ１２１１や「ｔｅｎａｎｔ」オブジェクトＤ１２１２が上記の「ライセンシーオブジェクト」に相当し、「ｌｉｃｅｎｓｅＴｏｋｅｎ」オブジェクトＤ１２１１１，Ｄ１２１２１１が上記の「ライセンストークン」に相当する。
【００８３】
例えば、第１の実施の形態においては、リクエスト処理モジュール１５０は、アプリケーションベンダー内の管理者が操作する第１端末装置３０−１から受けつけた要求に応じて、上記のアプリケーションオブジェクト、検証用トークン、ライセンシーオブジェクト、ライセンストークンを生成する制御を実行することとしてよい。
【００８４】
オブジェクト管理モジュール１４０は、データ格納モジュール１１０により管理されるオブジェクトの情報を管理する。例えば、オブジェクト管理モジュール１４０は、リクエスト処理モジュール１５０から受け付ける要求に基づいて、オブジェクト管理テーブル１１１、バリュー管理テーブル１１２に対して情報の追加、読み出し、更新、削除等の処理を実行する。
【００８５】
また、オブジェクト管理モジュール１４０は、配信用オブジェクト生成モジュールを含み、リクエスト処理モジュール１５０から受け付ける配信用オブジェクトの生成要求に基づいて、マスターデータの子（又は子孫）である配信用オブジェクトを生成する。
【００８６】
また、オブジェクト管理モジュール１４０は、リクエスト処理モジュール１５０から受け付ける配信用オブジェクトの読み出し要求に基づいて、配信用オブジェクトの情報を読み出す。ここで、オブジェクト管理モジュール１４０は、配信用オブジェクトの有していないデータ項目については、配信用オブジェクトの親（又は先祖）のオブジェクトのデータ項目の情報を参照し、配信用オブジェクトの情報として返す。
【００８７】
また、オブジェクト管理モジュール１４０は、リクエスト処理モジュール１５０から受け付ける配信用オブジェクトの更新要求に基づいて、配信用オブジェクトの内容を更新する。また、オブジェクト管理モジュール１４０は、リクエスト処理モジュール１５０から受け付ける配信用オブジェクトの削除要求に基づいて、配信用オブジェクトを削除する。
【００８８】
処理結果提供モジュール１６０は、リクエスト処理モジュール１５０による処理結果を、リクエストの要求元である端末装置３０に対して提供する。
【００８９】
例えば、第１の実施の形態においては、処理結果提供モジュール１６０は、第１端末装置３０−１に対して、第１端末装置３０−１から受け付けた要求に基づいて生成したアプリケーションオブジェクト、検証用トークン、ライセンシーオブジェクト、ライセンストークンの情報（オブジェクトＩＤ等）を提供することとしてよい。
【００９０】
そして、第１端末装置３０−１は、アプリケーションをインストールするためのインストーラの中に、上記提供を受けた検証用トークンを書き換え不可の状態で書き込むことで、アプリケーションのインストーラに、検証用トークンを埋め込むこととしてよい。そして、アプリケーションのベンダーは、上記検証用トークンが埋め込まれたインストーラを、ライセンシー側の装置（第２端末装置３０−２や第３端末装置３０−３等）に提供することとしてよい。なお、インストーラの提供は、インストーラを格納した情報記憶媒体を配布したり、第１端末装置３０−１又は他の装置から、ライセンシー側の装置にネットワーク経由で配信したりすることとしてよい。
【００９１】
また、第１端末装置３０−１は、ライセンシーとのライセンス契約の締結（例えば課金処理の完了）を契機として、ライセンシーオブジェクト及びライセンストークンの生成をサーバ１０に要求し、それにより生成されたライセンシーオブジェクトとライセンストークンの情報を取得する。そして、第１端末装置３０−１は、ライセンシー側の装置（第２端末装置３０−２や第３端末装置３０−３等）に、ライセンストークンの情報を提供する。
【００９２】
そして、ライセンシー側の装置では、検証用トークンが埋め込まれたインストーラと、ライセンストークンに基づいて、アプリケーションのインストールを実行する。以下においては、図２に基づき、上記のインストール処理に関し端末装置３０に備えられる機能について説明する。
【００９３】
［１−２．２．端末装置３０の機能］
図２の例に示されるように、端末装置３０は、インストール・実行制御モジュール３１０、ライセンス認証要求モジュール３２０、トークン検証要求モジュール３３０、処理結果取得モジュール３４０を備える。なお、以下説明する例においては、端末装置３０の記憶モジュール３２には、検証用トークンが埋め込まれたインストーラと、ライセンストークンの情報が記憶されていることとする。
【００９４】
端末装置３０に備えられる上記の各モジュールの機能は、端末装置３０に備えられる制御モジュール３１が、記憶モジュール３２やコンピュータ読み取り可能な情報記憶媒体に格納されたプログラムを読み込み実行することで実現されるものとしてよい。なお、プログラムは光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等の情報記憶媒体によって端末装置３０に供給されることとしてもよいし、インターネット等のデータ通信網を介して端末装置３０に供給されることとしてもよい。以下、端末装置３０に備えられる各モジュールの機能の詳細について説明する。
【００９５】
インストール・実行制御モジュール３１０は、主に端末装置３０の制御モジュール３１及び記憶モジュール３２により実現され、検証用トークンが埋め込まれたインストーラと、ライセンストークンに基づくアプリケーションのインストール処理とアプリケーションの実行処理を制御する。インストール・実行制御モジュール３１０は、インストール制御モジュール３１２、実行制御モジュール３１４を有している。
【００９６】
インストール・実行制御モジュール３１０（インストール制御モジュール３１２）は、アプリケーションのインストール処理を行うにあたって、ライセンストークンに基づくライセンス認証の実行をライセンス認証要求モジュール３２０に指示する。また、インストール・実行制御モジュール３１０（インストール制御モジュール３１２）は、インストーラに埋め込まれた検証用トークンに基づくトークン検証の実行をトークン検証要求モジュール３３０に指示する。
【００９７】
インストール・実行制御モジュール３１０（実行制御モジュール３１４）は、アプリケーションの実行処理を行うにあたって、ライセンストークンに基づくライセンス認証の実行をライセンス認証要求モジュール３２０に指示する。また、インストール・実行制御モジュール３１０（実行制御モジュール３１４）は、アプリケーションに埋め込まれた検証用トークンに基づくトークン検証の実行をトークン検証要求モジュール３３０に指示する。
【００９８】
ライセンス認証要求モジュール３２０は、主に端末装置３０の制御モジュール３１、記憶モジュール３２及び通信モジュール３３により実現され、インストール・実行制御モジュール３１０から受け付けたライセンストークンに基づくライセンス認証を、サーバ１０に対して要求する。例えば、ライセンス認証要求モジュール３２０は、ライセンストークンのＩＤ（オブジェクトＩＤ）をサーバ１０のリクエスト受付モジュール１２０に対して送信することで、上記の要求を実行することとしてよい。
【００９９】
例えば、サーバ１０においては、権限オブジェクト検証モジュール１３０によりライセンストークンが正当と検証され、ライセンストークンで指定されるクライアント（委譲先情報）がアクセストークンで指定されるオーナー（所有者情報）の子孫である場合には、認証成功とし、そうでない場合には認証失敗とすることとしてよい。そして、処理結果提供モジュール１６０は、ライセンストークンの認証結果を示す認証結果情報を、認証要求を受け付けた端末装置３０に対して送信する。
【０１００】
トークン検証要求モジュール３３０は、主に端末装置３０の制御モジュール３１、記憶モジュール３２及び通信モジュール３３により実現され、インストール・実行制御モジュール３１０から受け付けた検証用トークンに基づくトークン検証を、サーバ１０に対して要求する。例えば、ライセンス認証要求モジュール３２０は、検証用トークンのＩＤ（オブジェクトＩＤ）をサーバ１０のリクエスト受付モジュール１２０に対して送信することで、上記の要求を実行することとしてよい。
【０１０１】
なお、サーバ１０においては、権限オブジェクト検証モジュール１３０により検証用トークンの検証が実行され、検証用トークンの検証が成功した検証成功、検証用トークンの検証が失敗した場合には検証失敗とした検証結果情報を、トークン検証要求を受け付けた端末装置３０に対して送信する。
【０１０２】
処理結果取得モジュール３４０は、主に端末装置３０の制御モジュール３１、記憶モジュール３２及び通信モジュール３３により実現され、サーバ１０の処理結果提供モジュール１６０から提供される情報を取得する。
【０１０３】
例えば、処理結果取得モジュール３４０は、処理結果提供モジュール１６０からライセンストークンの認証結果を示す認証結果情報、及び検証用トークンの検証結果を示す検証結果情報を受信し、取得することとしてよい。また、処理結果取得モジュール３４０は、取得した認証結果情報及び検証結果情報をインストール・実行制御モジュール３１０に提供することとしてよい。
【０１０４】
インストール・実行制御モジュール３１０（インストール制御モジュール３１２）は、処理結果取得モジュール３４０から提供された認証結果情報及び検証結果情報に基づき、ライセンストークンの認証が成功し、かつ検証用トークンの検証が成功した場合に、インストーラに基づくインストール処理を実行し、ライセンストークンの認証と検証用トークンの検証のいずれかが失敗した場合には、インストーラに基づくインストール処理を中止することとしてよい。
インストール・実行制御モジュール３１０（実行制御モジュール３１４）は、処理結果取得モジュール３４０から提供された認証結果情報及び検証結果情報に基づき、ライセンストークンの認証が成功し、かつ検証用トークンの検証が成功した場合に、アプリケーションの実行処理を行い、ライセンストークンの認証と検証用トークンの検証のいずれかが失敗した場合には、アプリケーションの実行を中止することとしてよい。
【０１０５】
［１−３．処理の一例についての説明］
次に、図６から図１０に示されたシーケンス図に基づいて、情報処理システム１で実行される処理の一例について詳細に説明する。
【０１０６】
［１−３．１．アプリケーションの登録処理］
まず、図６に示したシーケンス図に基づいて、アプリケーションベンダーの第１端末装置３０−１とサーバ１０とにより実行される、アプリケーションの登録処理の一例について説明する。図６のフロー例においては、第１端末装置３０−１は「ｖｅｎｄｏｒ」オブジェクトＤ１２について子オブジェクトの生成、取得、更新、削除が可能なスコープが定められたアクセストークン（Ｔ１）である「ｖｅｎｄｏｒＴｏｋｅｎ」オブジェクトＤ１２２を有することとする。
【０１０７】
図６の例に示されるように、第１端末装置３０−１は、アクセストークンＴ１を用いて、「ｖｅｎｄｏｒ」オブジェクトＤ１２の子オブジェクトとして、アプリケーションオブジェクト（「ａｐｐｌｉｃａｔｉｏｎ」オブジェクトＤ１２１に対応）の作成をサーバ１０に対して指示する（Ｓ３００）。
【０１０８】
サーバ１０は、第１端末装置３０−１からアプリケーションオブジェクトの作成指示を受け付けると（Ｓ１００）、アクセストークンＴ１を検証し、検証が成功した場合に、アプリケーションオブジェクトを作成する（Ｓ１０１）。そして、サーバ１０は、上記作成したアプリケーションオブジェクトのＩＤ（オブジェクトＩＤ）を第１端末装置３０−１に対して送信する（Ｓ１０２）。
【０１０９】
第１端末装置３０−１は、サーバ１０から送信されるアプリケーションオブジェクトのＩＤを受信する（Ｓ３０１）。
【０１１０】
次に、第１端末装置３０−１は、アクセストークンＴ１を用いて、アプリケーションオブジェクトの子オブジェクトを作るためのアクセストークンＴ２（「ａｐｐｌｉｃａｔｉｏｎＴｏｋｅｎ」オブジェクトＤ１２１４に対応）の作成をサーバ１０に対して指示する（Ｓ３０２）。
【０１１１】
サーバ１０は、第１端末装置３０−１からアクセストークンＴ２の作成指示を受け付けると（Ｓ１０３）、アクセストークンＴ１を検証し、検証が成功した場合に、アクセストークンＴ２（アプリケーショントークン）を作成する（Ｓ１０４）。そして、サーバ１０は、上記作成したアクセストークンＴ２のＩＤ（オブジェクトＩＤ）を第１端末装置３０−１に対して送信する（Ｓ１０５）。
【０１１２】
第１端末装置３０−１は、サーバ１０から送信されるアクセストークンＴ２のＩＤを受信する（Ｓ３０３）。そして、第１端末装置３０−１は、アクセストークンＴ２を用いて、アプリケーションオブジェクトの子オブジェクトとして、ライセンストークンを検証するためのアクセストークンである検証用トークンの作成をサーバ１０に対して指示する（Ｓ３０４）。
【０１１３】
サーバ１０は、第１端末装置３０−１から検証用トークンの作成指示を受け付けると（Ｓ１０６）、アクセストークンＴ２を検証し、検証が成功した場合に、アプリケーションオブジェクトの子オブジェクトとして検証用トークンを作成する（Ｓ１０７）。そして、サーバ１０は、上記作成した検証用トークンのＩＤ（オブジェクトＩＤ）を第１端末装置３０−１に対して送信する（Ｓ１０８）。
【０１１４】
第１端末装置３０−１は、サーバ１０から検証用トークンのＩＤを受信する（Ｓ３０５）。
【０１１５】
第１端末装置３０−１は、上記受信した検証用トークンのＩＤを、アプリケーションのインストーラに埋め込んだ後に、インストーラを第２端末装置３０−２に提供することとしてよい。
【０１１６】
［１−３．２．ユーザに対するライセンスの登録処理］
次に、図７に示したシーケンス図に基づいて、第１端末装置３０−１とサーバ１０により実行される、ライセンシーであるユーザに対しライセンスを登録する処理の一例について説明する。
【０１１７】
第１端末装置３０−１は、アクセストークンＴ２（アプリケーショントークン）を用いて、ユーザオブジェクトの作成を、サーバ１０に対して指示する（Ｓ３１０）。上記の指示には、ユーザオブジェクトにユーザ属性情報（ユーザ名、メールアドレス等）を設定する指示を含めてよい。
【０１１８】
サーバ１０は、第１端末装置３０−１からユーザオブジェクトの作成指示を受け付けると（Ｓ１１０）、アクセストークンＴ２を検証し、検証が成功した場合に、ユーザオブジェクトを作成する（Ｓ１１１）。そして、サーバ１０は、上記生成したユーザオブジェクトの情報（オブジェクトＩＤ）を第１端末装置３０−１に対して送信する（Ｓ１１２）。
【０１１９】
第１端末装置３０−１は、サーバ１０からユーザオブジェクトの情報を受信する（Ｓ３１１）。
【０１２０】
次に、第１端末装置３０−１は、アクセストークンＴ２（アプリケーショントークン）を用いて、ユーザに付与するライセンスを示すアクセストークンであるライセンストークンの作成を、サーバ１０に対して指示する（Ｓ３１２）。上記の指示には、ライセンストークンのオーナーを「ａｐｐｌｉｃａｔｉｏｎ」オブジェクトＤ１２１（アプリケーションオブジェクト）、クライアントを「Ｕｓｅｒ」オブジェクトＤ１２１１（ユーザオブジェクト）、スコープを「ａｕｔｈＬｉｃｅｎｓｅＳｃｏｐｅ」Ｄ１１１（ライセンス認証用のスコープオブジェクト）に設定する指示を含めてよい。
【０１２１】
サーバ１０は、第１端末装置３０−１からライセンストークンの作成指示を受け付けると（Ｓ１１３）、アクセストークンＴ２を検証し、検証が成功した場合に、ライセンストークンを作成する（Ｓ１１４）。そして、サーバ１０は、上記生成したライセンストークンの情報（オブジェクトＩＤ）を第１端末装置３０−１に対して送信する（Ｓ１１５）。
【０１２２】
第１端末装置３０−１は、サーバ１０からライセンストークンの情報（オブジェクトＩＤ）を受信する（Ｓ３１３）。
【０１２３】
第１端末３０−１は、ライセンシーとなるユーザとのライセンス契約を機に、ユーザから受け付けたユーザ情報に基づいて上記の処理を実行し、その結果受信したライセンストークンの情報（オブジェクトＩＤ）を、ユーザ（ライセンシー）の操作する第２端末装置３０−２に提供することとしてよい。
【０１２４】
［１−３．３．インストール制御処理］
次に、図８に示されるシーケンス図に基づき、第２端末装置３０−１とサーバ１０により実行されるアプリケーションのインストール制御処理の一例について説明する。以下のシーケンス例では、第２端末装置３０−２は、検証用トークンが埋め込まれたインストーラと、ユーザに対して固有に発行されたライセンストークンとを有していることとする。
【０１２５】
図８の例に示されるように、第２端末装置３０−２は、ライセンストークンに基づくライセンス認証処理をサーバ１０に対して指示する（Ｓ３２０）。
【０１２６】
サーバ１０は、ライセンストークンに基づくライセンス認証処理の指示を受け付けると（Ｓ１２０）、ライセンストークンに基づくライセンス認証を実行する（Ｓ１２１）。例えば、サーバ１０は、ライセンストークンが正当なアクセストークンであって、ライセンストークンで指定されるクライアント（委譲先情報）がアクセストークンで指定されるオーナー（所有者情報）の子孫である場合には、認証成功とし、そうでない場合には認証失敗とした認証結果を第２端末装置３０−２に対して送信する（Ｓ１２２）。
【０１２７】
第２端末装置３０−２は、サーバ１０から認証結果を受信し（Ｓ３２１）、受信した認証結果が認証成功である場合には（Ｓ３２２：Ｙ）、インストーラに埋め込まれた検証用トークンの検証をサーバ１０に対して指示する（Ｓ３２３）。
【０１２８】
サーバ１０は、検証用トークンの検証指示を受け付けると（Ｓ１２３）、検証用トークンを検証し（Ｓ１２４）、その検証結果を第２端末装置３０−２に送信する（Ｓ１２５）。
【０１２９】
第２端末装置３０−２は、サーバ１０から検証結果を受信し（Ｓ３２４）、受信した検証結果が検証成功である場合には（Ｓ３２５：Ｙ）、インストーラに基づくアプリケーションのインストール処理を実行する（Ｓ３２６）。
【０１３０】
一方、Ｓ３２１で受信した認証結果が認証成功でない場合（Ｓ３２２：Ｎ）、Ｓ３２４で受信した検証結果が検証成功でない場合（Ｓ３２５：Ｎ）には、エラーとして（Ｓ３２７）、インストーラに基づくアプリケーションのインストール処理を中止する。
【０１３１】
なお、上記のインストーラに基づくアプリケーションのインストール処理とは、インストーラに基づいて第２端末装置３０−２において、アプリケーションを実行可能な状態とすることをいう。
【０１３２】
［１−３．４．テナントの登録処理］
次に、図９に示したシーケンス図に基づいて、第１端末装置３０−１とサーバ１０により実行される、ライセンシーであるテナントを登録する処理の一例について説明する。
【０１３３】
第１端末装置３０−１は、アクセストークンＴ２（アプリケーショントークン）を用いて、テナントオブジェクトの作成を、サーバ１０に対して指示する（Ｓ３３０）。上記の指示には、テナントオブジェクトにテナント管理者の情報（管理者名、メールアドレス等）を設定する指示を含めてよい。
【０１３４】
サーバ１０は、第１端末装置３０−１からテナントオブジェクトの作成指示を受け付けると（Ｓ１３０）、アクセストークンＴ２を検証し、検証が成功した場合に、テナントオブジェクトを作成する（Ｓ１３１）。そして、サーバ１０は、上記生成したテナントオブジェクトの情報（オブジェクトＩＤ）を第１端末装置３０−１に対して送信する（Ｓ１３２）。
【０１３５】
第１端末装置３０−１は、サーバ１０からテナントオブジェクトの情報を受信する（Ｓ３３１）。
【０１３６】
次に、第１端末装置３０−１は、アクセストークンＴ２（アプリケーショントークン）を用いて、テナントに付与する権限を示すアクセストークンであるテナントトークンの作成を、サーバ１０に対して指示する（Ｓ３３２）。なお、テナントトークンは、テナントオブジェクトの子孫にオブジェクトを追加し、追加したオブジェクトを削除、更新等可能な権限が定められることとしてよい。例えば、テナントトークンのオーナーを「ｔｅｎａｎｔ」オブジェクトＤ１２１２（テナントオブジェクト）、「ｔｅｎａｎｔ」オブジェクトＤ１２１２（テナントオブジェクト）、スコープを「ｃｒｕｄＳｃｏｐｅ」に設定することとしてよい。
【０１３７】
サーバ１０は、第１端末装置３０−１からテナントトークンの作成指示を受け付けると（Ｓ１３３）、アクセストークンＴ２を検証し、検証が成功した場合に、テナントトークンを作成する（Ｓ１３４）。そして、サーバ１０は、上記生成したテナントトークンの情報（オブジェクトＩＤ）を第１端末装置３０−１に対して送信する（Ｓ１３５）。
【０１３８】
第１端末装置３０−１は、サーバ１０からテナントトークンの情報（オブジェクトＩＤ）を受信する（Ｓ３３３）。
【０１３９】
第１端末３０−１は、ライセンシーとなるテナントの管理者に対して、上記テナントトークンの情報を提供することとしてよい。
【０１４０】
［１−３．５．テナント内ユーザに対するライセンス登録処理］
次に、図１０に示したシーケンス図に基づいて、テナントの管理者が操作する第３端末装置３０−３とサーバ１０により実行される、テナント内ユーザに対してライセンスを登録する処理の一例について説明する。
【０１４１】
第３端末装置３０−３は、テナントトークンを用いて、テナント内ユーザオブジェクト（図３の例に示す「ｕｓｅｒＩｎＴｅｎａｎｔ」オブジェクトＤ１２１２１に対応する）の作成を、サーバ１０に対して指示する（Ｓ３４０）。上記の指示には、テナント内ユーザオブジェクトにユーザ属性情報（ユーザ名、メールアドレス等）を設定する指示を含めてよい。
【０１４２】
サーバ１０は、第３端末装置３０−３からテナント内ユーザオブジェクトの作成指示を受け付けると（Ｓ１４０）、テナントトークンを検証し、検証が成功した場合に、テナント内ユーザオブジェクトを作成する（Ｓ１４１）。そして、サーバ１０は、上記生成したテナント内ユーザオブジェクトの情報（オブジェクトＩＤ）を第３端末装置３０−３に対して送信する（Ｓ１４２）。
【０１４３】
第３端末装置３０−３は、サーバ１０からテナント内ユーザオブジェクトの情報を受信する（Ｓ３４１）。
【０１４４】
次に、第３端末装置３０−３は、テナントトークンを用いて、テナント内ユーザに付与するライセンスを示すアクセストークンであるライセンストークンの作成を、サーバ１０に対して指示する（Ｓ３４２）。上記の指示には、ライセンストークンのオーナーを「ｔｅｎａｎｔ」オブジェクトＤ１２１２（テナントオブジェクト）、クライアントを「ｕｓｅｒＩｎＴｅｎａｎｔ」オブジェクトＤ１２１２１（テナント内ユーザオブジェクト）、スコープを「ａｕｔｈＬｉｃｅｎｓｅＳｃｏｐｅ」Ｄ１１１（ライセンス認証用のスコープオブジェクト）に設定する指示を含めてよい。
【０１４５】
サーバ１０は、第３端末装置３０−３からライセンストークンの作成指示を受け付けると（Ｓ１４３）、テナントトークンを検証し、検証が成功した場合に、ライセンストークンを作成する（Ｓ１４４）。そして、サーバ１０は、上記生成したライセンストークンの情報（オブジェクトＩＤ）を第３端末装置３０−３に対して送信する（Ｓ１４５）。
【０１４６】
第３端末装置３０−３は、サーバ１０からライセンストークンの情報（オブジェクトＩＤ）を受信する（Ｓ３４３）。
【０１４７】
第３端末３０−３は、テナント内ユーザに対し上記のライセンストークンの情報（オブジェクトＩＤ）を提供することとしてよい。テナント内ユーザについての、ライセンストークンに基づくアプリケーションのインストール処理は、図８の例において説明した処理と同様としてよいため省略する。
【０１４８】
［１−４．他の形態について］
以下、他の形態について説明する。図１１の例には、図３の例に示すオブジェクトの構造のうち、「ｔｅｎａｎｔ」オブジェクトＤ１２１２の子孫のオブジェクトの構成を変更したものを示す。
【０１４９】
図１１に示されるように、「ｔｅｎａｎｔ」オブジェクトＤ１２１２には、「ｕｓｅｒＩｎＴｅｎａｎｔ」オブジェクトＤ１２１２１、「ｔｅｎａｎｔＴｏｋｅｎ」オブジェクトＤ１２１２２に加えて、「ＬｉｃｅｎｓｅＵｓａｇｅ」オブジェクトＤ１２１２３、「ＬｏｇＳｃｏｐｅ」オブジェクトＤ１２１２４が設けられている。
【０１５０】
ここで、「ＬｉｃｅｎｓｅＵｓａｇｅ」オブジェクトＤ１２１２３には、「ｕｓｅｒＩｎＴｅｎａｎｔ」オブジェクトＤ１２１２１に対応するユーザのインストール処理、アプリケーションの起動、アプリケーションの動作等に関するログ情報が記録される。
【０１５１】
そして、「ＬｏｇＳｃｏｐｅ」オブジェクトＤ１２１２４は、認証処理に加えてログ情報を記録するための処理が定められたスコープである。
【０１５２】
そして、「ｕｓｅｒＩｎＴｅｎａｎｔ」オブジェクトＤ１２１２１の子オブジェクトである「ｌｉｃｅｎｓｅＴｏｋｅｎ」オブジェクトＤ１２１２１１に対しては、スコープに「ＬｏｇＳｃｏｐｅ」オブジェクトＤ１２１２４を設定する点で、図３に示したオブジェクトの例とは相違するが、他の点では共通する。
【０１５３】
なお、図１１に示したオブジェクトの構成例を採用する場合に、テナント内ユーザにライセンスを登録するときには、図１０の例に示すシーケンス図において、ライセンストークンのスコープを「ＬｏｇＳｃｏｐｅ」オブジェクトＤ１２１２４に設定するようにする点を除けば、図１０の例のシーケンス図と同様の処理を採用することができる。
【０１５４】
また、テナント内ユーザのインストール処理に関しても、ライセンストークンのスコープによる処理が異なるものの、図８の例と同様のシーケンスにより実現できるため省略する。
【０１５５】
なお、以上説明した第１の実施の形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された第１の実施の形態に種々の変形、例えば、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。以下に説明する第２の実施の形態においても同じである。
【０１５６】
例えば、上記の情報処理システム１においては、ライセンストークンを用いて、アプリケーションに対応するクラウドサービス（図１の例のクラウドサービスサーバ５０）でのＯＡｕｔｈ認証を行うようにしてもよい。
【０１５７】
例えば、端末装置３０のユーザが、クラウドサービスサーバ５０のサービスを利用したい場合には、クラウドサービスとの連携を指示すると、認証情報をサーバ１０から受け取ることに対する許可をユーザに求めることとする。ユーザにより許可されると、クラウドサービスサーバ５０からサーバ１０に対するリクエストに応じて、サーバ１０は、ユーザ情報を返却することとする。
【０１５８】
例えば、クラウドサービスサーバ５０は、ユーザ情報を元に特定された対象フォルダの情報を、端末装置３０に提供することとしてよい。例えば、端末装置３０では、クラウドサービスとの連携フォルダに、ユーザ固有のクラウドサービスサーバ５０で管理されるユーザのフォルダを表示するようにしてよい。上記の構成によれば、端末装置３０にクラウドサービスのアカウント情報を保存する必要がないため、アカウント情報の漏洩リスクが低減する。また、初回認証以降は、クラウドサービスサーバ５０からサーバ１０に対して確認が行われる、ユーザが毎回ＩＤやパスワードを入力する手間がなくなる。
【０１５９】
［２−０．第２の実施の形態の説明］
［２−１．端末装置１２００において実現される機能の説明］
図１２は、第２の実施の形態（端末装置１２００）の構成例についての概念的なモジュール構成図を示している。第１の実施の形態における端末装置３０を端末装置１２００としたものである。端末装置１２００は、ライセンス管理システムであるサーバ１０との通信が可能でない場合に、アプリケーションの実行を制御することができる。
なお、第１の実施の形態と同種の部位には同一符号を付し重複した説明を省略する。ここで、同種の部位とは、第１の実施の形態における符号に「ｂ」の文字を付けたものである。例えば、ライセンス認証要求モジュール３２０ｂは、ライセンス認証要求モジュール３２０と同種の部位である。なお、サーバ１０との通信が可能である場合は、第１の実施の形態と同種の部位と同等の処理を行う。また、サーバ１０との通信が可能でない場合は、サーバ１０との通信の代わりに、ライセンス管理モジュール１２５０と情報のやり取りを行う。つまり、ライセンス管理モジュール１２５０がサーバ１０の代わりの役割を有する。
なお、第２の実施の形態の端末装置１２００のハードウェア構成例は、図１の例に示した端末装置３０と同等のものである。
【０１６０】
第２の実施の形態である端末装置１２００は、図１２の例に示すように、通信確認モジュール１２０５、ライセンス確認モジュール１２１０、ライセンス管理モジュール１２５０を有している。
端末装置１２００は、前述の端末装置３０に通信確認モジュール１２０５、結果格納モジュール１２２０、ライセンス管理モジュール１２５０を付加したものである。
また、ライセンス管理モジュール１２５０は、前述のサーバ１０内のモジュールと同等の機能を有するモジュールで構成されており、サーバ１０のデータ格納モジュール１１０内に認証結果１２１３を付加したものである。
【０１６１】
通信確認モジュール１２０５は、アプリケーションの実行をライセンスにしたがって制御するサーバ１０との通信が可能であるか否かを確認する。例えば、サーバ１０との通信を開始し、サーバ１０からの返信がない場合は、サーバ１０との通信が可能でないと判断し、サーバ１０からの返信がある場合は、サーバ１０との通信が可能であると判断すればよい。なお、端末装置１２００が、サーバ１０との通信が可能である場合をオンライン時ともいい、サーバ１０との通信が可能でない場合をオフライン時ともいう。
【０１６２】
ライセンス確認モジュール１２１０は、ライセンス確認処理モジュール１２１５、結果格納モジュール１２２０を有しており、通信回線であるネットワーク２を介してサーバ１０と接続されている。ライセンス確認モジュール１２１０は、通信確認モジュール１２０５の判断結果にしたがって、アプリケーションの実行ができるか否かについて、サーバ１０と通信を行うか、ライセンス管理モジュール１２５０と情報のやり取りを行うか、のいずれかを行う。
ライセンス確認処理モジュール１２１５は、ライセンス認証要求モジュール３２０ｂ、トークン検証要求モジュール３３０ｂ、インストール・実行制御モジュール３１０ｂ、処理結果取得モジュール３４０ｂを有している。前述したように、ライセンス確認処理モジュール１２１５内の各モジュールは、サーバ１０と通信を行う場合は、第１の実施の形態と同等の処理を行う。ライセンス管理モジュール１２５０と情報のやり取りを行う場合は、サーバ１０の代わりにライセンス管理モジュール１２５０と情報のやり取りを行って、アプリケーションの実行を制御する。
【０１６３】
インストール・実行制御モジュール３１０ｂは、インストール制御モジュール３１２ｂ、実行制御モジュール３１４ｂを有しており、ライセンス認証要求モジュール３２０ｂ、トークン検証要求モジュール３３０ｂ、処理結果取得モジュール３４０ｂと接続されている。
ライセンス認証要求モジュール３２０ｂは、インストール・実行制御モジュール３１０ｂ、ライセンス管理モジュール１２５０のリクエスト受付モジュール１２０ｂと接続されている。
トークン検証要求モジュール３３０ｂは、インストール・実行制御モジュール３１０ｂ、ライセンス管理モジュール１２５０のリクエスト受付モジュール１２０ｂと接続されている。
処理結果取得モジュール３４０ｂは、インストール・実行制御モジュール３１０ｂ、結果格納モジュール１２２０、ライセンス管理モジュール１２５０の処理結果提供モジュール１６０ｂと接続されている。
結果格納モジュール１２２０は、ライセンス確認処理モジュール１２１５の処理結果取得モジュール３４０ｂ、ライセンス管理モジュール１２５０のデータ格納モジュール１１０ｂと接続されている。
【０１６４】
アプリケーションの実行をライセンスにしたがって制御するサーバ１０との通信が可能でない場合に、以下の処理を行う。
ライセンス認証要求モジュール３２０ｂは、端末装置１２００内のライセンス管理モジュール１２５０に対して、そのアプリケーションに関するライセンス認証の要求を行う。
そして、トークン検証要求モジュール３３０ｂは、ライセンス管理モジュール１２５０に対して、アクセストークンの真正性を検証するための検証トークンの検証を指示する。
次に、実行制御モジュール３１４ｂは、ライセンス認証要求モジュール３２０ｂによる要求に対する認証結果、トークン検証要求モジュール３３０ｂによる指示に対する検証結果にしたがって、アプリケーションの実行を制御する。
また、サーバ１０との通信が可能でない場合に、ライセンス管理モジュール１２５０による処理を行わせる場合は、以前に、サーバ１０との通信が可能である場合に、少なくとも１回以上のサーバ１０による認証が行われていることを条件として行われるようにしてもよい。
【０１６５】
サーバ１０との通信が可能である場合に、以下の処理を行うようにしてもよい。
トークン検証要求モジュール３３０ｂは、端末装置１２００を識別する情報をサーバ１０に送信するようにしてもよい。
そして、結果格納モジュール１２２０は、サーバ１０から端末装置１２００を識別する情報とそのサーバ１０での検証した日時を受信した場合、その情報とその日時を、認証結果１２１３としてデータ格納モジュール１１０ｂに記憶させるようにしてもよい。ここで「サーバ１０での検証した日時」として、検証が成功した場合の日時としてもよい。
これらの処理は、第１の実施の形態に付加する処理である。つまり、サーバ１０は、端末装置１２００を識別する情報とそのサーバ１０での検証した日時を送信する。
【０１６６】
データ格納モジュール１１０ｂに認証結果１２１３が記憶された後に、以下の処理を行うようにしてもよい。
サーバ１０との通信が可能でない場合に、トークン検証要求モジュール３３０ｂは、ライセンス管理モジュール１２５０に指示を行う場合に、端末装置１２００を識別する情報をライセンス管理モジュール１２５０に渡すようにしてもよい。
そして、権限オブジェクト検証モジュール１３０ｂは、トークン検証要求モジュール３３０ｂから渡された端末装置１２００を識別する情報とデータ格納モジュール１１０ｂに記憶されている認証結果１２１３内の端末装置１２００を識別する情報とが一致することを条件に加えて、アクセストークンの真正性を検証するようにしてもよい。ここで「条件に加えて」とは、トークン検証要求モジュール３３０ｂから渡された端末装置１２００を識別する情報とデータ格納モジュール１１０ｂに記憶されている端末装置１２００を識別する情報とが一致しなかった場合は、アクセストークンの真正性は否定されたと判断することを意味する。
また、結果格納モジュール１２２０は、データ格納モジュール１１０ｂに、サーバ１０による認証結果とアクセストークンを記憶させるようにしてもよい。
【０１６７】
ライセンス管理モジュール１２５０は、データ格納モジュール１１０ｂ、リクエスト受付モジュール１２０ｂ、権限オブジェクト検証モジュール１３０ｂ、オブジェクト管理モジュール１４０ｂ、リクエスト処理モジュール１５０ｂ、処理結果提供モジュール１６０ｂを有している。
データ格納モジュール１１０ｂは、権限オブジェクト検証モジュール１３０ｂ、オブジェクト管理モジュール１４０ｂ、ライセンス確認モジュール１２１０の結果格納モジュール１２２０と接続されており、オブジェクト管理テーブル１１１ｂ、バリュー管理テーブル１１２ｂ、認証結果１２１３を記憶している。
リクエスト受付モジュール１２０ｂは、権限オブジェクト検証モジュール１３０ｂ、リクエスト処理モジュール１５０ｂ、ライセンス確認モジュール１２１０内のライセンス確認処理モジュール１２１５のライセンス認証要求モジュール３２０ｂとトークン検証要求モジュール３３０ｂと接続されている。
権限オブジェクト検証モジュール１３０ｂは、データ格納モジュール１１０ｂ、リクエスト受付モジュール１２０ｂ、リクエスト処理モジュール１５０ｂと接続されている。
オブジェクト管理モジュール１４０ｂは、データ格納モジュール１１０ｂ、リクエスト処理モジュール１５０ｂと接続されている。
リクエスト処理モジュール１５０ｂは、リクエスト受付モジュール１２０ｂ、権限オブジェクト検証モジュール１３０ｂ、オブジェクト管理モジュール１４０ｂ、処理結果提供モジュール１６０ｂと接続されている。
処理結果提供モジュール１６０ｂは、リクエスト処理モジュール１５０ｂ、ライセンス確認モジュール１２１０内のライセンス確認処理モジュール１２１５の処理結果取得モジュール３４０ｂと接続されている。
【０１６８】
権限オブジェクト検証モジュール１３０ｂは、ライセンス認証要求モジュール３２０ｂから、アクセストークンを含む、アプリケーションに関するライセンス認証の要求を受け付けた場合、そのアクセストークンに基づいてユーザのライセンス認証を行う。
そして、処理結果提供モジュール１６０ｂは、権限オブジェクト検証モジュール１３０ｂによる認証結果を処理結果取得モジュール３４０ｂを介して実行制御モジュール３１４ｂに通知する。
また、権限オブジェクト検証モジュール１３０ｂは、トークン検証要求モジュール３３０ｂから、検証トークンの検証の指示を受け付けた場合、その検証トークンに基づいてアクセストークンの真正性を検証する。
そして、処理結果提供モジュール１６０ｂは、権限オブジェクト検証モジュール１３０ｂによる検証結果を処理結果取得モジュール３４０ｂを介して実行制御モジュール３１４ｂに通知する。
【０１６９】
また、ライセンス管理モジュール１２５０（具体的には、権限オブジェクト検証モジュール１３０ｂ）による処理として、検証の程度が複数用意されているようにしてもよい。
そして、検証の程度が低いものとして、サーバ１０による検証結果を用いるようにしてもよい。具体的には、データ格納モジュール１１０ｂ内の認証結果１２１３として、サーバ１０による検証結果が成功であることが記憶されていれば、権限オブジェクト検証モジュール１３０ｂも検証結果は成功であるとしてもよい。
また、検証の程度が高いものとして、サーバ１０による検証の日時から予め定められた期間に、サーバ１０による検証結果を用いるようにしてもよい。具体的には、データ格納モジュール１１０ｂ内の認証結果１２１３として、サーバ１０による検証結果が成功であることが記憶されており、その検証日時が現在から予め定められた期間以内である場合は、権限オブジェクト検証モジュール１３０ｂも検証結果は成功であるとしてもよい。「予め定められた期間」を過ぎている場合は、アクセストークンの真正性を否定することになる。つまり、この場合は、ライセンス管理システムとの通信が可能でない場合は、アプリケーションの実行ができないことになる。
【０１７０】
より具体的に説明する。
オンライン時に、端末装置１２００はサーバ１０に対して、以下のデータを送信する。
（ｔｏｋｅｎ，♯ｒａｎｄｏｍ，ａｃｋ  ｔｉｍｅ）
ここで、「ｔｏｋｅｎ」はアクセストークン（又は、検証トークン）であり、「♯ｒａｎｄｏｍ」は端末装置１２００を識別する情報であり、「ａｃｋ  ｔｉｍ」は端末装置１２００からサーバ１０へ送信した日時である。例えば、「♯ｒａｎｄｏｍ」として、ＧＵＩＤ（Ｇｌｏｂａｌｌｙ  Ｕｎｉｑｕｅ  ＩＤｅｎｔｉｆｉｅｒ）を用いるようにしてもよい。
そして、その返信として、サーバ１０は端末装置１２００に対して、以下のデータを送信する。
（ｔｏｋｅｎ，♯ｒａｎｄｏｍ，ｌａｔｅｓｔ  ｔｉｍｅ）
ここで、「ｌａｔｅｓｔ  ｔｉｍｅ」はサーバ１０によって検証が成功した日時である。
そして、この（ｔｏｋｅｎ，♯ｒａｎｄｏｍ，ｌａｔｅｓｔ  ｔｉｍｅ）を認証結果１２１３として、データ格納モジュール１１０ｂ内に記憶しておく。
【０１７１】
次に、オフライン時には、データ格納モジュール１１０ｂ内の認証結果１２１３を参照して、ユーザのライセンス認証、アクセストークンの真正性を検証する。なお、データ格納モジュール１１０ｂ内に認証結果１２１３が記憶されていない場合は、ユーザのライセンス認証、アクセストークンの真正性を検証ができない。したがって、アプリケーションの実行は許可されないこととなる。
また、検証の程度（ポリシー、バリデーション）として、例えば、次のものがある。
（１）緩和型
データ格納モジュール１１０ｂ内に成功の認証結果１２１３があれば、ライセンス管理モジュール１２５０としても認証成功とする。つまり、前回のオンライン時に、アプリケーションの実行が許可されたならば、今回のオフライン時も許可するものである。
（２）厳重型
データ格納モジュール１１０ｂ内に成功の認証結果１２１３があり、その検証日時が予め定められた期間以内（例えば、３日以内等）であれば、今回のオフライン時も許可するものである。
【０１７２】
［２−２．１．実行制御処理（オンライン時）］
図１３は、サーバ１０と通信可能である場合のアプリケーションの実行制御処理を示すシーケンス図である。
Ｓ１３２０では、ライセンス確認モジュール１２１０は、サーバ１０に対して、ライセンストークンの認証指示を行う。例えば、以下のデータを送信する。
「ＰＯＳＴ  ／
Ａｕｔｈｏｒｉｚａｔｉｏｎ：  Ｂｅａｒｅｒ  ｛｛ｌｉｃｅｎｓｅＴｏｋｅｎ｝｝」
【０１７３】
Ｓ１３４０では、サーバ１０は、ライセンス確認モジュール１２１０よりライセンストークンの認証指示を受け付ける。
Ｓ１３４１では、サーバ１０は、ライセンス認証を行う。
Ｓ１３４２では、サーバ１０は、認証結果をライセンス確認モジュール１２１０に送信する。例えば、以下のデータを送信する。
「２００  ＯＫ
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：  ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ
｛  ｓｕｂ：  ’｛｛ｕｓｅｒＳｕｂｊｅｃｔ｝｝’  ｝」
【０１７４】
Ｓ１３２１では、ライセンス確認モジュール１２１０は、サーバ１０より認証結果を受信する。
Ｓ１３２２では、ライセンス確認モジュール１２１０は、認証がＯＫであるか否かを判断し、ＯＫの場合はＳ１３２３へ進み、それ以外の場合はＳ１３２７へ進む。
Ｓ１３２３では、ライセンス確認モジュール１２１０は、サーバ１０に対して、ライセンス検証用のトークン検証指示を行う。例えば、以下のデータを送信する。
「ＰＯＳＴ  ／
Ａｕｔｈｏｒｉｚａｔｉｏｎ：  Ｂｅａｒｅｒ  ｛｛ｖｅｒｉｆｙＴｏｋｅｎ｝｝
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：  ｔｅｘｔ／ｐｌａｉｎ
｛｛ｌｉｃｅｎｓｅＴｏｋｅｎ，  ＃ｒａｎｄｏｍ，  ａｃｋ＿ｔｉｍｅ｝｝」
つまり、ライセンストークンに加えて、端末装置１２００を示すＧＵＩＤのようなランダム値（ＩＤ）と送信時間を送る。
【０１７５】
Ｓ１３４３では、サーバ１０は、ライセンス確認モジュール１２１０よりトークン検証指示を受け付ける。
Ｓ１３４４では、サーバ１０は、トークン検証を行う。
Ｓ１３４５では、サーバ１０は、検証結果をライセンス確認モジュール１２１０に送信する。例えば、以下のデータを送信する。
「２００  ＯＫ
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：  ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ
｛｛ｌｉｃｅｎｓｅＴｏｋｅｎ，  ＃ｒａｎｄｏｍ，  ｌａｔｅｓｔ＿ｔｉｍｅ｝｝」
つまり、ライセンストークンとＩＤ、サーバ１０での検証成功の日時を返す。なお、これは、ライセンストークンがアプリケーションの子の場合のデータ例を示している。
【０１７６】
Ｓ１３２４では、ライセンス確認モジュール１２１０は、サーバ１０より検証結果を受信する。
Ｓ１３２５では、ライセンス確認モジュール１２１０は、検証がＯＫであるか否かを判断し、ＯＫの場合はＳ１３２６へ進み、それ以外の場合はＳ１３２７へ進む。
Ｓ１３２６では、ライセンス確認モジュール１２１０は、ライセンス管理モジュール１２５０のデータ格納モジュール１１０ｂ内に、検証結果（又は認証結果）を認証結果１２１３として格納する。
Ｓ１３５１では、ライセンス管理モジュール１２５０は、検証結果（又は認証結果）を認証結果１２１３として格納する。
Ｓ１３２７では、ライセンス確認モジュール１２１０は、エラー処理を行う。
Ｓ１３２８では、ライセンス確認モジュール１２１０は、インストールを実行する。
図１３の例では、アプリケーションのインストール処理を例として挙げたが、アプリケーションの実行処理も同等の処理を行えばよい。
【０１７７】
例えば、以下のような処理が行われる。
オンライン時、アプリケーションの起動時、又は、アプリケーションの動作中の任意のタイミングで、アプリケーションに配送されたライセンストークンを用いてライセンス認証を行う。そして、認証結果は、ライセンス管理モジュール１２５０で保持する。つまり、認証結果とアクセストークンは、データ格納モジュール１１０ｂ内に認証結果１２１３として保持される。
【０１７８】
［２−２．２．実行制御処理（オフライン時）］
図１４は、リクエスト受付モジュール１２０と通信可能でない場合のアプリケーションの実行制御処理を示すシーケンス図である。
Ｓ１４２１では、ライセンス確認モジュール１２１０は、サーバ１０との通信状態を検知する。
Ｓ１４２２では、ライセンス確認モジュール１２１０は、通信がＯＫであるか否かを判断し、ＯＫの場合はＳ１４２３へ進み、それ以外の場合はＳ１４２４へ進む。
Ｓ１４２３では、ライセンス確認モジュール１２１０は、サーバ１０との認証・検証処理を行う。
Ｓ１４２４では、ライセンス管理モジュール１２５０に対して、ライセンストークンの認証指示を行う。例えば、以下のデータを送信する。
「ＰＯＳＴ  ／
Ａｕｔｈｏｒｉｚａｔｉｏｎ：  Ｂｅａｒｅｒ  ｛｛ｌｉｃｅｎｓｅＴｏｋｅｎ｝｝」
【０１７９】
Ｓ１４５１では、ライセンス管理モジュール１２５０は、ライセンス確認モジュール１２１０よりライセンストークンの認証指示を受け付ける。
Ｓ１４５２では、ライセンス管理モジュール１２５０は、ライセンス認証を行う。
Ｓ１４５３では、ライセンス管理モジュール１２５０は、認証結果をライセンス確認モジュール１２１０に送信する。例えば、以下のデータを送信する。
「２００  ＯＫ
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：  ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ
｛  ｓｕｂ：  ’｛｛ｕｓｅｒＳｕｂｊｅｃｔ｝｝’  ｝」
【０１８０】
Ｓ１４２５では、ライセンス確認モジュール１２１０は、ライセンス管理モジュール１２５０より認証結果を受信する。
Ｓ１４２６では、ライセンス確認モジュール１２１０は、認証がＯＫであるか否かを判断し、ＯＫの場合はＳ１４２７へ進み、それ以外の場合はＳ１４３１へ進む。
Ｓ１４２７では、ライセンス確認モジュール１２１０は、ライセンス管理モジュール１２５０に対して、ライセンス検証用のトークン検証指示を行う。例えば、以下のデータを送信する。
「ＰＯＳＴ  ／
Ａｕｔｈｏｒｉｚａｔｉｏｎ：  Ｂｅａｒｅｒ  ｛｛ｖｅｒｉｆｙＴｏｋｅｎ｝｝
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：  ｔｅｘｔ／ｐｌａｉｎ
｛｛ｌｉｃｅｎｓｅＴｏｋｅｎ，  ＃ｒａｎｄｏｍ，  ｃｕｒｒｅｎｔ＿ｔｉｍｅ，  ｐｏｌｉｃｙ｝｝」
つまり、端末装置１２００を示すＧＵＩＤのようなランダム値（ＩＤ）、送信日時、ポリシーを送る。
【０１８１】
Ｓ１４５４では、ライセンス管理モジュール１２５０は、ライセンス確認モジュール１２１０よりトークン検証指示を受け付ける。
Ｓ１４５５では、ライセンス管理モジュール１２５０は、トークン検証を行う。具体的には、ポリシーにしたがったトークン検証を行う。
Ｓ１４５６では、ライセンス管理モジュール１２５０は、検証結果をライセンス確認モジュール１２１０に送信する。例えば、以下のデータを送信する。
「２００  ＯＫ
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：  ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ
｛｛ｌｉｃｅｎｓｅＴｏｋｅｎ，  ＃ｒａｎｄｏｍ，  ｌａｔｅｓｔ＿ｔｉｍｅ｝｝」
ここでは、ライセンストークンが偽でなく、かつ、ポリシーに合致すればアプリケーションの使用が許可される。
【０１８２】
Ｓ１４２８では、ライセンス確認モジュール１２１０は、ライセンス管理モジュール１２５０より検証結果を受信する。
Ｓ１４２９では、ライセンス確認モジュール１２１０は、検証がＯＫであるか否かを判断し、ＯＫの場合はＳ１４３０へ進み、それ以外の場合はＳ１４３１へ進む。
Ｓ１４３０では、ライセンス確認モジュール１２１０は、アプリケーションを実行する。
Ｓ１４３１では、ライセンス確認モジュール１２１０は、エラー処理を行う。
【０１８３】
例えば、以下のような処理が行われる。
オフライン時においても、図１３の例に示すように、アプリケーションの起動時、又は、アプリケーションの動作中の任意のタイミングで、アプリケーションに配送されたライセンストークンを用いてライセンス認証を行う。
オフラインの場合は、ライセンストークンの認証（又は検証）はライセンス管理モジュール１２５０が行う。
トークン検証の際に、最後の検証結果とポリシーに応じて評価する。
【０１８４】
なお、以下のようにしてもよい。
アプリケーションのライセンスであると、アプリケーションそのものにリクエスト受付モジュール１２０を組み込むようにしてもよい。そして、コンテンツの場合は、コンテンツを表示するアプリケーションにリクエスト受付モジュール１２０と同等の許可のステップを用意するようにしてもよい。
例えば、コンテンツとして、機密情報や個人情報がある。このコンテンツの受け渡しに、本実施の形態を用いるようにしてもよい。特に、第２の実施の形態では、オフライン時であると通常は許可が得られないが、オフライン時でも許可することができるようになる。
【０１８５】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読み出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読み出し専用メモリ（ＲＯＭ）、電気的消去及び書き換え可能な読み出し専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリーカード等が含まれる。
そして、前記のプログラムの全体又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分若しくは全部であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【０１８６】
１０…サーバ
３０…端末装置
５０…クラウドサービスサーバ
１１０、１１０ｂ…データ格納モジュール
１２０、１２０ｂ…リクエスト受付モジュール
１３０、１３０ｂ…権限オブジェクト検証モジュール
１４０、１４０ｂ…オブジェクト管理モジュール
１５０、１５０ｂ…リクエスト処理モジュール
１６０、１６０ｂ…処理結果提供モジュール
３１０、３１０ｂ…インストール・実行制御モジュール
３１２、３１２ｂ…インストール制御モジュール
３１４、３１４ｂ…実行制御モジュール
３２０、３２０ｂ…ライセンス認証要求モジュール
３３０、３３０ｂ…トークン検証要求モジュール
３４０、３４０ｂ…処理結果取得モジュール
１２００…端末装置
１２０５…通信確認モジュール
１２１０…ライセンス確認モジュール
１２１３…認証結果
１２１５…ライセンス確認処理モジュール
１２２０…結果格納モジュール
１２５０…ライセンス管理モジュール
【図１】
2019144995.tif 000003
【図２】
2019144995.tif 000004
【図３】
2019144995.tif 000005
【図４】
2019144995.tif 000006
【図５】
2019144995.tif 000007
【図６】
2019144995.tif 000008
【図７】
2019144995.tif 000009
【図８】
2019144995.tif 000010
【図９】
2019144995.tif 000011
【図１０】
2019144995.tif 000012
【図１１】
2019144995.tif 000013
【図１２】
2019144995.tif 000014
【図１３】
2019144995.tif 000015
【図１４】
2019144995.tif 000016