以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
本実施形態では、アプリケーションを次のように定義する。ネットワークで接続されたWebサーバから提供されるタイプのアプリケーションをWebアプリケーション(以降、Webアプリ)と呼ぶ。Webアプリの操作画面は、複合機などの画像処理装置あるいは画像形成装置が備えるWebブラウザを用いて表示する。一方、複合機にインストールするタイプのアプリケーションをMFPアプリケーション(以降、MFPアプリ)と呼ぶ。インストールされたMFPアプリは、複合機内にデータとして格納されている。
(実施形態1)
●情報処理システム
図1は、本発明の実施形態に係る情報処理システムの全体構成を示す図である。この情報処理システムでは、LAN100を介してMFP110とMFP110の外部装置であるPC140とが接続されており、またこのLAN100は、インターネット150に接続されている。更にこのインターネット150には、ライセンス管理サーバ120とWebアプリサーバ130が接続されている。
MFP110は、操作部111、スキャナ部112、プリンタ部113を有する複合機(多機能処理装置)である。実施形態に係るMFP110は、内蔵するWebブラウザを利用してWebアプリの操作画面を表示及び操作するクライアント端末としても機能する。またMFP110は、Webアプリの指示に応じて、Webアプリに対してリソースまたはサービスを提供する。たとえばMFP110は、Webアプリの指示に応じて、プリンタ部113を利用してWebアプリから取得した画像を印刷でき、スキャナ部112を利用して原稿を読み取って得られた画像データをWebアプリに送信できる。また、MFP110には、設定画面のWebページを表示し、PC140からの要求に応じてMFP110の設定を変更できる。尚、この実施形態に係るMFP110にはデバイスIDという識別子が割り当てられており、この識別子により一意に、各MFPを特定、認識できる。MFP110はプリンタ機能やスキャナ機能を有しているものの、画像やそのほかの情報を処理するという観点からは、情報処理装置と呼ぶこともできる。
ライセンス管理サーバ120は、MFPアプリのライセンスを管理するサーバである。Webアプリサーバ(以降、Webサーバ)130は、Webアプリを実行するサーバである。
PC140は、操作部141、表示部142を有し、MFP110に対して各種設定を行うための端末装置として機能している。PC140は、MFP110が提供する設定画面のWebページを表示部142に表示し、ユーザが操作部142に入力した設定内容をMFP110に送信してMFP110の設定を行うことができる。但し、上述のシステム全体およびMFP110、ライセンス管理サーバ120、PC140それぞれのシステム構成はあくまでも一例であり、これらの機器の数などは、本実施形態に限定されない。
図2は、実施形態に係るMFP110のハードウェア構成を説明するブロック図である。操作部111は、タッチパネル機能を有する表示部や各種ハードキー等を有し、制御部200からのデータに従ってユーザに対して情報を表示したり、ユーザの操作に応じた情報を制御部200に入力したりする。スキャナ部112は、原稿上の画像を読み取って、その画像の画像データを作成して制御部200に供給する。プリンタ部113は、制御部200から受け取った画像データに基づいて用紙上に画像を印刷する。
制御部200は、操作部111、スキャナ部112、プリンタ部113と電気的に接続されており、またLAN100にもネットワークインターフェース(I/F)206を介して接続されている。これによりLAN100を介した、TCP/IP等の通信プロトコルによる通信が可能となっている。制御部200において、CPU201、ROM202、RAM203、HDD204、操作部I/F205、ネットワークI/F206、スキャナI/F207、画像処理部208及びプリンタI/F209がシステムバス211を介して接続されている。CPU201は、ROM202のブートプログラムを実行してHDD204に記憶されたOSや制御プログラムをRAM203に展開し、そのプログラムを実行してこのMFP110を統括的に制御する。この制御には、後述のフローチャートを実現するためのプログラムの実行も含む。ROM202には、このMFP110のブートプログラムや各種データが格納されている。RAM203は、CPU201が動作するためのワークメモリを提供し、また画像データを一時記憶するための画像メモリも提供している。HDD204はハードディスクドライブであり、OSや各種プログラムや画像データを格納している。操作部I/F205は、システムバス211と操作部111とを接続するためのインターフェース部である。ネットワークI/F206は、LAN100及びシステムバス211に接続し、ネットワークを介して情報の入出力を行う。スキャナI/F207は、スキャナ部112と制御部200との間のインターフェースを制御する。画像処理部208は、スキャナ部112から入力した画像データ、及びプリンタ部113に出力する画像データに対して、回転、色変換、画像圧縮/伸張処理などの画像処理を行う。プリンタI/F209は、画像処理部208で処理された画像データを受け取り、この画像データに付随している属性データに従ってプリンタ部113による印刷を制御する。尚、実施形態では、操作部111を用いたUI表示が可能なMFPの例で説明するが、このMFP110に代えて、例えば汎用コンピュータ等のような情報処理装置を採用してもよい。
図3は、実施形態に係るライセンス管理サーバ120のハードウェア構成を示すブロック図である。ライセンス管理サーバ120は、CPU301、RAM302、ROM303、HDD304、ネットワークI/F305、入出力I/F306、表示部I/F307を有し、これらはシステムバス308を介して互いに通信可能に接続されている。ROM303はブートプログラムを格納しており、CPU301は電源オン時に、このブートプログラムを読み出してHDD304にインストールされているOSや制御プログラム等をRAM302に展開する。そしてCPU301が、RAM302に展開したプログラムを実行することにより、このライセンス管理サーバ120の機能が実現される。この制御には、後述のフローチャートを実現するためのプログラムの実行も含む。またCPU301は、ネットワークI/F305を介して接続されているネットワーク上の他の装置との通信を行う。尚、Webアプリサーバ130とPC140のハードウェア構成も、図3で示したライセンス管理サーバ120のハードウェア構成と同様であるため、その説明を省略する。
●ライセンス管理サーバのソフトウェア
図4は、実施形態に係るライセンス管理サーバ120のソフトウェアモジュールの構成を説明するブロック図である。これらのモジュールを実現するプログラムはライセンス管理サーバ120のHDD304に格納されており、それをRAM302に展開してCPU301が実行することにより、これらモジュールの機能が達成される。本実施形態に係るライセンス管理サーバ120は、MFPアプリの暗号化、個々のMFPにMFPアプリをインストールするためのライセンスの発行、個々のライセンスを管理するライセンスアクセス番号の発行の3つの処理を行う。
通信部401は、ネットワークを介して外部装置と通信して処理要求の受け付けを行い、その処理要求に応じて、MFPアプリ管理部402とライセンス管理部404に要求を振り分ける。MFPアプリ管理部402は、暗号化前のMFPアプリを受け取って、そのMFPアプリを暗号化する。MFPアプリ管理部402は、インターネット150に接続された端末(不図示)を通じて、アプリケーション開発ベンダーからMFPアプリを受け取る。そして、そのMFPアプリを一意に識別するためのID(以降、MFPアプリID)と、そのMFPアプリの暗号共通鍵を生成してMFPアプリ管理テーブル403に登録する。MFPアプリIDは、個々のMFPアプリを識別するための識別情報である。MFPアプリの暗号共通鍵は、そのMFPアプリを暗号化するための暗号鍵である。そして、その暗号共通鍵を用いてMFPアプリを暗号化し、その暗号化したMFPアプリと、MFPアプリIDとを要求元に送信する。MFPアプリ管理テーブル403は、MFPアプリ管理部402が生成したMFPアプリIDとMFPアプリの暗号共通鍵を関連付けて保存するデータベースである。
ライセンス管理部404は、各MFPにMFPアプリをインストールするためのライセンスの発行、ライセンスの発行を行うためのライセンスアクセス番号を管理する。アプリケーションを販売する販売者から、販売対象のMFPアプリに対応するライセンスアクセス番号の発行要求を受け取ると、ライセンス管理部404は、そのMFPアプリに対応したライセンスアクセス番号を発行する。そして、そのライセンスアクセス番号をライセンス管理テーブル406に登録する。ここでライセンスアクセス番号は、一意にそのMFPアプリの一つのライセンスを管理するための番号であり、アプリケーションの販売者は、前述の暗号化されたMFPアプリと、このライセンスアクセス番号とを併せて販売する。またライセンス管理部404は、MFPアプリの購入者から、ライセンスアクセス番号とデバイスIDを受け取ると、その購入者(ユーザ)に対してライセンスを発行する。このライセンスの発行は、MFPアプリ管理テーブル403とライセンス管理テーブル406とを参照して、ライセンスアクセス番号に対応したライセンスファイルを作成する処理である。
ここではまず、ライセンスアクセス番号からMFPアプリIDを取得し、MFPアプリIDに紐づくMFPアプリの暗号共通鍵を取得する。そしてライセンスIDを発行し、ライセンス管理テーブル406にデバイスIDとライセンスIDとを記録するとともに、これら情報を1つのファイルとしてライセンスファイルを作成する。こうして作成されたライセンスファイルは、ライセンス管理部404が内部に保持するライセンスファイルの暗号鍵405で暗号化して要求元に送信する。ライセンスファイルの暗号鍵405は、公開鍵暗号化方式における公開鍵である。尚、これに対応する秘密鍵は後述するMFP110のソフトウェアに含まれている。ライセンス管理テーブル406は、ライセンスに関係する情報を保存するデータベースである。
ライセンス管理テーブル406には、MFPアプリのIDとMFP110のデバイスIDとが対応付けて登録されている。このため、このライセンス管理テーブル406を参照することにより、どのMFPに、どのMFPアプリのライセンスが発行されているかが分かる。
図5は、実施形態に係るライセンス管理サーバ120が発行するライセンスファイルの一例を示す図である。ここでは、ライセンス管理サーバ120のライセンス管理テーブル406に対応するライセンスファイルの一例を示している。ライセンス管理テーブル406から、ラインセンスID(LIC002)、MFPアプリID(APP712),デバイスID(DEV002)、有効期限(60日)が得られる。ライセンス管理サーバ120のアプリケーション管理テーブル403から、アプリケーション(APP712)の暗号共通鍵(WasiIDcQR6dYj...)が得られている。このようにライセンスファイルは、ライセンス管理部404が、MFPアプリ管理テーブル403とライセンス管理テーブル406から取得した情報に基づいて作成されている。
このようにしてMFPアプリの購入者は、その購入したMFPアプリのライセンスアクセス番号を基に、暗号化されたライセンスファイルを取得することができる。
●PCのソフトウェア
図6は、実施形態に係るPC140のソフトウェアモジュールの構成を示す図である。これらのモジュールを実現するプログラムはPC140のHDD304に格納されており、それをRAM302に展開してCPU301が実行することにより、これらモジュールの機能が達成される。
本実施形態に係るPC140は、MFPの設定画面(インストール画面を含む)やライセンス管理サーバ120の画面を表示部に表示させ、ユーザが操作部に入力した設定内容を設定要求としてMFPに送信する処理を行う。
Webブラウザ601は、通信部602を通じてMFP110の設定画面を要求して設定画面を取得し、画面処理部603を通じて表示部142に表示させ、その画面上でユーザからのMFP設定を受け付ける。また、Webブラウザ601は、操作部141に入力されたMFP設定内容とともに、MFP110に対して設定要求を、通信部602を通じて送信する。そしてその設定要求の結果を受信して、画面処理部603を通じて表示部142に設定結果を表示する。またPC140は、ライセンス管理サーバ120の設定画面を要求して表示部142に表示させ、ユーザから操作部141に入力された設定内容をライセンス管理サーバ120に送信する。通信部602は、ネットワークを介して外部装置と通信して処理要求の送信を行い、その応答に応じて、Webブラウザ601に応答を振り分ける。画面処理部603は、Webブラウザ601からの要求に応じて、MFP110の設定画面や設定結果画面を表示する。
●MFPのソフトウェア
図7は、実施形態に係るMFP110のソフトウェアモジュールの構成を示す図である。これらソフトウェアモジュールは、MFP110のHDD204に格納され、実行時にはRAM203に展開されてCPU201により実行される。
インストール処理部701は、MFPアプリのインストールを制御する。インストール処理部701は、ネットワークI/F206を介してPC140に接続され、PC140からの指示によりMFPアプリのインストールを実行する。またインストール処理部701は、暗号化されたライセンスファイルを復号化するためのライセンスファイル復号鍵702を含んでいる。このライセンスファイル復号鍵702は、前述の図5のMFPアプリの暗号共通鍵に対応している。MFPアプリ管理部703は、MFP110にインストールされているMFPアプリを管理する。ライセンス情報テーブル704は、インストールされたMFPアプリおよびライセンスファイルに関係する情報を保存するデータベースである。このライセンス情報テーブル704は、MFPアプリID、ライセンスの有効期限、ライセンスID、ライセンスID履歴を保持している。ライセンスID履歴は、過去にインストールしたライセンスIDの履歴であり、ライセンスの再利用を防止するために保持している。
メニューアプリ705は、MFP110にインストールされているMFPアプリを選択して実行させるためのGUIを表示する。Webブラウザ706は、Webアプリサーバ130と通信を行う。Webブラウザ706は、Webアプリサーバ130にHTTPプロトコルを用いて要求を送信し、その要求に応答して返送されるHTMLデータをレンダリングして操作部111に表示したり、応答されたJavaScript(登録商標)を解釈して実行したりする。
なお図7には示していないが、MFP110は、Webブラウザ601からの要求に応じてサービスするWebサーバを備えてもよい。また、MFPアプリは例えばJava(登録商標)により記述でき、その場合にはJava(登録商標)で記述したMFPアプリを実行するための実行環境もMFP110に備えられる。
●MFPアプリのインストール処理
次に、MFPアプリの購入者によるMFPアプリのインストールについて説明する。ユーザはPC140を用いて、インストール処理部701に対して、暗号化されたアプリケーションと、暗号化されたライセンスファイルを送信することにより、インストール処理部701は、そのMFPアプリのインストール処理を行う。このときまずライセンスファイル復号鍵702を用いて、ライセンスファイルを復号する。そして、その復号したライセンスファイルに含まれるMFPアプリの暗号共通鍵を用いて、暗号化されたMFPアプリを復号する。こうして復号されたMFPアプリは、アプリケーション管理部703に渡されてHDD204に保存される。この時、復号されたライセンスファイルに記載されているデバイスIDと、MFP110に予め設定されているデバイスIDとを比較し、正しいライセンスファイルかどうかを判定する。またライセンスファイルに記載されている有効期限と現在の日時とから、そのMFPアプリが無効となる日時を計算し、有効期限日としてMFPアプリ管理部703で管理する。
図7では、実施形態の一例としてAPP711、APP712、APP713の3本のMFPアプリがインストールされているものとする。また、図7では、サービスプロバイダ707もMFPアプリとしてインストールされているものとする。なお、本実施形態ではMFPアプリとして、Web接続用MFPアプリ(Web接続用アプリケーションとも呼ぶ。)とローカルMFPアプリという2種類のMFPアプリを定義する。また、単にMFPアプリと記述した場合は、Web接続用MFPアプリとローカルMFPアプリを総称したものとする。APP711とAPP712はWeb接続用MFPアプリで、APP713はローカルMFPアプリである。また、サービスプロバイダ707はローカルMFPアプリである。
ローカルMFPアプリは、MFP110のスキャナ部112、プリンタ部113、画像処理部208などを利用した機能をソフトウェアモジュールとしてMFP110に提供するアプリである。ローカルMFPアプリは、自身が持つソフトウェアモジュールを呼び出すことで、自身が提供する機能をMFP110で実行する。ローカルMFPアプリの詳細は図8(A)で後述する。
一方、Web接続用MFPアプリは、Webサーバに配置されたWebアプリが提供する機能をMFP110から実行するためのアプリである。Web接続用MFPアプリは、Webブラウザ705を用いてWebアプリに接続して、Webアプリが提供する機能をMFP110から実行する。Web接続用MFPアプリの詳細は図8(B)で後述する。
一方、サービスプロバイダ707は、Webアプリの指示に応じて、MFP110の有するリソースやサービスを提供する。これによりサービスプロバイダ707はプリンタ部113を利用してWebアプリから取得した画像を印刷でき、スキャナ部112を利用して原稿を読み取って得られた画像データをWebアプリに送信できる。なお、本実施形態ではサービスプロバイダ707はローカルMFPアプリとして構成されているが、メニューアプリ705やWebブラウザ706のように、MFP110にあらかじめ配置されているアプリとして構成されていてもよい。なお、MFPにインストールされているMFPアプリの種類、本数はMFPごとに異なる。
●ローカルMFPアプリのソフトウェアモジュール
図8(A)は実施形態に係るローカルMFPアプリ713のソフトウェアモジュールの構成を示す図である。ローカルMFPアプリ713は、提供する機能によりソフトウェアモジュールの構成が異なる。図8(A)では一例として、スキャナ部112で読み取った原稿を、ネットワークI/F206を通して外部に送信する機能を提供するローカルMFPアプリのソフトウェアモジュール構成を示す。図8(A)に提示したこれらソフトウェアモジュールは、MFP110のHDD204に格納され、実行時にはRAM203に展開されてCPU201により実行される。
マニフェストファイル801は、MFPアプリの基本情報を記述したファイルである。図9(A)に実施形態に係るローカルMFPアプリ713のマニフェストファイルの一例を示す。マニフェストファイルにはMFPアプリID911、アプリケーション名912が定義されている。MFPアプリID801は、MFPアプリ管理テーブル403で管理されているものと同じIDである。アプリケーション名802は、MFPアプリの名称を表す。
メニューアプリ連携部811は、メニューアプリ705と連携するモジュールで、メニューアプリ705にローカルMFPアプリを呼び出すためのGUIボタンを登録する。スキャナ処理部812は、スキャナ部112を用いて原稿を読み取るためのモジュールである。送信処理部813は、スキャナ処理部812が読み取った原稿をネットワークI/F206を通して外部へ送信するためのモジュールである。画面処理部814は、ローカルMFPアプリAPP713の操作画面を操作部111に表示するためのモジュールである。
ローカルMFPアプリは、アプリごとに実現する機能が異なるため、アプリケーション開発ベンダーがアプリごとに機能を実現するためのソフトウェアモジュールをプログラミングする必要がある。
作成したローカルMFPアプリはライセンス管理サーバ120に送信することにより、マニフェストファイル801以外のソフトウェアモジュールが暗号化され、1つのファイルとしてまとめられる。アプリケーション開発ベンダーは、このアプリケーションの暗号化機能を利用することにより、このアプリケーションの中身を第三者が解析するのを防止できる。
●Web接続用MFPアプリのソフトウェアモジュール
図8(B)は実施形態に係るWeb接続用MFPアプリのソフトウェアモジュールの構成を示す図である。Web接続用MFPアプリは、Webアプリごとに必要となる設定情報を現行マニフェストファイル821や新マニフェストファイル822、電子署名用鍵815に保持する。つまり、ひとつのWebアプリに対して、ひとつのWeb接続用MFPアプリが必要となる。MFP110には、使用するWebアプリに応じたWeb接続用MFPアプリをインストールする。複数のWebアプリを使用する場合、複数のWeb接続用MFPアプリをMFP110にインストールする。その場合、複数のWeb接続用MFPアプリは、ひとつのWebブラウザ706を共有して使用することになる。
図8(B)に提示したWeb接続用MFPアプリのソフトウェアモジュールは、MFP110のHDD204に格納され、実行時にはRAM203に展開されてCPU201により実行される。
現行マニフェストファイル821は、MFPアプリの基本情報とWebアプリへ接続するための情報を記述したファイルである。新マニフェストファイル822は、現行マニフェストファイル822の情報を変更する際に、新しい設定を保存するためのマニフェストファイルである。新マニフェストファイル822は、マニフェストファイル変更部837によって、現行マニフェストファイルの設定が変更される際に作成される。アプリケーション開発ベンダーは、アプリケーション開発時には、現行マニフェストファイル821のみ作成し、Web接続用MFPアプリに配置する。したがって、新マニフェストファイル822は、Web接続用MFPアプリのインストール前、および、インストール直後には、Web接続用MFPアプリ内に含まれない状態になっている。なお、新マニフェストファイル822は本実施形態ではWeb接続用MFPアプリ上に配置しているが、MFP110上のRAM203、ROM202、HDD204等に、Web接続用MFPアプリと関連付けて配置されていてもよい。その場合は、図8(B)のWeb接続用MFPアプリには、新マニフェストファイル822が存在せず、現行マニフェストファイルのみ含まれる構成となる。
図9(B)に実施形態に係るマニフェストファイルの一例を示す。マニフェストファイルにはMFPアプリID911、アプリケーション名912、WebアプリケーションURL913、コンテキストルートURL914、SSB設定915、デバイス情報リスト916が定義されている。
MFPアプリID911とアプリケーション名912は、図9(A)で提示したローカルMFPアプリのマニフェストファイルのMFPアプリID901、アプリケーション名902と同様の定義である。トップページURL913、コンテキストルートURL914、SSB設定915、デバイス情報リスト916は、Web接続用MFPアプリ固有の情報である。
トップページURL913は、WebアプリのトップページのURLを表す。コンテキストルートURL914は、Webアプリの最上位パスを表す。トップページURLは、Web接続用MFPアプリからWebブラウザを呼び出す際のURLとして使用される。また、トップページURLとコンテキストルートURLは、WebアプリサーバからMFP110のサービスプロバイダへのジョブ投入要求を行う際に、Webアプリサーバのチェックを行うために使用される。SSB(Site Specific Browser)設定915は、このMFPアプリがWebアプリに接続する際に、Webブラウザに設定する設定値を表す。SSB設定はWebブラウザのUIに関する設定と通信に関する設定を含む。WebブラウザのUIに関する設定の例として、ツールバーの非表示やURL入力の制限、お気に入り追加の制限などがある。通信に関する設定の例として、Cookieの処理方法、HTTPS/HTTP混在ページの表示制限、キャッシュの使用可否などがある。Webアプリに接続するMFPアプリ毎に、SSB設定を行うことによって、Webアプリ毎に専用のWebブラウザ設定を行うことができる。SSB設定を使用しない場合、マニフェストファイルにSSB設定915を定義しないことも許される。デバイス情報リスト916は、Webアプリのトップページを呼び出す際に通知するデバイス情報の一覧を表す。デバイス情報とは、MFP110に関する情報のことで、例えば、MFP110の個体や機種を特定する情報、MFP110で有効なオプション機能、ログインしているユーザ名、ソフトウェアのバージョンなどである。デバイス情報の取得が不要な場合、マニフェストファイルにデバイス情報リスト916を定義しないことも許される。
メニューアプリ連携部831は、メニューアプリ705と連携するモジュールで、メニューアプリ705にWeb接続用MFPアプリを呼び出すためのGUIボタンを登録する。Webブラウザ連携部832は、Webブラウザ706を操作するためのモジュールで、Webブラウザ706へWebアプリのURLを渡したり、Webブラウザ706を操作部111の前面に表示したりする。デバイス情報取得部833は、デバイス情報リスト916で指定されたデバイス情報を取得する。署名処理部814は、Webアプリへ接続する際に付加する電子署名を生成する。電子署名は、電子署名用鍵835を使って生成する。電子署名は、Web接続用MFPアプリからの呼び出しであることをWebアプリがチェックするために使用する。Webアプリが、このチェックを省略することは自由であり、その場合、電子署名は不要であるため、Web接続用MFPアプリは電子署名用鍵835を含まない構成となる。
サービスプロバイダ連携部836は、サービスプロバイダ707からの要求に応じて、現行マニフェストファイル821を送信するためのモジュールである。
マニフェストファイル変更部837は、Webアプリとしての機能を有しており、現行マニフェストファイル821に対する変更を受け付けるための設定画面を提供するモジュールである。PC140のWebブラウザ601からの要求に応じて、現行マニフェストファイル821を変更するための画面を送信したり、現行マニフェストファイル821に対する変更要求を受け付けたりする。マニフェストファイル変更部837は、現行マニフェストファイル821に対する変更要求に応じて、新マニフェストファイル822を作成する。なお、本実施形態ではマニフェストファイル変更部837はWebアプリとしてマニフェストファイルの設定画面を提供しているが、MFP110の操作部111にマニフェストファイル変更画面を表示するような構成でもよい。マニフェストファイル変更部837は、たとえばJava(登録商標)サーブレットで実現することができる。マニフェストファイル反映部838は、ユーザからWeb接続用MFPアプリ開始の際に、新マニフェストファイル822の内容を現行マニフェストファイル821に反映させる。処理の詳細は図17(A)で説明する。
なお、個々のWeb接続用MFPアプリで異なるのは、現行マニフェストファイル821および新マニフェストファイル822の記述と電子署名用鍵835であり、他のソフトウェアモジュールは全てのWeb接続用MFPアプリで同一である。つまり、ソフトウェアモジュールを流用すれば、Webアプリに関する情報を定義するだけで、Web接続用MFPアプリを作成することができる。例えば、Webアプリに関する情報を入力すると、Web接続用MFPアプリを出力するようなツールを用意することで、簡単にWeb接続用MFPアプリを作成することができる。
作成したWeb接続用MFPアプリはライセンス管理サーバ120に送信することにより、マニフェストファイル821以外のソフトウェアモジュール、ファイルが暗号化され、1つのファイルとしてまとめられる。アプリケーション開発ベンダーは、このアプリケーションの暗号化機能を利用することにより、このアプリケーションの中身を第三者が解析するのを防止できる。また内部に含んでいる電子署名用鍵835が取り出されるのを防止できる。
●Webアプリサーバのソフトウェアモジュール
図10は、本実施形態に係るWebアプリサーバ130のソフトウェアモジュールの構成を示す図である。これらソフトウェアモジュールは、Webアプリサーバ130のHDD304に格納されており、実行時にRAM302に展開されCPU301により実行されることにより、これらソフトウェアモジュールの機能が達成される。
通信部1001は、ネットワークを介して外部装置と通信して要求の受け付けや応答を行う。Webアプリ処理部1002は、HTTPプロトコルによるMFP110からの要求に応じて、MFP110のWebブラウザ706により表示されるHTMLコンテンツを生成したり、MFP110を操作するためのコンテンツを生成したりする。また、Webアプリ処理部1002は、Webアプリ処理として、MFP110のサービスプロバイダ707に対して、スキャン処理やプリント処理のジョブを投入したりする。署名検証部1003は、図8(B)で示したWeb接続用MFPアプリに含まれる電子署名用鍵835に対応する電子署名用鍵1004を含んでおり、この鍵で電子署名した署名情報の検証を行う。電子署名を検証することで、Web接続用MFPアプリがインストールされたMFP110からの要求であるかどうかを判断することができる。本実施例では一例として電子署名技術にHMAC(Hash−based Message Authentication Code)を用いるものとする。つまり、電子署名用鍵835と電子署名用鍵1004は同一の秘密鍵(共通鍵)である。なお、電子署名は他の技術を用いてもよい。例えば、電子署名技術としてデジタル署名を用いた場合、デジタル署名は公開鍵暗号方式であるため、Web接続用MFPアプリの電子署名用鍵835は秘密鍵で、Webアプリサーバ130の電子署名用鍵1004はその秘密鍵に対応する公開鍵となる。
●MFPアプリのインストール処理
図11は、MFP110が行うMFPアプリのインストール処理を説明するためのフローチャートである。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図11のフローチャートの各ステップが実行される。
事前準備として、MFPアプリ購入者は、前述したように、暗号化されたMFPアプリとライセンスアクセス番号をMFPアプリの販売者から受け取り、ライセンス管理サーバ120からライセンスファイルを受け取っているものとする。
先ずインストール処理部701は、MFPアプリ購入者が操作するPC140からインストールの指示として暗号化されたMFPアプリと、暗号化されたライセンスファイルを受け取る(ステップS1101)。インストール処理部701は、ライセンスファイル復号鍵702を用いて、受け取ったライセンスファイルを復号する。そして、その復号したライセンスファイルに含まれるMFPアプリの暗号共通鍵を用いて、暗号化されたMFPアプリを復号する(ステップS1102)。ここでMFPアプリがローカルMFPアプリだった場合は、メニューアプリ連携部811、スキャナ処理部812、送信処理部813の各モジュールが復号される。また、MFPアプリがWeb接続用MFPアプリだった場合は、メニューアプリ連携部831、Webブラウザ連携部832、デバイス情報取得部833、署名処理部834のモジュールが複合される。さらにサービスプロバイダ連携部836、マニフェストファイル変更部837、マニフェストファイル反映部838の各モジュールと、電子署名用鍵835のファイルが復号される。
インストール処理部701は、ライセンスファイルとMFPアプリが両方とも復号できたかどうかをチェックする(ステップS1103)。インストール処理部701は、両方とも復号できた場合はステップS1104へ処理を進める。インストール処理部701は、どちらか一方または両方とも復号できなかった場合はエラーを通知(ステップS1110)して処理を終了する。
ステップS1104で、インストール処理部701は、復号したライセンスファイルに記載されているデバイスIDと、MFP110に予め設定されているデバイスIDとを比較し、そのMFP110に適合した正しいライセンスファイルかどうかを判定する。比較した二つのIDが一致している場合には、インストール処理部701は、ライセンスファイルが正しいと判定し、ステップS1105に処理を進める。インストール処理部701は、正しいライセンスファイルでないと判定すると、エラーを通知(ステップS1110)して処理を終了する。
ステップS1105で、インストール処理部701は、ライセンス情報をライセンス情報テーブル720に格納する。ライセンス情報とは、MFPアプリID、ライセンスID,ライセンスの有効期限である。ここで、インストール処理部701は、ライセンスファイルに記録されている有効期限と現在の日時から、MFPアプリが無効となる日時を計算してライセンスの有効期限として登録する。ライセンスファイルに記録されている有効期限が無期限の場合は、そのまま無期限として登録する。
次にインストール処理部701は、復号したMFPアプリとライセンスファイルをHDD204に保存する。続けてインストール処理部701は、HDD204に保存したMFPアプリをRAM203に読み出し、起動する(ステップS1107)。起動したMFPアプリは、メニューアプリにMFPアプリを呼び出すためのGUIボタンを登録する(ステップS1108)。このとき、起動したMFPアプリがWeb接続用MFPアプリの場合は、メニューアプリ連携部831がステップS1107の処理を行う。一方、起動したMFPアプリがローカルMFPアプリの場合は、メニューアプリ連携部811がステップS1107の処理を行う。また、操作部111に表示する画面を持たず、メニューアプリにGUIボタンを登録する必要がないローカルMFPアプリの場合は、ステップS1108の処理をスキップする。
図12は、実施形態に係るMFP110にMFPアプリAPP711、APP712、APP713をインストールした状態で、MFP110のメニューアプリ705を呼び出したときに操作部111に表示されるGUI(グラフィカルユーザインターフェイスあるいは単にユーザインターフェイスとも呼ぶ。)の一例を示す図である。GUIボタン1201、1202、1203は、MFP110に最初から備わっているアプリケーションを呼び出すためのGUIボタンである。
GUIボタン1204は、Web接続用MFPアプリAPP711を呼び出すためのGUIボタンである。GUIボタン1205は、Web接続用MFPアプリAPP712を呼び出すためのGUIボタンである。GUIボタン1206は、ローカルMFPアプリAPP713を呼び出すためのGUIボタンである。図12に示したようにメニューアプリ704はMFPアプリの種類を区別せずにGUIボタンを表示する。
GUIボタンは、ライセンスが有効な期間のみ選択可能である。例えば、APP712を60日間有効なライセンスでインストールした場合、インストールしてから60日目まではGUIボタン1205は有効であるが、61日目からはGUIボタン1206は無効となる。GUIボタン1206が無効になると、それに対応するMFPアプリAPP712の呼び出しができなくなるため、Webアプリへの接続もできない。
●メニューアプリによる処理
図13は、メニューアプリ705が呼び出し指示を受けたときに行う処理を説明するためのフローチャートである。メニューアプリ705は、GUIボタンに対応するMFPアプリのライセンスを確認し、ライセンスが有効なMFPアプリのボタンのみを選択可能にする。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図13のフローチャートの各ステップが実行される。
メニューアプリ705は呼び出しの指示を受け付ける(ステップS1301)と、自身に登録されているGUIボタンの一覧をリストアップする(ステップS1302)。次に、メニューアプリ705は、リストアップしたGUIボタンの有効性を検証するためにステップS1303からステップS1308の処理をGUIボタンごとに繰り返す。
メニューアプリ705は、GUIボタンが最初から備わっているアプリケーションに対応するGUIボタンかどうかを判別する(ステップS1304)。最初から備わっているアプリケーションに対応するGUIボタンであればステップS1306へ処理を進め、後からインストールされたMFPアプリに対応するGUIボタンであればステップS1305へ処理を進める。ステップS1305で、メニューアプリ705はGUIボタンに対応するMFPアプリのライセンスの有効期限が満了していないことを、ライセンス情報テーブル720を用いて判定する。ライセンスが有効期限内であればステップS1306へ処理を進め、ライセンスが有効期限切れであればステップS1307へ処理を進める。ステップS1306で、メニューアプリはGUIボタンを有効にする。一方、ステップS1307で、メニューアプリはGUIボタンを無効にする。GUIボタンを無効にする例としては、GUIボタン自体を非表示にしたり、GUIボタンは表示するが押下できない状態にしたりする。もしくは、GUIボタンを押下した後にライセンスの有効期限切れであることのメッセージを表示するようにしてもよい。メニューアプリ705は、すべてのGUIボタンの処理が終われば、ステップS1309へ処理を進める。
最後に、メニューアプリ705は、図12で示したメニューアプリの画面を操作部111に表示して処理を終了する(ステップS1309)。
●ローカルMFPアプリによる処理
図14は、ローカルMFPアプリが図12に示した画面から呼び出し指示を受けた際の処理を説明するためのフローチャートである。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図14のフローチャートの各ステップが実行される。ここでは、図7で示したローカルMFPアプリAPP713が呼び出しをうけた場合を例に説明を行う。
ローカルMFPアプリのメニューアプリ連携部811は、ユーザによるGUIボタン押下を受け取ったメニューアプリ705からの呼び出し指示を受け取る(ステップS1401)。次に画面処理部814は、ローカルMFPアプリAPP713の初期画面であるスキャン設定画面を操作部111に表示して処理を終了する(ステップS1402)。
●Web接続用MFPアプリによるWebアプリの呼び出し
図15(A)は、MFP110からWebアプリを利用する際の一連の処理の流れを示したシーケンス図である。ここでは例としてメニューアプリ705に表示したGUIボタン1204がユーザによって選択された場合の処理を説明する。図15(A)の手順のハードウェア上の実行主体は、MFP110においてはCPU201であり、Webアプリサーバ130においてはCPU301である。
最初にMFP110のメニューアプリ705はユーザによるGUIボタン1204の押下を受け付けると(すなわちWebアプリケーションへのアクセスの指示を受け付けると)、GUIボタン1204に対応したMFPアプリAPP711を呼び出す(ステップS1501)。次に呼び出されたMFPアプリAPP711はMFPアプリAPP711のマニフェストファイル反映部838を呼び出し、マニフェストファイル反映部838がMFPアプリAPP711のマニフェストファイル反映処理を実行する(ステップS1502)。マニフェストファイル反映部838は、App711の新マニフェストファイル822があれば、その新マニフェストファイル822で現行マニフェストファイル821を更新する。すなわち新設定で現行設定を更新する。次に、MFPアプリAPP711はMFPアプリAPP711のマニフェストファイルに定義された情報に基づいてWebアプリのトップページを呼び出すために必要な情報を作成する(ステップS1503)。Webアプリのトップページを呼び出すために必要な情報には、デバイス情報リスト916で定義したデバイス情報や電子署名用鍵835を用いて作成した電子署名などが含まれる。続いてMFPアプリAPP711は、マニフェストファイルに定義されたSSB設定915を適用した状態のWebブラウザ706を用いて、ステップS1502で作成した情報に基づきWebアプリのトップページを呼び出す(ステップS1504)。すなわち、Webブラウザにより、設定により指定されているアクセス先へとアクセスさせる。
呼び出しを受けて、Webアプリサーバ130は、呼び出しに対する検証を行う(ステップS1505)。呼び出しに対する検証として、例えば、電子署名の正当性をチェックすることで、Web接続用MFPアプリAPP711がインストールされたMFP110からの呼び出しであることを確認する。検証の結果を踏まえて、Webアプリサーバ130は、呼び出しに対する応答をMFP110(Webブラウザ706)に対して行う(ステップS1506)。検証の結果がOKであれば、Webアプリサーバ130は次の操作に必要な画面を構成するためのHTMLコンテンツを応答する。
Webブラウザ706は受け取ったHTMLをレンダリングし、操作部111に画面を表示する(ステップS1507)。次にWebブラウザ706は、ユーザの画面操作指示を受け取る(ステップS1508)と、それに対応するリクエストをHTTPプロトコルでWebアプリサーバ130へ送信する(ステップS1509)。
リクエストを受け取ったWebアプリサーバ130は、リクエストに対する処理を行い(ステップS1510)、処理結果にもとに次の画面を構成するためのHTMLコンテンツをMFP110(Webブラウザ706)へ応答する(ステップS1511)。以降、ステップS1507からステップS1511を繰り返すことで、Webアプリの処理および画面遷移を実現する。
また、Webアプリサーバ130は、ステップS1510に示すリクエストに対する処理に応じて、MFP110に対するスキャン処理やプリント処理のジョブ投入リクエストを送信する(ステップS1512)。そして、MFP110のサービスプロバイダ707がスキャン処理やプリント処理のリクエストを受信すると、リクエストに応じたスキャン処理やプリント処理を行う(ステップS1513)。ここで、サービスプロバイダ707は、ジョブ実行の前に、対応するAPP711のサービスプロバイダ連携部836に、マニフェストファイル取得を要求する。APP711のサービスプロバイダ連携部836は、マニフェストファイル取得が要求されると、サービスプロバイダ707に対して、APP711の現行マニフェストファイル821を送信する。サービスプロバイダ707は、リクエスト元のWebアプリサーバ130のURLと、現行マニフェストファイル821のトップページURL913またはコンテキストルートURL914が一致するか否かを判定する。すなわち、Webアプリケーションに係る設定に含まれたアクセス先と、サービスプロバイダ707に対するリクエストの送信元とが一致しているか判定する。この確認あるいは判定処理を行う目的は、不正なWebアプリサーバからサービスプロバイダ707へのジョブ投入要求を防ぎ、正当なWebアプリサーバからのジョブ投入要求のみ受け付けるためである。確認処理の詳細は図19で説明する。Webアプリサーバ130のURLと、現行マニフェストファイル821のトップページURL913またはコンテキストルートURL914とが一致した場合は、サービスプロバイダ707はWebアプリサーバ130から要求されたスキャン処理やプリント処理を実行する。そして、サービスプロバイダ707はWebアプリサーバ130に対して処理結果をレスポンスとして応答する(ステップS1514)。以降、ステップS1512からステップS1514を繰り返すことで、Webアプリのジョブ投入処理を実現できる。なお、本実施形態では、ステップS1507からステップS1511が終了した後に、ステップS1512からステップS1514を繰り返す処理の流れになっている。しかし、ステップS1512からステップS1514の処理は、ステップS1510の中で繰り返し行ってもよいし、ステップS1510の後、任意のタイミングで実行することができる。
図15(B)は、PC140から、MFP110のWeb接続用MFPアプリの設定変更を指示する一連の処理の流れを示したシーケンス図である。ここでは例としてWeb接続用MFPアプリ711の変更がユーザによって選択された場合の処理を説明する。図15(B)の設定変更処理は、図15(A)のWebアプリ処理やジョブ投入処理と異なる任意のタイミングで処理が行われる。
最初に、PC140のWebブラウザ601がユーザからのMFP110のWeb接続用MFPアプリの設定変更画面URLを指定した呼出指示を受け付ける(ステップS1521)。Webブラウザ601は、指定されたURLに従ってMFP110に対して、Web接続用MFPアプリの設定変更画面のリクエストを送信する(ステップS1522)。MFP110はリクエストを受け付けると、URLに従ってWeb接続用MFPアプリ711のマニフェストファイル変更部837が呼び出される。Web接続用MFPアプリ711のマニフェストファイル変更部837は、Web接続用MFPアプリ711の新マニフェストファイル822が存在するかをチェックする。マニフェストファイル変更部837は、新マニフェストファイル822が存在した場合は新マニフェストファイル822の情報を元に、存在しなかった場合は現行マニフェストファイル821の情報を元にWeb接続用MFPアプリの設定変更画面を作成する。Web接続用MFPアプリの設定変更画面の詳細は後述の図22で説明する。そして、マニフェストファイル変更部837は、作成したWeb接続用MFPアプリの設定変更画面をレスポンスとしてPC140に応答する(ステップS1523)。PC140は、Webブラウザ601がMFP110から受信したWeb接続用MFPアプリの設定変更画面を、画面処理部603、および、表示部I/F307を通じて、不図示のPC140の表示部に表示する(ステップS1524)。Webブラウザ603は、ユーザからのWeb接続用MFPアプリの設定変更画面に対する画面操作として、設定変更指示を受け付ける(ステップS1525)。Webブラウザ603は、ユーザがWeb接続用MFPアプリの設定変更画面で入力した設定変更指示の内容を、MFP110に対して設定変更要求のリクエストとして送信する(ステップS1526)。MFP110のWeb接続用MFPアプリ711のマニフェストファイル変更部837は、PC140から受信した設定変更要求の内容に応じて設定変更処理を行う。マニフェストファイル変更部837は、Web接続用MFPアプリ711の新マニフェストファイル822が存在するかをチェックする。マニフェストファイル変更部837は、新マニフェストファイル822が存在した場合は新マニフェストファイル822の情報を受信した設定変更要求の内容で更新する。マニフェストファイル変更部837は、新マニフェストファイル822が存在しなかった場合は受信した設定変更内容を元に新マニフェストファイル822を作成する(ステップS1527)。そして、マニフェストファイル変更部837は設定変更結果画面を作成し、レスポンスとしてPC140に送信し、処理は終了する(ステップS1528)。
一般的に、Webアプリサーバのサービス名の変更やサーバ構成変更などの都合により、WebアプリサーバやWebアプリのURLが変更になることがある。その場合、WebアプリサーバやWebアプリの変更に合わせて、デバイス管理ユーザがMFP110のWeb接続用MFPアプリの設定を変更する必要がある。それは、もしMFP110の設定を変更しなければ、Webブラウザ706からWebアプリに正しくアクセスできなくなることがあるためである。また、Webアプリサーバからサービスプロバイダ707へのジョブ投入処理を行った際に、サービスプロバイダ707でWebサーバ140のURLが不正と判断してエラーとするためである。
例えば、WebアプリのURLが、図9(B)のマニフェストファイルの設定どおりに設定されていたとする。すなわち、トップページURLが913のように"http://www.canon.com/mypotal?app=webapp01"に設定されていたとする。また、コンテキストルートURLが914のように"http://www.canon.com/webapp01"に設定されていたとする。この場合は、ユーザによってGUIボタン1204が押下された場合に、Web接続用MFPアプリ711がWebブラウザ706からアクセスするURLが"http://www.canon.com/mypotal?app=webapp01"となる。またWebアプリサーバからサービスプロバイダ707へジョブを投入する際のURLは、"http://www.canon.com/webapp01"となる。この場合は、Webアプリサーバ130の設定と、Web接続用MFPアプリ711の設定が一致している。このため、Webブラウザ706からWebアプリへのアクセスは成功し、Webブラウザ706には正しい画面が表示される。またWebアプリサーバからサービスプロバイダ707へジョブを投入する際のURLは、"http://www.canon.com/webapp01"となる。このためサービスプロバイダ707でのWebサーバのURL確認時にURLが一致して成功し、サービスプロバイダ707でのジョブ実行が行われることになる。
一方、WebアプリサーバのURLが、"http://www01.canon.jp/mypotal01?app=webapp01"に変更されたと想定する。このとき、Web接続用MFPアプリの設定を変更しない場合、Webブラウザ706からアクセスするURLが"http://www.canon.com/mypotal?app=webapp01"のままである。このURLは、"http://www01.canon.jp/mypotal01?app=webapp01"ではないため、Webブラウザ706からWebアプリサーバへのアクセスは失敗する。またWebアプリサーバからサービスプロバイダ707へジョブを投入する際のURLは、"http://www01.canon.jp/mypotal01?app=webapp01"となる。このURLはhttp://www.canon.com/webapp01"ではないため、サービスプロバイダ707でのWebサーバのURL確認時にURLが一致せず失敗し、サービスプロバイダ707でのジョブ実行が行われないことになる。したがって、Webアプリサーバ130の設定変更に合わせて、Web接続用MFPアプリの設定を変更する必要がある。そのような場合に、図15(B)の手順で設定が変更され、変更された設定は新マニフェストファイル822に保存される。
また、MFP110は通常は一般ユーザが使用しており、また大量のMFP110が管理されている場合がある。このため、デバイス管理ユーザがMFP110の設定変更する場合、MFP110を直接操作することは避け、リモートで任意のタイミングでWeb接続用MFPアプリの設定を変更できるようにする必要がある。また、デバイス管理者が設定変更を行う際は、何度でも任意のタイミングで設定を変更できるようにする必要がある。図15(B)の手順はその必要を満たすものとなっている。
さらに、図15(B)において説明した通り、図15(B)の設定変更処理は、図15(A)のWebアプリ処理やジョブ投入処理とは非同期に、それらのタイミングとは異なる任意のタイミングで処理が行われる。これにより、Webアプリサーバ130とMFP110でライフサイクル処理を行っている途中で、ライフサイクル内の任意のタイミングで設定変更が発生することになる。例えば、Webアプリ処理まではWebアプリとWeb接続用MFPアプリの設定が一致して正常に処理が行われた後で、途中でWeb接続用MFPアプリの設定が変更された場合を想定する。その場合、Webアプリからジョブ投入された場合に、ジョブ投入時のサービスプロバイダ707でのWebサーバのURL確認で、WebサーバのURLとWeb接続用MFPアプリの設定が一致せず、エラーになってしまう。したがって、Webアプリサーバ130とMFP110でのライフサイクル処理間の切れ目をMFP110はなるべく正確に判断して、設定反映を行いたい。しかし、Webサーバがジョブ投入するタイミングはWebアプリが制御しているため、MFP110側ではジョブ投入タイミングを判断しにくいという課題がある。
本実施形態では、設定変更処理であるステップS1527はユーザが設定変更操作であるステップS1525を行ったタイミングで、これは図15(A)で示すWebアプリサーバ130とMFP110でのライフサイクル処理とは非同期の任意のタイミングである。しかし、変更された設定が実際に反映され有効になるのは、Web接続用MFPアプリがユーザから実行指示を受けたステップ1501の直後に、ステップS1502で設定反映処理を行ったタイミングである。図15(A)、図15(B)の処理のように、設定変更と設定反映を分けることで、Webアプリ処理とジョブ投入処理の一連のライフサイクルの途中であってもユーザからの設定変更を受け付けることができる。またステップS1502のタイミングでユーザが設定した設定変更内容を、Web接続用MFPアプリの実行指示のタイミングをライフサイクル間の切れ目である可能性が高いと判断し、ライフサイクル開始のタイミングで設定変更内容を反映させる処理にしている。このようなライフサイクルの切れ目に設定反映を行うことで、Webアプリサーバ130とMFP110で実施するライフサイクル内では同一の設定が使用されるため、ライフサイクル内での設定の整合性を保つことができる。図15(B)の詳細については図21乃至図23を参照して後述する。
●Web接続用MFPアプリによる新設定の反映
図16は、Web接続用MFPアプリがWebアプリのトップページを呼び出す際の処理を説明するためのフローチャートである。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図16のフローチャートの各ステップが実行される。
図16のフローチャートは、図15(A)のステップS1501からステップS1504の処理を詳細に説明したものである。図15(A)のステップS1501は、図16ではステップS1601に相当する。図15(A)のステップS1502は、図16ではステップS1602に相当する。図15(A)のステップS1503は、図16ではステップS1603からステップS1612に相当する。図15(A)のステップS1504は、図16ではステップS1613に相当する。
Web接続用MFPアプリのメニューアプリ連携部831は、ユーザによるGUIボタン押下を受け取ったメニューアプリ705からの呼び出し指示を受け取る(ステップS1601)。次にマニフェストファイル変更部838が、新マニフェストファイル822があればその内容を現行マニフェストファイル821に反映させる(ステップS1602)。ステップS1602の詳細な処理の内容は、後述の図17(A)で説明する。次にWebブラウザ連携部832は、現行マニフェストファイル821からWebアプリの情報であるトップページURL913、SSB設定915、デバイス情報リスト916を取得する(ステップS1603)。なお、Web接続用MFPアプリによっては、現行マニフェストファイル821にSSB設定915、デバイス情報リスト916が定義されていない場合がある。その場合は、定義されている情報のみを取得する。
デバイス情報取得部833は、ステップS1603でデバイス情報リスト916を取得していれば、そのデバイス情報リスト916に列挙されているデバイス情報を取得する(ステップS1604、S1605)。図9(B)に提示した現行マニフェストファイル821に従うと、デバイス情報取得部833は、user_id、device_id、device_modelに該当するデバイス情報を取得する。また、デバイス情報取得部833は、encrypt_pdf、print_service_verに該当するデバイス情報を取得する。user_idは、MFP110にログインしているユーザのIDを表す。device_idは、MFP110のデバイスIDを表す。device_modelは、MFP110の機種を表す。encrypt_pdfは、暗号化PDFオプションの装着状況を表す。print_service_verは、WebアプリからMFP110に印刷を依頼するためのWebServiceモジュールのソフトウェアバージョンを表す。図9(B)のデバイス情報リスト916は一例であり、取得可能なデバイス情報は、これらに制限されるものではない。
次に、署名処理部834は、Web接続用MFPアプリに電子署名用鍵835が含まれている場合、電子署名を作成する(ステップS1606、S1607)。署名処理部834は、署名用文字列をメッセージ、電子署名用鍵835を秘密鍵としてハッシュ関数を用いてメッセージダイジェスト(HMAC値)を算出し、電子署名とする。署名用文字列は、トップページURL903と、MFP110のシステム時刻(以降、タイムスタンプ)と、ステップS1605で取得した取得したデバイス情報があればその情報を文字列として連結したものである。
続いて、Webブラウザ連携部832は、Webアプリのトップページを呼び出すためのURLを組み立てる(ステップS1608)。Webブラウザ連携部832は、ステップS1605で取得したデバイス情報があれば、その情報をトップページURL913にクエリ文字列として付加する。さらに、Webブラウザ連携部832は、ステップS1607で取得したタイムスタンプおよび電子署名があれば、それらの情報もトップページURL913にクエリ文字列として付加する。
Webブラウザ連携部832は、SSB設定915を取得しているか否かを判別し(ステップS1609)、SSB設定を取得していなければ、Webブラウザ706のSSB設定を解除し、Webブラウザの各種設定を初期状態に戻す(ステップS1620)。一方、Webブラウザ連携部832は、ステップS1603でSSB設定を取得していればそのSSB設定をWebブラウザ706へ適用する(ステップS1610)。図9(B)に提示したSSB設定915に従うと、Webブラウザ連携部832は、cookie、address_bar、cache、warn_not_exist_rootcertに該当するSSB設定をWebブラウザ706へ適用する。cookie=onは、Cookie機能を有効にすることを表す。address_bar=offは、WebブラウザのUIからURLを入力するためのアドレスバーを非表示にすることを表す。cache=offは、キャッシュを使用しないことを表す。warn_not_exist_rootcert=onは、暗号化通信時にルート証明書が存在しない場合の警告表示を有効にすることを表す。図9(B)のSSB設定915は一例であり、指定可能なSSB設定は、これらに制限されるものではない。
次にWebブラウザ連携部832は、ステップS1607で組み立てたURLを接続先としてWebブラウザ706に設定する(ステップS1611)。Webブラウザ連携部832は、操作部111の表示をメニューアプリ705からWebブラウザ706のGUIウィンドウに切り変える(ステップS1612)。操作部111に表示されたWebブラウザ706は、Webアプリのトップページを呼び出すため、ステップS1611で設定されたURLへアクセスする(ステップS1613)。
以上の処理を実行することによって、メニューアプリ705で指示されたGUIボタンに対応するWeb接続用MFPアプリが、Webアプリのトップページを呼び出すことができる。さらに、ステップS1601で、ユーザからのWeb接続MFPアプリ呼び出し指示受付の直後に、前記ステップS1527でユーザの要求に応じて設定した新設定の内容を、ステップS1602でWeb接続用MFPアプリの現行設定に反映できる。ユーザからのWeb接続MFPアプリ呼び出し直後が、MFP110とWebアプリサーバ130のライフサイクルの切れ目である可能性が高いタイミングである。このタイミングで、MFP110は新マニフェストファイル822の情報で、現行マニフェストファイル821の内容を更新することができる。このように、設定と反上井のタイミングを分け、MFP110とWebアプリサーバ130のライフサイクルの切れ目である可能性の高いタイミングで設定反映を行うようになっている。このことで、ライフサイクル内での設定の一貫性を保つことでライフサイクルへの影響を少なく設定を反映し、かつ、デバイス管理者の任意のタイミングで設定変更を行うことができる。
図17(A)は、Web接続用MFPアプリが新マニフェストファイルの設定内容を、現行マニフェストファイルの内容に反映させる際の処理を説明するためのフローチャートである。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図17(A)のフローチャートの各ステップが実行される。
図17(A)のフローチャートは、図16のステップS1602の処理を詳細に説明したものである。図16のステップS1602は、図17(A)ではステップS1701からステップS1703に相当する。
Web接続用MFPアプリ711のマニフェストファイル反映部838は、Web接続用MFPアプリ711に新マニフェストファイル822が存在するか否かを判断し(ステップS1701)、新マニフェストファイル822が存在しない場合は処理を終了する。一方、新マニフェストファイル822が存在する場合は、マニフェストファイル反映部838が、新マニフェストファイル822の内容で現行マニフェストファイル821の設定内容を更新する(ステップS1702)。そして、マニフェストファイル反映部838が、新マニフェストファイルを削除し(ステップS1703)、処理は終了する。
以上の処理を実行することによって、新マニフェストファイル822の設定内容を現行マニフェストファイル821に反映させることができる。
●Webアプリサーバによるリクエストの処理
図18は、Webアプリサーバ130がMFP110からHTTPによるリクエストを受けた場合に実行する処理を説明するためのフローチャートである。Webアプリサーバ130のHDD304に記憶されているプログラムを、CPU301がRAM303に読み出し、解析、実行することで、図18のフローチャートの各ステップが実行される。
図18のフローチャートは、図15(A)のステップS1504からS1506、ステップS1509からS1511およびステップS1512からS1514の処理を詳細に説明したものである。図15(A)のステップS1504は、図18ではステップS1801からステップS1802に相当する。図15(A)のステップS1505は、図18ではステップS1803からステップS1808に相当する。図15(A)のステップS1506は、図18ではステップS1809に相当する。図15(A)のステップS1509は、図18ではステップS1801からステップS1802に相当する。図15(A)のステップS1510は、図18ではステップS1820に相当する。図15(A)のステップS1511は、図18ではステップS1809に相当する。図15(A)のステップS1512は、図18ではステップS1821からステップS1823およびステップS1825に相当する。図15(A)のステップS1514は、図18ではステップS1824に相当する。
まず通信部1001は、MFP110からHTTPによるリクエストを受け付ける(ステップS1801)。次にWebアプリ処理部1002は、受け付けたリクエストがトップページの呼び出しか否かを判別し、トップページの呼び出しならステップS1803へ処理を進め、それ以外ならステップS1820へ処理を進める(ステップS1802)。
ステップS1803で、Webアプリ処理部1002はステップS1801で受け取ったリクエストに含まれるクエリ文字列を解析して、各項目を取りだす。本実施例では、ここで電子署名、タイムスタンプ、デバイス情報の各項目を取得したものとして、以降の説明を行う。
次に署名検証部1003は、ステップS1803で取りだした電子署名の検証を行う(ステップS1804)。具体的には、署名検証部1003は、署名用文字列をメッセージ、電子署名用鍵1004を秘密鍵としてハッシュ関数を用いてメッセージダイジェストを算出する。そして、署名検証部1003は、その値がステップS1803で取りだした電子署名と一致していれば、有効な署名であるとみなす(ステップS1805)。署名用文字列は、ステップS1801で受け取ったリクエストURLと、ステップS1803で取りだしたタイムスタンプとデバイス情報を文字列として連結したものである。つまり、MFP110が図16のステップS1607で電子署名を作成するために行った処理と同じ処理を、Webアプリサーバ130で行い、その結果が一致するか否かで電子署名の有効性を確認している。MFP110が持つ電子署名用鍵835と、Webアプリサーバ130が持つ電子署名用鍵1004が同じ場合、結果は一致する。結果が一致していれば、Web接続用MFPアプリがインストールされたMFP110からのリクエストであるとみなすことができる。
Webアプリ処理部1002は電子署名が無効であれば、リクエスト元にエラーを応答して処理を終了する(ステップS1830)。一方、Webアプリ処理部1002は電子署名が有効であれば、電子署名の検証結果をセッションと紐づけて保存する(ステップS1806)。電子署名の検証結果をセッションと紐づけて保存することで、以降のリクエストに対する処理において、Web接続用MFPアプリがインストールされたMFP110からの通信であると確認することが可能になる。なお、Webアプリによっては、電子署名ではなく別の情報を用いてリクエスト元をチェックするようにしてもよい。その場合、ステップS1804からS1806はスキップして、代わりとなる情報をチェックする。例えば、リクエスト元のIPアドレスやWebブラウザのユーザエージェントをチェックするようにしてもいいし、ステップS1803で取りだしたデバイス情報をチェックするようにしてもよい。
ステップS1807で、Webアプリ処理部1002は、ステップS1803で取りだしたデバイス情報のチェックを行う。MFP110のデバイス情報を必要としないWebアプリであれば、このステップは不要である。MFP110のデバイス情報が必要なWebアプリであれば、Webアプリ処理部1002は、デバイス情報をチェックし、問題があればリクエスト元にエラーを応答して処理を終了する(ステップS1830)。一方、Webアプリ処理部1002は、デバイス情報に問題がなければ次のステップS1808へ処理を進める。デバイス情報のチェックの例として、「ユーザIDの確認」や「有効なオプション機能の確認」、「ソフトウェアバージョンの確認」などがあげられる。たとえば確認対象の項目すべてについて要件を満たしていれば問題がないと判定し、満たされていない要件があれば問題があると判定する。
ステップS1808で、Webアプリ処理部1002は、トップページを表示するためのHTMLコンテンツを生成する。最後に通信部1001は、ステップS1808で生成したHTMLコンテンツを、MFP110へ応答して処理を終了する(ステップS1809)。
一方、ステップS1820で、Webアプリ処理部1002はステップS1801で受け取ったリクエストに応じた処理を行う。例えば、スキャン設定画面を呼び出すためのリクエストであれば、スキャン設定画面を構成するHTMLを生成する。そして、Webアプリ処理部1002が、リクエストに応じた処理としてMFP110のサービスプロバイダ707にジョブを投入するか否かを判断する(ステップS1821)。Webアプリ処理部1002が、サービスプロバイダ707にジョブを投入すると判断した場合は、処理はステップS1822に進む。一方、Webアプリ処理部1002が、サービスプロバイダ707にジョブを投入しないと判断した場合は、処理はステップS1826に進む。
Webアプリ処理部1002は、サービスプロバイダ707に対して投入するジョブ数分だけステップS1823からS1824を繰り返す(ステップS1822、S1825)。Webアプリ処理部1002は、通信部1001経由で、MFP110のサービスプロバイダ707に対してスキャン処理やプリント処理のジョブを投入し(ステップS1823)、サービスプロバイダ707からジョブ投入結果を取得する(ステップS1824)。Webアプリ処理部1002は、ステップS1820およびステップS1822からS1825の処理結果をMFP110に応答するか否かを判断する(ステップS1826)。Webアプリ処理部1002は、処理結果をMFP110に応答すると判断した場合は、通信部1001はステップS1820で処理した結果を、MFP110へ応答して処理を終了する(ステップS1809)。Webアプリ処理部1002は、処理結果をMFP110に応答しないと判断した場合は、応答することなく処理は終了する。
なお、図18では、ステップS1821からステップS1825の処理は、ステップS1820の直後に処理する流れになっているが、ステップS1821からステップS1825の処理は、ステップS1820の後の任意のタイミングで処理を実行してもよい。例えば、ステップS1821からステップS1825の処理を、あらかじめ設定されている時刻にバッチ処理として処理するように構成してもよい。
●サービスプロバイダによるジョブの処理
図19(A)は、MFP110のサービスプロバイダ707がWebアプリサーバ130からのリクエストに応じて、ジョブ投入処理を呼び出す際の処理を説明するためのフローチャートである。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図19(A)のフローチャートの各ステップが実行される。
図19(A)のフローチャートは、図15(A)のステップS1512からステップS1514の処理を詳細に説明したものである。図15(A)のステップS1512は、図19(A)ではステップS1901に相当する。図15(A)のステップS1513は、図19(A)ではステップS1902からステップS1906に相当する。図15(A)のステップS1514は、図19(A)ではステップS1907およびステップS1910に相当する。
サービスプロバイダ707は、Webアプリサーバ130からのジョブ投入リクエストを受け付ける(ステップS1901)。サービスプロバイダ707はWeb接続用MFPアプリ711のサービスプロバイダ連携部836に対して、設定情報の取得すなわち現行マニフェストファイル821の取得を依頼する(ステップS1902)。サービスプロバイダ707が、サービスプロバイダ連携部836から、設定情報として現行マニフェストファイル821を取得する(ステップS1903)。サービスプロバイダ707が現行マニフェストファイル821の内容と、ステップS1901で取得したジョブ投入の内容をチェックする(ステップS1904)。
ここで、ステップS1904の処理の詳細を説明する。ステップS1904では、Webアプリサーバ130のURLと、現行マニフェストファイル821のトップページURL913またはコンテキストルートURL914との間で、ドメインと第1ディレクトリがそれぞれ一致するかを確認する。ここでは、現行マニフェストファイル821のトップページURL913とコンテキストルートURL914が図9(B)のように設定されていたとする。具体的には、トップページURL913は"http://www.canon.com/mypotal?app=webapp01"、コンテキストルートURL914は"http://www.canon.com/webapp01"となっている。このとき、第1のケースとして、WebサーバのURLが"http://www.canon.com/mypotal/jobOperation"となっているとする。このケースでは、サービスプロバイダ707は、まずWebアプリサーバ130のURLと、最初にトップページURL913とを照合する。Webアプリサーバ130のドメインは"www.canon.com"となっており、トップページURL913のドメインは"www.canon.com"となり、両者は一致と判断される。次にWebアプリサーバ130の第1ディレクトリは"mypotal"となっており、トップページURL913のドメインは同じく"mypotal"となっており一致する。Webアプリサーバ130のURLとトップページURL913との間で、それぞれのドメインと第1ディレクトリが一致するため、ステップS1904では、サービスプロバイダ707がURL確認処理に成功したと判断する。
次に、第2のケースとして、WebサーバのURLが"http://www.canon.com/webapp01/Control"となっていたとする。このケースでは、サービスプロバイダ707は、Webアプリサーバ130のURLと、最初にトップページURL913とを照合する。Webアプリサーバ130のドメイン"www.canon.com"となっており、トップページURL913のドメインは"www.canon.com"となり一致と判断される。次にWebアプリサーバ130の第1ディレクトリは"webapp01"となっており、トップページURL913のドメインは"mypotal"となっており一致しない。この場合には次にWebアプリサーバ130のURLと、コンテキストルートURL914とを照合する。Webアプリサーバ130のドメインは"www.canon.com"となっており、コンテキストルートURL914のドメインは"www.canon.com"となり一致と判断される。次にWebアプリサーバ130の第1ディレクトリは" webapp01"となっており、コンテキストルートURL914のドメインは"webapp01"となっており一致する。これにより、Webアプリサーバ130のURLとコンテキストルートURL914との間で、それぞれのドメインと第1ディレクトリが一致するため、ステップS1904では、サービスプロバイダ707がURL確認処理に成功したと判断する。
次に、第3のケースとして、WebサーバのURLが"http://www01.canon.jp/mypotal/jobOperation"となっていたとする。このケースでは、サービスプロバイダ707は、Webアプリサーバ130のURLと、最初にトップページURL913とを照合する。Webアプリサーバ130のドメインは"www01.canon.jp"となっており、トップページURL913のドメインは"www.canon.com"となり一致しない。次に、サービスプロバイダ707は、Webアプリサーバ130のURLと、コンテキストルートURL914とを照合する。Webアプリサーバ130のドメインは"www01.canon.jp"となっており、コンテキストルートURL914のドメインは"www.canon.com"となり一致しない。したがって、Webアプリサーバ130のURLと、トップページURL913とコンテキストルートURL914のドメインのいずれも一致しないため、ステップS1904では、サービスプロバイダ707が、URL確認処理がエラーであると判断する。
次に、第4のケースとして、WebサーバのURLが"http://www.canon.com/serv/Oper"となっていたとする。このケースでは、サービスプロバイダ707は、Webアプリサーバ130のURLと、最初にトップページURL913とを照合する。Webアプリサーバ130のドメインは"www.canon.com"となっており、トップページURL913のドメインは"www.canon.com"となり一致と判断される。次にWebアプリサーバ130の第1ディレクトリは"serv"となっており、トップページURL913のドメインは"mypotal"となっており一致しない。次に、サービスプロバイダ707は、Webアプリサーバ130のURLと、コンテキストルートURL914とを照合する。Webアプリサーバ130のドメインは"www.canon.com"となっており、コンテキストルートURL914のドメインは"www.canon.com"となり一致と判断される。次にWebアプリサーバ130の第1ディレクトリは"serv"となっており、コンテキストルートURL914のドメインは"webapp01"となっており一致しない。したがって、Webアプリサーバ130のURLと、トップページURL913とコンテキストルートURL914の第1ディレクトリのいずれも一致しないため、ステップS1904では、サービスプロバイダ707が、URL確認処理がエラーであると判断する。
このように、Webアプリサーバ130のURLとトップページURL913との間、および、Webアプリサーバ130のURLとコンテキストルートURL914との間の少なくとも一方で、それぞれのドメインおよび第1ディレクトリが一致していれば、ステップS1905におけるURL確認は成功と判定される。成功しなければ失敗であると判定される。Webアプリサーバ130のURLと、トップページURL913およびコンテキストルートURL914を照合する目的は、不正なWebアプリサーバ130からのサービスプロバイダ707へ不正なジョブ投入を防ぐことにある。そして正当なWebアプリサーバ130からのジョブ投入のみを受け付けることにある。また、照合するURLをトップページURL913とコンテキストルートURL914とに分ける目的は、認証画面のURLと、実際のWebアプリ処理のURLとが分かれているケースに対応することにある。一般的なWebアプリサーバの構成では、トップページが認証画面になっており、認証画面のURLと、その後の実際のWebアプリ処理のURLとが分かれているケースが多い。そのため、そのようなケースでも対応するためである。また、Webアプリサーバ130と現行マニフェストファイル821それぞれのトップページURL913およびコンテキストルートURL914を照合する目的は、Webアプリサーバ130とMFP110での処理のライフサイクル内での一貫性を保つためである。なお、本実施形態におけるURL確認処理は一例であり、URLのうちドメインのみ確認する処理や、ドメインと第1ディレクトリに加えて第2ディレクトリ以下を確認する処理や、URLのドメインやディレクトリ以下全てが完全一致する確認処理であってもよい。
ステップS1904における確認処理の後、サービスプロバイダ707が、ステップS1904でのURL確認処理、すなわちWebアプリサーバ130と、現行マニフェストファイル821のトップページURL913またはコンテキストルートURL914との照合に成功したか否かを判断する(ステップS1905)。サービスプロバイダ707は、ステップS1904のURL確認処理に成功したと判断した場合は、ステップS1906において、投入されたジョブを実行する。たとえばサービスプロバイダ707は投入されたジョブがスキャンジョブの場合はスキャナI/F207を通じてスキャナ112でのスキャン処理を実行する。サービスプロバイダ707は、投入されたジョブがプリントジョブの場合はプリンタI/F209を通じてプリンタ113でのプリント処理を実行する(ステップS1906)。サービスプロバイダ707は、Webアプリサーバ130に対して、ステップS1906でのジョブ実行結果を応答して処理は終了する(ステップS1907)。一方、サービスプロバイダ707は、ステップS1905でのURL確認処理結果がエラーである場合は、Webアプリサーバ130に対してエラーを応答して処理は終了する(ステップS1910)。
図20(A)は、MFP110のサービスプロバイダ連携部836がサービスプロバイダ707からのリクエストに応じて、現行マニフェストファイル821を応答する際の処理を説明するためのフローチャートである。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図20(A)のフローチャートの各ステップが実行される。
サービスプロバイダ連携部836は、サービスプロバイダ707からの現行マニフェストファイル取得依頼を受け付ける(ステップS2001)。この現行マニフェストファイル取得依頼は図19(A)のステップS1902で発行された設定取得依頼に相当する。サービスプロバイダ連携部836は、その依頼に応じて、Web接続用MFPアプリ711内の現行マニフェストファイル821を、サービスプロバイダ707応答し(ステップ2002)、処理は終了する。サービスプロバイダ707はステップS1903でその応答を受信する。
●PC140からMFPへのWeb接続用MFPアプリの設定変更
図21は、PC140がMFP110に対してWeb接続用MFPアプリの設定変更を要求する場合に実行する処理を説明するためのフローチャートである。PC140のHDD304に記憶されているプログラムを、CPU301がRAM303に読み出し、解析、実行することで、図21のフローチャートの各ステップが実行される。
図21のフローチャートは、図15(B)のステップS1521からS1528の処理を詳細に説明したものである。図15(B)のステップS1521は、図21ではステップS2101に相当する。図15(B)のステップS1522は、図21ではステップS2102に相当する。図15(B)のステップS1523は、図21ではステップS2103に相当する。図15(B)のステップS1524は、図21ではステップS2104に相当する。図15(B)のステップS1525は、図21ではステップS2105に相当する。図15(B)のステップS1526は、図21ではステップS2106に相当する。図15(B)のステップS1527は、図21ではステップS2107に相当する。図15(B)のステップS1528は、図21ではステップS2101からステップS1808に相当する。
PC140のWebブラウザ601は、ユーザからのMFP110のWeb接続用MFPアプリ711に対する設定画面呼出指示を受け付ける(ステップS2101)。Webブラウザ601は、通信部602を通じて、MFP110に対してユーザから指示されたWeb接続用MFPアプリ711の設定画面を要求する(ステップS2102)。Webブラウザ601は、通信部602を通じて、Web接続用MFPアプリ711の設定画面を取得し、画面処理部603に対して取得した設定画面の表示を依頼し、設定画面を表示する(ステップS2104)。Web接続用MFPアプリ711の設定画面の詳細は図22で説明する。Webブラウザ601は、図22のOKボタン2111が押下されると、Web接続用MFPアプリ設定画面2201の入力内容を設定変更要求として、通信部602を通じてMFP110に送信する(ステップS2106)。Webブラウザ601は、通信部603を通じてWeb接続用MFPアプリの設定変更要求に対する設定結果を受信する(ステップS2107)。Webブラウザ601は、画面処理部603に対して、ステップS2107で受信した設定結果の内容の表示を依頼し、設定結果画面を表示し(ステップS2108)、処理は終了する。
図22は、PC140の表示部I/F307に接続されたディスプレイなどに表示されるWeb接続用アプリ設定画面を説明するための図である。図22は、表示部I/F307に接続されたディスプレイなどに表示されるWeb接続用アプリ設定画面の一例である。この画面は、CPU301によってPC140上のWebブラウザ601が実行されることによって、表示部I/F307に接続されたディスプレイに表示される。本画面上でのユーザの入力操作には、入出力I/F306に接続されているキーボード、マウスなどが用いられる。
Web接続用アプリ設定画面2201は、Web接続用アプリ設定画面URL2202、Web接続用アプリ設定画面タイトル2203、MFPアプリID表示2204、アプリケーション名表示2205などを含む。また、Web接続用アプリ設定画面2201は、トップページURL入力ボックス2206、コンテキストルートURL入力ボックス2207、SSB設定入力ボックス2208、デバイス情報リスト入力ボックス2209などを含む。また、Web接続用アプリ設定画面2201は、リセットボタン2110、OKボタン2111などを含む。なお図22では、トップページURL入力ボックス2206、コンテキストルートURL入力ボックス2207、SSB設定入力ボックス2208、デバイス情報リスト入力ボックス2209が入力可能となっているが、一部が設定不可になっている構成でもよい。また、図22ではSSB設定2208やデバイス情報リスト2209がテキスト入力ボックス形式になっているが、チェックボックスやラジオボタン、リストボックスといった選択式のGUIで複数選択肢の中からユーザが選択できる形式でもよい。
Web接続用アプリ設定画面URL2202はWeb接続用アプリのURL、Web接続用アプリ設定画面タイトル2203はWeb接続用アプリ設定画面のタイトルを表す。また、MFPアプリID表示2204は、Web接続用アプリ711のマニフェストファイルのMFPアプリID911、アプリケーション名表示2205はマニフェストファイルのアプリケーション名912を表示する。トップページURL入力ボックス2206は、Web接続用MFPアプリ711のマニフェストファイルのトップページURL913が初期表示されており、ユーザからのトップページURLの入力を受け付けるための入力ボックスである。コンテキストルートURL入力ボックス2207は、Web接続用MFPアプリ711のマニフェストファイルのコンテキストルートURL914が初期表示されており、ユーザからのコンテキストルートURLの入力を受け付けるための入力ボックスである。SSB設定入力ボックス2208は、Web接続用MFPアプリ711のマニフェストファイルのSSB設定915が初期表示されており、ユーザからのSSB設定915の入力を受け付けるための入力ボックスである。デバイス情報リスト入力ボックス2209は、Web接続用MFPアプリ711のマニフェストファイルのデバイス情報リスト916が初期表示されており、ユーザからのデバイス情報リスト916の入力を受け付けるための入力ボックスである。リセットボタン2110は、ユーザからの入力初期化指示を受け付けるためのボタンであり、リセットボタン2110が押下されると、Web接続用アプリ設定画面2201の入力内容を初期表示時の内容に変更する。OKボタン2111は、ユーザからの設定内容送信指示を受け付けるためのボタンであり、OKボタン2111が押下されると、Webブラウザ601は、Web接続用アプリ設定画面2201の入力内容をWebアプリサーバ130に送信する。
図23は、Web接続用MFPアプリのマニフェストファイル変更部837がPC140からのマニフェストファイル変更要求を受け付ける際の処理を説明するためのフローチャートである。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図23のフローチャートの各ステップが実行される。
図23のフローチャートは、図15(B)のステップS1527の処理を詳細に説明したものである。図15(B)のステップS1527は、図23ではステップS2301からS2310に相当する。
まず、Web接続用MFPアプリ711のマニフェストファイル変更部837が、PC140からのWeb接続用MFPアプリ設定画面リクエストを受け付ける(ステップS2301)。マニフェストファイル変更部837は、Web接続用MFPアプリ711内に新マニフェストファイル822が存在するか否かを判断する(ステップS2302)。新マニフェストファイル822が存在する場合は、マニフェストファイル変更部837が新マニフェストファイル822の情報で図22のマニフェスト変更画面2201を作成する(ステップS2303)。新マニフェストファイル822が存在しない場合は、マニフェストファイル変更部837が現行マニフェストファイル821の情報で図22のマニフェストファイル変更画面2201を作成する(ステップS2304)。そして、作成したマニフェストファイル設定画面2201をPC140に送信する(ステップS2305)。
次に、マニフェストファイル変更部837が、PC140からのWeb接続用MFPアプリ設定変更リクエストを受け付ける(ステップS2306)。マニフェストファイル変更部837は、Web接続用MFPアプリ711内に新マニフェストファイル822が存在するか否かを判断する(ステップS2307)。新マニフェストファイル822が存在する場合は、マニフェストファイル変更部837が、ステップS2306で受信した設定変更リクエストに含まれる設定変更内容で、新マニフェストファイル822を上書きする。(ステップS2308)。新マニフェストファイル822が存在しない場合は、マニフェストファイル変更部837がステップS2306で受信した設定変更リクエストに含まれる設定変更内容で新マニフェストファイル822を作成する(ステップS2309)。そして、マニフェストファイル作成結果をWeb接続用MFPアプリ711の設定結果としてPC140に送信し(ステップS2310)、処理は終了する。
サービスプロバイダ707では、不正なジョブを実行するのを防ぐため、不正なWebアプリサーバ130からのジョブ投入要求を処理せず、正当なWebアプリサーバ130からのジョブ投入要求を受け付けるようにしたい。以上において説明した手順により、サービスプロバイダ707はWebアプリサーバ130のURLが、Web接続用MFPアプリ711のマニフェストファイルのトップページURL913またはコンテキストルートURL914と一致するかを確認する。そして、URLが一致する場合は正当なWebアプリサーバ130のジョブ投入要求であると判断してジョブを実行する。また、URLが一致しない場合は不正なWebアプリサーバ130からのジョブ投入要求であると判断してエラーとしてジョブを実行しないようにすることができる。
一方、Webアプリサーバ130のサービス名変更等の都合により、Webアプリサーバ130のURLが変更される可能性がある。このため、このWebアプリサーバ130のURL変更に合わせて、MFP110のWeb接続用MFPアプリ711のマニフェストファイルのトップページURL913またはコンテキストルートURL914の設定を変更する必要がある。またWeb接続用MFPアプリ711のマニフェストファイルの設定変更は、デバイス管理者がMFP110に対して行う必要があるが、MFP110は通常一般ユーザが使用しているため、遠隔で自由なタイミングで設定変更をできるようにする必要がある。以上において説明した手順により、デバイス管理者はPC140を用いて、MFP110のマニフェストファイル変更部837にアクセスし、遠隔で自由なタイミングで設定を変更することができる。
さらに一方で、Webアプリサーバ130とMFP110では、Webアプリ処理からジョブ実行までの一連の処理をライフサイクルとして処理している。このため、デバイス管理者はPC140を用いて、MFP110のマニフェストファイル変更部837にアクセスし、自由なタイミングで設定変更してしまうと、ライフサイクルの途中で設定が変わると、処理の一貫性が確保できない。例えば、Webアプリ処理ではWebアプリサーバと設定が一致しており処理に成功していた場合でも、ライフサイクルの途中で設定が変更してしまうことがある。その場合、Webアプリサーバ130からサービスプロバイダ707にジョブ投入された場合、設定内容が途中で変更後の値になってしまい、Webアプリサーバ130のURLと設定が一致せず、サービスプロバイダ707でのURL確認処理がエラーになる。特に、ライフサイクルの最後に当たる、Webアプリサーバ130からサービスプロバイダ707へのジョブ投入要求を行うタイミング、回数は、Webアプリサーバ130の制御に委ねられている。したがって、MFP110ではWebアプリサーバ130からのジョブ投入要求を受け付けるタイミング、回数を推測するのは困難であり、ライフサイクルの切れ目を判断するのは困難であった。このため、MFP110でライフサイクルの途中にならないように、ライフサイクルの切れ目を判断して、デバイス管理者が設定した変更内容を、ライフサイクルの切れ目に合わせて反映することは困難であった。しかし、本実施形態では、以上において説明した手順により、次のライフサイクルが始まるWeb接続用MFPアプリ711の開始時に設定を反映する。こうすることで、ライフサイクルの切れ目である可能性が高いタイミングで設定を反映している。これにより、デバイス管理者が自由なタイミングで設定した変更内容を、ライフサイクルへの影響を抑えたタイミングで設定の反映を行うことができる。
(実施形態2)
次に、本発明に係る第2の実施形態について説明する。実施形態1においては、Web接続用アプリ711の起動というライフサイクルの切れ目でWeb接続用アプリ711の設定内容を反映する。この際、Webアプリサーバ130での処理において、サービスプロバイダ707へのジョブ投入処理が一定時間後にバッチ処理で行われる場合等、一定時間を要する構成となっている場合がある。このような場合は、Web接続用アプリの設定は新しい設定にするが、以前の設定でもジョブの投入を一定期間許容したいケースがある。本実施形態では、Web接続用アプリの設定は、Web接続用アプリの起動時に反映するが、一定期間以前の設定でも許容する処理の例を説明する。なお特に断らない限り、本実施形態について、実施形態1と同一の番号のブロック図、シーケンス図、フローチャートや処理は、それぞれ実施形態1の同一番号のブロック図、シーケンス図、フローチャートや処理と同一のものである。
●実施形態2のWeb接続用MFPアプリのソフトウェア
図8(C)は本実施形態に係るWeb接続用MFPアプリのソフトウェアモジュールの構成を示す図である。実施形態1の図8(B)のWeb接続用MFPアプリは、Webアプリごとに必要となる設定情報を現行マニフェストファイル821や新マニフェストファイル822に保持する。本実施形態の図8(C)のWeb接続用MFPアプリは、図8(B)の構成に加えて、現行マニフェストファイル821が新マニフェストファイル822の設定で書き換えられる前の情報をバックアップマニフェストファイル823として(すなわちバックアップ設定として)保持する。図8(C)に提示したこれらソフトウェアモジュールは、MFP110のHDD204に格納され、実行時にはRAM203に展開されてCPU201により実行される。
バックアップマニフェストファイル823は、現行マニフェストファイル821に変更後の設定(すなわち新マニフェストファイル822)が反映される際、現行マニフェストファイル821の設定反映前の情報を、バックアップとして保持するためのマニフェストファイルである。このバックアップマニフェストファイル821を一定期間(すなわち有効期間)保持し、サービスプロバイダ707からの設定取得要求時に、現行マニフェストファイル821と共に、一定期間、バックアップマニフェストファイル823が存在する場合は返却する。また、一定期間、サービスプロバイダ707は、現行マニフェストファイル821と共にバックアップマニフェストファイル823を受信した場合は、2つのマニフェストファイルでチェックし、問題ない場合は、ジョブを受け付けるようにする。ここでたとえば、いずれか一方のマニフェストファイルに含まれたトップページURLまたはコンテキストルールURLが、WebアプリサーバのURLと一致すると判定された場合に、問題ないと判定される。これにより、サービスプロバイダ707でのジョブ受付時のチェックにおいて、設定反映後の現行マニフェストファイル821の他に、設定反映前のバックアップマニフェストファイル821の設定でもチェックを行うことができるようになる。
●バックアップマニフェストファイルの内容
図9(C)に本実施形態に係るマニフェストファイルの一例を示す。図9(C)には、図9(B)のマニフェストファイルの内容に加えて、猶予期限921および最終更新時刻922が定義されている。
猶予期限921は、バックアップマニフェストファイル823が有効な期限を表す。最終更新時刻922は、バックアップマニフェストファイル823が作成された時刻を表わす。サービスプロバイダ707がWebアプリサーバ130からジョブ要求を受け付けた際に、現行マニフェストファイル821の設定に加えて、バックアップマニフェストファイル823の設定を、最終更新時刻922から猶予期限921の時間は、許容する。例えば、図9(C)の場合、猶予期限921は"4320min"となっており、最終更新時刻922は"2016/06/23 16:03:05"となっている。この場合、最終更新時刻922の表す2016年6月23日16時3分5秒を起点として、猶予期限921の表す4320分だけ、バックアップマニフェストファイル823が有効であることを表す。ここで猶予期限921に設定する値について説明する。Webアプリサーバ130での処理において、サービスプロバイダ707へのジョブ投入処理が一定時間後にバッチ処理で行われる場合等、一定時間を要する構成となっている場合がある。このような場合には、Webアプリサーバ130のサービスプロバイダ707へのジョブ投入が行われる可能性のある時間、例えばバッチ処理を行う際の最長時間を猶予期限921として設定しておく。するとWebアプリサーバ130からバッチ処理でサービスプロバイダ707へジョブ投入が行われた場合でも、最終更新時刻922から猶予期限921の時間内であれば、サービスプロバイダ707で以前の設定でジョブ投入要求時の確認処理を行うことができる。なお最終更新時刻922は、本実施形態ではバックアップマニフェストファイル823においてのみ有効なので、バックアップマニフェストファイル823に固有のフィールドとしても良い。すべてのマニフェストファイルが最終更新時刻922を持つ場合には、バックアップマニフェストファイル823以外のマニフェストファイルでは最終更新時刻922を記録せず空フィールドとしておいてもよい。
●マニフェストファイルの更新処理
図17(B)は、本実施形態における、Web接続用MFPアプリが新マニフェストファイルの設定内容を、現行マニフェストファイルの内容に反映させる処理手順を示すフローチャートである。図17(B)は、図17(A)でのWeb接続用MFPアプリが新マニフェストファイルの設定内容を、現行マニフェストファイルの内容に反映させる処理に加えて、バックアップマニフェストファイルを保存する処理を説明するためのフローチャートである。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図17(B)のフローチャートの各ステップが実行される。なお図17(B)の処理のうち、図17(A)と同一の番号の処理は、それぞれ図17(A)の処理と同一のものである。図17(B)のフローチャートは、本実施形態における図16のステップS1602の処理を詳細に説明したものである。図16のステップS1602は、図17(B)ではステップS1701からステップS1703、および、ステップS1711からステップS1714に相当する。
マニフェストファイル反映部838は、Web接続用MFPアプリ711の中に新マニフェストファイル822が存在する場合には、さらにバックアップマニフェストファイル823が存在するか否かを判断する(ステップS1711)。存在する場合は、現行マニフェストファイル821の内容をバックアップマニフェストファイル823に上書きする(ステップS1712)。バックアップマニフェストファイル823が存在しない場合は、現行マニフェストファイル821の内容をコピーしたバックアップマニフェストファイル823を作成する(ステップS1713)。その後、新マニフェストファイル822の内容で原稿マニフェストファイル821を更新し(ステップS1702)、バックアップマニフェストファイル823の最終更新時刻を現在時刻になるように追記する(ステップS1714)。その後、新マニフェストファイル822を削除する(ステップS1703)。このようにして、原稿マニフェストファイル821の内容を更新する際に、更新直前の内容をバックアップマニフェストファイル823として保存するとともに、その最終更新時刻を記録する。
●サービスプロバイダによるジョブの処理
図19(B)は本実施形態における、MFP110のサービスプロバイダ707がWebアプリサーバ130からのリクエストに応じて行う処理手順を示すフローチャートである。図19(B)は、図19(A)に示したMFP110のサービスプロバイダ707がWebアプリサーバ130からのリクエストに応じて行うジョブ投入処理に加えて、バックアップマニフェストファイル823を取得した際の処理を説明するためのフローチャートである。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図19(B)のフローチャートの各ステップが実行される。なお図19(B)の処理のうち、図19(A)と同一の番号の処理は、それぞれ図19(A)の処理と同一のものである。図19(B)のフローチャートは、図15(A)のステップS1512からステップS1514の処理を詳細に説明したものである。図15(A)のステップS1512は、図19(B)ではステップS1901に相当する。図15(A)のステップS1513は、図19(B)ではステップS1902からS1906、および、ステップS1921からS1923に相当する。図15(A)のステップS1514は、図19(B)ではステップS1907およびステップS1910に相当する。以下の説明では、図19(A)との相違部分に限って図19(B)を説明する。
ステップS1903で、Web接続用MFPアプリ711から現行マニフェストファイル821に加えて、バックアップマニフェストファイル823の最終更新時刻から猶予期間の間は、バックアップマニフェストファイル823を取得する。そして、ステップS1904で、Webアプリサーバ130から受信したジョブの内容を現行マニフェストファイル821でチェックした結果、問題ないと判断されなかった場合に、ステップS1905において、ステップS1921に進む。
サービスプロバイダ707は、Web接続用MFPアプリ711のサービスプロバイダ連携部836から、バックアップマニフェストファイル823をステップS1903で受信したか否かを判断する(ステップS1921)。サービスプロバイダ707が、バックアップマニフェストファイル823の内容とステップS1901で取得したジョブ投入の内容とをチェックする(ステップS1922)。
サービスプロバイダ707はジョブ投入を要求したWebアプリサーバ130のURLの一部分と、バックアップマニフェストファイル823のコンテキストルートURL914の一部分とが一致するか否かを判断する(ステップS1923)。一致する場合、すなわちステップS1922でのチェック結果に問題が無いと判断した場合は、処理はステップS1906に進んでジョブ実行を行い、問題があると判断した場合は、処理はステップS1910に進む。
ここで、ステップS1922の処理の詳細を説明する。ステップS1922では、Webアプリサーバ130のURLと、バックアップマニフェストファイル823のトップページURL913またはコンテキストルートURL914との間で、ドメインと第1ディレクトリとが一致するかを確認する。すなわちステップS1923の説明でいう「一部分」とはドメインと第1ディレクトリに相当する。このURL確認処理は、図19(A)のステップ1904でのWebアプリサーバ130のURLと、現行マニフェストファイル821のトップページURL913またはコンテキストルートURL914との間でのURL確認処理と同様である。すなわち、ステップ1904でのURL確認処理のうち、現行マニフェストファイル821となっている部分を、バックアップマニフェストファイル823に置き換えた処理である。確認処理の詳細はステップS1904と同様なので、処理の詳細な説明は省略する。Webアプリサーバ130と、バックアップマニフェストファイル823のトップページURL913およびコンテキストルートURL914を照合する目的は、サービスプロバイダ707が猶予時間前の設定でもジョブ投入を受け付けるようにするためである。
この結果、現行マニフェストファイル821を参照してURLの確認が失敗しても、バックアップマニフェストファイル823を参照したURL確認が成功すれば、URL確認は成功したものとして処理は続行される。
図20(B)は、本実施形態における、サービスプロバイダ連携部836がサービスプロバイダ707のリクエストに応じて現行マニフェストファイル821を応答する処理を示すフローチャートである。図20(B)は、図20(A)に示した、サービスプロバイダ連携部836がサービスプロバイダ707のリクエストに応じて現行マニフェストファイル821を応答する処理に加えて、併せてバックアップマニフェストファイル823を応答する処理を説明するためのフローチャートである。MFP110のHDD204に記憶されているプログラムを、CPU201がRAM203に読み出し、解析、実行することで、図20(B)のフローチャートの各ステップが実行される。なお図20(B)の処理のうち、図20(A)と同一の番号の処理は、それぞれ図20(A)の処理と同一のものである。以下の説明では、図20(A)との相違部分に限って図20(B)を説明する。
サービスプロバイダ連携部836は、サービスプロバイダ707からマニフェストファイルのリクエストを受信すると、Web接続用MFPアプリ711にバックアップマニフェストファイル823が存在するか否かを判断する(ステップS2011)。サービスプロバイダ連携部836は、バックアップマニフェストファイル823が存在すると判断した場合は、処理はステップS2012に進み、存在しない場合は、処理はステップS2002に進む。ステップS2012において、サービスプロバイダ連携部836は、Web接続用MFPアプリのバックアップマニフェストファイル823が、猶予期限内であるかをチェックする。すなわち、サービスプロバイダ連携部836は、(Web接続用MFPアプリのバックアップマニフェストファイル823の最終更新時刻922−現在時刻)の値が、猶予期限921の値以下であるか否かをチェックする。例えば、バックアップマニフェストファイル823が図9(C)のようになっている場合を想定する。現在時刻が2016年6月22日12時1分02秒であった場合は、(Web接続用MFPアプリのバックアップマニフェストファイル823の最終更新時刻922−現在時刻)の値は、1日4時2分3秒、すなわち、1682分3秒である。この場合は、猶予期限921の値4320分以下となっているため、処理はステップS2013に進む。このようにしてバックアップマニフェストが、保存されてから所定期間を経過していない場合には、バックアップマニフェストの設定も有効であるものとして扱う。
次に、サービスプロバイダ連携部836は、ステップS2012においてバックアップマニフェストファイルが有効であると判定された場合、サービスプロバイダ707に対して、現行マニフェストファイル821と、バックアップマニフェストファイル823とを応答し(ステップS2013)、処理は終了する。バックアップマニフェストファイルが有効でないと判定された場合には原稿マニフェストファイルのみが応答される(ステップS2002)。これにより、図19(B)のステップS1921からS1923で、サービスプロバイダ707が現行マニフェストファイル821でのチェックに問題があった場合に、バックアップマニフェストファイル823でチェックされるようになる。
以上において説明した手順により、Web接続用MFPアプリ711の開始直後の設定反映処理において、現行マニフェストファイル821をバックアップマニフェストファイル823として保持する。また、サービスプロバイダ707がジョブ投入要求受付時のURL確認処理時に、現行マニフェストファイル821のURL確認でエラーになった場合、猶予時間以内であればバックアップマニフェストファイル823のURL確認を行う。そしてバックアップマニフェストファイル823のURLと一致した場合でも、ジョブ実行を行うようにすることができる。これにより、例えば猶予時間を、Webアプリサーバ130のサービスプロバイダ707へのジョブ投入が行われる可能性のある時間、例えばバッチ処理を行う際の最長時間を設定しておく。そうすると、Webアプリサーバ130で、バッチ処理でサービスプロバイダ707へのジョブ投入が行われた場合でも、猶予時間内であれば、サービスプロバイダ707で以前の設定でジョブ投入要求時の確認処理を行うようなことができる。したがって、本実施例によれば、Webアプリサーバ130での処理において、サービスプロバイダ707へのジョブ投入処理が一定時間後にバッチ処理で行われる場合等、一定時間を要する構成となっている場合がある。このような場合に、Web接続用アプリの設定は新しい設定にするが、以前の設定でもジョブの投入を一定期間許容するようなことが可能となる。たとえば変更前のURLを持つWebアプリケーションサーバからのジョブのリクエストを、猶予期間内であれば受け付けることができる。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。