(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023044373
(43)【公開日】2023-03-30
(54)【発明の名称】情報処理装置、情報処理方法及びプログラム
(51)【国際特許分類】
G06F 21/33 20130101AFI20230323BHJP
【FI】
G06F21/33 350
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021152372
(22)【出願日】2021-09-17
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】000006747
【氏名又は名称】株式会社リコー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】張 東哲
(57)【要約】
【課題】有効と判定された場合のみスコープの認可を外部サービスへ要求する。
【解決手段】情報処理装置は、外部サービスと連携した処理を行うアプリケーションを実行する。スコープ判断部は、外部サービスと連携した処理で必要とされるスコープが有効か無効かを判定する。認証部は、有効と判定された場合のみスコープの認可を外部サービスへ要求する。
【選択図】
図5
【特許請求の範囲】
【請求項1】
外部サービスと連携した処理を行うアプリケーションを実行する情報処理装置であって、
前記処理で必要とされるスコープが有効か無効かを判定するスコープ判断部と、
有効と判定された場合のみ前記スコープの認可を前記外部サービスへ要求する認証部と、
を備える情報処理装置。
【請求項2】
請求項1に記載の情報処理装置であって、
前記スコープ判断部は、前記スコープに対する事前設定が完了していない場合に、前記スコープを無効と判定する、
情報処理装置。
【請求項3】
請求項2に記載の情報処理装置であって、
前記スコープ判断部は、前記外部サービスから取得した前記事前設定を必要とするか否かを示す情報及び前記事前設定が完了しているか否かを示す情報を用いて、前記スコープが有効か無効かを判定する、
情報処理装置。
【請求項4】
請求項3に記載の情報処理装置であって、
前記スコープ判断部は、前記スコープが無効と判定した場合、前記事前設定が必要である旨を通知する、
情報処理装置。
【請求項5】
請求項4に記載の情報処理装置であって、
前記スコープ判断部は、通知先のユーザの権限に応じて、前記通知の内容を変更する、
情報処理装置。
【請求項6】
請求項5に記載の情報処理装置であって、
前記スコープ判断部は、
管理権限を有さないユーザに対しては、前記管理権限を有するユーザへの連絡手段を提示し、
前記管理権限を有するユーザに対しては、前記事前設定の確認手段を提示する、
情報処理装置。
【請求項7】
コンピュータが、外部サービスと連携した処理を行うアプリケーションを実行する情報処理方法であって、
スコープ判断部が、前記処理で必要とされるスコープが有効か無効かを判定するステップと、
認証部が、有効と判定された場合のみ前記スコープの認可を前記外部サービスへ要求するステップと、
を有する情報処理方法。
【請求項8】
外部サービスと連携した処理を行うアプリケーションを実行するコンピュータを、
前記処理で必要とされるスコープが有効か無効かを判定するスコープ判断部、及び
有効と判定された場合のみ前記スコープの認可を前記外部サービスへ要求する認証部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
近年、クラウドコンピューティング等により多種多様な外部サービスが提供されるようになった。外部サービスと連携して処理を行う際に用いられる認証方法には、OAuthと呼ばれる技術が知られている。OAuthでは、外部サービスと連携して処理を行うアプリケーションに対して、スコープとして設定された範囲内で当該外部サービスのリソースの利用を認可する。
【0003】
特許文献1には、外部サービスと連携した処理を行うアプリケーションに対して適切なスコープを設定する情報処理システムが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、OAuthの認可を行うために事前設定が必要な外部サービスがある。そのような外部サービスでは、事前設定が完了していない無効なスコープに対してOAuthの認可を要求すると、当該外部サービスに対するすべてのスコープの認可に失敗する、という課題がある。
【0005】
この発明の一実施形態は、上記のような技術的課題に鑑みて、有効と判定された場合のみスコープの認可を外部サービスへ要求することを目的とする。
【課題を解決するための手段】
【0006】
上記の課題を解決するために、この発明の一実施形態の情報処理システムは、外部サービスと連携した処理を行うアプリケーションを実行する情報処理装置であって、処理で必要とされるスコープが有効か無効かを判定するスコープ判断部と、有効と判定された場合のみスコープの認可を外部サービスへ要求する認証部と、を備える。
【発明の効果】
【0007】
この発明の一実施形態によれば、有効と判定された場合のみスコープの認可を外部サービスへ要求することができる。
【図面の簡単な説明】
【0008】
【
図1】従来技術におけるエラー画面の一例を示す図である。
【
図2】一実施形態における情報処理システムの全体構成を例示する図である。
【
図3】一実施形態における情報処理装置のハードウェア構成を例示する図である。
【
図4】一実施形態における画像形成装置のハードウェア構成を例示する図である。
【
図5】一実施形態における情報処理システムの機能構成を例示する図である。
【
図6】一実施形態におけるスコープ管理情報テーブルの一例を示す図である。
【
図7】一実施形態におけるユーザ情報テーブルの一例を示す図である。
【
図8】一実施形態におけるOAuth登録情報テーブルの一例を示す図である。
【
図9】一実施形態における認可トークン情報テーブルの一例を示す図である。
【
図10】一実施形態におけるロジック処理部の機能構成を例示する図である。
【
図11】一実施形態におけるコンポーネント情報テーブルの一例を示す図である。
【
図12】第1実施形態における認証連携処理の手順を例示する図である。
【
図13】一実施形態における認可画面の一例を示す図である。
【
図14】一実施形態におけるスコープの決定の一例を示す図である。
【
図15】一実施形態における確認画面の一例を示す図である。
【
図16】第1実施形態における事前設定処理の手順を例示する図である。
【
図17】一実施形態における画像形成装置に表示されるアプリ選択画面の一例を示す図である。
【
図18】一実施形態における情報処理装置に表示される一般ユーザ向けアプリ選択画面の一例を示す図である。
【
図19】一実施形態における情報処理装置に表示される管理者ユーザ向けアプリ選択画面の一例を示す図である。
【
図20】一実施形態における画像形成装置に表示される一般ユーザ向け通知画面の一例を示す図である。
【
図21】一実施形態における情報処理装置に表示される一般ユーザ向け通知画面の一例を示す図である。
【
図22】一実施形態における画像形成装置に表示される管理者ユーザ向け通知画面の一例を示す図である。
【
図24】一実施形態における画像形成装置に表示されるアプリ設定画面の一例を示す図である。
【
図23】一実施形態における情報処理装置に表示される管理者ユーザ向け通知画面の一例を示す図である。
【
図25】一実施形態における情報処理装置に表示されるアプリ設定画面の一例を示す図である。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら、この発明の実施の形態について、詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【0010】
[第1実施形態]
<背景>
クラウドサービス等の外部サービスと連携した処理を行うアプリケーションを提供する情報処理システムにおいては、外部サービスから事前にリソースの利用に対する認可を得る必要がある。認可を得るための認証技術として、OAuthと呼ばれる技術がよく用いられている。OAuthでは、利用するリソースの範囲を設定するスコープを指定して、外部サービスから認可を得る。
【0011】
様々な外部サービスの中には、スコープの認可を得る前に、外部サービス側で管理者が事前承認を行う等の事前設定を必要とするものがある。また、事前設定が必要な外部サービスにおいて事前設定が完了していないスコープに対して認可を要求すると、そのスコープに対する認可要求が失敗するだけでなく、同じ外部サービスにおける他のスコープに対する認可要求も失敗する場合がある。したがって、このような外部サービスでは、あるスコープに対する認可要求が失敗すると、同じ外部サービスと連携した処理を行う他のアプリケーションにまで影響が及ぶことがある。
【0012】
図1は、事前設定が必要かつ事前設定が完了していないスコープを指定して外部サービスに認可を要求したときに表示されるエラー画面の一例である。
図1に示したエラー画面は、管理者が外部サービスにおいてリソースへのアクセスを許可する必要がある旨を示している。この外部サービスでは、事前に管理者がアプリケーションで必要となるスコープの利用を一般ユーザに承認しておかなければならない仕様となっている。このエラーが発生すると、その外部サービスと連携した処理を実行する他のアプリケーションにおいても、外部サービスとの連携に失敗することになる。
【0013】
そこで、この発明の一実施形態では、外部サービスと連携した処理を行うアプリケーションを実行する情報処理システムにおいて、そのアプリケーションで必要となるスコープが事前設定を必要とするか否か及びその事前設定が完了しているか否かを示す情報を保持しておく。外部サービスに対して認可を要求する際には、それらの情報に基づいて、事前にスコープの有効性を判定する。認可を要求しようとしているすべてのスコープが有効と判定されたときには、そのスコープに対して認可を要求する。また、認可を要求しようとしているスコープに無効なスコープが存在する場合には、その旨をユーザに通知する。
【0014】
これにより、この発明の一実施形態によれば、外部サービスにおいて事前設定が完了していないことに起因して認可が失敗することを防止することができる。そのため、認可の失敗による影響が、同じ外部サービスと連携した処理を行う他のアプリケーションに及ぶことを避けることができる。また、ユーザは事前設定が完了していないことを認識できるため、早期に問題を解決することができる。
【0015】
<情報処理システム1の全体構成>
まず、本実施形態における情報処理システム1の構成について、
図2を参照しながら説明する。
図2は、本実施形態における情報処理システムの一例の構成を示す図である。
【0016】
本実施形態における情報処理システム1は、サービス提供システム10と、機器20と、外部サービスシステム30とを含み、インターネット等の広域的な通信ネットワークN1を介して通信可能に接続されている。
【0017】
サービス提供システム10は、一台以上の情報処理装置で実現され、通信ネットワークN1を介して、クラウドサービス等の外部サービスシステム30と連携した一連の処理により実現される各種のサービスを提供する。なお、以降では、サービス提供システム10が提供するサービスを「アプリケーション」とも表す。また、サービスを実現する一連の処理を「処理フロー」とも表す。
【0018】
なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、これに限られない。本実施形態は、例えば、ASP(Application Service Provider)によって提供されるサービスやWebサービス等のネットワークを介して提供される各種の外部サービスに関して適用されてもよい。
【0019】
機器20は、ユーザが使用する各種の電子機器である。ユーザは、機器20を用いて、サービス提供システム10が提供する各種のサービスを利用することができる。
【0020】
機器20の一例は、画像形成装置(プリンタ、FAX装置、MFP(Multifunction Peripheral/Product/Printer:デジタル複合機)、スキャナ装置)である。機器20の他の一例は、情報処理装置である。なお、機器20は、通信機能を備えた装置であれば、画像形成装置又は情報処理装置に限られない。
【0021】
すなわち、機器20は、例えば、PJ(Projector:プロジェクタ)、IWB(Interactive White Board:相互通信が可能な電子式の黒板機能を有する白板)、デジタルサイネージ等の出力装置、HUD(Head Up Display)装置、産業機械、撮像装置、集音装置、医療機器、ネットワーク家電、自動車(Connected Car)、ノートPC(Personal Computer)、携帯電話、スマートフォン、タブレット端末、ゲーム機、PDA(Personal Digital Assistant)、デジタルカメラ、ウェアラブルPC又はデスクトップPC等であってもよい。
【0022】
以降では、複数の機器20について、各々を区別するときは、「機器201」、「機器202」等と添え字を用いて記載する。
【0023】
外部サービスシステム30は、通信ネットワークN1を介して各種のクラウドサービスを提供するコンピュータシステムである。外部サービスシステムの一例は、ストレージサービス(又はオンラインストレージ)と呼ばれるクラウドサービスである。ストレージサービスとは、外部サービスシステム30のストレージの記憶領域を貸し出すサービスである。
【0024】
以降では、複数の外部サービスシステム30について、各々を区別するときは、「外部サービスシステム301」、「外部サービスシステム302」等と添え字を用いて記載する。また、外部サービスシステム301により提供される外部サービスの名称を「外部サービスA」、外部サービスシステム302により提供される外部サービスの名称を「外部サービスB」等と呼ぶ。
【0025】
外部サービスシステム30は、複数台の情報処理装置によって実現されるシステムであってもよい。
【0026】
図2に示す情報処理システム1の構成は一例であって、他の構成であってもよい。例えば、本実施形態における情報処理システム1には、電子データの入力及び出力の少なくとも一方を行う各種機器が含まれ、これらの機器がサービス提供システム10により提供される各種サービスを利用してもよい。
【0027】
<情報処理システム1に含まれる各装置のハードウェア構成>
≪情報処理装置のハードウェア構成≫
次に、本実施形態における情報処理システム1に含まれるサービス提供システム10、機器20及び外部サービスシステム30が情報処理装置で実現される場合のハードウェア構成について、
図3を参照しながら説明する。
図3は、本実施形態における情報処理装置の一例のハードウェア構成を示す図である。
【0028】
図3に示されているように、情報処理装置は、CPU501、ROM502、RAM503、HD504、HDD(Hard Disk Drive)コントローラ505、ディスプレイ506、外部機器接続I/F(Interface)508、ネットワークI/F509、バスライン510、キーボード511、ポインティング機器512、DVD-RW(Digital Versatile Disk Rewritable)ドライブ514、メディアI/F516を備えている。
【0029】
これらのうち、CPU501は、情報処理装置全体の動作を制御する。ROM502は、IPL等のCPU501の駆動に用いられるプログラムを記憶する。RAM503は、CPU501のワークエリアとして使用される。HD504は、プログラム等の各種データを記憶する。HDDコントローラ505は、CPU501の制御にしたがってHD504に対する各種データの読み出し又は書き込みを制御する。ディスプレイ506は、カーソル、メニュー、ウィンドウ、文字、又は画像などの各種情報を表示する。外部機器接続I/F508は、各種の外部機器を接続するためのインターフェースである。この場合の外部機器は、例えば、USB(Universal Serial Bus)メモリやプリンタ等である。ネットワークI/F509は、通信ネットワークN1を利用してデータ通信をするためのインターフェースである。バスライン510は、
図3に示されているCPU501等の各構成要素を電気的に接続するためのアドレスバスやデータバス等である。
【0030】
また、キーボード511は、文字、数値、各種指示などの入力のための複数のキーを備えた入力手段の一種である。ポインティング機器512は、各種指示の選択や実行、処理対象の選択、カーソルの移動などを行う入力手段の一種である。DVD-RWドライブ514は、着脱可能な記録媒体の一例としてのDVD-RW513に対する各種データの読み出し又は書き込みを制御する。なお、DVD-RWに限らず、DVD-R等であってもよい。メディアI/F516は、フラッシュメモリ等の記録メディア515に対するデータの読み出し又は書き込み(記憶)を制御する。
【0031】
≪画像形成装置のハードウェア構成≫
次に、本実施形態における情報処理システム1に含まれる機器20が画像形成装置である場合のハードウェア構成について、
図4を参照しながら説明する。
図4は、本実施形態における画像形成装置の一例のハードウェア構成を示す図である。
【0032】
図4に示されているように、画像形成装置は、コントローラ910、近距離通信回路920、エンジン制御部930、操作パネル940、ネットワークI/F950を備えている。
【0033】
これらのうち、コントローラ910は、コンピュータの主要部であるCPU901、システムメモリ(MEM-P)902、ノースブリッジ(NB)903、サウスブリッジ(SB)904、ASIC(Application Specific Integrated Circuit)906、記憶部であるローカルメモリ(MEM-C)907、HDDコントローラ908、及び、記憶部であるHD909を有し、NB903とASIC906との間をAGP(Accelerated Graphics Port)バス921で接続した構成となっている。
【0034】
これらのうち、CPU901は、画像形成装置の全体制御を行う制御部である。NB903は、CPU901と、MEM-P902、SB904、及びAGPバス921とを接続するためのブリッジであり、MEM-P902に対する読み書きなどを制御するメモリコントローラと、PCI(Peripheral Component Interconnect)マスタ及びAGPターゲットとを有する。
【0035】
MEM-P902は、コントローラ910の各機能を実現させるプログラムやデータの格納用メモリであるROM902a、プログラムやデータの展開、及びメモリ印刷時の描画用メモリなどとして用いるRAM902bとからなる。なお、RAM902bに記憶されているプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、CD-R、DVD等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【0036】
SB904は、NB903とPCI機器、周辺機器とを接続するためのブリッジである。ASIC906は、画像処理用のハードウェア要素を有する画像処理用途向けのIC(Integrated Circuit)であり、AGPバス921、PCIバス922、HDD908およびMEM-C907をそれぞれ接続するブリッジの役割を有する。このASIC906は、PCIターゲットおよびAGPマスタ、ASIC906の中核をなすアービタ(ARB)、MEM-C907を制御するメモリコントローラ、ハードウェアロジックなどにより画像データの回転などを行う複数のDMAC(Direct Memory Access Controller)、並びに、スキャナ部931及びプリンタ部932との間でPCIバス922を介したデータ転送を行うPCIユニットとからなる。なお、ASIC906には、USB(Universal Serial Bus)のインターフェースや、IEEE1394(Institute of Electrical and Electronics Engineers 1394)のインターフェースを接続するようにしてもよい。
【0037】
MEM-C907は、コピー用画像バッファ及び符号バッファとして用いるローカルメモリである。HD909は、画像データの蓄積、印刷時に用いるフォントデータの蓄積、フォームの蓄積を行うためのストレージである。HD909は、CPU901の制御にしたがってHD909に対するデータの読出又は書込を制御する。AGPバス921は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレータカード用のバスインタフェースであり、MEM-P902に高スループットで直接アクセスすることにより、グラフィックスアクセラレータカードを高速にすることができる。
【0038】
また、近距離通信回路920には、近距離通信回路920aが備わっている。近距離通信回路920は、NFC、Bluetooth等の通信回路である。
【0039】
更に、エンジン制御部930は、スキャナ部931及びプリンタ部932によって構成されている。また、操作パネル940は、現在の設定値や選択画面等を表示させ、操作者からの入力を受け付けるタッチパネル等のパネル表示部940a、並びに、濃度の設定条件などの画像形成に関する条件の設定値を受け付けるテンキー及びコピー開始指示を受け付けるスタートキー等からなる操作パネル940bを備えている。コントローラ910は、画像形成装置全体の制御を行い、例えば、描画、通信、操作パネル940からの入力等を制御する。スキャナ部931又はプリンタ部932には、誤差拡散やガンマ変換などの画像処理部分が含まれている。
【0040】
なお、画像形成装置は、操作パネル940のアプリケーション切り替えキーにより、ドキュメントボックス機能、コピー機能、プリンタ機能、およびファクシミリ機能を順次に切り替えて選択することが可能となる。ドキュメントボックス機能の選択時にはドキュメントボックスモードとなり、コピー機能の選択時にはコピーモードとなり、プリンタ機能の選択時にはプリンタモードとなり、ファクシミリモードの選択時にはファクシミリモードとなる。
【0041】
また、ネットワークI/F950は、通信ネットワークN1を利用してデータ通信をするためのインターフェースである。近距離通信回路920及びネットワークI/F950は、PCIバス922を介して、ASIC906に電気的に接続されている。
【0042】
<情報処理システム1に含まれる各装置の機能構成>
次に、本実施形態における情報処理システム1の機能構成について、
図5を参照しながら説明する。
図5は、本実施形態における情報処理システム1の一例の機能構成を示す図である。
【0043】
≪サービス提供システム10の機能構成≫
図5に示されるように、本実施形態におけるサービス提供システム10は、サービス処理部110と、認可サービス部120と、認証部130と、ドキュメントサービス部140と、外部サービス連携部150とを備える。これらの各部は、サービス提供システム10にインストールされた1以上のプログラムが、CPU501に実行させる処理により実現される。
【0044】
また、サービス提供システム10は、OAuth登録情報記憶部160と、認可トークン情報記憶部170と、アプリ情報記憶部180とを備える。これらの各記憶部は、HD504を用いて実現可能である。なお、これらの各記憶部は、サービス提供システム10と通信ネットワークN1を介して接続される記憶装置を用いて実現されてもよい。
【0045】
サービス処理部110は、サービス提供システム10が提供する各種のサービスを実現するための処理を行う。サービス処理部110は、アプリ管理部111と、ロジック処理部112と、データI/F部113と、スコープ判断部114と、スコープ管理部115とを備える。
【0046】
アプリ管理部111は、アプリ情報記憶部180に記憶されているアプリ情報1000を管理する。アプリ管理部111は、ブラウザ210からの要求に応じて、アプリ情報1000に含まれる画面定義1100に基づくアプリ画面を返信する。
【0047】
これにより、機器20のブラウザ210には、サービス提供システム10により提供されるサービスを利用するためのアプリ画面が表示される。なお、アプリ情報1000には、上述したアプリ画面を機器20に表示させるための画面定義1100と、当該アプリ情報1000により提供されるサービスを実現する一連の処理を示す処理内容1200とが含まれる。
【0048】
また、アプリ管理部111は、ロジック処理部112からの要求に応じて、アプリ情報1000に含まれる処理内容1200を返信する。処理内容1200は、上述したように、サービス提供システム10により提供されるサービスを実現する一連の処理である。
【0049】
ロジック処理部112は、ブラウザ210からの要求に応じて、アプリ管理部111を介して、アプリ情報1000に含まれる処理内容1200を取得する。そして、ロジック処理部112は、アプリ管理部111を介して取得した処理内容1200に基づいて、認証部130、ドキュメントサービス部140、又は外部サービス連携部150等に対して処理の実行を要求する。
【0050】
これにより、サービス提供システム10により提供される各種のサービスが実現される。なお、ロジック処理部112の詳細については後述する。
【0051】
データI/F部113は、ブラウザ210からの要求に応じて、外部サービス連携部150のデータ処理部152に対して、データ処理に関する所定の要求(例えば、フォルダ一覧の取得要求等)を行う。
【0052】
スコープ判断部114は、アプリ情報1000の外部サービスシステム30に対する認可のスコープを決定する。すなわち、スコープ判断部114は、後述する認証部130により取得される認可トークンのスコープを決定する。なお、スコープとは、アプリ情報1000により提供されるサービスにおいて、当該アプリ情報1000が外部サービスシステム30のリソースを利用可能な範囲を特定する情報である。
【0053】
ここで、スコープ判断部114は、アプリ情報1000に含まれる処理内容1200に基づいて、適切なスコープを決定する。したがって、本実施形態におけるサービス提供システム10では、例えば、ユーザは、認可トークンのスコープを明示的に設定する必要がない。
【0054】
スコープ管理部115は、外部サービスシステム30に対する認可のスコープと、当該スコープの有効性を表す情報とを管理する。本実施形態におけるスコープの有効性を表す情報は、当該スコープを利用するために事前設定が必要か否かを示す情報と、当該スコープに対する事前設定が完了しているか否かを示す情報である。本実施形態におけるスコープ管理部115は、スコープ管理情報テーブル1150を利用する。
【0055】
また、スコープ管理部115は、スコープ判断部114からの要求に応じて、スコープ管理情報テーブル1150に格納されているスコープ管理情報を返信する。ここで、スコープ管理情報テーブル1150の詳細について、
図6を参照しながら説明する。
図6は、スコープ管理情報テーブル1150の一例を示す図である。
【0056】
図6に示すスコープ管理情報テーブル1150に格納されるスコープ管理情報は、データ項目として、テナントIDと、サービスIDと、スコープと、事前設定フラグと、設定済フラグとを有する。
【0057】
テナントIDは、サービス提供システム10に予め設定されたテナントを識別する識別情報である。サービスIDは、外部サービスシステム30を識別する識別情報である。スコープは、当該外部サービスシステム30に認可を要求するスコープを示す情報である。事前設定フラグは、当該スコープを利用するために事前設定が必要か否かを示すフラグである。設定済フラグは、当該スコープに対する事前設定が完了しているか否かを示すフラグである。したがって、スコープ管理情報は、テナント及び外部サービスシステム30毎に、当該外部サービスシステム30に認可を要求するスコープと当該スコープの有効性を表す情報とが関連付けられた情報である。
【0058】
例えば、テナント「tenantA」における外部サービス「serviceA」のスコープ「write」は、事前設定フラグが「True」であり、設定済フラグが「False」である。これは、テナント「tenantA」では、外部サービス「serviceA」におけるスコープ「write」を利用するために、事前設定が必要であるが、その事前設定が完了していないことを示している。
【0059】
なお、テナントとは、サービス提供システム10のリソースを複数のアカウントで共有するための仕組みである。あるアカウントで作成されたユーザは、そのアカウントに対応するテナントに割り当てられたリソースのみへアクセス可能であり、異なるテナントに割り当てられたリソースへはアクセスできない。例えば、あるテナントにアプリケーションを追加することで、そのテナントに属するユーザは、そのアプリケーションを利用できるが、他のテナントに属するユーザは、そのアプリケーションを利用することができない。
【0060】
スコープ管理情報は、テナントにアプリケーションが追加された際に、そのアプリケーションで必要となる外部サービスシステム30のスコープを抽出することで、スコープ管理情報テーブル1150に追加される。この際、事前設定フラグは、後述するコンポーネント情報テーブル2000で当該スコープに設定された値が自動的に設定される。また、設定済フラグは一律で「False」が設定される。
【0061】
図5に戻って説明する。認可サービス部120は、機器20においてアプリ情報1000の外部サービスシステム30に対する認可に関する処理を行わせる。認可サービス部120は、認可アプリ提供部121と、認可アプリ122とを備える。認可アプリ提供部121は、ブラウザ210からの要求に応じて、当該ブラウザ210に認可アプリ122を提供(送信)する。
【0062】
なお、認可アプリ122は、例えば、JavaScript(登録商標)等で実現されるアプリケーションであり、認可アプリ122がブラウザ210上で実行されることにより、後述する認可処理部211が実現される。
【0063】
認証部130は、認可処理部211からの要求に応じて、OAuth登録情報記憶部160からOAuth登録情報を取得する。なお、OAuth登録情報とは、例えば、外部サービスシステム30における認可サーバURL等であり、情報処理システム1の管理者等により外部サービスシステム30毎に設定された情報である。OAuth登録情報の詳細については後述する。
【0064】
また、認証部130は、認可処理部211からの要求に応じて、外部サービスシステム30から認可トークンを取得する。そして、認証部130は、取得した認可トークンを認可トークン情報記憶部170に保存する。認可トークンの詳細については後述する。
【0065】
これにより、本実施形態におけるサービス提供システム10では、スコープ判断部114により決定されたスコープの認可トークンが保存される。このため、本実施形態におけるサービス提供システム10では、保存された認可トークンを用いて、外部サービスシステム30と連携した一連の処理により実現されるサービスを提供することができる。
【0066】
さらに、認証部130は、ブラウザ210からの要求に応じて、ユーザが入力した認証情報に基づいて当該ユーザの認証を行う。本実施形態の認証部130は、ユーザ情報テーブル1300を利用する。ここで、ユーザ情報テーブル1300の詳細について、
図7を参照しながら説明する。
図7は、ユーザ情報テーブル1300の一例を示す図である。
【0067】
図7に示すユーザ情報テーブル1300に格納されるユーザ情報は、データ項目として、ユーザIDと、ユーザ名と、テナントIDと、ユーザ種別とを有する。
【0068】
ユーザIDは、サービス提供システム10のユーザを識別する識別情報である。ユーザ名は、当該ユーザを表す名称である。ユーザ種別は、当該ユーザの種別を示す情報である。本実施形態におけるユーザ種別は、管理権限を有さない一般ユーザと、管理権限を有する管理者ユーザとを含む。したがって、ユーザ情報は、ユーザ毎に、当該ユーザが属するテナントと当該ユーザの権限とが関連付けられた情報である。
【0069】
図5に戻って説明する。ドキュメントサービス部140は、サービス提供システム10により提供されるサービスを実現するための一連の処理に含まれる一の処理を実現するプログラム(モジュール)群である。ドキュメントサービス部140には、例えば、電子ファイルに対してOCR処理を実行するOCR処理部141、電子ファイルを機器20が印刷可能な印刷データに変換する印刷変換部142等が含まれる。
【0070】
なお、ドキュメントサービス部140は、これら以外にも、例えば、電子ファイルの圧縮又は解凍するためのプログラム、言語の翻訳処理を行うためのプログラム等の各種のプログラムが含まれていてもよい。
【0071】
外部サービス連携部150は、ロジック処理部112及びデータI/F部113からの要求に応じて、外部サービスシステム30に対して、各種の処理の実行を要求する。
【0072】
ここで、本実施形態におけるサービス提供システム10は、外部サービスシステム30毎に、外部サービス連携部150を備える。すなわち、本実施形態におけるサービス提供システム10は、外部サービスシステム301に対して処理の実行を要求するための外部サービス連携部1501を備える。同様に、本実施形態におけるサービス提供システム10は、外部サービスシステム302に対して処理の実行を要求するための外部サービス連携部1502等を備える。
【0073】
このように、本実施形態におけるサービス提供システム10は、連携して処理を行う外部サービスシステム30毎に、それぞれ対応する外部サービス連携部150を備える。なお、以降では、複数の外部サービス連携部150について、各々を区別するときは、上記のように「外部サービス連携部1501」、「外部サービス連携部1502」等と添え字を用いて表す。
【0074】
外部サービス連携部150は、ロジック処理部112からの要求を受け付けるファイル処理部151と、データI/F部113からの要求を受け付けるデータ処理部152とを備える。
【0075】
ファイル処理部151は、外部サービスシステム30に保存されている電子ファイルに対する操作(例えば、取得、保存、編集等)を行うためのAPI(Application Programming Interface)が定義されたインターフェースを有する。
【0076】
データ処理部152は、外部サービスシステム30に保存されている電子ファイルの書誌情報等のメタデータ(例えば、ファイル一覧、フォルダ一覧等)を取得等するためのAPIが定義されたインターフェースを有する。
【0077】
なお、外部サービス連携部150の追加又は変更等は、外部サービスシステム30が提供するSDK(Software Development Kit)等を用いて行うことができる。
【0078】
OAuth登録情報記憶部160は、OAuth登録情報が格納されているOAuth登録情報テーブル1600を記憶する。ここで、OAuth登録情報テーブル1600の詳細について、
図8を参照しながら説明する。
図8は、OAuth登録情報テーブル1600の一例を示す図である。
【0079】
図8に示すOAuth登録情報テーブル1600に格納されるOAuth登録情報は、データ項目として、サービスIDと、クライアントIDと、クライアントシークレットと、認可サーバURLと、リダイレクト先URLとを有する。したがって、OAuth登録情報は、外部サービスシステム30毎に、OAuthの認可に用いるクライアントID、クライアントシークレット、認可サーバURL、及びリダイレクト先URLが関連付けられた情報である。
【0080】
認可トークン情報記憶部170は、認可トークン情報が格納されている認可トークン情報テーブル1700を記憶する。ここで、認可トークン情報テーブル1700の詳細について、
図9を参照しながら説明する。
図9は、認可トークン情報テーブル1700の一例を示す図である。
【0081】
図9に示す認可トークン情報テーブル1700に格納される認可トークン情報は、データ項目として、ユーザIDと、アプリIDと、サービスIDと、認可トークンと、スコープと、有効期限とを有する。アプリIDは、アプリ情報1000を識別する識別情報である。したがって、認可トークン情報は、ユーザ及びアプリ情報1000毎に、外部サービスシステム30の認可トークン、当該認可トークンのスコープ、及び当該認可トークンの有効期限が関連付けられた情報である。
【0082】
図5に戻って説明する。アプリ情報記憶部180は、機器20にサービスを提供するためのアプリ情報1000を記憶する。アプリ情報1000には、機器20にアプリ画面を表示させるための画面定義1100と、機器20に提供するサービスを実現するための一連の処理を示す処理内容1200とが含まれる。
【0083】
アプリ情報1000には、当該アプリ情報1000を識別するためのアプリIDが関連付けられている。本実施形態では、外部サービスAと連携したサービスを提供するためのアプリ情報1000を「アプリ情報1000A」とし、当該アプリ情報1000AのアプリIDを「app001」とする。
【0084】
なお、本実施形態では、アプリ情報1000には、一の画面定義1100と、一の処理内容1200とが含まれるものとして説明する。ただし、これに限られず、アプリ情報1000には、複数の画面定義や複数の処理内容が含まれていてもよい。
【0085】
次に、本実施形態におけるロジック処理部112の詳細な機能構成について、
図10を参照しながら説明する。
図10は、本実施形態におけるロジック処理部の一例の機能構成を示す図である。
【0086】
本実施形態におけるロジック処理部112は、フロー実行部401と、コンポーネント管理部402と、コンポーネント群403とを備える。また、本実施形態におけるロジック処理部112は、コンポーネント情報テーブル2000を利用する。
【0087】
フロー実行部401は、ブラウザ210から処理の実行要求を受け付けると、アプリ管理部111を介して、アプリ情報1000に含まれる処理内容1200を取得する。そして、フロー実行部401は、取得した処理内容1200に基づいてコンポーネント群403に含まれるいずれかのコンポーネントに対して処理の実行を要求する。
【0088】
なお、コンポーネントとは、処理内容1200により示される一連の処理に含まれる一の処理を実行するためのモジュール等であり、例えばクラスや関数等で定義される。コンポーネントは、1以上のオペレーションを含んでおり、上記の一の処理はコンポーネントがオペレーションを実行することにより実現される。すなわち、処理内容1200により示される一連の処理は、コンポーネントが実行するオペレーションにより実現される。コンポーネントは、上記の一の処理を実行するためのオペレーションを複数含むこともある。
【0089】
コンポーネント管理部402は、フロー実行部401からの要求に応じて、コンポーネントの生成を行う。なお、コンポーネントの生成とは、例えばクラスで定義されたコンポーネントを、メモリ(例えばRAM503)上に展開することを意味する。
【0090】
また、コンポーネント管理部402は、スコープ判断部114からの要求に応じて、コンポーネント情報テーブル2000に格納されているコンポーネント情報を返信する。ここで、コンポーネント情報テーブル2000の詳細について、
図11を参照しながら説明する。
図11は、コンポーネント情報テーブル2000の一例を示す図である。
【0091】
図11に示すコンポーネント情報テーブル2000に格納されるコンポーネント情報は、データ項目として、コンポーネントIDと、コンポーネント名と、オペレーションと、サービスIDと、スコープと、事前設定フラグとを有する。
【0092】
コンポーネントIDは、当該コンポーネントを識別する識別情報である。オペレーションは、当該コンポーネントに含まれるオペレーションを示す情報である。スコープは、当該オペレーションを実行するために必要なスコープを示す情報である。したがって、コンポーネント情報は、コンポーネントのオペレーション毎に、当該オペレーションを実行するために必要な外部サービスシステム30のスコープと、当該スコープが事前設定を必要とするか否かを示す情報とが関連付けられた情報である。
【0093】
例えば、コンポーネント「外部サービスA連携」のオペレーション「uploadFile」には、サービスID「serviceA」に対応する外部サービスシステム301におけるスコープ「write」が関連付けられている。これは、コンポーネント「外部サービスA連携」が有するオペレーション「uploadFile」の処理を実行するためには、外部サービスシステム301の認可トークンのスコープが「write」である必要があることを示している。また、外部サービスシステム301の認可トークンのスコープ「write」には事前設定フラグ「True」が関連付けられている。これは、外部サービスシステム301のスコープ「write」を利用するために事前設定が必要であることを示している。
【0094】
なお、PDF変換コンポーネントやバーコード認識コンポーネントには、スコープが設定されていない。これは、これらのコンポーネントが外部サービスシステム30のリソースを利用しない、又は認可の必要がないリソースを利用するためである。
【0095】
図10に戻って説明する。コンポーネント群403は、コンポーネントの集合である。コンポーネント群403には、外部サービスシステム30
1(外部サービスA)と連携した処理を行うための連携Aコンポーネント411、外部サービスAの認可トークンを取得するための認証Aコンポーネント412が含まれる。また、コンポーネント群403には、電子ファイルをPDF形式に変換するためのPDF変換コンポーネント413が含まれる。
【0096】
なお、コンポーネント群403には、これら以外にも、例えば、外部サービスシステム302(外部サービスB)と連携した処理を行うための連携Bコンポーネント、又は電子ファイルにOCR処理を実行するためのOCRコンポーネント等が含まれる。
【0097】
≪機器20の機能構成≫
図4に示されるように、機器20は、CPU901により実行されるブラウザ210を備える。機器20のユーザは、ブラウザ210を介して、サービス提供システム10により提供されるサービスを利用することができる。
【0098】
このように、本実施形態における機器20は、ブラウザ210が搭載されていればよい。したがって、本実施形態における情報処理システム1では、サービス提供システム10により提供されるサービスを機器20が利用するための専用のアプリケーションを開発等する必要がない。
【0099】
ブラウザ210は、認可処理部211を備える。認可処理部211は、認可アプリ提供部121を介して取得された認可アプリ122がブラウザ210上で実行されることにより実現される。
【0100】
認可処理部211は、ユーザの操作に応じて、アプリ情報1000の外部サービスシステム30に対するOAuthの認可(以降、単に「認可」とも表す。)に関する処理を行う。
【0101】
<情報処理システム1の処理手順>
次に、本実施形態における情報処理システム1が実行する情報処理方法の詳細について説明する。以下では、本実施形態における情報処理システム1が実行する情報処理方法を、認証連携処理と事前設定処理とに分けて説明する。
【0102】
≪認証連携処理≫
まず、ユーザがアプリ情報1000を認可する認証連携処理について、
図12を参照しながら説明する。
図12は、本実施形態における情報処理システム1が実行する認証連携処理の一例を示すシーケンス図である。
【0103】
ステップS1001において、ユーザは、ブラウザ210を介して、サービス提供システム10へログインする操作を行う。ブラウザ210は、ユーザの操作に応じて、当該ユーザの認証を認証部130に要求する。当該認証要求には、ユーザがブラウザ210に入力した認証情報が含まれる。認証情報は、例えば、テナントID、ユーザID及びパスワードである。また、認証情報は、例えば、ユーザIDとしてメールアドレスを用いてもよい。どのような情報を認証情報として送信するかは、事前に管理者が認証部130に設定すればよい。
【0104】
認証部130は、ブラウザ210から認証要求を受け取ると、当該認証要求に含まれる認証情報に基づいて、ユーザの認証を実行する。認証に成功した場合、認証部130は、認証結果をブラウザ210に返信する。当該認証結果には、当該ユーザが属するテナントを識別するテナントID及び当該ユーザの種別を示す情報が含まれる。以降では、認証部130がユーザの認証に成功したものとして説明を続ける。また、当該ユーザが属するテナントは「tenantA」であるものとする。
【0105】
ステップS1002において、ユーザは、ブラウザ210を介して、アプリ情報1000を認可するための操作を行う。すると、ブラウザ210は、認可アプリの取得を認可アプリ提供部121に要求する。そして、認可アプリ提供部121は、認可アプリ122をブラウザ210に返信する。
【0106】
ステップS1003において、ブラウザ210は、取得した認可アプリ122を当該ブラウザ210上で実行する。これにより、認可処理部211が生成される。
【0107】
ステップS1004において、認可処理部211は、アプリ一覧の取得をアプリ管理部111に要求する。当該取得要求には、当該ユーザが属するテナントIDが含まれる。そして、アプリ管理部111は、当該テナントで利用可能なアプリ一覧を返信する。なお、アプリ一覧とは、アプリ情報記憶部180に記憶されているアプリ情報1000の書誌情報の一覧であり、例えば、アプリ情報1000により提供されるサービスのサービス名、アプリID等の一覧である。
【0108】
ステップS1005において、ブラウザ210は、アプリ一覧を受け取ると、例えば
図13に示す認可画面4000を表示させる。ここで、認可画面4000には、アプリ管理部111から受け取ったアプリ一覧に基づいて表示されるアプリケーション一覧4001が含まれる。また、認可画面4000には、アプリケーション一覧4001から選択されたアプリケーションを外部サービス30で認可するための認可ボタン4002が含まれる。
【0109】
アプリケーション一覧4001には、アプリ情報1000のアプリケーション名の一覧が表示されている。例えば、アプリケーション一覧4001には、アプリ情報1000Aのアプリケーション名「Scan to 外部サービスA」等が表示されている。
【0110】
図12に戻って説明する。ステップS1006において、ユーザは、
図13に示す認可画面4000において、アプリケーション一覧4001から認可対象のアプリケーションを選択し、認可ボタン4002を押下する操作を行う。すると、ブラウザ210は、当該操作を受け付けて、選択されたアプリケーションの認可を認可処理部211に要求する。
【0111】
なお、認可要求には、ユーザが属するテナントのテナントIDと、ユーザによりアプリケーション一覧4001から選択されたアプリケーションのアプリIDと、当該アプリケーションで連携する選択された外部サービス30のサービスIDとが含まれる。
【0112】
以降では、ユーザによりアプリケーション一覧4001から「Scan to 外部サービスA」が選択され、認可ボタン4002が押下されたものとする。この場合、認可要求には、当該ユーザのテナントID「tenantA」と、アプリ情報1000AのアプリID「app001」と、外部サービスシステム301のサービスID「serviceA」とが含まれる。
【0113】
なお、アプリケーション一覧4001において、複数のアプリケーションを選択可能としてもよい。
図13に示した認可画面4000では、アプリケーション一覧4001はラジオボタンでアプリケーションを選択する形式としたが、例えばチェックボックスで1以上のアプリケーションを選択する形式としてもよい。
【0114】
認可処理部211は、認可要求を受け取ると、スコープの取得をスコープ判断部114に要求する。なお、当該取得要求には、テナントID「tenantA」と、アプリID「app001」と、外部サービスシステム301のサービスID「serviceA」とが含まれる。
【0115】
ステップS1007において、スコープ判断部114は、スコープの取得要求を受け取ると、処理内容の取得をアプリ管理部111に要求する。なお、処理内容の取得要求には、アプリID「app001」が含まれる。
【0116】
アプリ管理部111は、処理内容の取得要求を受け取ると、当該取得要求に含まれるアプリIDのアプリ情報1000に含まれる処理内容1200を返信する。すなわち、アプリ管理部111は、アプリID「app001」のアプリ情報1000Aに含まれる処理内容1200Aを返信する。
【0117】
ステップS1008において、スコープ判断部114は、コンポーネント情報テーブル2000の取得をロジック処理部112に要求する。当該取得要求には、処理内容1200で実行されるコンポーネントを表すコンポーネントIDが含まれる。そして、ロジック処理部112は、取得要求に含まれるコンポーネントIDに関連付けられたコンポーネント情報テーブル2000を返信する。
【0118】
ステップS1009において、スコープ判断部114は、スコープ管理情報テーブル1150の取得をスコープ管理部115に要求する。当該取得要求には、当該ユーザのテナントIDと、ステップS1008で取得したコンポーネント情報テーブル2000に含まれるサービスID及びスコープが含まれる。そして、スコープ管理部115は、取得要求に含まれるテナントIDとサービスIDとスコープとに関連付けられたスコープ管理情報テーブル1150を返信する。
【0119】
ステップS1010において、スコープ判断部114は、ステップS1007で取得した処理内容1200と、ステップS1008で取得したコンポーネント情報テーブル2000と、ステップS1009で取得したスコープ管理情報テーブル1150とに基づいて、スコープを決定する。スコープ判断部114は、処理内容1200により示される一連の処理を実行する各オペレーションに設定されたスコープをコンポーネント情報テーブル2000から取得し、取得したスコープを統合して当該アプリ情報1000のスコープを決定する。
【0120】
スコープ判断部114は、コンポーネント情報テーブルから取得したスコープの和を取ることでスコープを統合する。例えば、あるアプリケーションが、「scopeA」、「scopeB」及び「scopeC」を必要とする第一のオペレーションと、「scopeB」、「scopeC」及び「scopeD」を必要とする第二のオペレーションとを実行するものとする。この場合、スコープ判断部114は、それぞれのオペレーションで必要とするスコープの和「scopeA, scopeB, scopeC, scopeD」を、そのアプリケーションのスコープとして決定する。
【0121】
続いて、スコープ判断部114は、当該アプリ情報1000のスコープとして決定したスコープの有効性を判定する。本実施形態では、有効性の判定は、スコープ管理情報テーブル1150において当該スコープに関連付けられた事前設定フラグ及び設定済フラグに基づいて行う。事前設定フラグが、事前設定が必要であることを示し、設定済フラグが、事前設定が完了していることを示す場合、スコープ判断部114は、当該スコープを有効と判定する。また、事前設定フラグが、事前設定が不要であることを示す場合、スコープ判断部114は、当該スコープを有効と判定する。一方、事前設定フラグが、事前設定が必要であることを示し、設定済フラグが、事前設定が完了していないことを示す場合、スコープ判断部114は、当該スコープを無効と判定する。
【0122】
スコープ判断部114は、当該アプリ情報1000のスコープがすべて有効と判定された場合、当該スコープを有効と判定する。一方、当該アプリ情報1000のスコープのいずれかが無効と判定された場合、当該スコープを無効と判定する。
【0123】
スコープ判断部114は、アプリ情報1000のスコープを有効と判定した場合、当該スコープを認可処理部211に返信する。一方、スコープ判断部114は、アプリ情報1000のスコープを無効と判定した場合、処理を中止する。この場合、アプリ情報1000のスコープを無効と判定したことを認可処理部211へ通知してもよい。以降では、スコープ判断部114は、アプリ情報1000のスコープを有効と判定したものとして説明を続ける。スコープ判断部114が、アプリ情報1000のスコープを無効と判定したことを通知する手順については後述する。
【0124】
スコープ判断部114がスコープを決定する処理を、
図14を参照しながら具体的に説明する。
図14は、本実施形態におけるサービス提供システム10が提供するサービスの一例を示す図である。
【0125】
図14の例では、アプリケーション1には、フロー1-1及びフロー1-2が含まれ、アプリケーション2には、フロー2-1及びフロー2-2が含まれる。
【0126】
アプリケーション1に含まれるフロー1-1は、コンポーネント「外部サービスA連携」のオペレーション「getFiles」とコンポーネント「外部サービスA連携」のオペレーション「downloadFiles」とを順に実行する。フロー1-2は、コンポーネント「バーコード認識」のオペレーション「recognize」とコンポーネント「外部サービスA連携」のオペレーション「downloadFiles」とコンポーネント「PDF変換」のオペレーション「convert」とを順に実行する。
【0127】
図11に示したコンポーネント情報テーブル2000の例によれば、オペレーション「getFiles」は外部サービス「serviceA」のスコープ「read」を必要とする。オペレーション「downloadFile」は外部サービス「serviceA」のスコープ「read」を必要とする。オペレーション「recognize」及び「convert」は外部サービスとの連携を行わない。したがって、アプリケーション1に対する外部サービス「serviceA」のスコープは「read」となる。
【0128】
図6に示したスコープ管理情報テーブル1150の例によれば、外部サービス「serviceA」のスコープ「read」は、事前設定フラグが「False」に設定されているため、外部サービス「serviceA」のスコープ「read」は、有効と判定される。したがって、スコープ判断部114は、アプリケーション1に対する外部サービス「serviceA」のスコープ「read」を有効と判定する。
【0129】
また、アプリケーション2に含まれるフロー2-1は、コンポーネント「外部サービスB連携」のオペレーション「getFolders」とコンポーネント「外部サービスB連携」のオペレーション「createFolders」とを順に実行する。フロー2-2は、コンポーネント「外部サービスB連携」のオペレーション「getFolders」とコンポーネント「外部サービスB連携」のオペレーション「deleteFolders」とを順に実行する。
【0130】
図11に示したコンポーネント情報テーブル2000の例によれば、オペレーション「getFolders」は外部サービス「serviceB」のスコープ「scopeC」を必要とする。オペレーション「createFolders」は外部サービス「serviceB」のスコープ「scopeA」を必要とする。オペレーション「deleteFolders」は外部サービス「serviceB」のスコープ「scopeB」を必要とする。したがって、アプリケーション2に対する外部サービス「serviceB」のスコープは「scopeA, scopeB, scopeC」となる。
【0131】
図6に示したスコープ管理情報テーブル1150の例によれば、外部サービス「serviceB」のスコープ「scopeA」は、事前設定フラグが「True」かつ設定済フラグが「True」に設定されているため、外部サービス「serviceB」のスコープ「scopeA」は有効と判定される。外部サービス「serviceB」のスコープ「scopeB」は、事前設定フラグが「True」かつ設定済フラグが「False」に設定されているため、外部サービス「serviceB」のスコープ「scopeB」は無効と判定される。外部サービス「serviceB」のスコープ「scopeC」は、事前設定フラグが「False」に設定されているため、外部サービス「serviceB」のスコープ「scopeC」は有効と判定される。したがって、スコープ判断部114は、アプリケーション2に対する外部サービス「serviceB」のスコープ「scopeA, scopeB, scopeC」を無効と判定する。
【0132】
図12に戻って説明する。ステップS1011において、認可処理部211は、スコープ判断部114が決定したスコープを受け取ると、OAuth登録情報の取得を認証部130に要求する。なお、当該取得要求には、ユーザにより選択されたアプリケーション(アプリID「app001」のアプリ情報1000A)が連携して処理を行う外部サービスシステム30
1のサービスID「serviceA」が含まれる。
【0133】
認証部130は、OAuth登録情報の取得要求を受け取ると、当該取得要求に含まれるサービスID「serviceA」に対応するOAuth登録情報をOAuth登録情報テーブル1600から取得して、認可処理部211に返信する。
【0134】
認可処理部211は、OAuth登録情報を受け取ると、当該OAuth登録情報に含まれる認可サーバURLにブラウザ210をリダイレクトさせる。ここで、認可サーバURLとは、外部サービスシステム30に対する認証を行うための認証画面(例えば、ログイン画面)等のURLである。
【0135】
ステップS1012において、ユーザは、認証画面において、認証を行うための認証情報(例えば、外部サービスシステム301の利用者ID及びパスワード)を入力して認証を行う。すると、認証部130は、認証を外部サービスシステム301に要求する。なお、当該認証要求には、認証情報が含まれる。
【0136】
外部サービスシステム301は、認証要求を受け取ると、当該認証要求に対する認証結果を返信する。以降では、外部サービスシステム301は、認証成功を示す認証結果を返信したものとして説明を続ける。
【0137】
ステップS1013において、認可処理部211は、認証成功を示す認証結果を受け取ると、アプリ情報1000Aの認可を外部サービスシステム301に要求する。なお、当該認可要求には、ステップS1010でスコープ判断部114から返信されたスコープと、ステップS1011で取得したOAuth登録情報に含まれるクライアントID及びリダイレクト先URLとが含まれる。
【0138】
外部サービスシステム301は、OAuthの認可要求を受け取ると、当該認可要求に対する認可応答を示す認可コードを発行し、ブラウザ210に返信するとともに、当該ブラウザ210をリダイレクト先URLにリダイレクトさせる。
【0139】
なお、上記のステップS1012で認証が成功した後、ブラウザ210に、例えば
図15に示す確認画面5000を表示させてもよい。
図15に示す確認画面5000は、サービス提供システム10が該当の外部サービスシステム30においてスコープで設定された範囲内でリソースを利用することを、ユーザに確認させるための画面である。そして、
図15に示す確認画面5000において、ユーザにより許可ボタン5001が押下された場合に、ステップS1013における認可要求を該当の外部サービスシステム30に送信するようにしてもよい。
【0140】
図12に戻って説明する。ステップS1014において、認可処理部211は、ステップS1013で取得した認可コードを認証部130に送信する。また、このとき、認可処理部211は、サービスID「serviceA」も認証部130に送信する。
【0141】
ステップS1015において、認証部130は、認可コード及びサービスIDを受け取ると、当該サービスID「serviceA」により示される外部サービスシステム301に認可トークンの取得を要求する。なお、認可トークンの取得要求には、上記の認可コード、OAuth登録情報においてサービスIDに対応付けられたクライアントID及びクライアントシークレットが含まれる。
【0142】
外部サービスシステム301は、認可トークンの取得要求を受け取ると、認可トークンを発行し、当該認可トークン及び当該認可トークンの有効期限を返信する。なお、このとき、外部サービスシステム301は、認可トークンの有効期限が経過した場合に認可トークンを再取得するためのリフレッシュトークンを併せて返信してもよい。
【0143】
ステップS1016において、認証部130は、認可トークン及び有効期限を受け取ると、当該認可トークン及び有効期限を認可トークン情報テーブル1700に格納する。このとき、認証部130は、認可トークン及び有効期限を、ユーザID、認可対象のアプリ情報1000のアプリID、連携して処理を行う外部サービスシステム30のサービスID、及びスコープ判断部114により決定されたスコープに関連付けて格納する。
【0144】
≪事前設定処理≫
次に、ユーザがアプリ情報1000で必要とするスコープの事前設定を行う処理について、
図16を参照しながら説明する。
図16は、本実施形態における情報処理システム1が実行する事前設定処理の一例を示すシーケンス図である。
【0145】
ステップS1101において、ユーザは、アプリ選択画面を開く操作を行う。本実施形態におけるアプリ選択画面には、アプリを実行するための画面、アプリの設定を管理(参照又は編集)するための画面、及びアプリの認証連携を行うための画面等が含まれる。
【0146】
ブラウザ210は、ユーザの操作に応じて、アプリ一覧の取得をアプリ管理部111に要求する。当該取得要求には、当該ユーザのテナントIDが含まれる。そして、アプリ管理部111は、当該テナントで利用可能なアプリ一覧を返信する。ブラウザ210は、アプリ一覧を受け取ると、受け取ったアプリ一覧をアプリ選択画面に表示する。
【0147】
例えば、ブラウザ210は、
図17に示すアプリ選択画面6000にアプリ一覧を表示する。
図17に示すアプリ選択画面6000は、機器20が画像形成装置である場合に操作パネル940に表示される、一般ユーザがアプリを実行するための画面もしくは管理者ユーザがアプリの設定を管理するための画面である。
【0148】
アプリ選択画面6000には、アプリケーション一覧6001が含まれる。アプリケーション一覧6001は、例えば、アプリ情報1000のアプリケーション名を表示する複数のボタンから構成される。アプリケーション一覧6001において、ユーザが実行したいアプリケーション名のボタンを押下すると、当該アプリケーションが開かれる。
【0149】
また、例えば、ブラウザ210は、
図18に示すアプリ選択画面6100にアプリ一覧を表示する。
図18に示すアプリ選択画面6100は、機器20が情報処理装置である場合にディスプレイ506に表示される、一般ユーザがアプリの設定を参照するための画面である。
【0150】
アプリ選択画面6100には、アプリケーション一覧6101が含まれる。アプリケーション一覧6101は、アプリ情報1000のアプリケーション名を表示する複数のボタンから構成される。アプリケーション一覧6101において、一般ユーザが設定を参照したいアプリケーション名のボタンを押下すると、当該アプリケーションのアプリ設定画面が開かれる。
【0151】
また、例えば、ブラウザ210は、
図19に示すアプリ選択画面6200にアプリ一覧を表示する。
図19に示すアプリ選択画面6200は、機器20が情報処理装置である場合にディスプレイ506に表示される、管理者ユーザがアプリの設定を管理するための画面である。
【0152】
アプリ選択画面6200には、アプリケーション一覧6201が含まれる。アプリケーション一覧6201は、アプリ情報1000のアプリケーション名を表示する複数のボタンから構成される。アプリケーション一覧6201において、管理者ユーザが設定を管理したいアプリケーション名のボタンを押下すると、当該アプリケーションのアプリ設定画面が開かれる。
【0153】
図16に戻って説明する。ステップS1102において、ユーザは、ブラウザ210を介して、アプリ情報1000を開くための操作を行う。アプリ情報1000を開くための操作には、当該アプリ情報1000を実行するための操作、当該アプリ情報1000の設定を管理するための操作、及び当該アプリ情報1000を認可するための操作等が含まれる。ここでは、アプリID「app001」のアプリ情報1000Aを参照するための操作が行われたものする。
【0154】
ステップS1103において、ブラウザ210は、スコープの取得をスコープ判断部114に要求する。なお、当該取得要求には、テナントID「tenantA」と、アプリID「app001」と、外部サービスシステム301のサービスID「serviceA」とが含まれる。
【0155】
ステップS1104において、スコープ判断部114は、スコープの取得要求を受け取ると、処理内容の取得をアプリ管理部111に要求する。なお、処理内容の取得要求には、アプリID「app001」が含まれる。
【0156】
アプリ管理部111は、処理内容の取得要求を受け取ると、当該取得要求に含まれるアプリIDのアプリ情報1000に含まれる処理内容1200を返信する。すなわち、アプリ管理部111は、アプリID「app001」のアプリ情報1000Aに含まれる処理内容1200Aを返信する。
【0157】
ステップS1105において、スコープ判断部114は、コンポーネント情報テーブル2000の取得をロジック処理部112に要求する。当該取得要求には、処理内容1200で実行されるコンポーネントを表すコンポーネントIDが含まれる。そして、ロジック処理部112は、取得要求に含まれるコンポーネントIDに関連付けられたコンポーネント情報テーブル2000を返信する。
【0158】
ステップS1106において、スコープ判断部114は、スコープ管理情報テーブル1150の取得をスコープ管理部115に要求する。当該取得要求には、当該ユーザのテナントIDと、ステップS1105で取得したコンポーネント情報テーブル2000に含まれるサービスID及びスコープが含まれる。そして、スコープ管理部115は、取得要求に含まれるテナントIDとサービスIDとスコープとに関連付けられたスコープ管理情報テーブル1150を返信する。
【0159】
ステップS1107において、スコープ判断部114は、ステップS1104で取得した処理内容1200と、ステップS1105で取得したコンポーネント情報テーブル2000と、ステップS1106で取得したスコープ管理情報テーブル1150とに基づいて、当該アプリ情報1000のスコープの有効性を判定する。有効性の判定方法は、認証連携処理のステップS1010と同様である。スコープ判断部114は、アプリ情報1000のスコープに関する判定結果をブラウザ210に返信する。
【0160】
ステップS1108において、ブラウザ210は、受け取った判定結果がアプリ情報1000のスコープが無効であること示す場合、その旨をユーザに通知する。本実施形態では、ブラウザ210において、通知画面を表示することで、ユーザに通知する。
【0161】
本実施形態における通知画面は、通知先のユーザの権限及び開いているアプリ選択画面によって異なる。通知先のユーザとは、ブラウザ210においてサービス提供システム10にログインしているユーザである。ユーザの権限は、認証部130がブラウザ210へ返信した認証結果に含まれるユーザの権限を示す情報から判定できる。
【0162】
通知先のユーザが管理権限を有さない一般ユーザである場合、通知画面において管理権限を有する管理者ユーザへ事前設定を依頼するための連絡手段を提示する。通知先のユーザが管理権限を有する管理者ユーザである場合、通知画面において事前設定を行う手順を参照するための確認手段を提示する。
【0163】
通知先のユーザが一般ユーザであり、
図17に示したアプリ選択画面6000を開いている場合、ブラウザ210は、例えば
図20に示す通知画面6010を表示する。
図20に示されるように、通知画面6010は、アプリ情報1000の事前設定が完了していない旨を通知するメッセージ6011を表示し、戻るボタン6012と送信ボタン6013とを備える。
【0164】
ユーザが戻るボタン6012を押下すると、アプリ選択画面6000に戻る。ユーザが送信ボタン6013を押下すると、管理権限を有する管理者ユーザへ設定を依頼するメッセージが電子メール等で送信され、アプリ選択画面6000に戻る。
【0165】
通知先のユーザが一般ユーザであり、
図18に示したアプリ選択画面6100を開いている場合、ブラウザ210は、例えば
図21に示す通知画面6110を表示する。
図21に示されるように、通知画面6110は、アプリ情報1000の事前設定が完了していない旨を通知するメッセージ6111を表示し、戻るボタン6112と送信ボタン6113とを備える。通知画面6110は、アプリの設定を管理するためのアプリ設定画面6120の前面にポップアップ表示される。
【0166】
ユーザが戻るボタン6112を押下すると、通知画面6110及びアプリ設定画面6120が閉じ、アプリ選択画面6100に戻る。ユーザが送信ボタン6113を押下すると、管理権限を有する管理者ユーザへ設定を依頼するメッセージが電子メール等で送信され、アプリ選択画面6100に戻る。
【0167】
通知先のユーザが管理者ユーザであり、
図17に示したアプリ選択画面6000を開いている場合、ブラウザ210は、例えば
図22に示す通知画面6020を表示する。
図22に示されるように、通知画面6020は、アプリ情報1000の事前設定が必要である旨を通知するメッセージ6021を表示し、戻るボタン6022と設定完了ボタン6023とマニュアルリンク6024とを備える。
【0168】
ユーザが戻るボタン6022を押下すると、アプリ選択画面6000に戻る。ユーザが設定完了ボタン6023を押下すると、スコープ管理情報に事前設定が完了したことを登録する処理が実行され、
図23に示すアプリ設定画面6030に遷移する。ユーザがマニュアルリンク6024を押下すると、事前設定の手順が記載されたマニュアル画面に遷移する。
【0169】
通知先のユーザが管理者ユーザであり、
図19に示したアプリ選択画面6200を開いている場合、ブラウザ210は、例えば
図24に示す通知画面6210を表示する。
図24に示されるように、通知画面6210は、アプリ情報1000の事前設定が必要である旨を通知するメッセージ6211を表示し、戻るボタン6212と設定完了ボタン6213とマニュアルリンク6214とを備える。通知画面6210は、アプリの設定を管理するためのアプリ設定画面6220の前面にポップアップ表示される。
【0170】
ユーザが戻るボタン6212を押下すると、通知画面6210が閉じ、アプリ選択画面6200に戻る。ユーザが設定完了ボタン6213を押下すると、スコープ管理情報に事前設定が完了したことを登録する処理が実行され、
図25に示すアプリ設定画面6220に遷移する。ユーザがマニュアルリンク6024を押下すると、事前設定の手順が記載されたマニュアルが別画面等で開く。
【0171】
図16に戻って説明する。ステップS1109において、管理者ユーザは、ブラウザ210を介して、外部サービスシステム30に対してアプリ情報1000のスコープで必要な事前設定を行うための操作を行う。そして、外部サービスシステム30は、事前設定の成否を表す設定結果をブラウザ210に返信する。
【0172】
ブラウザ210は、外部サービスシステム30から設定結果を受け取ると、受け取った設定結果に応じて、通知画面に設定結果を表示する。以降では、外部サービスシステム30が事前設定成功を表す設定結果を送信したものとして説明を続ける。
【0173】
ステップS1110において、管理者ユーザは、ブラウザ210を介して、アプリ情報1000のスコープに対する事前設定が完了したことを登録するための操作を行う。管理者ユーザは、例えば、
図22に示した設定完了ボタン6023(又は
図24に示した設定完了ボタン6213)を押下する。
【0174】
すると、ブラウザ210は、事前設定完了の登録をスコープ管理部115へ要求する。なお、当該登録要求には、テナントID「tenantA」と、アプリID「app001」と、外部サービスシステム301のサービスID「serviceA」とが含まれる。
【0175】
ステップS1111において、スコープ管理部115は、事前設定完了の登録要求を受け取ると、処理内容の取得をアプリ管理部111に要求する。なお、処理内容の取得要求には、アプリID「app001」が含まれる。
【0176】
アプリ管理部111は、処理内容の取得要求を受け取ると、当該取得要求に含まれるアプリIDのアプリ情報1000に含まれる処理内容1200を返信する。すなわち、アプリ管理部111は、アプリID「app001」のアプリ情報1000Aに含まれる処理内容1200Aを返信する。
【0177】
ステップS1112において、スコープ管理部115は、コンポーネント情報テーブル2000の取得をロジック処理部112に要求する。当該取得要求には、処理内容1200で実行されるコンポーネントを表すコンポーネントIDが含まれる。そして、ロジック処理部112は、取得要求に含まれるコンポーネントIDに関連付けられたコンポーネント情報テーブル2000を返信する。
【0178】
ステップS1113において、スコープ管理部115は、ステップS1111で取得した処理内容1200と、ステップS1112で取得したコンポーネント情報テーブル2000とに基づいて、スコープ管理情報テーブル1150に格納されたスコープ管理情報を更新する。すなわち、スコープ管理部115は、当該アプリ情報1000で必要とされるスコープに対応するスコープ管理情報において、事前設定フラグが「True」かつ設定済フラグが「False」であるものに対して、設定済フラグを「True」に更新する。
【0179】
そして、スコープ管理部115は、登録の成否を表す登録結果をブラウザ210に返信する。ブラウザ210は、スコープ管理部115から受け取った登録結果を表示する。
【0180】
<第1実施形態の効果>
第1実施形態における情報処理システム1は、外部サービスと連携した処理を行うアプリケーションで必要となるスコープの有効性を判定するための情報を保持し、すべてのスコープが有効と判定されたときのみ外部サービスシステム30に認可を要求する。これにより、外部サービスシステム30において無効なスコープに対して認可を要求することで、当該外部サービスシステム30と連携する他のアプリケーションまで連携に失敗し利用できなくなる事態を避けることができる。
【0181】
また、第1実施形態における情報処理システム1は、アプリケーションで必要となるスコープに無効と判定されたものがある場合、その旨をユーザに通知する。これにより、ユーザは外部サービスの認可が行われていないことを認識することができ、早期の問題解決に繋げることができる。
【0182】
さらに、第1実施形態における情報処理システム1は、ユーザの権限に応じて、通知内容を変更する。例えば、管理権限がない一般ユーザに対しては、管理権限がある管理者ユーザへの連絡手段を提示し、管理権限がある管理者ユーザに対しては、事前設定を行う手順の確認手段を提示する。これにより、通知を受けたユーザが適切に問題解決のための行動を取ることができる。
【0183】
[第2実施形態]
第1実施形態では、スコープ管理情報テーブル1150が事前設定フラグ及び設定済フラグを有しており、スコープ判断部114は、事前設定フラグ及び設定済フラグを参照することで、スコープの有効性を判定した。第2実施形態では、外部サービスシステム30がAPIを介してスコープの有効性を判定するための情報を参照できる機能を有しているものとし、スコープ判断部114は、当該APIを介して取得した情報に基づいて、スコープの有効性を判定する。
【0184】
本実施形態におけるスコープ管理部115は、ステップS1009において、スコープ判断部114からスコープ管理情報テーブル1150の取得要求を受け取ると、外部サービスシステム30からAPIを介して、当該スコープが事前設定を必要とするか否かを示す情報及び当該事前設定が完了しているか否かを示す情報を取得する。
【0185】
そして、スコープ管理部115は、APIを介して外部サービスシステム30から取得した情報に基づいて、スコープ管理情報の事前設定フラグ及び設定済フラグを設定し、スコープ判断部114へ返信する。
【0186】
本実施形態におけるスコープ判断部114は、ステップS1010において、外部サービスシステム30からAPIを介して取得した情報を用いて生成されたスコープ管理情報テーブル1150に基づいて、スコープの有効性を判定する。
【0187】
<第2実施形態の効果>
第2実施形態における情報処理システム1によれば、スコープの有効性を判定するための情報を外部サービスシステム30からリアルタイムに取得できる。そのため、管理者ユーザが事前設定作業を完了したが、設定済フラグが設定されていないことで当該スコープの認可を行えない状況を防止することができる。
【0188】
また、管理者ユーザが事前設定作業を完了した後に設定済フラグを設定するまでのタイムラグが発生しないため、管理者ユーザが事前設定作業を完了すれば、即時に当該スコープの認可が可能となる。
【0189】
例えば、管理者ユーザが事前作業を完了したが、通知画面の設定完了ボタンを押下し忘れた場合には、事前設定作業が完了しているにも関わらず設定済フラグが設定されていない状況が起こり得る。本実施形態によれば、このような場合であっても、外部サービスシステム30から設定状態を確実に取得することができる。
【0190】
[補足]
上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP(digital signal processor)、FPGA(field programmable gate array)や従来の回路モジュール等の機器を含むものとする。
【0191】
実施例に記載された装置群は、本明細書に開示された実施形態を実施するための複数のコンピューティング環境のうちの1つを示すものにすぎない。ある実施形態では、サービス提供システム10は、サーバクラスタといった複数のコンピューティングデバイスを含む。複数のコンピューティングデバイスは、ネットワークや共有メモリなどを含む任意のタイプの通信リンクを介して互いに通信するように構成されており、本明細書に開示された処理を実施する。
【0192】
以上、本発明の実施の形態について詳述したが、本発明はこれらの実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形又は変更が可能である。
【符号の説明】
【0193】
1 情報処理システム
10 サービス提供システム
20 機器
30 外部サービスシステム
110 サービス処理部
111 アプリ管理部
112 ロジック処理部
113 データI/F部
114 スコープ判断部
115 スコープ管理部
120 認可サービス部
130 認証部
140 ドキュメントサービス部
141 OCR処理部
142 印刷変換部
150 外部サービス連携部
151 ファイル処理部
152 データ処理部
160 OAuth登録情報記憶部
170 認可トークン情報記憶部
180 アプリ情報記憶部
210 ブラウザ
211 認可処理部
【先行技術文献】
【特許文献】
【0194】