本願発明の実施例においては、インターネット上で帳票データを生成する帳票サービスと、インターネット上のデータを取得して印刷する印刷サービスとがインターネット上のサーバーに設置されていることを想定している。以降、帳票サービスや印刷サービスのように、ネットワークからデバイス装置へ提供されている機能をリソースサービスと呼ぶ。
本願発明の実施例においては端末であるデバイス装置として画像形成装置を例に説明する。画像形成装置上にインストールされた印刷アプリケーション、および帳票アプリケーションがリソースサービスを利用することを想定している。以降、印刷アプリケーションや帳票アプリケーションのようにリソースサービスを利用するアプリケーションをリソースサービス連携アプリケーションと呼ぶ。
更に、本願発明の実施例における権限の移譲の処理にはOAuthの仕組みを利用することとする。OAuthでは、ユーザーから移譲された権限の範囲を特定するための情報をトークンと呼ばれるデータ形式で表現する。サービスを利用される主体、即ちリソースサービスを提供するサーバーは、トークンに基づいて特定される権限範囲で外部からのアクセスを許す。トークンを始めとする権限の範囲を特定するために用いられる情報を本実施例では権限情報と称する。また、サービスを利用する主体、即ち画像形成装置、またはリソースサービス連携アプリケーションに移譲される権限の範囲を規定する情報をスコープと称し、ユーザーが画像形成装置に対して権限移譲した場合に発行されるトークンを親トークンと称する。本実施例では、ユーザーの権限を画像形成装置のようなデバイス装置に移譲することも本願発明の実施例のポイントの1つである。
例えば、画像形成装置上に印刷アプリケーション、および帳票アプリケーションが存在する場合を考える。従来技術では、ユーザーは、印刷アプリケーションからリソースサービスを利用する場合は印刷アプリケーションに、帳票アプリケーションからリソースサービスを利用する場合は帳票アプリケーションに対してそれぞれ個別に認可操作を行う必要がある。ユーザーの立場で考えると、同一の画像形成装置からリソースサービスを利用する場合には、例えば一度の認可操作でそれぞれのアプリケーションからリソースサービスを利用できるようになった方が良い。そこで、アプリケーションに権限を移譲する際、ユーザーに代わり画像形成装置がアプリケーションに権限を移譲することでユーザーの認可操作の回数を低減させる。ユーザーは画像形成装置に権限を移譲した段階で、アプリケーションにも権限を移譲することを暗に認可したこととなる。
なお、本願発明の実施例では画像形成装置に権限を移譲する際にユーザーに認可操作を行わせるが、アプリケーションに権限を移譲する際にはユーザーに認可操作を行わせない。以上の様に、本実施例では、ユーザーの権限をデバイス装置に移譲することでユーザーの認可操作を従来よりも少ない回数に減らしつつ、将来的に追加される各アプリケーションへの権限移譲を可能にする。
ここで、アプリケーションへ権限移譲をする方法について説明する。アプリケーションへ権限移譲をする方法として始めに思いつく構成は、画像形成装置が取得した親トークンをアプリケーションで共有する形態にする形態であろう。しかし、アプリケーションが親トークンを共有する形態を取った場合、全てのアプリケーションに全く同じ権限が与えられたことになってしまいセキュリティ上好ましくない。
例えば、印刷アプリケーションは印刷権限が必要だが帳票生成権限は不要である。また帳票アプリケーションは帳票生成権限が必要だが印刷権限は不要である。このように個々のアプリケーションがそれぞれ異なる目的のためのものであれば、それぞれのアプリケーションに必要な権限は異なるため、夫々のアプリケーションには出来る限り必要最低限の権限を与える形態がセキュリティ上は好ましい。
また、トークンを管理するサーバーは、想定していないアプリケーションからの接続を許可するとしても、どのようなアプリケーションからのアクセスであったのかの記録を残したいという要求も存在する。これは、例えば、より利用頻度の高いアプリケーションを特定し、そのアプリケーションの利用シーンに合わせて機能を拡張していくといった、リソースサービスの機能拡張への戦略を決めるうえで有用な情報である。また、リソースサービスを提供するサーバーは、トークンを用いてアクセスするリソースサービス連携アプリケーションが正規なアプリケーションであるかを認識する必要がある。でなければ、不正なアプリケーションにサービスを利用されてしまうことになる。
また、ユーザー管理機能を持たないようなデバイスの場合、同じデバイスに対して複数のユーザーがアプリケーションのバッチ処理実行を予約ができない、という問題がある。デバイスがユーザー管理機能を持つ場合は、デバイスのユーザー名に紐付けてクラウドアクセス用のトークンを管理すれば使い分けることができたが、デバイスユーザーが存在しない場合は、複数の認可トークンのどれを使ってよいかわからない。
さらに、アプリケーションのバッチ処理実行はデバイスにログインしていない状態でユーザーに成り代わってクラウドにアクセスする。そのため、認可トークンを複数アプリケーションや複数ユーザーの間で共有可能にした場合、ユーザーの介在しない状態で不正な成りすましが可能になってしまう、といった課題がある。
本願発明の実施例においては、個々のリソースサービス連携アプリケーションは親トークンを直接使うのでなく、デバイスに移譲された権限の内、アプリケーションが必要とする権限を更にアプリケーションに移譲する。そして、デバイスがアプリケーションに権限を移譲する際、トークンを管理するサーバーがアプリケーションの特定が可能なように移譲を行う。画像形成装置がリソースサービス連携アプリケーションに権限を再移譲した場合に発行されるトークンを子トークンと称する。親トークン、および子トークンの両方を発行するために必要な操作を認可連携と称する。
本実施例では、リソースサービスを利用し印刷を行う画像形成装置上の印刷アプリケーションの2つの動作について詳細に述べる。一つ目の動作は、ユーザーが画像形成装置にログインして印刷アプリケーションが動作する場合について述べる。二つ目は、ユーザーが画像形成装置にログインせず、予め設定した時刻に同じ印刷アプリケーションがバッチ実行する場合について述べる。本実施例における、このような同じ印刷アプリケーションの動作の違いは、前記印刷アプリケーションの起動のきっかけによって発現する。ユーザーが画像形成装置にログインしてアプリケーションを起動する場合と、予め設定した時刻にタイマーサービスによってアプリケーションがバッチ実行する場合である。なお、1つの印刷アプリケーションで2つの動作を行う形態を説明するが、夫々の機能を持つ2つの印刷アプリケーションを画像形成装置で動作させても良い。
本実施の形態に係る権限移譲システムは、図1に示すような構成のネットワーク上に実現される。100は、Wide Area Network(WAN100)であり、本発明ではWorld Wide Web(WWW)システムが構築されている。101は各構成要素を接続するLocal Area Network(LAN101)である。
200はOAuthを実現するための認可サーバーであり、認可サービスモジュールが設置されている。210はリソースサーバーであり、印刷サービスや帳票サービスといったリソースサービスが設置されている。なお1台のリソースサーバーに設置されるリソースサービスは1つでもよく、複数でもよい。300は画像形成装置であり、1つまたは複数のリソースサービス連携アプリケーションがインストールされている。ユーザーはそれらのリソースサービス連携アプリケーションを用いてリソースサービスを利用する。また認可サーバー200、リソースサービス210、画像形成装置300はそれぞれWAN100およびLAN101を介して接続されている。なお認可サーバー200、リソースサービス210、画像形成装置300はそれぞれ個別のLAN上に構成されていてもよいし同一のLAN上に構成されていてもよい。また認可サーバー200、リソースサービス210は同一のサーバー上に構成されていてもよい。
また、認可サーバー、およびリソースサーバーは1台ではなく複数台で構成されるサーバー群であっても良い。認可サーバーシステムと称した場合、認可サービスモジュールを備えた1台のサーバー、または複数台のサーバー群を指しており、リソースサーバー210、および後述する画像形成装置300は含まないサーバー群を意味する。リソースサーバーシステムについても同様であり、リソースサービスを備えた1台のサーバー、または複数台のサーバーを指している。サーバーシステムが複数台で構成される場合、サーバーシステムに備えられたモジュールは複数台のサーバーに分割して配置し、モジュールの一部を備えた複数台のサーバー同士が連携して機能を実行するようにしても良い。
本実施の形態に係る権限移譲システムは、図2に示すような構成のサーバーおよび画像形成装置から成るシステム上に実現される。図2は、認可サーバー200と画像形成装置300とがWAN100およびLAN101を介して通信可能に接続されている様子を示す。まず、認可サーバー200の構成について説明する。尚、図2に示されるハードウェアブロック図は一般的な情報処理装置のハードウェアブロック図に相当するものとし、本実施形態の認可サーバー200には一般的な情報処理装置のハードウェア構成を適用できる。また認可サーバー200だけでなく、リソースサーバー210についても同様である。
図2において、CPU201は、ROM203のプログラム用ROMに記憶された、或いはハードディスク(HD)等の外部メモリ211からRAM202にロードされたOSやアプリケーション等のプログラムを実行する。そして、システムバス204に接続される各ブロックを制御する。ここでOSとはコンピュータ上で稼動するオペレーティングシステムの略語であり、以下オペレーティングシステムのことをOSと呼ぶ。後述する各シーケンスの処理はこのプログラムの実行により実現できる。RAM202は、CPU201の主メモリ、ワークエリア等として機能する。キーボードコントローラ(KBC)205は、キーボード209や不図示のポインティングデバイスからのキー入力を制御する。CRTコントローラ(CRTC)206は、CRTディスプレイ210の表示を制御する。ディスクコントローラ(DKC)207は各種データを記憶するハードディスク(HD)等の外部メモリ211におけるデータアクセスを制御する。ネットワークコントローラ(NC)208はWAN100もしくはLAN101を介して接続された画像形成装置300や他の機器との通信制御処理を実行する。尚、後述の全ての説明においては、特に断りのない限りサーバーにおける実行のハード上の主体はCPU201であり、ソフトウェア上の主体は外部メモリ211にインストールされたアプリケーションプログラムである。
次に、画像形成装置300の構成について説明する。図示するように、画像形成装置300において、301は画像形成装置300のCPUであり、ROM302や、外部メモリ303に記憶された制御プログラムに基づいてシステムバス304に接続される各ブロックを制御する。CPU301の処理により生成された画像信号が、印刷部I/F305を介して、印刷部(画像形成装置エンジン)306に出力情報として出力される。また、CPU301は、入力部307とネットワーク部310を介して認可サーバー200との通信処理が可能となっており、画像形成装置300内の情報等を認可サーバー200に通知できる。また、スキャナ部等の画像処理部を有していても良い。
ROM302内のプログラムROMには、CPU301の制御プログラム等を記憶している。ROM302内のフォント用ROMには、出力情報を生成する際に使用するフォントデータ等を記憶している。ROM302内のデータ用ROMには、ハードディスク等の外部メモリ303がない画像形成装置の場合、認可サーバー200と送受信を行う情報等を記憶している。RAM308は、CPU301の主メモリや、ワークエリア等として機能するRAMであり、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。また、RAM308は、出力情報展開領域、環境データ格納領域、NVRAM等に用いられる。外部メモリ303は、メモリコントローラ(MC)309によりアクセスを制御される。外部メモリ303は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、操作部311は操作のためのスイッチ及びLED表示器等で構成されている。尚、後述の全ての説明においては、特に断りのない限り画像形成装置における実行のハード上の主体はCPU301であり、ソフトウェア上の主体は外部メモリ303にインストールされたアプリケーションプログラムである。
図3は本実施の形態に係る、認可サーバー200、リソースサーバー210、画像形成装置300それぞれのモジュール構成を示す図である。なお認可サーバー200、リソースサーバー210、画像形成装置300は図2のものと同一である。認可サーバー200は認可サーバーモジュール600を持ち、認可サーバーモジュール600はユーザー識別部601、クライアント検証部602、親トークン発行部603、子トークン発行部611、子トークン検証部620を持つ。リソースサーバー210はリソースサーバーモジュール700を持ち、リソースサーバーモジュール700は子トークン権限確認部701とリソース要求処理部702を持つ。
図中300は画像形成装置300である。画像形成装置300はCPU301がROM302、或いは外部メモリ303に記憶されたOSを実行する事で各アプリケーションを制御する。ここで820はそのOSであり、一般的にはリアルタイムOSが使用されるが、昨今ではLinux(登録商標)等の汎用OSが使用される事もある。次に、810は仮想マシンであり、例えばJava(登録商標)VMがよく知られている。この仮想マシン810はOSで制御されるアプリケーションとして動作する仮想的なアプリケーション実行環境である。次に、800はアプリケーション管理フレームワークである。800は、仮想マシン810が提供するアプリケーション実行環境上で動作する管理対象のアプリケーションのライフサイクルを管理する機能と、それを制御するI/F、および各アプリケーション間での処理要求を仲介するためのI/F公開機能を備える。ライフサイクルとはアプリケーションのインストール、起動、停止、アンインストールを含むアプリケーションの状態を示すものとする。本実施例におけるアプリケーション管理フレームワーク800は、OSGi(Open Services Gateway initiative)アライアンスで規定されたOSGi(登録商標)として説明する。
また、認可サーバー連携クライアント500、1つまたは複数のリソースサーバー連携アプリケーション500、ログインアプリケーション1000は、仮想マシン810が提供するアプリケーション実行環境にて動作する各種アプリケーションである。また、これらアプリケーションはアプリケーション管理フレームワーク800にてライフサイクル管理されている。なお、アプリケーション管理フレームワークは、後述するアプリケーション定義ファイルに記載された定義値に基づきアプリケーションの管理を行う。例えば、アプリケーションに固有に割り当てられているアプリケーションIDとインストールされている、もしくは開始されているアプリケーションの実態との紐づけ管理を行う。830はアプリケーション管理フレームワーク800が公開するライフサイクル管理用の制御I/Fを介して、ユーザーからの各種アプリケーションのインストールや、開始リクエストを受け付け実行するアプリケーション管理アプリケーションである。
認可サーバー連携クライアントは、本実施例の場合、印刷アプリケーション、帳票アプリケーション、FAXアプリケーション、スキャンアプリケーションである。これらアプリケーションは、本実施例で後述するアクセストークンを用いたリソースサーバーへのアクセスにより、アプリケーション実行に必要なリソースを、リソースサーバーから取得する。リソースは、リソースサーバー210が印刷サービスの場合、印刷可能な文書のリストである。印刷アプリケーションは、印刷サービスと連携し、印刷サービスのリソースである印刷可能な文書を取得する。印刷アプリケーションは、印刷可能な文書のリストを取得したことに応じてリソースサーバーからリストに記載された文書をダウンロードし、その文書を印刷する機能を持つ。この機能の実施は、ユーザーが画像形成装置300にログインし、アプリケーションが起動し処理を実行する場合と、予めユーザーが実行時間を指定して自動的に処理を実行する場合がある。後者の場合、指定時間になったら後述するタイマーサービスからのイベント通知を受け、通知を受けた印刷アプリケーションが起動し処理を実行する場合がある。指定時間の際に、タイマーサービスからのイベント通知によりアプリケーションを実行することをバッチ実行と呼ぶ。バッチ実行は、ユーザーからの指示に応じて実行する処理ではなく、ユーザーが設定した指定時間、または予め設定された指定時間に実行することを指す。
認可サーバー連携クライアントが帳票サービスの場合、印刷サービスと同様、帳票アプリケーションはリソースサーバーから作成可能な帳票のリストを取得し、リスト記載の帳票を取得し、印刷する機能を持つ。認可サーバー連携クライアントがFAXサービスの場合、印刷サービスと同様に、FAXアプリケーションは、リソースサーバーからFAX送信可能なFAX文書のリストを取得し、リスト記載のFAX文書、FAX番号を取得し、FAX送信する機能を持つ。印刷アプリケーション同様、帳票アプリケーション、FAXアプリケーションも、ユーザーの画像形成装置300へのログイン後にユーザーから指示されたことに応じて処理を開始する実行と、バッチ実行の両者が可能である。
タイマーサービス1100は、アプリケーション管理フレームワーク800上で動作するアプリケーションの一種である。タイマーサービス1100は、アプリケーション管理フレームワーク上で動作する各種アプリケーションに対してタイマーイベントの通知を行う機能を持つ。また、タイマーサービスは、各種アプリケーションからアクセス可能なタイマー設定インターフェースを持つ。例えば、リソースサーバー連携アプリケーション500は、タイマーサービスに対してタイマー設定インターフェースを用いてイベント通知時間を設定することができる。タイマーサービス1100は、タイマーイベントの通知の対象となるアプリケーションのIDと、タイマー設定時間を保持することができる。タイマーサービス1100は、タイマー設定時間になると、アプリケーションIDに相当するアプリケーションに対しタイマーイベントを通知する。タイマーイベントの通知を受けたアプリケーションは、自動的にアプリケーション動作を行うことが可能となる。例えば、ユーザー操作などのアプリケーションに対する明示的な動作指示がなくても、タイマーサービスのタイマーイベントの通知設定が行われることにより、設定時間におけるバッチ実行が可能となる。
ここで認可サーバー連携クライアント500、リソースサーバー連携アプリケーション500およびログインアプリケーション1000は、画像形成装置が既定で持っていてもよい。また、アプリケーション管理アプリケーション830、およびアプリケーション管理フレームワーク800を介して後からインストールされてもよい。さらに、画像形成装置300はWWWを利用するためのユーザーエージェントであるWebブラウザ900を備える。なお、アプリケーション管理フレームワーク800におけるアプリケーションのインストール、開始のシーケンスについては後述する。
図4a、図4b、図4cは認可サーバー200が外部メモリに記憶するデータテーブルである。これらデータテーブルは、認可サーバー200の外部メモリではなく、LAN101を介して通信可能に構成された別のサーバーに記憶するよう構成する事も出来る。
図4aはユーザー管理テーブル1200である。ユーザー管理テーブル1200は、ユーザーID1201、パスワード1202、ユーザー種別1203から成る。認可サーバー200は、ユーザーID1201、パスワード1202の情報の組を検証し、正しければ認証情報を生成することで、各ユーザーもしくはクライアントを認証する機能を備える。
図4bはクライアント管理テーブル1300である。クライアント管理テーブル1300はクライアントID1301、クライアント名1302、リダイレクトURL1303、シリアル番号1304から成る。クライアントID1301は、ユーザー管理テーブル1200のユーザーID1201と関連付いており、互いに参照可能となっている。クライアント名1302、リダイレクトURL1303は後述のOAuthのシーケンスで利用される値である。そして、シリアル番号1304はクライアントが画像形成装置300であった場合に登録される値であり、画像形成装置をユニークに識別可能な値である。
図4cは認可トークン管理テーブル1400である。認可トークン管理テーブル1400は、認可トークンID1401、トークン種別1402、有効期限1403、スコープ1404、リフレッシュトークンID1405、リフレッシュ期限1406、クライアントID1407、ユーザーID1408、アプリケーションID1409から成る。これら認可トークン管理テーブル1400の処理詳細については後述する。
図5a、図5b、図5cは画像形成装置300が外部メモリに記憶するデータテーブルである。図5aはデバイスユーザー管理テーブル1500である。デバイスユーザー管理テーブル1500はログインアプリケーション1000から参照、更新可能なように構成されている。また、本実施例では画像形成装置300の外部メモリに記憶するよう記載しているが、画像形成装置300がLAN101を介して通信可能な別サーバーにて構成する事もできる。デバイスユーザー管理テーブル1500は、ユーザーID1501、パスワード1502、ICカード情報1503から成る。ログインアプリケーション1000は、画像形成装置300の入力画面を用いてユーザーからのユーザーID、パスワードを受け付ける画面(不図示)を構成する。そして、入力されたユーザーID、パスワードの組が、ユーザーID1501、パスワード1502の組と合っているか検証し、正しければユーザーID1501の情報を含むログインコンテキストを生成することで、各ユーザーを認証する機能を備える。また、ログインアプリケーション1000は画像形成装置300に接続された不図示のICカードリーダーからICカード情報を取得する。そして、ICカード情報1503の情報とあっているか検証し、正しければ対応するユーザーID1501の情報を含むログインコンテキストを生成する事で、各ユーザーを認証する機能を備える事もできる。
ログインコンテキストとは、認証を受けたユーザーのユーザーID1501の情報が設定されたオブジェクトであり、その他に、ユーザーの属性情報、例えば、ユーザーが所属するドメインやユーザーの電子メールアドレス等の情報を設定するよう構成する事もできる。ユーザーが画像形成装置300にログインしている間、画像形成装置300はログインコンテキストを保持し、内部のプログラムモジュールが画像形成装置300のリソースを使用するときはログインコンテキストを利用してセキュアにアクセスを行う。
図5bはデバイス管理テーブル1600である。デバイス管理テーブル1600は認可サーバー連携クライアント500のみから参照、更新可能、リソースサービス連携アプリケーション400から参照可能なように構成されている。デバイス管理テーブル1600は、クライアントID1601、クライアントシークレット1602、エンドポイントURL1603、リダイレクトURL1604から成る。ここで、クライアントID1601、クライアントシークレット1602は、予め認可サーバー200にて発行、記憶されたユーザーID1201、パスワード1202にそれぞれ対応している。さらに、リダイレクトURL1604も、認可サーバー200のクライアント管理テーブルに、クライアントID1301、クライアント名1302、画像形成装置300のシリアル番号1304と共に登録されている情報と同様のデータが格納されている。これら情報の登録方法としては、例えば、画像形成装置300がLAN101、WAN100を介してオンラインで登録する方法や、ユーザーを介して認可サーバー200、画像形成装置300にてそれぞれ値を設定する方法でも良い。なお、エンドポイントURL1603は認可サーバーが公開するOAuthのためのエンドポイントのURLである。
図5cは親トークン管理テーブル1700である。親トーク管理テーブル1700は認可サーバー連携クライアント500からのみ参照、更新可能なよう構成されている。親トークン管理テーブル1700は、ユーザーID1701、認可トークンID1702、リフレッシュトークンID1703から成る。親トークン管理テーブル1700の処理詳細については後述する。
ここで、親トークン取得に関する本実施形態のシーケンスを図6、図7を用いて説明する。本シーケンスは、ユーザーが画像形成装置300を最初に利用する際に一度だけ行う操作である。例えば、認可サーバー連携クライアント400を画像形成装置300にインストールし、その後、ユーザーが始めて画像形成装置300を利用する際に図6で示すフローを行う形態が好ましい。まず、ユーザーが画像形成装置300においてログインアプリケーション1000が提供するログイン手段を用いて画像形成装置300にログインする(S1.1)。ここでユーザーIDがuser001 のユーザーがログインしたとする。すると、ログインアプリケーション1000はuser001を含むログインコンテキストを生成し、アプリケーション管理フレームワーク800を介して各アプリケーションから取得可能なようRAM308に格納する(S1.2)。
次に、ユーザーは画像形成装置300を操作してブラウザ900を実行する。そして、ブラウザ900を用いて認可サーバー連携クライアント500の認可連携を開始するためのURLへアクセスする(S1.3)。ここで認可サーバー連携クライアント500は図7aに示すような認可連携開始を確認する画面1801を応答するよう構成しても良い。認可サーバー連携クライアント500は、認可連携の開始を受け付けたら、デバイス管理テーブル1600のエンドポイントURL1603に記載のURLに対して、OAuthの認可リクエストをするようブラウザ900にリダイレクト要求する(S1.4)。この認可リクエストには、デバイス管理テーブル1600のクライアントID1601、リダイレクトURL1604の情報が含まれる。また、OAuthでは、認可を受けたい権限範囲を示すスコープを認可リクエストに含むよう構成する事もできる。本実施例では、スコープとしてスコープAがリクエストされたとして説明する。
認可リクエストを受け付けた認可サーバー200は、ユーザーを認証するために図7bに示すログイン画面1802をブラウザ900に応答する(S1.5)。ユーザーはブラウザ900に示されたログイン画面1802に対して、ユーザーID、パスワードを入力しログインを実行する(S1.6)。認可サーバー200は受け付けたユーザーID、パスワードの組がユーザー管理テーブル1200に登録されている情報と合っているかを検証し、合っている場合はユーザーIDを紐づいた認証情報を生成して次の処理を実行する。認可サーバー200は、認可リクエストに含まれているクライアントIDとリダイレクトURLの組みが、クライアント管理テーブル1300に登録されている情報と合っているか検証する。検証の結果正しければ、クライアント管理テーブル1300のクライアント名1302を取得し、図7cに示す認可確認画面1803を生成しブラウザ900に応答する(S1.7)。その際、認証情報をブラウザ900に対してCookie情報として格納して応答する。なお、実施例では、認可確認画面1803にクライアント名1302を表示するよう説明したが、ここにクライアントの詳細な説明を追加して表示する事や、ログインしているユーザーの情報を表示するよう構成する事もできる。また認可リクエストにスコープを含む場合は、当該スコープの範囲を説明する情報を認可確認画面1803に表示するよう構成する事も出来る。この処理により、認可サーバー200はユーザーの認証と、認可サーバー連携クライアント400の認証を行ったことになる。
次に、ユーザーはブラウザ900に表示された認可確認画面1803で許可を実行する(S1.8)。許可を受けた認可サーバー200は次の処理を実行する。認可トークン管理テーブル1400に認可コードを発行し登録する。その際、認可トークンID1401に発行したトークンのID、トークン種別1402に認可コード、有効期限1403、および、認可リクエスト時に受け付けたクライアントIDをクライアントID1407、ブラウザ900からCookieとして送信された認証情報に紐づくユーザーIDをユーザーID1408に登録する。そして、認可応答として、認可コードの認可トークンIDを付与したリダイレクトURLに対してブラウザ900をリダイレクト要求する(S1.9)。
認可応答を受けた認可サーバー連携クライアント500は、認可サーバー200に対してトークン要求を行う(S1.10)。このトークン要求には、認可応答で取得した認可コードの認可トークンID、デバイス管理テーブル1600のクライアントID1601、クライアントシークレット1602、リダイレクトURL1604を含む。トークン要求を受けた認可サーバー200は以下の検証を行い、正しい場合は親トークンを生成する(S1.11)。認可サーバー200は、トークン要求で受けつけたクライアントID、クライアントシークレットの組が、ユーザー管理テーブル1200に登録されているユーザーID1201、パスワード1202の組と合っているか検証する。次に、トークン要求で受けつけた認可コードの認可トークンIDが、認可トークン管理テーブル1400に登録されているか、有効期限内かを検証する。そして、トークン要求で受けつけたクライアントIDとリダイレクトURLがそれぞれ認可トークン管理テーブル1400の認可トークンIDで特定されるクライアントID1407と、クライアント管理テーブル1300のリダイレクトURL1303と合っているかを検証する。
ここで、リダイレクトURL1303はクライアント管理テーブル1300ではなく、認可トークン管理テーブル1400にカラムを追加し、認可コード発行時に登録して、該追加カラムと検証するよう構成する事もできる。これらすべての検証が正しい場合に認可サーバー200は親トークンを生成して、親トークンの認可トークンIDを認可サーバー−連携クライアント500に応答するこの際、応答内容として同時に発行したリフレッシュトークンIDも含む(S1.12)。親トークンとしては、認可トークンID1401に発行したトークンのID、トークン種別1402に親トークン、有効期限1403、および、認可コードから引き継ぐ情報として、クライアントID1407、ユーザーID1408を登録する。この際、親トークンをリフレッシュするためのリフレッシュトークンを発行し、リフレッシュトークンID1405、リフレッシュ期限1406に登録する。リフレッシュのフローについては後述する。なお、リフレッシュトークンのように権限情報を再発行するために必要な情報を、本願発明では再発行情報と称する。
親トークンの認可トークンID、リフレッシュトークンIDを取得した認可サーバー連携クライアント500は、アプリケーション管理フレームワーク800を介して画像形成装置300にログインしているユーザーのログインコンテキストを取得する(S1.13)。そして、認可サーバー連携クライアント500は、ログインコンテキストからデバイスユーザーIDを取得し、親トークン管理テーブル1700に、デバイスユーザーID、親トークンの認可トークンID、リフレッシュトークンIDを保存する(S1.14)。そして、認可サーバー連携クライアント500は、不図示の認可連携完了の旨を示す画面をブラウザ900に応答し、処理を終了する。以上が、ユーザーが持っているサービスを利用するための権限をデバイス装置である画像形成装置300に移譲することを許可する認可操作が行われたことで、デバイス装置に権限が移譲されるための構成、およびフローとなる。ユーザーの権限を委譲された画像形成装置300は、ユーザーに代わり各アプリケーションに権限を移譲していく。
続いて、ユーザーの権限を委譲された画像形成装置300が、ユーザーに代わりアプリケーションに権限を移譲するためのシーケンスを図8を用いて説明する。本シーケンスは、ユーザーが画像形成装置300に備えるリソースサービス連携アプリケーション400を実行する際に行われるシーケンスである。なお、親トークン取得のシーケンスが実施されている必要がある。まず、ユーザーが画像形成装置300においてログインアプリケーション1000が提供するログイン手段を用いて画像形成装置300にログインする(S2.1)。ここでユーザーIDがuser001 のユーザーがログインしたとする。すると、ログインアプリケーション1000はuser001を含むログインコンテキストを生成し、アプリケーション管理フレームワーク800を介して各アプリケーションから取得可能なようRAM308に格納する(S2.2)。なお、親トークン取得のシーケンスの後に連続して実行する場合は、再度ログインする必要はなく、次のS2.3からの操作シーケンスとなる。
次に、ユーザーは画像形成装置300を操作してリソースサービス連携アプリケーション400のアプリケーション画面(不図示)にアクセスする(S2.3)。このアプリケーション画面は例えば、リソース連携アプリケーション400が印刷アプリケーションであった場合は印刷する文書を選択する画面であり、帳票アプリケーションであった場合は、作成する帳票を選択する画面である。ここでアプリケーション画面にアクセスするとは、例えば、画像形成装置300が備える操作パネル上にアプリケーション管理フレームワーク800にて開始状態とされている各アプリケーションが選択可能に表示されており、その中から当該アプリケーションを選択する事を指す。
アプリケーション画面にアクセスされたリソースサービス連携アプリケーション400は、アプリケーション管理フレームワーク800からログインコンテキストを取得する(S2.4)。そして、アプリケーション管理フレームワーク800に登録されている認可サーバー連携クライアント500のトークン取得インターフェースに対してトークン取得要求を行う(S2.5)。この際、取得したログインコンテキストを要求に含める。なお、ここでトークンに必要なスコープを要求するよう構成する事もできる。本実施例では、スコープAが引き続き要求されたとして説明する。トークン取得要求を受けた認可サーバー連携クライアント500は、アプリケーション管理フレームワーク800を介して、要求元のリソースサービス連携アプリケーション400のアプリケーションIDを取得する(S2.6)。アプリケーションID取得のシーケンスについては後述する。
アプリケーションIDを取得した認可サーバー連携クライアント500は以下の処理を行う。まず、取得したログインコンテキストが有効かどうかアプリケーション管理フレームワーク800を介して検証する。そして、正しい場合はログインコンテキストに紐づいたデバイスユーザーIDを取得する。なお、このログインコンテキストの検証は、認可サーバー連携クライアント500で実施するよう説明したが、ログインコンテキストのインスタンス生成をアプリケーション管理フレームワーク800のみ行えるよう構成とする。なお、インスタンスが生成されている事によって、正当であると判断するよう構成する事もできる。次に、認可サーバー連携クライアント500は、取得したデバイスユーザーIDをキーに親トークン管理テーブル1700からリフレッシュトークンIDを取得する。この時、親トークン管理テーブル1700にユーザーIDが登録されていない場合は、親トークン取得シーケンスを実施するようユーザーに促す画面(不図示)を提示するよう構成する事もできる。また、場合によってはブラウザ900を起動し、親トークン取得シーケンスを自動的に開始するよう構成するでも良い。
認可サーバー連携クライアント500は取得したリフレッシュトークンIDと、デバイス管理テーブル1600のクライアントID、クライアントシークレットを用いて、認可サーバー200にトークンリフレッシュ要求を行う(S2.7)。ここでは、親トークン取得シーケンスの実行から子トークン取得のシーケンスまでの間に時間が経過し、親トークンの有効期限が切れている事として説明している。しかし、親トークンの有効期限内であった場合は、トークンリフレッシュ要求を実施せず、S2.11の子トークン取得要求を実施するでも良い。
トークンリフレッシュ要求を受けた認可サーバー200は、以下の処理を実行する。まず、トークンリフレッシュ要求に含まれるクライアントID、クライアントシークレットの組がユーザー管理テーブル1200のユーザーID1201とパスワード1202の組と合っているかを検証する。正しい場合は、トークンリフレッシュ要求に含まれるリフレッシュトークンIDが認可トークン管理テーブル1400に登録されており、リフレッシュ期限内か確認する。さらに、トークンリフレッシュ要求に含まれるクライアントIDがクライアントID1407と一致するか検証し、全ての検証が正しい場合は、親トークンをリフレッシュし、リフレッシュした親トークンの認可トークンIDと、リフレッシュトークンIDを認可サーバー連携クライアント500に応答する(S2.9)。ここで、リフレッシュの方法としては、新たに認可トークンID、リフレッシュトークンIDを発行して認可トークン管理テーブル1400に登録する。この際、トークンリフレッシュ要求で受けつけたリフレッシュトークンIDによって特定されるレコードのトークン種別1402、スコープ1404、クライアントID1407、ユーザーID1408を引き継ぐ。また、引き継ぎ後、元のリフレッシュトークンIDは再度リフレッシュできないよう無効化、より具体的には有効期限を強制的に期限切れにする事も出来るし、リフレッシュトークンIDは新規発行せず、引き継ぐよう構成する事も可能である。
リフレッシュされた親トークンを取得した認可サーバー連携クライアント500は、受け付けた認可トークンID、リフレッシュトークンIDにて、親トークン管理テーブルの情報を上書きし、再登録する(S2.10)。そして、親トークンの認可トークンIDと、デバイス管理テーブル1600のクライアントID、クライアントシークレット、トークン取得要求で受けつけたスコープ、および、取得したアプリケーションIDを用いて、認可サーバー200に子トークン取得要求を行う(S2.11)。ここで子トークン取得要求に含めるアプリケーションIDがリソースサービス連携アプリケーション400による改竄の余地がない事は後述する。子トークン取得要求は、ユーザーから移譲された権限を前記アプリケーションに対して更に移譲する要求と同等である。
子トークン取得要求を受けた認可サーバー200は以下の処理を実行する。まず、子トークン取得要求に含まれるクライアントID、クライアントシークレットの組がユーザー管理テーブル1200のユーザーID1201とパスワード1202の組と合っているかを検証する。正しい場合は、子トークン取得要求に含まれる認可トークンIDが認可トークン管理テーブル1400に登録されており、有効期限内か確認する。さらに、子トークン取得要求に含まれるクライアントIDがクライアントID1407と一致するか検証し、全ての検証が正しい場合は、子トークンを生成し認可サーバー連携クライアント500に応答する(S2.13)。
ここで、認可サーバー200は、子トークンは新たに認可トークンIDを発行して、トークン種別1402を子トークン、アプリケーションID1409に取得したアプリケーションID、スコープ1404に子トークン取得要求に含まれるスコープを、認可トークン管理テーブル1400に登録する。この際、子トークン取得要求で受けつけた認可トークンIDによって特定されるレコードのクライアントID1407、ユーザーID1408を引き継ぐ。結果、この時発行した子トークンには、ユーザーを特定するためのユーザーID、画像形成装置を特定するためのクライアントID、およびアプリケーションを特定するためのアプリケーションIDが紐づく。なお、子トークンではリフレッシュトークンは発行しない。これは、トークンリフレッシュ要求するためにはクライアントID、クライアントシークレットが必要であるため、子トークンを利用する各アプリケーションではリフレッシュ要求は出来ない事と、さらには、各アプリケーションがリフレッシュトークンを漏洩する事で、自由にトークンの有効期限を更新されてしまうセキュリティリスクをなくすためである。
そして、子トークンの認可トークンIDを取得した認可サーバー連携クライアント500は要求元のリソースサービス連携アプリケーション400に子トークンの認可トークンIDを応答する。子トークンの認可トークンIDを取得したリソースサービス連携アプリケーション400は、リソースサーバー210に認可トークンIDを含むリソース要求を行う(S2.14)。
リソース要求を受けたリソースサーバー210は、要求に含まれる子トークンの認可トークンIDのトークン検証を認可サーバー200に対して要求する(S2.15)。このトークン検証要求には、スコープを含める事ができる。トークン検証要求を受けた認可サーバー200は、受け付けた認可トークンIDが、認可トークン管理テーブル1400に登録されているか、有効期限内か、および、受け付けたスコープがスコープ1404の範囲内かを検証(S2.16)し、検証結果をリソースサーバー210に応答する(S2.17)。
次に、リソースサーバー210は認可サーバー200に対して、子トークンの認可トークンIDのトークン情報取得を要求する(S2.18)。トークン情報取得要求を受けた認可サーバー200は、認可トークン管理テーブル1400から受け付けた認可トークンIDにて特定される情報を取得し、それら情報をリソースサーバー210に応答する(S2.19)。この応答には、例えば、スコープ1404、クライアントID1407、ユーザーID1408、アプリケーションID1409の情報を含む。さらには、クライアントID1407にて特定されるクライアント管理テーブル1300に登録されているシリアル番号1304を含むよう構成する事もできる。
トークン情報を取得したリソースサーバー210は、取得した情報を元に要求を受け付けたリソースに対するアクセスを許可するか拒否するかを判断する。ここでは、リソースサーバー210に予めアクセス可能なアプリケーションIDが設定されているとし、その設定されているアプリケーションIDと、トークン情報から取得されたアプリケーションIDを比較することでアクセスを許可するかを検証する(S2.20)。検証の結果、アクセス許可と判断された場合は、リソースサービス連携アプリケーション400に対して、リソースを応答する(S2.21)。リソースは、例えば、リソースサーバー210が印刷サービスであった場合は印刷可能な文書のリストであり、帳票サービスであった場合は、作成可能な帳票のリストである。なお、リソースサーバー210は、リソースサービス連携アプリケーション400を画像形成装置300へ配信する配信サーバーからアプリケーションIDを取得することで、アプリケーションIDを予め設定することができる。または、リソースサービス連携アプリケーション400を開発した開発者からの申請を受けて、リソースサーバー210の管理者が手動でアプリケーションIDを設定しても良い。
ここで、S2.15から、S2.20まで、トークンの検証を認可サーバー200、リソースサーバー210それぞれで行うよう説明した。しかし、リソースに対するアクセス可能なアプリケーションを認可サーバー200で管理し、全ての検証を認可サーバー200で行うよう構成する事も可能である。また、本実施例ではアクセス可能なアプリケーションの判断をアプリケーションIDを用いて実施するよう説明した。しかし、トークン情報から取得できるシリアル番号やクライアントIDを元に画像形成装置300を識別し、アクセスの可否を判断するよう構成する事もできる。また、同様に、トークン情報から取得できるスコープやユーザーIDを元にアクセスの可否を判断するよう構成する事もできる。リソース応答を受け付けたリソースサービス連携アプリケーション400は、受信したデータを元に前述のアプリケーション画面を構成し、ユーザーに応答する(S2.22)。
これら、親トークン取得のシーケンス、および子トークン取得のシーケンスによって、ユーザーの認可操作を1回に抑え、かつリソースサーバー210はアクセスしてきたアプリケーションを識別する事が可能となる。また、リソースサーバー210は、子トークンを世紀に取得したリソースサービス連携アプリケーション400からのアクセスであることを認識することもできる。
次に、リソースサービス連携アプリケーション400が認可サーバー連携クライアント500へのトークン取得要求をする方法および、認可サーバー連携クライアント500が要求元のアプリケーションIDを取得する方法について説明する。
図10aはインストールするアプリケーションのアプリケーションファイルの構成を示す図である。アプリケーションファイル1900は、アプリケーション定義ファイル1901、アプリケーションの実態であるアプリケーション1902から成る。また、アプリケーションファイルはアプリケーション定義ファイル1901、アプリケーション1902を含む形で暗号化されており、復号するための鍵はライセンスファイル1910に記載されている。また、アプリケーション定義ファイル1901は、アプリケーションを一意に識別するためのアプリケーションIDと、アプリケーションのバージョン、およびアプリケーション名が記述されている。また、アプリケーション定義ファイル1901は、その他にも、アプリケーションが消費する記憶領域等のリソース量の定義や、アプリケーションを開始するときに実行するクラスのクラスパス等が記載されている。
図10bは、アプリケーションをインストールする際に必要となるライセンスファイルの構成を示す図である。ライセンスファイル1910は、アプリケーションファイル1900を復号するためのアプリケーション復号鍵1911から成る。またライセンスファイル1910は、アプリケーション管理アプリケーション830にて保持しされている秘密鍵で復号可能なよう公開鍵にて暗号化されている。これらの構成により、アプリケーション管理アプリケーション830にて保持されている秘密鍵が漏洩しない限りは、アプリケーション定義ファイル1901、およびアプリケーション1902は改竄出来ないよう保護されている。
図10cはアプリケーション管理フレームワーク800にて管理されるアプリケーション管理テーブル1920である。アプリケーション管理テーブル1920は、アプリケーションID1921、バージョン1922、アプリケーション名1923、保存場所1924、状態1925から成る。
また、アプリケーション管理フレームワーク800は、各アプリケーションが実行され、RAM308上に展開された状態であるアプリケーションオブジェクトをリストで管理している。リスト上に登録されている各アプリケーションオブジェクトは、アプリケーション管理テーブル1920の情報とアプリケーションIDで紐づいており、アプリケーション管理テーブル1920の各情報を参照可能に構成されている。また、アプリケーションオブジェクトのリストは、アプリケーション管理フレームワーク800のI/Fを介してアプリケーション管理アプリケーション830から取得可能なよう構成されている。
次に、画像形成装置300にアプリケーションをインストールするシーケンスと、各アプリケーションを開始するシーケンスを、図9を用いて説明する。また、図8で説明したシーケンスと同じ処理に関しては共通のシーケンス番号とし、説明を省略する。まず、アプリケーションのインストールシーケンスについて説明する。ユーザーは、不図示のPC(パーソナルコンピューター)に備えるWebブラウザを用いて、画像形成装置300のアプリケーション管理アプリケーション830が備えるアプリケーション管理画面(不図示)にアクセスする(S3.1)。アプリケーション管理アプリケーション830は、アプリケーション管理画面を応答する(S3.2)。このとき、アプリケーション管理アプリケーション830へのアクセス認証として不図示のログイン画面を表示し、認証を実施するよう構成する事もできる。
次にユーザーは、アプリケーション管理画面に、インストールするアプリケーションファイル1900、およびライセンスファイル1910をアップロードし、インストール指示を行う(S3.3)。本実施例では、アプリケーションとして、リソースサービス連携アプリケーション400として印刷アプリケーションがアップロードされたとして説明する。アプリケーションファイル1900、およびライセンスファイル1910を受け付けたアプリケーション管理アプリケーション830は以下の処理を行う。アプリケーション管理アプリケーション830が保持している秘密鍵でライセンスファイルを復号する。復号に成功するとライセンスファイル1910からアプリケーション復号鍵1911を取得する。次に、受け付けたアプリケーションファイル1900をアプリケーション復号鍵1911で復号する。復号したアプリケーションファイルより、アプリケーション定義ファイル1901を取得し定義内容を解析する。アプリケーション復号鍵1911にて復号でき、さらにアプリケーション定義ファイル1901が解析出来たことにより、アプリケーション定義ファイル1901内に記載の内容は正当であると判断できる。
また、アプリケーションファイル1900はアプリケーション定義ファイル1901とアプリケーション1902の署名値が記載されたファイルを保持するよう構成する事も可能であり、その場合は、アプリケーション復号鍵1911にて復号後に署名値を検証する事で、アプリケーションIDに改竄が無いことをより高度に担保することもできる。なお、アプリケーションファイル1900をアプリケーション復号鍵1911で復号化出来なかった場合、および/または署名値が不正なものであった場合、アプリケーションが改竄された恐れがあるため、インストール対象のアプリケーションはインストールされない。
次に、アプリケーション管理アプリケーション830は、復号したことで取得したアプリケーション定義ファイル1901、およびアプリケーション1902を、アプリケーション管理フレームワーク800のI/Fを介して画像形成装置300に保存する。その際、アプリケーション定義ファイルを展開し、アプリケーションID、バージョン等の情報と共に保存場所をアプリケーション管理テーブル1920に記憶する(S3.5)。また、その際、アプリケーションの状態1925に「インストール済み」として登録する。
次に、アプリケーションの開始シーケンスについて説明する。なお、画像形成装置300には、リソースサービス連携アプリケーション400、および認可サーバー連携クライアント400が既にインストールされているものとする。
ユーザーは、不図示のPC(パーソナルコンピューター)、または画像形成装置300が備えるWebブラウザを用いてアプリケーション管理アプリケーション830に対して、認可サーバー連携クライアント400を開始するよう指示する(S3.6)。アプリケーション管理アプリケーション830は、アプリケーション管理テーブル1920の情報を基に認可サーバー連携クライアント400の保存場所を特定し、アプリケーション管理フレームワーク800のI/Fを介してアプリケーションの起動開始を指示する。
アプリケーション開始指示を受けた認可サーバー連携クライアント400は、子トークン取得要求を受け付けるためのインターフェースをアプリケーション管理フレームワーク800に登録する。登録を受けたアプリケーション管理フレームワーク800は、インターフェースを記憶する。インターフェース登録が完了した認可サーバー連携クライアント400は、アプリケーション管理フレームワーク800にアプリケーション開始を応答する(S3.8)。
アプリケーション管理フレームワーク800は、認可サーバー連携クライアント400の状態1925を開始状態に変更し、開始されたアプリケーションオブジェクトをアプリケーションオブジェクトリストにて保持する(S3.9)。アプリケーションオブジェクトは、アプリケーションの実態を有するインスタンスと同義である。
次に、ユーザーは、不図示のPC(パーソナルコンピューター)、または画像形成装置300が備えるWebブラウザ(不図示)を用いて、アプリケーション管理アプリケーション830に対し、リソースサービス連携アプリケーション400を開始するよう指示する(S3.10)。アプリケーション管理アプリケーション830は、アプリケーション管理テーブル1920の情報を基にリソースサービス連携アプリケーション400の保存場所を特定し、アプリケーション管理フレームワーク800を介してアプリケーションの起動開始を指示する。アプリケーション開始指示を受けたリソースサービス連携アプリケーション400は、アプリケーションの初期化処理を実行し、アプリケーション管理フレームワーク800に対してアプリケーション開始を応答する(S3.11)。アプリケーション管理フレームワーク800は、リソースサービス連携アプリケーション400の状態1925を“開始”に変更し、開始されたアプリケーションオブジェクトをアプリケーションオブジェクトリストにて保持する(S3.12)。
上記シーケンスによって、アプリケーション管理フレームワーク800は画像形成装置300にインストールされている各アプリケーションを開始し、各アプリケーションのアプリケーション定義ファイルに記載されているアプリケーションIDを各アプリケーションオブジェクトから参照可能なように保持する事ができる。また、アプリケーション管理フレームワーク800は、アプリケーションからインターフェース登録を受け付ける事で、他のアプリケーションから登録されたインターフェースを実行可能に保持する事ができる。この時、インターフェース登録の方法としては、インターフェースが定義されたクラスへのクラスパス(クラス定義への参照パス)を渡す。
次に、S2.3にてリソースサービス連携アプリケーション400のアプリケーション画面にユーザーがアクセスした際のシーケンスの詳細を説明する。リソースサービス連携アプリケーション400は、前述したように、S2.4にてログインコンテキストを取得後、S2.5にて認可サーバー連携クライアント400にトークン取得要求を行う。その際、リソースサービス連携アプリケーション400は、S3.13にて、アプリケーション管理フレームワーク800に対して登録されているインターフェースの取得要求を行う。インターフェース取得要求を受けたアプリケーション管理フレームワーク800は、要求元のアプリケーションをアプリケーションオブジェクトのリストより特定し、アプリケーション定義ファイルに記載されているアプリケーションIDを取得する(S3.14)。ここで、本実施例ではインターフェース取得要求を行ったアプリケーションオブジェクトの特定方法として、インターフェース取得要求の引数に、アプリケーションのオブジェクトを参照として格納するよう構成する。ただし、インターフェース取得要求元のアプリケーションオブジェクトの特定方法としては記載の方法に限定せず、例えば、仮想マシン810が備える要求元を逆引きするような機能を利用し特定する事も考えられる。
そして、アプリケーション管理フレームワーク800は、登録されている認可サーバー連携クライアント400から登録されたインターフェース定義クラスのクラスパスから、参照先のインターフェース定義クラスを実体化してオブジェクト生成するようリクエストする(S3.15)。この際、取得したリソースサービス連携アプリケーション400のアプリケーションIDをオブジェクト生成リクエストに設定する。オブジェクト生成リクエストを受けた認可サーバー連携クライアント400は、アプリケーションIDが設定されたインターフェース定義クラスのオブジェクトを生成し、アプリケーション管理フレームワーク800に応答する。そして、アプリケーション管理フレームワーク800は生成されたインターフェースクラスのオブジェクトをリソースサービス連携アプリケーション400に応答する(S3.16)。
認可サーバー連携クライアント400のインターフェースのオブジェクトを取得したリソースサービス連携アプリケーション400は、インターフェース定義クラスに定義されているトークン取得要求を実行する(S2.5)。認可サーバー連携クライアント(500)は、トークン取得要求を受けたインターフェース定義クラスのオブジェクトに設定されたアプリケーションIDを取得する(S2.6)。これらシーケンスによって、アプリケーションによる改竄を防止した形で、アプリケーションIDを認可サーバー連携クライアント400にて取得する事が可能となる。
以上の形態により、1回の認可操作で同一の画像形成装置内の複数のアプリケーションのそれぞれに認可操作することなく、子トークンを発行する事ができ利便性が向上する。また、クラウドサービス側にてアクセス元のアプリケーションを改竄されること無く識別する事が可能となる。
次に、予め設定した時刻にタイマーサービスがタイマーイベント通知をアプリケーションに行い、アプリケーションがバッチ実行する場合について説明する。以下、リソースサービス連携アプリケーション400が、ログインユーザーが介在しない状態でタイマーサービスによって起動し、バッチ実行する場合を示す。ユーザーが画像形成装置にログインしてアプリケーションを起動する場合、認可サーバー連携クライアント500は親トークン管理テーブル1700を参照していた。それは、画像形成装置が親トークンをログインコンテキストに紐付けて保存するためである。一方、予め設定した時刻にタイマーサービスによってアプリケーションがバッチ実行する場合、前記認可サーバー連携クライアント500はバッチ実行親トークン管理テーブル2700を参照する。
図11aは、トークン要求管理テーブル1920である。トークン要求管理テーブル1920は認可サーバー連携クライアント500からのみ参照、および更新可能なように構成されている。トークン要求管理テーブル1920は、アプリケーションID1921、ステートID1922から成る。ここでアプリケーションID1921、ステートID1922は、後述する図12のS4.5 により取得、作成されるアプリケーションID、ステートID1922に対応する。ステートID1922は、図12に示した後述するバッチ実行用親トークン取得の一連のシーケンスにおいて、親トークン取得のセッションを管理するためのIDである。リソースサービス連携アプリケーション400から認可サーバー連携クライアント500へのトークン取得要求時に、前記認可サーバー連携クライアント500によって生成される。
以降、一連のシーケンスにおいて、生成されたステートIDはリソースサービス連携アプリケーション400と認可サーバー連携クライアント500の間の要求/応答のセッションのIDとして使用される。また同様に、ステートIDは、認可サービス連携クライアント500と認可サーバー200の間の要求/応答のセッションIDとしても使用される。
図11cは、バッチ実行用親トークン管理テーブル2700である。バッチ実行用親トークン管理テーブル2700は、認可サーバー連携クライアント500からのみ参照、および更新可能なように構成されている。バッチ実行用親トークン管理テーブル2700は、アプリケーションID2701、クラウドユーザーID2702、認可トークンID2703、リフレッシュトークンID2704、ステートID2705からなる。バッチ実行用親トークン管理テーブル2700の処理詳細については後述する。バッチ実行用親トークン管理テーブル2700は、親トークン管理テーブル1700と同様に親トークンを管理する。ユーザーが画像形成装置300にログインし、クラウドサービスと連携するアプリケーションを実行する場合、認可サーバー連携クライアント500は、親トークン管理テーブル1700を選択し、使用する。対して、ログインユーザーが介在せず、バッチ実行でクラウドサービスと連携したアプリケーションを実行する場合、認可サーバー連携クライアント500は、バッチ実行用親トークン管理テーブル2700を選択し、使用する。
クラウドサービスと連携するアプリケーションが実行可能な画像形成装置300がユーザー管理機能を持たない場合、ユーザーの区別がつかないため使用する親トークンが定まらず、複数のユーザーでバッチ予約することができない。また、仮に画像系瀬装置300がユーザー管理機能を持つ場合でも、デバイスのログインユーザーIDに紐付けてクラウドアクセス用のトークンを管理すれば使い分けることができるが、ログインコンテキストはログインしている状態でしか存在しないため親トークンを特定できない。さらに、バッチ実行はデバイスにログインしていない状態でユーザーに成り代わってクラウドにアクセスするため、トークンをアプリ間で共有可能にすると、アプリケーションの不正な成りすましによってトークンが不正に発行されてしまう。そこで、クラウド上のリソースサーバー210がクラウドユーザーIDで管理されていることが保障されているため、バッチ実行用親トークン管理テーブル2700においては、親トークンを識別情報であるクラウドユーザーIDに紐付けて管理する。
図13bは、バッチ設定画面を示す。バッチ設定画面には、後述するクラウドユーザーIDと共に、リソースサービス連携アプリケーション400がバッチ実行される時間を設定する。時間設定は、複数時間が設定可能で、設定単位は時、分である。時刻の設定は、バッチ実行を開始する時間を画面から入力して、設定ボタンを押下することで設定される。
図16は、タイマー設定時間管理テーブル3000である。タイマー設定時間管理テーブル3000は、画像形成装置300のタイマーサービス1100、リソースサービス連携アプリケーション400、認可サーバー連携クライアント500から参照、更新可能なように構成されている。タイマー設定時間管理テーブル3000は、アプリケーションID3001とバッチ実行時間3002から成る。タイマー設定時間管理テーブル3000の処理詳細については後述する。
図17は、バッチ実行時間管理テーブル4000である。バッチ実行時間管理テーブル4000は、リソースサービス連携アプリケーション400から参照、更新可能なように構成されている。バッチ実行時間管理テーブル4000には、クラウドユーザーID4001と、バッチ実行時間4002から成る。バッチ実行時間管理テーブル4000の処理詳細については後述する。
ここで、バッチ実行用親トークン取得に関する本実施形態のシーケンスを図11、図12、図13、図16を用いて説明する。ユーザーが画像形成装置にログインしてアプリケーションを起動する場合、認可サーバー連携クライアント500は親トークン取得を図6のシーケンスで実施していた。一方、予め設定した時刻にタイマーサービスによってアプリケーションがバッチ実行する場合、認可サーバー連携クライアント500はバッチ実行用親トークン取得を図12のシーケンスで実施する。
本シーケンスは、ユーザーが画像形成装置300でバッチ実行を行うアプリケーションの各々において、最初にバッチ実行を設定する際に行う操作である。まずユーザーが画像形成装置300においてログインアプリケーション1000が提供するログイン手段を用いて画像形成装置300にログインする(S4.1)。ここでユーザーIDがuser001 のユーザーがログインしたとする。すると、ログインアプリケーション1000はuser001を含むログインコンテキストを生成し、アプリケーション管理フレームワーク800を介して各アプリケーションから取得可能なようRAM308に格納する(S4.2)。
次に、ユーザーは画像形成装置300を操作してブラウザ900を実行する。そして、ブラウザ900を用いてリソースサービス連携アプリケーション400にアクセスし、バッチ設定を開始するためのリソースサービス連携アプリケーション400のURLへアクセスする(S4.3)。バッチ設定開始のためのリソースサービス連携アプリケーション400のURLアクセスは、ブラウザ900から直接URL を指定してもよいし、画像形成装置300の入力画面を用いて、図13aに示すようなバッチ設定開始画面を構成してもよい。ユーザーによるURL指定により、リソースサービス連携アプリケーション400のバッチ設定開始が指示されたら、リソースサービス連携アプリケーション400は、認可サーバー連携クライアント500に対し、トークン保存要求を出す(S4.4)。
トークン取得要求を受けた認可サーバー連携クライアント500は、アプリケーション管理フレームワーク800を介して、要求元のリソースサービス連携アプリケーション400のアプリケーションIDを取得する(S4.5)。アプリケーションIDを取得した認可サーバー連携クライアント500は、トークン保存要求に対してUUIDを生成し、ステートIDとして発行する。同時に認可サーバー連携クライアント500は、アプリケーションIDとステートIDを図11cに示された親トークン管理テーブル2700に保存する。
次に認可サーバー連携クライアント500は、リソースサービス連携アプリケーション400に対し、ステートIDを通知する(S4.6)。トークン取得要求に対してステートIDの通知を受けたリソースサービス連携アプリケーション400は、ステートIDとデバイス管理テーブル1600のエンドポイントURL1603から取得したURLと共に、認可サーバー連携クライアント500にOAuthの認可リクエストをするようブラウザ900にリダイレクト要求する(S4.7)。この認可リクエストには、デバイス管理テーブル1600のクライアントID1601、リダイレクトURL1604、前記認可サーバー連携クライアント500から通知されたステートID1921の情報が含まれる。リダイレクト要求を受け付けたブラウザ900は認可サーバー連携クライアント500に対してリダイレクトし、認可連携の開始を要求する(S4.8)。
認可サーバー連携クライアント500は、認可連携の開始を受け付けたら、デバイス管理テーブル1600のエンドポイントURL1603に記載のURLに対して、OAuthの認可リクエストをするようブラウザ900にリダイレクト要求する(S4.9)。この認可リクエストには、デバイス管理テーブル1600のクライアントID1601、リダイレクトURL1604、前記認可サーバー連携クライアント500から通知されたステートID1921の情報が含まれる。また、OAuthでは、認可を受けたい権限範囲を示すスコープを認可リクエストに含むよう構成する事もできる。本実施例では、スコープとしてスコープAがリクエストされたとして説明する。またOAuthでは、ステートを認可リクエストに含むよう構成することもできる。本実施例では、ステートとして認可サーバー連携クライアント500がトークン保存要求時に生成したステートIDがリクエストされたとして説明する。
認可リクエストを受け付けた認可サーバー200は、ユーザーを認証するために図7bに示すログイン画面1802をブラウザ900に応答する(S4.10)。ユーザーはブラウザ900に示されたログイン画面1802に対して、ユーザーID、パスワードを入力しログインを実行する(S4.11)。認可サーバー200は受け付けたユーザーID、パスワードの組がユーザー管理テーブル1200に登録されている情報と合っているかを検証し、合っている場合はユーザーIDに紐づいた認証情報を生成して次の処理を実行する。認可サーバー200は、認可リクエストに含まれているクライアントIDとリダイレクトURLの組みが、クライアント管理テーブル1300に登録されている情報と合っているか検証する。検証の結果正しければ、クライアント管理テーブル1300のクライアント名1302を取得し、図7cに示す認可確認画面1803を生成しブラウザ900に応答する(S4.12)。その際、認証情報をブラウザ900に対してCookie情報として格納して応答する。なお、実施例では、認可確認画面1803にクライアント名1302を表示するよう説明したが、ここにクライアントの詳細な説明を追加して表示する事や、ログインしているユーザーの情報を表示するよう構成する事もできる。また認可リクエストにスコープを含む場合は、当該スコープの範囲を説明する情報を認可確認画面1803に表示するよう構成する事も出来る。
次に、ユーザーはブラウザ900に表示された認可確認画面1803で許可を実行する(S4.13)。許可を受けた認可サーバー200は次の処理を実行する。認可トークン管理テーブル1400に認可コードを発行し登録する。その際、認可トークンID1401に発行したトークンのID、トークン種別1402に認可コード、有効期限1403、および、認可リクエスト時に受け付けたクライアントIDをクライアントID1407、ブラウザ900からCookieとして送信された認証情報に紐づくユーザーIDをユーザーID1408に登録する。そして、認可応答として、認可コードの認可トークンIDを付与したリダイレクトURLに対してブラウザ900をリダイレクト要求する(S4.14)。
認可応答を受けた認可サーバー連携クライアント500は、認可サーバー200に対してトークン要求を行う(S4.15)。このトークン要求には、認可応答で取得した認可コードの認可トークンID、デバイス管理テーブル1600のクライアントID1601、クライアントシークレット1602、リダイレクトURL1604を含む。トークン要求を受けた認可サーバー200は以下の検証を行い、正しい場合は親トークンを生成する(S4.16)。認可サーバー200は、トークン要求で受けつけたクライアントID、クライアントシークレットの組が、ユーザー管理テーブル1200に登録されているユーザーID1201、パスワード1202の組と合っているか検証する。次に、トークン要求で受けつけた認可コードの認可トークンIDが、認可トークン管理テーブル1400に登録されているか、有効期限内かを検証する。そして、トークン要求で受けつけたクライアントIDとリダイレクトURLが、それぞれ認可トークン管理テーブル1400の認可トークンIDで特定されるクライアントID1407と、クライアント管理テーブル1300のリダイレクトURL1303と合っているかを検証する。
ここで、リダイレクトURL1303はクライアント管理テーブル1300ではなく、認可トークン管理テーブル1400にカラムを追加し、認可コード発行時に登録して、該追加カラムと検証するよう構成する事もできる。これらすべての検証が正しい場合に認可サーバー200は親トークンを生成して、親トークンの認可トークンIDを認可サーバー−連携クライアント500に応答する。この際、応答内容として同時に発行したリフレッシュトークンIDも含む(S4.17)。親トークンとしては、認可トークンID1401に発行したトークンのID、トークン種別1402に親トークン、有効期限1403、および認可コードから引き継ぐ情報として、クライアントID1407、ユーザーID1408を登録する。この際、親トークンをリフレッシュするためのリフレッシュトークンを発行し、リフレッシュトークンID1405、リフレッシュ期限1406に登録する。リフレッシュのフローについては後述する。
親トークンを取得した認可サーバー連携クライアント500は、認可サーバー200に対し、親トークンを送信するとともにクラウドユーザーのIDを要求する(S4.18)。クラウドユーザーのIDを要求された認可サーバー200は、まず、クラウドユーザーID要求に含まれる親トークンが認可トークン管理テーブル1400の親トークンID1401に含まれているかを検証する。含まれている場合は、クラウドユーザーID要求に含まれる親トークンIDがリフレッシュ期限内か確認する。さらに、トークンリフレッシュ要求に含まれるクライアントIDがクライアントID1407と一致するか検証し、全ての検証が正しい場合は、認可トークン管理テーブル1400の、前記クラウドユーザーID要求に含まれる親トークンIDに一致する、ユーザーID1408のクラウドユーザーIDを返す(S4.19)。
クラウドユーザーIDを取得した認可サーバー連携クライアント500は、図11cの親トークン管理テーブル2700に、アプリケーションID、クラウドユーザーID、親トークンの認可トークンID、リフレッシュトークンID、ステートIDを保存する(S4.20)。そして、認可サーバー連携クライアント500は、リソースサービス連携アプリケーション400に対し、クラウドユーザーIDの取得をリクエストするようブラウザ900にリダイレクト要求をする(S4.21)。この際のURLは、自身が内部に持つバッチ設定URLとなる。リダイレクト要求を受けたブラウザ900は、リソースサービス連携アプリケーション400に対し、バッチ設定画面を表示するようバッチ設定URLにリダイレクトする(S4.22)。バッチ設定画面を表示するようにリクエストされたリソースサービス連携アプリケーション400は、ステートIDを基にトークン保存要求を出して認証されたクラウドユーザーを識別するため、ステートIDを送信して認可サーバー連携クライアント500に対してクラウドユーザーID取得要求を出す(S4.23)。クラウドユーザーID取得要求を受けた認可サーバー連携クライアント500は、通知されたステートIDを基に親トークン管理テーブル2700の、前記クラウドユーザーIDにマッチするクラウドユーザーIDを返却する(S4.24)。
トークン保存要求にマッチしたクラウドユーザーIDを通知されたリソースサービス連携アプリケーション400は、前記クラウドユーザーIDと共に図13bに示すようなバッチ設定画面をブラウザ900に表示する(S4.25)。ユーザーはバッチ設定画面図13bを参照してバッチ実行時間を設定する(4.26)。
バッチ実行時間設定は、次のように行われる。ユーザーのバッチ設定画面の入力内容を受けたリソースサービス連携アプリケーション400が、画像形成装置300のタイマーサービス1100を介し、図16のタイマー設定時間管理テーブル3000のアプリケーションID3001に自身のアプリケーションIDを、タイマー通知時間3002にバッチ実行時間を設定する。同時にリソースサービス連携アプリケーション400は、図17のバッチ実行時間管理テーブル4000に対して、クラウドユーザーIDをクラウドユーザーID4001に、バッチ実行時間をバッチ実行時間4002に設定する。
図3に示したタイマーサービス1100は、画像形成装置300のアプリケーションの要求に応じて図16のタイマー設定時間管理テーブルにタイマー設定元アプリケーションのIDとタイマー通知時間を設定する機能を持つ。タイマーサービス1100は、アプリケーションID毎に時間を管理し、アプリケーションが予め設定した時刻になると、アプリケーションに対してタイマーイベントを通知する機能を持つ。
続いて、親トークンが発行されたあと、設定したバッチ実行時間に達したリソースサービス連携アプリケーション400が、子トークンを取得して処理を実行するに至る本実施の形態のシーケンスを、図14を用いて説明する。
ユーザーが画像形成装置にログインしてアプリケーションを起動する場合、リソースサービス連携アプリケーション400は図8のシーケンスで子トークンの取得、およびアプリケーション処理を実施していた。一方、予め設定した時刻にタイマーサービスによってアプリケーションがバッチ実行する場合、リソースサービス連携アプリケーション400は図14のシーケンスで子トークンの取得、およびアプリケーション処理を実施する。
本シーケンスは、設定された時刻において、タイマーサービス1100からリソースサービス連携アプリケーション400に対しタイマーイベントが通知され、バッチ実行される際に行われるシーケンスである。なお、図12に示す親トークン取得のシーケンスが実施されている必要がある。
画像形成装置300内で管理する時間において、タイマーサービス1100に設定されたバッチ実行時間に達した場合、タイマーサービス1100は、設定されたアプリケーションIDに相当するアプリケーションにタイマーイベントを通知する。本実施例の場合、先にS4.26 でリソースサービス連携アプリケーション400により設定された時刻に、タイマーサービス1100がリソースサービス連携アプリケーション400にタイマーイベントを通知する(S5.1)。リソースサービス連携アプリケーション400は、タイマー通知を受け取るとバッチ実行管理テーブル4000を参照して、タイマー通知時間に相当するバッチ実行時間4002を検索し、該当するクラウドユーザーID4001を取得する。そして、アプリケーション管理フレームワーク800に登録されている認可サーバー連携クライアント500のトークン取得インターフェースに対してトークン取得要求を行う(S5.2)。この際、先に取得したクラウドユーザーIDを要求に含める。なお、ここでトークンに必要なスコープを要求するよう構成する事もできる。本実施例では、スコープAが引き続き要求されたとして説明する。トークン取得要求を受けた認可サーバー連携クライアント500は、アプリケーション管理フレームワーク800を介して、要求元のリソースサービス連携アプリケーション400のアプリケーションIDを取得する(S5.3)。
アプリケーションIDとクラウドユーザーIDを取得した認可サーバー連携クライアント500は以下の処理を行う。認可サーバー連携クライアント500は、取得したクラウドユーザーIDをキーに親トークン管理テーブル2700からリフレッシュトークンIDを取得する。この時、親トークン管理テーブル2700にクラウドユーザーIDが登録されていない場合は、親トークン取得シーケンスを実施するようユーザーに促す画面(不図示)を提示するよう構成する事もできる。また、場合によってはブラウザ900を起動し、親トークン取得シーケンスを自動的に開始するよう構成するでも良い。バッチ実行用親トークン管理テーブル2700は、実施例1で述べた親トークン管理テーブル1700と同様に親トークンを管理する。ユーザーが画像形成装置300にログインしてクラウドサービスと連携したアプリケーションを実行する場合、画像形成装置300は、親トークン管理テーブル1700を選択し、使用する。対して、ログインユーザーが介在せず、バッチ実行でクラウドサービスと連携したアプリケーションを実行する場合、画像形成装置300は、バッチ実行用親トークン管理テーブル2700を選択し、使用する。
認可サーバー連携クライアント500は取得したリフレッシュトークンIDと、デバイス管理テーブル1600のクライアントID、クライアントシークレットを用いて認可サーバー200にトークンリフレッシュ要求を行う(S5.4)。ここでは、親トークン取得シーケンスの実行から、子トークン取得のシーケンスまでの間に時間が経過し、親トークンの有効期限が切れている事として説明している。しかし、親トークンの有効期限内である場合は、トークンリフレッシュ要求を実施せず、S5.8の子トークン取得要求を実施するでも良い。
トークンリフレッシュ要求を受けた認可サーバー200は、以下の処理を実行する。まず、トークンリフレッシュ要求に含まれるクライアントID、クライアントシークレットの組がユーザー管理テーブル1200のユーザーID1201とパスワード1202の組と合っているかを検証する。正しい場合は、トークンリフレッシュ要求に含まれるリフレッシュトークンIDが認可トークン管理テーブル1400に登録されており、リフレッシュ期限内であるか否かを確認する。さらに、トークンリフレッシュ要求に含まれるクライアントIDがクライアントID1407と一致するか検証する。そして、全ての検証が正しい場合は、親トークンをリフレッシュし、リフレッシュした親トークンの認可トークンIDと、リフレッシュトークンIDを認可サーバー連携クライアント500に応答する(S5.6)。リフレッシュの方法は、新たに認可トークンID、リフレッシュトークンIDを発行して認可トークン管理テーブル1400に登録する方法がある。この際、トークンリフレッシュ要求で受けつけたリフレッシュトークンIDによって特定されるレコードのトークン種別1402、スコープ1404、クライアントID1407、ユーザーID1408を引き継ぐ。また、引き継ぎ後、元のリフレッシュトークンIDは再度リフレッシュできないよう無効化、より具体的には有効期限を強制的に期限切れにする事も出来るし、リフレッシュトークンIDは新規発行せず、引き継ぐよう構成する事も可能である。
リフレッシュされた親トークンを取得した認可サーバー連携クライアント500は、受け付けた認可トークンID、リフレッシュトークンIDにて親トークン管理テーブルの情報を上書きし、再登録する(S5.7)。そして、親トークンの認可トークンIDと、デバイス管理テーブル1600のクライアントID、クライアントシークレット、トークン取得要求で受けつけたスコープ、および、取得したアプリケーションIDを用いて、認可サーバー200に子トークン取得要求を行う(S5.8)。ここで子トークン取得要求に含めるアプリケーションIDがリソースサービス連携アプリケーション400による改竄の余地がない事は後述する。
子トークン取得要求を受けた認可サーバー200は以下の処理を実行する。まず、子トークン取得要求に含まれるクライアントID、クライアントシークレットの組がユーザー管理テーブル1200のユーザーID1201とパスワード1202の組と合っているか否かを検証する。正しい場合は、子トークン取得要求に含まれる認可トークンIDが認可トークン管理テーブル1400に登録されており、有効期限内であるか否かを確認する。さらに、子トークン取得要求に含まれるクライアントIDがクライアントID1407と一致するか検証し、全ての検証が正しい場合は、子トークンを生成し(S5.9)認可サーバー連携クライアント500に応答する(S5.10)。
ここで、子トークンは新たに認可トークンIDを発行して、トークン種別1402を子トークン、アプリケーションID1409に取得したアプリケーションID、スコープ1404に子トークン取得要求に含まれるスコープを認可トークン管理テーブル1400に登録する。この際、子トークン取得要求で受けつけた認可トークンIDによって特定されるレコードのクライアントID1407、ユーザーID1408を引き継ぐ。結果、この時発行された子トークンには、ユーザーを特定するためのユーザーID、画像形成装置を特定するためのクライアントID、およびアプリケーションを特定するためのアプリケーションIDが紐づく。なお、子トークンではリフレッシュトークンは発行しない。これは、トークンリフレッシュ要求するためにはクライアントID、クライアントシークレットが必要であるため、子トークンを利用する各アプリケーションではリフレッシュ要求は出来ない事と、さらには、各アプリケーションがリフレッシュトークンを漏洩する事で、自由にトークンの有効期限を更新されてしまうセキュリティリスクをなくすためである。
そして、子トークンの認可トークンIDを取得した認可サーバー連携クライアント500は要求元のリソースサービス連携アプリケーション400に子トークンの認可トークンIDを応答する。子トークンの認可トークンIDを取得したリソースサービス連携アプリケーション400は、リソースサーバー210に認可トークンIDを含むリソース要求を行う(S5.11)。リソース要求を受けたリソースサーバー210は、要求に含まれる子トークンの認可トークンIDのトークン検証を認可サーバー200に対して要求する(S5.12)。このトークン検証要求には、スコープを含める事ができる。
トークン検証要求を受けた認可サーバー200は、受け付けた認可トークンIDが、認可トークン管理テーブル1400に登録されているか、有効期限内か、および、受け付けたスコープがスコープ1404の範囲内かを検証(S5.13)し、検証結果をリソースサーバー210に応答する(S5.14)。次に、リソースサーバー210は認可サーバー200に対して、子トークンの認可トークンIDのトークン情報取得を要求する(S5.15)。
トークン情報取得要求を受けた認可サーバー200は、認可トークン管理テーブル1400から受け付けた認可トークンIDにて特定される情報を取得し、それら情報をリソースサーバー210に応答する(S5.16)。この応答には、例えば、スコープ1404、クライアントID1407、ユーザーID1408、アプリケーションID1409の情報を含む。さらには、クライアントID1407にて特定されるクライアント管理テーブル1300に登録されているシリアル番号1304を含むよう構成する事もできる。トークン情報を取得したリソースサーバー210は、取得した情報を元に要求を受け付けたリソースに対するアクセスを許可するか拒否するかを判断する。ここでは、リソースサーバー210に予めアクセス可能なアプリケーションIDが設定されているとし、その設定されているアプリケーションIDと、トークン情報から取得されたアプリケーションIDを比較することでアクセスを許可するかを検証する(S5.17)。検証の結果、アクセス許可と判断された場合は、リソースサービス連携アプリケーション400に対して、リソースを応答する(S5.18)。
ここで、リソースは例えば、リソースサーバー210が印刷サービスであった場合は印刷可能な文書のリストであり、帳票サービスであった場合は、作成可能な帳票のリストである。また、FAXサービスであった場合はFAX送信可能なFAX文書、FAX送信先のリストであり、スキャンサービスの場合はスキャン文書の格納先リストである。ここで、S5.12から、S5.17まで、トークンの検証を認可サーバー200、リソースサーバー210それぞれで行うよう説明したが、リソースに対するアクセス可能なアプリケーションを認可サーバー200で管理し、全ての検証を認可サーバー200で行うよう構成する事も可能である。
また、本実施例ではアクセス可能なアプリケーションの判断をアプリケーションIDを用いて実施するよう説明したが、トークン情報から取得できるシリアル番号やクライアントIDを元に画像形成装置300を識別し、アクセスの可否を判断するよう構成する事もできる。また、同様に、トークン情報から取得できるスコープやユーザーIDを元にアクセスの可否を判断するよう構成する事もできる。
実施例1によれば、1回の認可操作で同一の画像形成装置内の複数のアプリケーションのそれぞれに認可操作することなく、子トークンを発行する事ができ利便性が向上する。と共に、クラウドサービス側にてアクセス元のアプリケーションを改竄されること無く識別する事が可能となる。
また、実施例1によれば、画像形成装置300にバッチ処理を登録することで、リソースサービス連携アプリケーション400の不正なリソースアクセスを防止しつつ、ユーザーがログインすることなくバッチ処理が実行でき、利便性が向上する。これと共に、クラウドサービス側にてアクセス元のアプリケーションを詐称されることなく安全にリソースアクセスを許可することが可能となる。
さらに、実施例1においてはリソースサービス連携アプリケーション400のバッチ実行について言及した。画像形成処理装置300のユーザーは、予めバッチ処理設定を行っておくことで、リソースサービス連携アプリケーション400について、バッチ処理と、ユーザーログインによる実行を使い分けることが可能になり、利便性が向上する。
[その他の実施例]
本願発明の実施例1では、親トークンを発行する必要があるという前提で説明したが、予め認可サーバー連携クライアント400がユーザー毎に親トークンを管理している状態でも良い。この場合、画像形成装置300に認可サーバー連携クライアント400がインストールされた段階で親トークンが使用でき、画像形成装置300を利用するユーザーが増加することには対処し難くなるが、子トークンを発行する処理に対応は可能である。
本願発明の実施例1では、リソースサービスとして帳票サービス、および印刷サービスと言った画像処理サービスを例に説明したが、これに限らずその他のサービス、例えばゲームアプリケーション、または音楽のコンテンツ配信サービスであっても良い。また、端末であるデバイス装置として画像形成装置を例に説明したが、これに限らずその他のデバイス装置、例えば、スマートフォン、または音楽機器であっても良い。また、リソースサービス連携アプリケーションとして帳票アプリケーション、印刷アプリケーションを説明したが、これに限らずその他のアプリケーション、例えば、アプリケーション管理ソフト、または音楽アプリケーションであっても良い。このように、本願発明を実施する各主体に制限はない。更に、リソースサービスは複数あることを前提に説明したが、単体であっても良い。