JP2014142732A - 権限委譲システム - Google Patents
権限委譲システム Download PDFInfo
- Publication number
- JP2014142732A JP2014142732A JP2013009759A JP2013009759A JP2014142732A JP 2014142732 A JP2014142732 A JP 2014142732A JP 2013009759 A JP2013009759 A JP 2013009759A JP 2013009759 A JP2013009759 A JP 2013009759A JP 2014142732 A JP2014142732 A JP 2014142732A
- Authority
- JP
- Japan
- Prior art keywords
- application
- token
- authorization
- user
- resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
【課題】従来、認可トークンを用いてサービスにアクセスするユーザーの権限をクライアントに委譲する技術がある。しかしながら従来の方法には以下の課題がある。すなわち、サービスにアクセスする際に、どのサービスに対しても認可トークンを利用してアクセスしてしまうと、不正なサービスを指定された際に認可トークンが漏えいしてしまう。
【解決手段】認可トークンを用いてサービスにアクセスするアプリケーションが、サービス情報を保持し、アプリケーションへの要求に含まれるサービス情報と照合して正しいサービスの場合にのみ認可トークンを用いてサービスにアクセスことで認可トークン漏えいを防止する。
【選択図】 図11
【解決手段】認可トークンを用いてサービスにアクセスするアプリケーションが、サービス情報を保持し、アプリケーションへの要求に含まれるサービス情報と照合して正しいサービスの場合にのみ認可トークンを用いてサービスにアクセスことで認可トークン漏えいを防止する。
【選択図】 図11
Description
本発明は、権限委譲システム、特に複数アプリケーションを追加可能なデバイスにおけるアプリケーションからクラウドサービスへのアクセス方法に関する。
近年、インターネット上でPDF形式の電子文書を作成するサービスや電子文書を蓄積するサービス等が提供されている。このようなサービスを利用することでユーザーは、自身が所有する端末自体にPDF作成機能がない場合でもPDFを作成できるようになる他、端末の記憶容量以上に電子文書を保管できるようにもなる。さらに近年、クラウドが一般化するに伴い、前述のような複数のサービスを連携させて付加価値を創造する機会はますます増加している。サービスを連携させることでサービス提供者は、ユーザーに付加価値を提供することができる。例えば作成したPDF形式の電子文書を、ユーザーが所有する端末を経由することなく、直接インターネット上で保管できるようにもなる。その一方で、サービスが連携することにより、いくつかの課題が生まれる。
すなわち、ユーザーが望んだ以上の情報がサービス間で交換されるので、ユーザーデータや個人情報の漏えいリスクがある。例えばインターネット上には複数のサービスが存在し、様々なサービス間でサービス連携が実現されるが、ユーザーが望む結果を提供するサービス以外のサービスがユーザーデータ、個人情報等を取得することは望ましくない。一方で、サービスの提供者からすると、サービス連携の仕組みは容易に実装できるものが好ましい。
このような状況において、OAuthと呼ばれる、認可の連携を実現させるための標準プロトコルが策定されている。OAuthについては以降でさらに詳細に説明する。
OAuthによれば、例えばあるサービスAが管理するユーザーのデータに、そのユーザーから認められた外部サービスBがアクセスすることができる。このときサービスAは、外部サービスBからアクセスされる範囲を明らかにした上で、外部サービスBによるアクセスに対してユーザーの明示的な認可を得ることになっている。ユーザーが明示的に認可を行うことを認可操作と称する。
ユーザーが認可操作を行うと、外部サービスBはサービスAからアクセスを認められたことを証明するトークン(以下、認可トークンと称する)を受け取り、以降のアクセスはその認可トークンを用いて実現できる。
ここで認可トークンを用いると外部サービスBは、ユーザーの認証情報なしに、認可を行ったユーザーの権限でサービスAにアクセスできる。またそのため、ユーザーから認可を受け認可トークンを取得した外部サービスBは、その認可トークンを厳重かつ適正に管理する責務を負う。
また近年の機器には、OAuthを用いて、クラウドサービスと連携することでユーザーに付加価値を提供するものがある。
例えばソーシャル・ネットワーキング・サービス(以下、SNSと呼ぶ)と呼ばれるサービスがある。これらのサービスはスマートフォンから利用することができる。SNSには様々なものがあるが、特定のアプリケーションをスマートフォンにインストールして利用することで、そのSNSを利用しやすくなることがある。例えば定期的に自分の居場所をSNSに投稿したいユーザーは、スマートフォンの測位機能を使い、定期的に測位とSNSへの投稿を行うアプリケーションを利用すると、便利と感じるだろう。
ここでスマートフォンにインストールされたアプリケーションは、SNSにユーザーの代理でアクセスすることになる。このような場合にOAuthが利用されることがある。
ユーザーは、SNSを利用するのに必要な最小限の機能、例えば記事を投稿することをアプリケーションに許可することで、アプリケーションを介してSNSを利用できるようになる。
The OAuth 1.0 Protocol、[online] E. Hammer−Lahav、2012年9月 <URL http://tools.ietf.org/html/rfc5849>
The OAuth 2.0 Authorization Framework draft−ietf−oauth−v2−31、[online] D. Hardt.、2012年9月 <URL http://tools.ietf.org/html/draft−ietf−oauth−v2−31>
ここで画像形成装置がクラウドサービスと連携する場合を考える。例として、クラウド上の文書を印刷データに変換し、画像形成装置から印刷データを取得するような印刷サービスを想定する。ユーザーがWebブラウザや画像形成装置でクラウドサービスにログインした際に、画像形成装置に対してクラウドサービスのリソースへのアクセスを権限移譲することで、画像形成装置はクラウドサービスと連携できるようになる。Webブラウザの場合は、クラウドサービスで認証した情報がWebブラウザを介して画像形成装置にリダイレクトして渡され権限移譲が行われる。このようなシステムにおいては、ネットワーク上に認証情報が複数回に渡って流れるため、情報漏えいの可能性が存在する。認証情報が悪意を持ったユーザーに利用されると、成りすましによる不正アクセスが可能となってしまう。また、ユーザーが認証した情報では、例えば画像形成装置が、ジャムなどのエラーで印刷処理を中断している場合には認証情報の有効期限が切れてしまい、ユーザーが再度認証を行分ければ印刷続行ができなくなってしまう。
この課題を解決するため、画像形成装置内の各アプリケーションに権限委譲を行い、クラウドサービス側でアクセス元のアプリケーションを識別し、ユーザーの認証情報無しに画像形成装置とクラウドアプリケーションの連携を行う方法が提案されている。しかし、前述の方法ではアプリケーションに権限委譲された情報を常に付加してクラウドサービスにアクセスを行うため、悪意のあるユーザーに画像形成装置がアクセスする先を変更されてしまうと、容易に権限委譲された情報が取得できてしまう課題があった。
本発明は前述の課題を鑑みてなされたものである。
本発明の構成は、複数のアプリケーションを追加可能な画像形成装置(300)であって、
第一のアプリケーション(400)は、画像形成装置(300)を認証するための認証情報を保持する手段(1600)と、
認可サーバー(200)から第一の認可トークンを取得する手段(S1.4、S1.10)と、
前記第一の認可トークンを保持する手段(1700)と、を備え、
第二のアプリケーション(500)は、リソースサーバー(210)にアクセスするための第二の認可トークン取得要求を第一のアプリケーションに送信する手段(S2.5)と、
第一のアプリケーション(400)は、第二の認可トークン取得要求元を識別するための第二のアプリケーション識別子を取得する手段(S2.6)と、
前記第一の認可トークンと前記認証情報および、前記アプリケーションIDを用いて第二の認可トークンの取得を要求する手段(S2.11)と、
前記第二の認可トークンを、前記第二のアプリケーション(500)に応答する手段(S2.13)と、
前記第二のアプリケーション(500)は、要求先のリソースサーバーの宛先情報(1929)を保持する手段と、
前記第二のアプリケーション(500)は、リソース要求先が前記リソースサーバーの宛先情報と合致するかどうか判断する手段(S4.5)と、
前記第二のアプリケーション(500)は、リソース要求先が前記リソースサーバーの宛先情報と合致した場合は、前記リソースサーバー(210)に前記第二の認可トークンを用いてリソース要求する手段(S2.14)と、を備え、
さらに前記リソースサーバー(210)は、第二の認可トークンからリソース要求元の識別するためのアプリケーション識別子を取得する手段(S2.18)と、を備える。
第一のアプリケーション(400)は、画像形成装置(300)を認証するための認証情報を保持する手段(1600)と、
認可サーバー(200)から第一の認可トークンを取得する手段(S1.4、S1.10)と、
前記第一の認可トークンを保持する手段(1700)と、を備え、
第二のアプリケーション(500)は、リソースサーバー(210)にアクセスするための第二の認可トークン取得要求を第一のアプリケーションに送信する手段(S2.5)と、
第一のアプリケーション(400)は、第二の認可トークン取得要求元を識別するための第二のアプリケーション識別子を取得する手段(S2.6)と、
前記第一の認可トークンと前記認証情報および、前記アプリケーションIDを用いて第二の認可トークンの取得を要求する手段(S2.11)と、
前記第二の認可トークンを、前記第二のアプリケーション(500)に応答する手段(S2.13)と、
前記第二のアプリケーション(500)は、要求先のリソースサーバーの宛先情報(1929)を保持する手段と、
前記第二のアプリケーション(500)は、リソース要求先が前記リソースサーバーの宛先情報と合致するかどうか判断する手段(S4.5)と、
前記第二のアプリケーション(500)は、リソース要求先が前記リソースサーバーの宛先情報と合致した場合は、前記リソースサーバー(210)に前記第二の認可トークンを用いてリソース要求する手段(S2.14)と、を備え、
さらに前記リソースサーバー(210)は、第二の認可トークンからリソース要求元の識別するためのアプリケーション識別子を取得する手段(S2.18)と、を備える。
本発明によれば、リソースサービス連携アプリケーションが保持しているサービスへのリクエスト時にのみ子トークンが用いられ、不正なサービスが指定された際にトークンが漏えいすることを防止することが可能となる。
以下、本発明を実施するための最良の形態について図面を用いて説明する。
本実施の形態においては、インターネット上で帳票データを生成する帳票サービスと、インターネット上のデータを取得して印刷する印刷サービスが、インターネット上のサーバーに設置されていることを想定している。
以降、帳票サービスや印刷サービスのように、インターネット上で機能を提供しているサービスを、リソースサービスと呼ぶ。
また本実施の形態においては、画像形成装置上にインストールされた印刷アプリケーションおよび帳票アプリケーションがリソースサービスを利用することを想定している。
以降、印刷アプリケーションや帳票アプリケーションのように、リソースサービスを利用するアプリケーションを、リソースサービス連携アプリケーションと呼ぶ。無論、リソースサービスは帳票サービス、印刷サービスには限られず、アプリケーションも帳票アプリケーション、印刷アプリケーションに限られるものではない。また、本実施例において、リソースサービス連携アプリケーションは、一般的なWebサービスのインターフェースを持つことを想定している。
さらに本実施の形態における権限の移譲ではOAuthの仕組みを利用する。OAuthでは、ユーザーから移譲された権限の証明するための情報として、トークンと呼ばれる情報を利用する。
ここで特に、ユーザーが画像形成装置に対して権限移譲した場合のトークンを親トークンと称する。本願発明では、ユーザーの権限を画像形成装置のようなデバイス機器に移譲することもポイントの1つである。
例えば、画像形成装置上に印刷アプリケーション、帳票アプリケーションが存在する場合を考える。
この場合ユーザーは、印刷アプリケーションからリソースサービスを利用する場合は印刷アプリケーションに、帳票アプリケーションからリソースサービスを利用する場合は帳票アプリケーションに、それぞれ個別に認可を与える必要がある。
ユーザーの立場で考えると、同一の画像形成装置からリソースサービスを利用する場合には、例えば、一度の認可操作でそれぞれのアプリケーションでリソースサービスを利用できるようになった方が、利便性が高い。
そこで、アプリケーションに権限を移譲させる際、ユーザーに代わり画像形成装置がアプリケーションに権限を移譲することで、ユーザーの認可操作の回数を低減させる。
即ち、ユーザーは画像形成装置に権限を移譲した段階で、アプリケーションにも権限を移譲することを認めたこととなる。
なお、本願発明は、画像形成装置に権限を移譲する際にユーザーに認可操作を行わせるが、アプリケーションに権限を移譲する際にはユーザーに認可操作を行わせない。
ただし、認可操作を一度で済ませる手段として、画像形成装置が取得した親トークンを、画像形成装置上のアプリケーションで共有できるようにすると、親トークンを共有する全アプリケーションが全てのリソースサービスにアクセス可能となり好ましくない。これは、アプリケーションが共有された親トークンを用いてリソースサービスにアクセスした場合、リソースサービス側にてアクセス元のアプリケーションが特定できず、利用の可否を判断する事ができないためである。
結果、以下のようなケースでは課題となる。印刷サービスは印刷アプリケーションからアクセスされ、利用される事を想定してサービスが展開されているため、帳票アプリケーションのような想定していないアプリケーションからの接続は拒否したい。また帳票サービスも同様に帳票アプリケーションからのアクセスのみ許可したい。これは、リソースサービスで管理している情報がユーザーの機密性が高い情報を取り扱うサービスである場合に、不特定のアプリケーションからの利用を許可すると情報の漏洩経路になるリスクがあるためである。
また、想定していないアプリケーションからの接続を許可するとしても、どのようなアプリケーションからのアクセスであったのかの記録を残したいという要求も存在する。これは、例えば、より利用頻度の高いアプリケーションを特定し、そのアプリケーションの利用シーンに合わせて機能を拡張していくといった、リソースサービスの機能拡張への戦略を決めるうえで有用な情報である。
そこで本願発明においては、個々のリソースサービス連携アプリケーションは親トークンを直接使うのでなく、親トークンに移譲された情報を継承しつつ、アプリケーションを特定可能な情報を付与して再移譲を行う。
画像形成装置が、親トークンに移譲されたトークン情報を継承し、さらにアプリケーションを特定可能な情報を付与してリソースサービス連携アプリケーションに権限を再移譲した場合に発行されるトークンを子トークンと称する。
本実施の形態に係る権限移譲システムは、図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は同一のサーバー上に構成されていてもよい。
本実施の形態に係る権限移譲システムは、図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を持つ。クライアント端末220はWWWを利用するためのユーザーエージェントであるWebブラウザ1200を持つ。
図中300は画像形成装置300である。画像形成装置300はCPU301がROM302、或いは外部メモリ303に記憶されたOSを実行する事で各アプリケーションを制御する。ここで820はそのOSであり、一般的にはリアルタイムOSが使用されるが、昨今ではLinux(登録商標)等の汎用OSが使用される事もある。次に、810は仮想マシンであり、例えばJava(登録商標)VMがよく知られている。この仮想マシン810はOSで制御されるアプリケーションとして動作する仮想的なアプリケーション実行環境である。次に、800はアプリケーション管理フレームワークであり、仮想マシン810が提供するアプリケーション実行環境上で動作する管理対象のアプリケーションのライフサイクルを管理する機能をもつ。またそれを制御するI/F、および各アプリケーション間での処理要求を仲介するためのI/F公開機能を備えている。ライフサイクルとはアプリケーションのインストール、起動、停止、アンインストールを含むアプリケーションの状態を示すものとする。本実施例におけるアプリケーション管理フレームワーク800は、OSGi(Open Services Gateway initiative)アライアンスで規定されたOSGi(登録商標)として説明する。また、認可サーバー連携クライアント500、1つまたは複数のリソースサーバー連携アプリケーション400、ログインアプリケーション1000は、仮想マシン810が提供するアプリケーション実行環境にて動作する各種アプリケーションである。また、これらアプリケーションはアプリケーション管理フレームワーク800にてライフサイクル管理されている。なお、アプリケーション管理フレームワークは、後述するアプリケーション定義ファイルに記載された定義値に基づきアプリケーションの管理を行う。例えば、アプリケーションに固有に割り当てられているアプリケーションIDとインストールされている、もしくは開始されているアプリケーションの実態との紐づけ管理を行う。830はアプリケーション管理フレームワーク800が公開するライフサイクル管理用の制御I/Fを介して、ユーザーからの各種アプリケーションのインストールや、開始リクエストを受け付け実行するアプリケーション管理アプリケーションである。
ここで認可サーバー連携クライアント500、リソースサーバー連携アプリケーション400およびログインアプリケーション1000は、画像形成装置が既定で持っていてもよい。またアプリケーション管理アプリケーション830および、アプリケーション管理フレームワーク800を介して後からインストールされてもよい。さらに、画像形成装置300はWWWを利用するためのユーザーエージェントであるWebブラウザ900を備える。なお、アプリケーション管理フレームワーク800におけるアプリケーションのインストール、開始のシーケンスについては後述する。
図4(a)、図4(b)、図4(c)は認可サーバー200が外部メモリに記憶するデータテーブルである。これらデータテーブルは、認可サーバー200の外部メモリではなく、LAN101を介して通信可能に構成された別のサーバーに記憶するよう構成する事も出来る。
図4(a)はユーザー管理テーブル1200である。ユーザー管理テーブル1200は、ユーザーID1201、パスワード1202、ユーザー種別1203から成る。認可サーバー200は、ユーザーID1201、パスワード1202の情報の組を検証し、正しければ認証情報を生成することで、各ユーザーもしくはクライアントを認証する機能を備える。
図4(b)はクライアント管理テーブル1300である。クライアント管理テーブル1300はクライアントID1301、クライアント名1302、リダイレクトURL1303、シリアル番号1304から成る。クライアントID1301は、ユーザー管理テーブル1200のユーザーID1201と関連付いており、互いに参照可能となっている。クライアント名1302、リダイレクトURL1303は後述のOAuthのシーケンスで利用される値である。そして、シリアル番号1304はクライアントが画像形成装置300で合った場合に登録される値であり、画像形成装置をユニークに識別可能な値である。
図4(c)は認可トークン管理テーブル1400である。認可トークン管理テーブル1400は、認可トークンID1401、トークン種別1402、有効期限1403、スコープ1404、リフレッシュトークンID1405、リフレッシュ期限1406、クライアントID1407、ユーザーID1408、アプリケーションID1409から成る。これら認可トークン管理テーブル1400の処理詳細については後述する。
図5(a)、図5(b)、図5(c)は画像形成装置300が外部メモリに記憶するデータテーブルである。
図5(a)はデバイスユーザー管理テーブル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の情報が設定されたオブジェクトである。その他に、ユーザーの属性情報、例えば、ユーザーが所属するドメインやユーザーの電子メールアドレス等の情報を設定するよう構成する事もできる。
図5(b)はデバイス管理テーブル1600である。デバイス管理テーブル1600は認可サーバー連携クライアント500のみから参照、更新可能なように構成されている。デバイス管理テーブル1600は、クライアントID1601、クライアントシークレット1602、エンドポイントURL1603、リダイレクトURL1604から成る。ここで、クライアントID1601、クライアントシークレット1602は、予め認可サーバー200にて発行、記憶されたユーザーID1201、パスワード1202にそれぞれ対応している。さらに、リダイレクトURL1604も、認可サーバー200のクライアント管理テーブルに、クライアントID1301、クライアント名1302、画像形成装置300のシリアル番号1304と共に登録されている情報と同様のデータが格納されている。これら情報の登録方法としては、例えば、画像形成装置300がLAN101、WAN100を介してオンラインで登録する方法や、ユーザーを介して認可サーバー200、画像形成装置300にてそれぞれ値を設定する方法でも良い。なお、エンドポイントURL1603は認可サーバーが公開するOAuthのためのエンドポイントのURLである。
図5(c)は親トークン管理テーブル1700である。親トーク管理テーブル1700は認可サーバー連携クライアント500からのみ参照、更新可能なよう構成されている。親トークン管理テーブル1700は、ユーザーID1701、認可トークンID1702、リフレッシュトークンID1703から成る。親トークン管理テーブル1700の処理詳細については後述する。
ここで、親トークン取得に関する本実施形態のシーケンスを図6、図7を用いて説明する。
本シーケンスは、ユーザーが画像形成装置300を最初に利用する際に一度だけ行う操作である。
まずユーザーが画像形成装置300においてログインアプリケーション1000が提供するログイン手段を用いて画像形成装置300にログインする(S1.1)。ここでユーザーIDがuser001 のユーザーがログインしたとする。すると、ログインアプリケーション1000はuser001を含むログインコンテキストを生成し、アプリケーション管理フレームワーク800を介して各アプリケーションから取得可能なようRAM308に格納する(S1.2)。
次に、ユーザーは画像形成装置300を操作してブラウザ900を実行する。そして、ブラウザ900を用いて認可サーバー連携クライアント500の認可連携を開始するためのURLへアクセスする(S1.3)。ここで認可サーバー連携クライアント500は図7(a)に示すような認可連携開始を確認する画面1801を応答するよう構成しても良い。
認可サーバー連携クライアント500は、認可連携の開始を受け付けたら、デバイス管理テーブル1600のエンドポイントURL1603に記載のURLに対して、OAuthの認可リクエストをするようブラウザ900にリダイレクト要求する(S1.4)。この認可リクエストには、デバイス管理テーブル1600のクライアントID1601、リダイレクトURL1604の情報が含まれる。また、OAuthでは、認可を受けたい権限範囲を示すスコープを認可リクエストに含むよう構成する事もできる。本実施例では、スコープとしてスコープAがリクエストされたとして説明する。
認可リクエストを受け付けた認可サーバー200は、ユーザーを認証するために図7(b)に示すログイン画面1802をブラウザ900に応答する(S1.5)。ユーザーはブラウザ900に示されたログイン画面1802に対して、ユーザーID、パスワードを入力しログインを実行する(S1.6)。認可サーバー200は受け付けたユーザーID、パスワードの組がユーザー管理テーブル1200に登録されている情報と合っているかを検証し、合っている場合はユーザーIDを紐づいた認証情報を生成して次の処理を実行する。認可サーバー200は、認可リクエストに含まれているクライアントIDとリダイレクトURLの組みが、クライアント管理テーブル1300に登録されている情報と合っているか検証する。検証の結果正しければ、クライアント管理テーブル1300のクライアント名1302を取得し、図7(c)に示す認可確認画面1803を生成しブラウザ900に応答する(S1.7)。その際、認証情報をブラウザ900に対してCookie情報として格納して応答する。なお、実施例では、認可確認画面1803にクライアント名1302を表示するよう説明したが、ここにクライアントの詳細な説明を追加して表示する事や、ログインしているユーザーの情報を表示するよう構成する事もできる。また認可リクエストにスコープを含む場合は、当該スコープの範囲を説明する情報を認可確認画面1803に表示するよう構成する事も出来る。
次に、ユーザーはブラウザ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に登録する。リフレッシュのフローについては後述する。
トークン要求を受けた認可サーバー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は、不図示の認可連携完了の旨を示す画面を画像形成装置のWebブラウザ900に応答し、処理を終了する。
続いて、親トークンが発行されたあとの子トークンの取得に関する本実施の形態のシーケンスを、図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)。
これら、アプリケーション管理フレームワーク800に対するインターフェース登録、インターフェース取得、および、アプリケーション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)。ここで、子トークンは新たに認可トークン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が印刷サービスであった場合は印刷可能な文書のリストであり、帳票サービスであった場合は、作成可能な帳票のリストである。
ここで、S2.15から、S2.20まで、トークンの検証を認可サーバー200、リソースサーバー210それぞれで行うよう説明したが、リソースに対するアクセス可能なアプリケーションを認可サーバー200で管理し、全ての検証を認可サーバー200で行うよう構成する事も可能である。また、本実施例ではアクセス可能なアプリケーションの判断をアプリケーションIDを用いて実施するよう説明したが、トークン情報から取得できるシリアル番号やクライアントIDを元に画像形成装置300を識別し、アクセスの可否を判断するよう構成する事もできる。また、同様に、トークン情報から取得できるスコープやユーザーIDを元にアクセスの可否を判断するよう構成する事もできる。
リソース応答を受け付けたリソースサービス連携アプリケーション400は、受信したデータを元に前述のアプリケーション画面を構成し、ユーザーに応答する(S2.22)。
次に、リソースサービス連携アプリケーション400が認可サーバー連携クライアント500へのトークン取得要求をする方法および、認可サーバー連携クライアント500が要求元のアプリケーションIDを取得する方法について説明する。
図10(a)はインストールするアプリケーションのアプリケーションファイルの構成を示す図である。アプリケーションファイル1900は、アプリケーション定義ファイル1901、アプリケーションの実態であるアプリケーション1902から成る。また、アプリケーションファイルはアプリケーション定義ファイル1901、アプリケーション1902を含む形で暗号化されており、復号するための鍵はライセンスファイル1910に記載されている。また、アプリケーション定義ファイル1901は、アプリケーションを一意に識別するためのアプリケーションIDと、アプリケーションのバージョン、およびアプリケーション名が記述されている。また、アプリケーション定義ファイル1901は、その他にも、アプリケーションが消費する記憶領域等のリソース量の定義や、アプリケーションを開始するときに実行するクラスのクラスパス等が記載されている。
図10(b)は、アプリケーションをインストールする際に必要となるライセンスファイルの構成を示す図である。ライセンスファイル1910は、アプリケーションファイル1900を復号するためのアプリケーション復号鍵1911から成る。またライセンスファイル1910は、アプリケーション管理アプリケーション830にて保持している秘密鍵で復号可能なよう公開鍵にて暗号化されている。
これらの構成により、アプリケーション管理アプリケーション830にて保持している秘密鍵が漏洩しない限りは、アプリケーション定義ファイル1901、およびアプリケーション1902は改竄出来ないよう保護されている。
図10(c)はアプリケーション管理フレームワーク800にて管理されるアプリケーション管理テーブル1920である。アプリケーション管理テーブル1920は、アプリケーションID1921、バージョン1922、アプリケーション名1923、保存場所1924、状態1925から成る。
図10(c)はアプリケーション管理フレームワーク800にて管理されるアプリケーション管理テーブル1920である。アプリケーション管理テーブル1920は、アプリケーションID1921、バージョン1922、アプリケーション名1923、保存場所1924、状態1925から成る。
また、アプリケーション管理フレームワーク800は、各アプリケーションが実行され、RAM308上に展開された状態であるアプリケーションオブジェクトをリストで管理している。このアプリケーションオブジェクトのリストの各アプリケーションは、アプリケーション管理テーブル1920の情報とアプリケーションIDで紐づいており、アプリケーション管理テーブル1920の各情報を参照可能に構成されている。また、アプリケーションオブジェクトのリストは、アプリケーション管理フレームワーク800のI/Fを介してアプリケーション管理アプリケーション830から取得可能なよう構成されている。
図10(d)はリソースサービス連携アプリケーションが保持するサービス管理テーブルである。サーバ名1926は、リソースサービス連携アプリケーションがサービスにアクセスする際に使用される情報であり、後述のリソース取得のリクエスト先の判定に使用される。ホスト名1927は、サービスのホスト名、サービスURL1928はサービスのURLを示す。該情報は、アプリケーションがあらかじめ保持する場合と、アプリケーションの管理者が追加することも可能である。
次に、画像形成装置300にアプリケーションをインストールシーケンスと、各アプリケーションを開始するシーケンスを、図9を用いて説明する。また、図8で説明したシーケンスと同じ処理に関しては共通のシーケンス番号とし、説明を省略する。
まず、アプリケーションのインストールシーケンスについて説明する。
ユーザーは、クライアント端末220に備えるWebブラウザ1200を用いて、画像形成装置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にて復号後に、署名値を検証する事でより検証の精度を高める事も可能である。
次に、アプリケーション管理アプリケーション830は、復号し、取得したアプリケーション定義ファイル1901および、アプリケーション1902を、アプリケーション管理フレームワーク800のI/Fを介して、アプリケーションを画像形成装置300に保存する。その際、アプリケーション定義ファイルを展開し、アプリケーションID、バージョン等の情報と共に保存場所をアプリケーション管理テーブル1920に記憶する(S3.5)。また、その際、アプリケーションの状態1925に「インストール済み」として登録する。
次に、アプリケーションの開始シーケンスについて説明する。なお、画像形成装置300には、前述したリソースサービス連携アプリケーション400および、既に認可サーバー連携クライアント500がインストールされているとする。
ユーザーは、クライアント端末220に備えるWebブラウザ1200を用いてアプリケーション管理アプリケーション830に対して、認可サーバー連携クライアント500を開始するよう指示する(S3.6)。アプリケーション管理アプリケーション830は、アプリケーション管理フレームワーク800のI/Fを介してアプリケーション管理テーブル1920の情報を元に、認可サーバー連携クライアント500の保存場所を特定し、アプリケーションを開始する。
アプリケーション開始指示を受けた認可サーバー連携クライアント500は、自身の子トークン取得要求を受け付けるためのインターフェースをアプリケーション管理フレームワーク800に登録する。登録を受けたアプリケーション管理フレームワーク800は、インターフェースを記憶する。
インターフェース登録が完了した認可サーバー連携クライアント500は、アプリケーション管理フレームワーク800にアプリケーション開始を応答する(S3.8)。
アプリケーション管理フレームワーク800は、認可サーバー連携クライアント500の状態1925を開始状態に変更し、開始されたアプリケーションオブジェクトをアプリケーションオブジェクトリストにて保持する(S3.9)。
次に、ユーザーは、クライアント端末220に備えるWebブラウザ1200を用いてアプリケーション管理アプリケーション830に対して、リソースサービス連携アプリケーション400を開始するよう指示する(S3.10)。アプリケーション管理アプリケーション830は、アプリケーション管理フレームワーク800を介して、アプリケーション管理テーブル1920の情報を元に、リソースサービス連携アプリケーション400の保存場所を特定し、アプリケーションを開始する。
アプリケーション開始指示を受けたリソースサービス連携アプリケーション400は、アプリケーションの初期化処理を実行し、アプリケーション管理フレームワーク800に対してアプリケーション開始を応答する(S3.11)。
アプリケーション管理フレームワーク800は、リソースサービス連携アプリケーション400の状態1925を開始に変更し、開始されたアプリケーションオブジェクトをアプリケーションオブジェクトリストにて保持する(S3.12)。
上記シーケンスによって、アプリケーション管理フレームワーク800は画像形成装置300にインストールされている各アプリケーションを開始し、各アプリケーションのアプリケーション定義ファイルに記載されているアプリケーションIDを各アプリケーションオブジェクトから参照可能なように保持する事ができる。また、アプリケーション管理フレームワーク800は、アプリケーションからインターフェース登録を受け付ける事で、他のアプリケーションから登録されたインターフェースを実行可能に保持する事ができる。この時、インターフェース登録の方法としては、インターフェースが定義されたクラスへのクラスパス(クラス定義への参照パス)を渡す。
次に、S2.3にてリソースサービス連携アプリケーション400のアプリケーション画面にユーザーがアクセスした際のシーケンスの詳細を説明する。
リソースサービス連携アプリケーション400は、前述したように、S2.4にてログインコンテキストを取得後、S2.5にて認可サーバー連携クライアント500にトークン取得要求を行う。その際、S3.13にて、アプリケーション管理フレームワーク800に対して登録されているインターフェースの取得要求を行う。インターフェース取得要求を受けたアプリケーション管理フレームワーク800は、要求元のアプリケーションをアプリケーションオブジェクトのリストより特定し、アプリケーション定義ファイルに記載されているアプリケーションIDを取得する(S3.14)。ここで、本実施例ではインターフェース取得要求を行ったアプリケーションオブジェクトの特定方法として、インターフェース取得要求の引数に、アプリケーションのオブジェクトを参照として格納するよう構成する。ただし、インターフェース取得要求元のアプリケーションオブジェクトの特定方法としては記載の方法に限定せず、例えば、仮想マシン810が備える要求元を逆引きするような機能を利用し特定する事も考えられる。そして、登録されている認可サーバー連携クライアント500から登録されたインターフェース定義クラスのクラスパスから、参照先のインターフェース定義クラスを実体化してオブジェクト生成するようリクエストする(S3.15)。この際、取得したリソースサービス連携アプリケーション400のアプリケーションIDをオブジェクト生成リクエストに設定する。オブジェクト生成リクエストを受けた認可サーバー連携クライアント500は、アプリケーションIDが設定されたインターフェース定義クラスのオブジェクトを生成し、アプリケーション管理フレームワーク800に応答する。そして、アプリケーション管理フレームワーク800は生成されたインターフェースクラスのオブジェクトをリソースサービス連携アプリケーション400に応答する(S3.16)。
認可サーバー連携クライアント500のインターフェースのオブジェクトを取得したリソースサービス連携アプリケーション400は、インターフェース定義クラスに定義されているトークン取得要求を実行する(S2.5)。認可サーバー連携クライアント(500)は、トークン取得要求を受けたインターフェース定義クラスのオブジェクトに設定されたアプリケーションIDを取得する(S2.6)。
これらシーケンスによって、アプリケーションによる改竄を防止した形で、アプリケーションIDを認可サーバー連携クライアント500にて取得する事が可能となる。
次にリソースサービス連携アプリケーション400がリソースサーバー210からデータを取得する際の具体的な処理に関して図11を用いて説明する。リソースサービスへのリソース取得リクエストは、ユーザーがクライアント端末220に備えるWebブラウザ1200または、リソースサービス連携アプリケーション400の不図示のユーザーインターフェースを介して行われる。
Webブラウザの場合、Webブラウザ上で操作された内容に応じて、リソースサービス210へ情報が送信される(S4.1)。リソースサービス210は、受信した情報に応じて、リソースサービス連携アプリケーションに対してリクエストを実行させるためのスクリプトが含まれた画面を生成し(4.2)、Webブラウザに送信する(S4.3)。Webブラウザ1200がJavaScript(登録商標)のクロスドメイン通信機能または、同等の機能を備えたWebブラウザの場合、Webブラウザによって前記スクリプトが実行され、リソースサーバー連携アプリケーション400に対してリソース取得リクエストが行われる(S4.4)。リソースサービス連携アプリケーション400のユーザーインターフェース(不図示)上で操作が行われた場合は、リソースサービス連携アプリケーションがリソース取得リクエストを生成しリソースサービス210に対してリクエストを行う。本実施例ではリソース取得リクエストは、リソースサーバー連携アプリケーション以外からを想定しているため、Webブラウザ1200を例に説明するが、Webブラウザに相当するリソースサービス210のWebAPIを利用するアプリケーション等であってもよく、特に限定はしない。リソースサービス連携アプリケーション400は、リソースサーバー210に対するリソース取得リクエストを受け付けると、リソース取得リクエストに含まれるリクエスト先と自身が保持しているリクエスト先(ホスト名1927、サービスURL1928)を照合する(S4.5)。ここで、リクエスト先が合致しない場合は、以降の子トークン取得処理は行わずにリソース取得リクエストに含まれるリクエスト先に対して通信を行う。合致した場合は前述の子トークン取得処理(S2.4−S2.13)の処理を行い、該子トークンを用いてリソースサービス210にリソース取得要求を行う。リソースサービス210がリソース取得要求を受けた際の処理は、S2.15−S2.21と同様の処理を行う。
本実施の形態によれば、リソースサービス連携アプリケーションが保持しているサービスへのリクエスト時にのみ子トークンが用いられ、不正なサービスが指定された際にトークンが漏えいすることを防止することが可能となる。
200 認可サーバー
210 リソースサーバー
300 画像形成装置
400 リソースサーバー連携アプリケーション
500 認可サーバー連携クライアント
800 アプリケーション管理フレームワーク
900 Webブラウザ
1000 ログインアプリケーション
210 リソースサーバー
300 画像形成装置
400 リソースサーバー連携アプリケーション
500 認可サーバー連携クライアント
800 アプリケーション管理フレームワーク
900 Webブラウザ
1000 ログインアプリケーション
Claims (2)
- 複数のアプリケーションを追加可能な画像形成装置(300)であって、
第一のアプリケーション(400)は、画像形成装置(300)を認証するための認証情報を保持する手段(1600)と、
認可サーバー(200)から第一の認可トークンを取得する手段(S1.4、S1.10)と、
前記第一の認可トークンを保持する手段(1700)と、を備え、
第二のアプリケーション(500)は、リソースサーバー(210)にアクセスするための第二の認可トークン取得要求を第一のアプリケーションに送信する手段(S2.5)と、
第一のアプリケーション(400)は、第二の認可トークン取得要求元を識別するための第二のアプリケーション識別子を取得する手段(S2.6)と、
前記第一の認可トークンと前記認証情報および、前記アプリケーションIDを用いて第二の認可トークンの取得を要求する手段(S2.11)と、
前記第二の認可トークンを、前記第二のアプリケーション(500)に応答する手段(S2.13)と、
前記第二のアプリケーション(500)は、要求先のリソースサーバーの宛先情報(1929)を保持する手段と、
前記第二のアプリケーション(500)は、リソース要求先が前記リソースサーバーの宛先情報と合致するかどうか判断する手段(S4.5)と、
前記第二のアプリケーション(500)は、リソース要求先が前記リソースサーバーの宛先情報と合致した場合は、前記リソースサーバー(210)に前記第二の認可トークンを用いてリソース要求する手段(S2.14)と、を備え、
さらに前記リソースサーバー(210)は、第二の認可トークンからリソース要求元の識別するためのアプリケーション識別子を取得する手段(S2.18)と、を備える。 - 請求項1記載のリソースサーバー(210)は、第二の認可トークンから取得した情報を元にリソースアクセスの可否を判断する手段(S2.15、S2.18)と、を備える。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013009759A JP2014142732A (ja) | 2013-01-23 | 2013-01-23 | 権限委譲システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013009759A JP2014142732A (ja) | 2013-01-23 | 2013-01-23 | 権限委譲システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014142732A true JP2014142732A (ja) | 2014-08-07 |
Family
ID=51423973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013009759A Pending JP2014142732A (ja) | 2013-01-23 | 2013-01-23 | 権限委譲システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014142732A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016006624A (ja) * | 2014-05-28 | 2016-01-14 | 株式会社リコー | 情報処理システム、情報処理方法、情報処理装置及びプログラム |
JP2018112811A (ja) * | 2017-01-10 | 2018-07-19 | 京セラドキュメントソリューションズ株式会社 | 認証システムおよび認証方法 |
CN110875925A (zh) * | 2018-08-30 | 2020-03-10 | 佳能株式会社 | 信息处理装置、授权系统及验证方法 |
-
2013
- 2013-01-23 JP JP2013009759A patent/JP2014142732A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016006624A (ja) * | 2014-05-28 | 2016-01-14 | 株式会社リコー | 情報処理システム、情報処理方法、情報処理装置及びプログラム |
JP2018112811A (ja) * | 2017-01-10 | 2018-07-19 | 京セラドキュメントソリューションズ株式会社 | 認証システムおよび認証方法 |
CN110875925A (zh) * | 2018-08-30 | 2020-03-10 | 佳能株式会社 | 信息处理装置、授权系统及验证方法 |
CN110875925B (zh) * | 2018-08-30 | 2022-07-19 | 佳能株式会社 | 信息处理装置、授权系统及验证方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6066647B2 (ja) | デバイス装置、その制御方法、およびそのプログラム | |
JP6061633B2 (ja) | デバイス装置、制御方法、およびそのプログラム。 | |
JP6057666B2 (ja) | 画像形成装置、情報処理方法及びプログラム | |
CN110138718B (zh) | 信息处理系统及其控制方法 | |
JP6904857B2 (ja) | 権限委譲システム、制御方法、およびプログラム | |
JP6166596B2 (ja) | 認可サーバーシステムおよびその制御方法、並びにプログラム | |
JP6124687B2 (ja) | 画像形成装置、サーバー装置、情報処理方法及びプログラム | |
JP6929181B2 (ja) | デバイスと、その制御方法とプログラム | |
JP6198477B2 (ja) | 権限移譲システム、認可サーバーシステム、制御方法、およびプログラム | |
JP6177020B2 (ja) | 認証システム、その制御方法、サービス提供装置およびコンピュータプログラム | |
KR20170067660A (ko) | 인가 서버, 인증 제휴 시스템 및 프로그램을 저장한 저장 매체 | |
CN111316267A (zh) | 使用委托身份的认证 | |
US20120293819A1 (en) | Information processing system, information processing device, and relay server | |
JP2018092446A (ja) | 認証認可システム及び情報処理装置と認証認可方法とプログラム | |
JP2016009466A (ja) | Webサービスシステム、認証認可装置、情報処理装置、情報処理方法及びプログラム | |
JP2016115260A (ja) | 権限移譲システム、権限移譲システムに用いられる認可サーバー、リソースサーバー、クライアント、媒介装置、権限移譲方法およびプログラム | |
JP2014142732A (ja) | 権限委譲システム | |
JP7043480B2 (ja) | 情報処理システムと、その制御方法とプログラム | |
JP6128958B2 (ja) | 情報処理サーバーシステム、制御方法、およびプログラム | |
JP2015118459A (ja) | 画像形成装置、情報端末、サーバ装置、データ処理システム、画像形成装置の通信方法、情報端末の通信方法、サーバ装置の通信方法、及びプログラム | |
JP2017091221A (ja) | 権限委譲システム、その制御方法、認可サーバ及びプログラム | |
JP5860421B2 (ja) | 復号方法、復号システム | |
Edge et al. | Identity and Device Trust | |
JP2007286984A (ja) | クライアントと別体の装置のユーザ認証方法及びシステム並びにこの別体の装置 |