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