JP6935291B2 - 画像形成装置及びその制御方法 - Google Patents

画像形成装置及びその制御方法 Download PDF

Info

Publication number
JP6935291B2
JP6935291B2 JP2017191762A JP2017191762A JP6935291B2 JP 6935291 B2 JP6935291 B2 JP 6935291B2 JP 2017191762 A JP2017191762 A JP 2017191762A JP 2017191762 A JP2017191762 A JP 2017191762A JP 6935291 B2 JP6935291 B2 JP 6935291B2
Authority
JP
Japan
Prior art keywords
bundle
permission
application
host
image forming
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017191762A
Other languages
English (en)
Other versions
JP2019067131A (ja
Inventor
速水 祥和
祥和 速水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2017191762A priority Critical patent/JP6935291B2/ja
Priority to EP18192933.2A priority patent/EP3462363B1/en
Priority to US16/143,291 priority patent/US10545704B2/en
Priority to CN201811140096.6A priority patent/CN109597659A/zh
Publication of JP2019067131A publication Critical patent/JP2019067131A/ja
Application granted granted Critical
Publication of JP6935291B2 publication Critical patent/JP6935291B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1222Increasing security of the print job
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • G06F21/608Secure printing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1224Client or server resources management
    • G06F3/1225Software update, e.g. print driver, modules, plug-ins, fonts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1286Remote printer device, e.g. being remote from client or server via local network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • H04N1/00938Software related arrangements, e.g. loading applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2145Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Automation & Control Theory (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Facsimiles In General (AREA)
  • Storage Device Security (AREA)

Description

本発明は、アプリケーションプログラムの管理に関するものである。
近年、画像形成装置においては、JAVA(登録商標、以下省略)環境に代表されるようなアプリ動作環境が提供されている。JAVAの持つプログラムの可搬性を利用して、拡張可能なアプリケーションプログラム(以下「アプリ」と略称する)を提供する技術が提案されている。画像形成装置の機能やユーザビィリティの向上を図るために、JAVA環境などの環境下で動作するアプリを作成し、画像形成装置にインストールすることで、当該アプリにより所望の機能を実現できる。
アプリプラットフォームとしては、組み込み機器向けのJAVAアプリプラットフォームである、OSGi(Open Services Gateway Initiative)Service Platform(以下、OSGi)がある(非特許文献1)。OSGiの仕様には、ホストバンドルとフラグメントバンドルという仕組みがある。ホストバンドルとは、フラグメントバンドルの追加対象としているバンドルを指す。フラグメントバンドルとは、単独では動作せず、ホストバンドルのクラスローダ空間にバンドル自身を追加(アタッチ)する形式のバンドルである。
このフラグメントバンドルを含む各バンドルは、JAVAの標準仕様で設けられたパーミッションと呼ばれるセキュリティアクセス権限の仕組みを持つ。このパーミッションは、各バンドル個別に定義することが可能である。
「OSGi Service Platform,Release4」, http://www.osgi.org/Download/Release4V40, 2005年10月
ホストバンドルが保持するパーミッション定義ファイルのパーミッションは、セキュリティ上必要最小限に留めておくことが望ましい。一方、フラグメントバンドルの処理に必要なパーミッションは、ホストバンドルのパーミッションに従って処理される。そのため、フラグメントバンドルの処理に必要なパーミッションが不足する可能性がある。フラグメントバンドルの処理に必要なパーミッションが不足する場合、ホストバンドルが保持するパーミッション定義ファイルを都度修正する必要があり、フラグメントバンドルの利便性を損なうものであった。
本発明は、ホストバンドルが保持するパーミッション定義ファイルを修正することなく、フラグメントバンドルの処理に必要なパーミッションを不足させずに実行可能とする技術を提供することを目的とする。
本発明の画像形成装置は、ホストアプリケーションに対応つけられた前記ホストアプリケーションのパーミッションリストを保持する保持手段と、前記ホストアプリケーションに、プラグインアプリケーションを追加する追加手段と、前記プラグインアプリケーションに含まれるパーミッションを、前記ホストアプリケーションのパーミッションリストに追加して更新する更新手段と、前記更新されたパーミッションリストに基づいて、前記ホストアプリケーションおよび前記プラグインアプリケーションにおける処理実行するかを判定する手段を有することを特徴とする。
本発明によれば、ホストバンドルが保持するパーミッション定義ファイルを修正することなく、フラグメントバンドルの処理に必要なパーミッションを不足させずに実行可能とする技術を提供することができる。
画像形成装置のハードウェア構成図 画像形成装置のソフトウェアモジュール階層図 バンドルのインストールする流れを示したブロック図 フラグメントバンドルの概念図 バンドル管理画面、インストール画面のUIを示した図 一般的なJAVAにおけるパーミッションの仕組みについて説明した図 OSGiにおけるパーミッションの仕組みについて説明した図 バンドルが抱えるパーミッション定義ファイルについて説明した図 OSGi拡張部がメモリ上で保持するパーミッションリストとパーミッションファイルについて説明した図 バンドルインストール時と画像形成装置の起動時のOSGi拡張部のパーミッションに関するフローチャート バンドルから呼び出されたAPIでのパーミッション処理に関するシーケンス図 OSGiにおけるホストバンドルとフラグメントバンドルのパーミッションの仕組みについて説明した図 ホストバンドルとフラグメントバンドルのパーミッション定義ファイルについて説明した図 フラグメントバンドルがアタッチされたときに、ホストバンドルが保持するパーミッションリストの変化について説明した図 フラグメントバンドルがホストバンドルへアタッチされるときのOSGi拡張部のホストバンドルのパーミッション処理についてのフローチャート フラグメントバンドルがホストバンドルへデタッチされるときのOSGi拡張部のホストバンドルへのパーミッション処理についてのフローチャート フラグメントバンドルがデタッチされたときに、ホストバンドルが保持するパーミッションリストの変化について説明した図
以下、本発明を実施するための最良の形態について図面を用いて説明する。
まず、フラグメントバンドルをホストバンドルにアタッチ(追加)するときのOSGi拡張部におけるパーミッション処理について述べる。なお、ホストバンドルは、ホストアプリケーション(ホストアプリ)、フラグメントバンドルは、プラグインアプリケーション(プラグインアプリ)と同義である。
図1は、プリント機能やスキャン機能、ネットワーク通信機能などを備える画像形成装置130のハードウェア構成図である。
画像形成装置130は、スキャナ部113やプリンタ部114と電気的に接続され、一方でLAN116を介して外部デバイスと接続される。CPU101は、ROM102に記憶された制御プログラム等に基づいて接続中の各種ハードウェアとのアクセスを統括的に制御し、またコントローラ内部で行われる各種処理についても統括的に制御する。
ROM102は読み出し専用の不揮発記憶領域であり、画像形成装置130のブートプログラム、ファームウェアなどが格納されている。RAM103は、CPU101が動作するためのシステムワークメモリであり、各種データを一時記憶するためのメモリである。このRAM103は、記憶した内容を電源off後も保持可能なFRAM(登録商標)およびSRAM、電源off後に記憶内容が消去されるDRAMなどにより構成される。
HDD104は不揮発記憶領域であり、システムバンドルなどを格納する。図3で説明するインストールするバンドルを含むファームウェアは、HDD104に格納される。操作部I/F105は、システムバス119と操作部118を接続するインタフェース部である。具体的には操作部118に表示するデータをシステムバス119から受取り表示すると共に、操作部118からの入力情報をシステムバス119へ出力する。画像形成装置130に対するユーザの指示や情報提示は、操作部118を介して行う。ネットワークI/F106はLAN116、WAN117及びシステムバス119に接続し、外部との情報の入出力を行う。
スキャナI/F108は、スキャナ部113から受取った画像データに対して、補正、加工、及び編集を行う。画像形成部109は、画像データの方向変換、画像圧縮、伸張部などを行う。プリンタI/F110は、画像形成部109から送られた画像データを受取り、画像形成後にプリンタ部114にて印刷する。
図2は、本発明に関係する画像形成装置130のソフトウェアモジュール階層図200である。
なお、図2以降に示す各ソフトウェアはROM102、もしくは、HDD104に保存され、CPU101にて実行される。また、実行時に使用する各種情報はRAM103もしくはHDD104に保持してソフトウェア機能間での各種情報のやりとりを行う。さらに外部機器との通信は、ネットワークI/F106を用いて通信を行う。
次に各ソフトウェアの説明をする。ソフトウェアは、まずオペレーティングシステム(OS)プラットフォーム201を有する。UI202はユーザインタフェースモジュールであり、オペレータが画像形成装置130に対する各種操作・設定を行う際に、装置とユーザ操作との仲介を行うモジュールである。このモジュールは、オペレータの操作に従い、各種モジュールに入力情報を転送して処理の依頼、或いはデータの設定変更等を行う。
次に、JAVA側の構成について述べる。
JAVA側のソフトウェアプラットフォームは、JavaVM207のランタイム環境として構成されており、インタプリタとしてのJavaVM207、ライブラリ208、フレームワーク群209で構成される。ライブラリ208は、標準のAPIライブラリを含んで構成される。フレームワーク群209は、OSGi210を含んで構成され、このOSGi210は、単一のJavaVM207に複数のバンドルを動作させる。
OSGiでは、ソフトウェアモジュールの管理単位としてバンドルを定義しており、インストール/開始/停止/更新/アンインストールからなるライフサイクルを管理するための仕様を定義している。ここで、バンドルとは、JAVAモジュールのことを指し、本発明においては、アプリと同義である。そのため、以後アプリのことをバンドルと表記する。このようなアプリプラットフォームでは、コピー、スキャン、プリント等の組み込み機能をバンドルが提供することができる。
更に、OSGi拡張部211は、インテーフェース仕様であるOSGi210に対する実装部分を担うモジュールである。OSGi拡張部211は、OSGi210の仕様を満たす範囲で必要に応じて機能を拡張可能であることを示す。このOSGi210、及びOSGi拡張部211は、バンドルのライフサイクルの管理やバンドル間通信機能などを提供する。
このOSGi210上には、複数のシステムバンドル群212がある。システムバンドル群212としては、複数のバンドルを管理し、新たなバンドルの追加、更新、削除をするためのバンドル管理サービス214がある。バンドル管理サービス214は、PCからのインストール指示を受信する受け口でもある。インストール指示を受診したバンドル管理サービス214は、インストール制御サービス213を利用して、バンドルの追加、更新を行う。
更に、システムバンドル群212の中には、画像形成装置130の認証機能を担う認証バンドル215がある。認証バンドル215は、ユーザが画像形成装置に認証中に任意のバンドルから任意のタイミングで認証情報の問い合わせがあるため、停止できない特性を持つバンドルである。
一方で、後からインストールするタイプの後入れバンドル群217がある。バンドルのインストールについては、図3で示す。後入れバンドル群217として、後入れバンドル219は、画像形成装置130において各種処理をユーザに提供する。例えば、画像の加工や圧縮バンドル、印刷制限などの部門管理を行うバンドルなどがある。各種機能を実現する後入れバンドル219は、バンドル管理サービス214の管理下で動作する。バンドル管理サービス214は、管理下に追加されたバンドルのバージョンを含むバンドル情報、ライセンス情報などを保持している。
図3は、ユーザが、PC300から画像形成装置130へ、後入れバンドル219をインストールする流れを示したブロック図である。
市販された後入れバンドル219は、改ざん防止の為、デジタル署名が付与され、そのうえで暗号化されている。また、後入れバンドル219は、パーミッション定義ファイル301を抱えている。このパーミッション定義ファイル301は、後入れバンドル219がインストール後に様々な機能を使用する上で利用可能なパーミッションを示す。ここで、パーミッションとは、JAVAの標準仕様で設けられたセキュリティアクセス権限の仕組みである。パーミッション定義ファイル301は、必要がなければ、保持しなくても構わない。このパーミッションは、通常以下のように、パーミッション名とnameとactionという形式で定義される。nameとactionに取りうる値は、パーミッションの種類によって異なる。また、*を指定することで、ワイルドカード指定が可能である。
(XXXPermission, “name”, “action”)
PC300のWEBブラウザにバンドルインストールUI302を表示し、このバンドルインストールUI302からインストールしたい後入れバンドル219を指定し、インストールを行う。バンドルインストールUI302で指定されたバンドルを受信したバンドル管理サービス214は、それをインストール制御サービス213に渡す。バンドルファイルを受信したインストール制御サービス213は、受信した後入れバンドル219の復号化処理や正当性を示すデジタル署名をもつかの確認処理を行った上で、確認に問題がない場合は、最終的にOSGi拡張部211にインストールを依頼する。OSGi拡張部211は、インストールする際に、バンドルがもつパーミッション管理を行うためのパーミッションリスト303を、バンドルごとにメモリ上に作成する。これは、JavaVM207からバンドルが保持しているパーミッションの問い合わせに答えるために、作成される。パーミッションリスト303の詳細は、図7で説明する。また、こうしたインストール時だけでなく、画像形成装置の起動時に画像形成装置に含まれる全てのバンドルのパーミッションをパーミッションリスト303に読み戻す必要がある。そのため、全てのバンドルのパーミッション情報が含まれたパーミッションファイル304を作成する。こうしたパーミッションの管理は、OSGi210の規定に含まれる。パーミッションファイル304の詳細は、図9で説明する。
図4は、フラグメントバンドルの概念を説明する図である。
ここでは、ホストバンドル400に対して、言語ローカライズリソースをもつフラグメントバンドル401と402がアタッチされる例を示している。
ホストバンドルにフラグメントバンドルをアタッチするためには、OSGi210の規約上、以下のマニフェスト、及びパーミッション定義ファイルにおいてバンドルパーミッションの指定が必要となる。
■ホストバンドルのマニフェスト403
Bundle−ManifestVersionに、2と指定する。
Bundle−SymbolicNameには、フレームワーク内で一意な名前を付ける。
■フラグメントバンドルのマニフェスト405
Bundle−ManifestVersionに、2と指定する。
Fragment−Hostには、ホストバンドルのマニフェスト403に記載の<ホストのバンドルシンボリック名>を指定する。本値が一致することでホストバンドルとフラグメントバンドルが同一バンドルの構成要素であることを示すものとなる。
■ホストバンドルのパーミッション404
BundlePermission[バンドルシンボリック名, HOST]
■フラグメントバンドルのパーミッション406
BundlePermission[バンドルシンボリック名, FRAGMENT]
上記条件を満足する状態で、フラグメントバンドルをアタッチすると、OSGi210がフラグメントバンドルのマニフェスト情報からホストバンドルを特定し、ホストバンドルのクラスパスにフラグメントバンドル自身のクラスパスの追加を行う。ここで「クラスパス」とは、JAVAアプリケーションを実行するときに、JAVAVMがどの場所からクラスファイルを読み込めばよいかを、指定するためのものである。更に、ホストバンドルのクラスローダによって、フラグメントバンドル内の全てのクラスとリソースがロードされる。ここで、「クラスローダ」とは、クラスのロードやリソースの検索を担当するオブジェクトであり、全てのクラスはクラスローダによってJAVAVMにロードされアプリケーションから利用可能となる。このホストバンドルのクラスローダのロードの実行は、ホストバンドル起動時に行われるため、必ずホストバンドルを一度停止し、クラスパスを追加したうえでロードする必要がある。
本例では、フラグメントバンドルとして日本語リソース401、中国語リソース402が本体であるホストバンドル400にインストールされる。その後、ホストバンドル400が、これらの日本語、中国語リソースを利用して、リソースの言語切り替えが可能となる。つまり、ホストバンドルのUI上の表示は英語であるが、ホストバンドルのUI上でリソース切り替え指定をすることで、日本語表示や中国語表示にするようにホストバンドルを作ることが可能である。
一般的にOSGiの規定上、フラグメントバンドルは、ホストバンドルのパーミッションの指定に従う。つまり、フラグメントバンドルから呼び出される機能は、ホストバンドルのパーミッションに従って処理されることになる。また、OSGiの規定上、このアタッチ、デタッチの切り替え時に、ホストバンドルのパーミッションが変わることはない。
なお、アプリの修正または拡張時に、フラグメントバンドルを用いてホストバンドルの機能を修正または拡張することで、インストールするファイルサイズが小さくでき効率的にモジュールの配布が可能である。
図5は、バンドル管理サービス214における、バンドルの管理画面500とインストール画面530を示した図である。
まず、バンドルの管理画面500から説明する。
バンドル名501は、管理されているバンドル名を表示する。この例の場合、バンドルA505とバンドルB506の2つが管理されている。更に、このバンドルAをホストバンドルとして、フラグメントバンドルA507、フラグメントバンドルB508が管理されている。この場合、ホストバンドルとフラグメントバンドルが紐づいている(対応づいている)ことがわかるように、バンドルA505と関連付けて表示される。インストール日502は、各バンドルがインストールされた日付である。バンドルID503は、各バンドルに一意に割り振られたバンドルIDを表示している。バンドルIDは、バンドルを識別するための識別情報である。状態504は、各バンドルの状態を示している。バンドルが開始であれば開始、停止であれば停止と表示される。また、フラグメントバンドルの場合、ホストバンドルにアタッチされている場合は、有効と表示される。このフラグメントバンドルがアタッチされている状態を有効状態という。フラグメントバンドルにアタッチされていない、つまりデタッチされている場合は、無効と表示される。このフラグメントバンドルがデタッチされている状態を無効状態という。無効状態の場合、ホストバンドルとのつながりはないが、HDD104上にjarの実体は残っている。そのため、この無効状態から有効化を実行すれば、改めてjarを指定しなくとも有効状態に遷移することができる。開始ボタン516/停止ボタン513は、バンドルの開始停止を切り替える指示ボタン(受付ボタン)である。開始状態のバンドルの場合、停止ボタンとなり、停止状態のバンドルの場合、開始ボタンと表示される。有効化ボタン515/無効化ボタン514は、フラグメントバンドルの有効無効を切り替える指示ボタンである。有効状態のバンドル(本例では、「フラグメントバンドルA507」)の無効化ボタン514を押下すると、その状態504は無効に変更される。一方、無効状態のバンドル(本例では、「フラグメントバンドルB508」)の有効化ボタン515を押下すると、その状態504は有効に変更される。アンインストールボタン517〜520は、各バンドルをアンインストールする指示ボタンである。アンインストールが指示された場合、HDD104上に残っているjarの実体が削除される。
次に、インストール画面530について説明する。参照ボタン533は、ファイルパスを選択する画面を表示する。その画面でバンドルファイルを指定すると、バンドルファイルのパス531にバンドルファイルへのパスが入力される。バンドルは、セキュリティやビジネス上の観点から暗号化されており、インストール処理において、バンドルを復号する必要がある。そのための鍵を保持するライセンスファイルが必要となる場合がある。その場合、参照ボタン534を押下すると、ファイルパスを選択する画面を表示する。そこでバンドル指定と同様にライセンスファイルを指定すると、ライセンスファイルのパス532にライセンスファイルへのパスが入力される。インストールボタン535が押下されると、バンドルファイルのパス531で指定したバンドルのインストールが開始される。フラグメントバンドルがインストールに指定された場合、フラグメントバンドルは、一旦無効状態でインストールされる。
図6は、JAVAにおけるパーミッションの仕組みについて説明した図である。
JAVAのアプリケーション環境のポリシーは、さまざまなソースを出所とするコードがどのようなアクセス権を使用できるかを指定することできる。このコードがどのようなアクセス権を使用できるかを指定できるファイルをポリシーファイル601と呼ぶ。
JavaVM207は、ポリシーファイル601が指定されているとする。このポリシーファイル601は、/java_home/lib/ext/*”の配下にあるjarファイルは、
「java.io.FilePermission”/data/foo.dat” “read,write”」
というパーミッションを保持していることを示している。このパーミッションは、/log/foo.datというファイルに対して、読み書きのパーミッションを持つことを意味している。
そのため、/java_home/lib/ext/602配下にあるSample1.jar603とSample2.jar604は、このパーミッションを持つことになる。一方、/java_home/etc605の配下にあるSample3.jar606は、パーミッションを持たないことになる。
JavaVM207は、APIが権限チェックを望んでいる場合、デフォルトのポリシーファイル601を参照する。そして、呼び出し元バンドルが保持しているパーミッションとAPIがチェックしたいパーミッションを参照して、呼び出し元バンドルがパーミッションを保持しているかどうかを判断している。パーミッションを保持していない場合、そのAPIは利用不可ということで、処理を中断しエラーを返す。
例えば、あるjarからJAVA標準ライブラリのjava.io.File.createNewFile600という新規にファイルを作成するAPIを利用し、「/data/foo.dat」というファイルを作成する場合を考える。このcreateNewFile600というAPIは、指定されたパスへの書き込みパーミッションを持っているバンドルにしか、書き込み処理を行わない仕様である。そのため、このファイルに対する読み書きのパーミッションを持つSample1.jar603とSample2.jar604からのコール(610,611)の場合は、エラーになることはない。一方、Sample3.jar606からのコール(612)の場合は、書き込みのパーミッションがないというエラーが返ることになる。
図7は、OSGiにおけるパーミッションの仕組みについて説明した図である。
これは、図6で示したJAVAのパーミッション管理の仕組みを基本として、JavaVM207が参照する呼び出し元バンドルが保持しているパーミッションをOSGi拡張部211が管理する構成となっている。
OSGi拡張部211は、各バンドルが保持するパーミッションをパーミッションリスト705としてメモリ上で管理している。JavaVM207は、呼び出しバンドルが保持しているパーミッションが何か取得するときにこのパーミッションリスト705を参照する。
デフォルトポリシーファイル700は、/java_home/lib/ext/*”の配下にあるjarファイルは、3つのパーミッションを保持していることを示している。尚、デフォルトポリシーファイルは、すべてのバンドルに共通に与えられるパーミッションである。
更に、/java/bundles/701の配下にあるBundle1.jar702は、パーミッション定義ファイル704を保持している。一方、Bundle2.jar703は、バンドル定義ファイルを保持していないとする。Bundle1.jar702は、デフォルトポリシーファイルにあるパーミッションにパーミッション定義ファイルにあるパーミッションを加えたパーミッションに従って動作する。Bundle2.jar703は、バンドル定義ファイルを保持していないので、デフォルトポリシーファイルにあるパーミッションに従って動作する。
ここで、図8でバンドルが抱えるパーミッション定義ファイルについて説明する。
図8(a)は、バンドルが抱えるパーミッション定義ファイルについて説明した図である。バンドルjarファイル800は、マニフェストファイル801と同様にパーミッション定義ファイル802を保持することができる。
図8(b)は、Bundle1.jar702のパーミッション定義ファイル704を示している。具体的には、
(java.lang.RuntimePermission “*” “XXX”)
(java.security.SecurityPermission “*” “YYY”)
(java.io.FilePermission “/log/foo.log” “read,write”)
の3つのパーミッションが定義されている。
図7の説明に戻り、Bundle1.jar702が、保持しているパーミッションについて説明する。OSGi拡張部211は、バンドルの最初のインストール時に、デフォルトポリシーファイル700とバンドル定義ファイル704を合算したものをメモリ上にパーミッションリスト705として管理する。このときのパーミッションリスト705の状態について、図9で説明する。また、このときのOSGi拡張部211がバンドルリスト705を作成するフローは、図10で示す。
図9は、OSGi拡張部が、RAM103のメモリ上で保持するパーミッションリスト900、901と、OSGi拡張部が、HDD104に出力するパーミッションファイル902について説明した図である。
Bundle1.jar702のパーミッション900は、デフォルトポリシーファイル700のパーミッション910とバンドル定義ファイル704のパーミッション911を合算したものとなる。
Bundle2.jar703のパーミッション901は、デフォルトポリシーファイル700のパーミッション910のみとなる。
これら、バンドルごとに保持しているパーミッションリスト900、901の内容をまとめてパーミッションファイル902に出力する。パーミッションファイル902には、画像形成装置にインストールされているすべてのバンドルのパーミッションがバンドルごとに出力されている。920で示すのは、Bundle1.jar702が保持するパーミッションとなっており、これはパーミッションリスト900の内容と同じものである。BundleID921は、Bundle1.jar702に割り振られたユニークなIDである。また、922で示すのは、Bundle2.jar703が保持するパーミッションとなっており、これはパーミッションリスト901の内容と同じものである。BundleID923は、Bundle2.jar703に割り振られたユニークなIDである。
図10(a)は、バンドルのインストール時に、OSGi拡張部211がバンドルリスト705を作成するフローチャートである。尚、図10(a)で説明する「バンドル」は、フラグメントバンドルは含まず、ホストバンドルに相当する。
S1000において、バンドルのインストール処理におけるパーミッション処理を開始する。ここで、バンドルは、図3で示したようにバンドルインストールUI302からインストールされる。
S1001において、デフォルトポリシーファイル700を読み込み、ここに記載のデフォルトパーミッションをバンドルのパーミッションリストに追加する。
S1002において、インストールしようとしているバンドルが、パーミッション定義ファイルを保持するかどうかを確認する。保持している場合は、S1003に進む。保持していない場合は、S1004に進む。
S1003において、パーミッション定義ファイル704のパーミッション読み込み、ここに記載のパーミッションをバンドルのパーミッションリストに追加して、更新する。尚、ホストバンドルのパーミッション定義ファイルに記載されたパーミッションで、すでに、パーミッションリストに含まれるパーミッションについては、重複させずに、追加しない。
S1004において、バンドルのパーミッションリストをパーミッションファイル902として出力する。
S1005において、インストール時のパーミッションの処理を終了する。
次に、図10(b)は、画像形成装置の起動時に、S1005において出力されたパーミッションファイルが、どのように利用されるかを示す。
S1010において、画像形成装置起動時のOSGi拡張部211によるパーミッションの処理が開始される。
S1011において、パーミッションファイル902からバンドルID921をもとに、バンドルごとのパーミッションリストを作成する。図9でいうと、Bundle1.jar702のパーミッション920から、Bundle1.jarのパーミッションリスト900を作成する。また、Bundle2.jar703のパーミッション922から、Bundle2.jarのパーミッションリスト901を作成する。
S1012において、起動時のパーミッションの処理を終了する。
こうして、起動後は、各バンドルのパーミッションリストがメモリ上に展開され、JavaVM207からのバンドルが保持するパーミッションの問い合わせ時に、参照可能となる。
図11は、図7で示したBundle1.jar702、Bundle2.jar703からcreateNewFile600を呼び出した時のパーミッション処理に関するシーケンス図を示しものである。
バンドル(例としては、Bundle1.jar702、もしくはBundle2.jar703が呼び出されたケースを示す)は、S1100において、createNewFile600を利用して”/log/foo.log”にログを出力するものとする。尚、例として、ログ出力処理を行うバンドルの例で説明するが、他の処理を行うバンドルであっても構わない。どのようなバンドルであっても、S1101からS1105、S1106、S1108は同様である。また、例として、バンドルは、フラグメントバンドルと含まない、つまり、バンドル(ホストバンドルに相当)の例で説明する。が、フラグメントバンドルを含むバンドル、つまり、ホストバンドルとフラグメントバンドルからなるバンドルであっても、同様のパーミッション処理を行う。
createNewFile600は、S1101において、パーミッションチェックを行う。このとき呼び出し元が、必要なパーミッションを保持しているかどうかをJavaVM207に問い合わせる。JavaVM207は、S1102において、本スレッドのスタックを遡り、パーミッションをチェックするべきバンドルのバンドルIDリストを取得する。ここで、チェックするべきバンドルとは、本処理でロードされたクラスを保持するバンドルを指す。本例では、チェックするべきバンドルは、Bundle1.jar702、もしくはBundle2.jar703と1つである。が、Bundle1.jar702、もしくはBundle2.jar703が他のバンドルから呼び出されていた場合、これらを呼び出したバンドルも含まれる。次にS1103において、JavaVM207は、S1102で取得したリストの全てのバンドルに対してのパーミッションチェックを行う。JavaVM207は、S1104において、バンドルIDを基にOSGi拡張部211にバンドルが保持しているパーミッションを問い合わせる。OSGi拡張部211は、S1105において、JavaVM207から問い合わせのあったバンドル(Bundle1.jar702、もしくはBundle2.jar703)のパーミッションリストのパーミッション一覧を返却する。JavaVM207は、S1106において、createNewFile600が必要としているパーミッションが、OSGi拡張部211から返却されたパーミッション一覧に含まれるかどうかを判定する。S1103においては、全てのバンドルに対してチェックを行う。
S1103の結果、必要なパーミッションが全てのバンドルに含まれる場合は、JavaVM207は、S1107において、OKの戻り値を返す。一方、1つでも含まれないバンドルがあった場合は、NGの戻り値を返す。
ここで、戻り値がNGだった場合、S1108にいて、createNewFile600は、NGの戻り値をバンドルに返す。一方、戻り値がOKだった場合、createNewFile600は、S1109において、ファイル作成処理を実行する。その後、S1110において、OKの戻り値をバンドルに返す。
バンドルが、Bundle1.jar702の場合、/log/foo.logへの書き込みパーミッションを意味する
(java.io.FilePermission “/log/foo.log” “read,write”)
を含むので、S1107において、パーミッション保持OKの判断となり、ファイルは作成される。
一方、バンドルが、Bundle2.jar703の場合、/log/foo.logへの書き込みパーミッションを含まないので、S1107において、パーミッション保持NGの判断となり、ファイル作成に失敗する。
以上、OSGiで管理されているバンドルのパーミッションに関する動きについて説明してきた。さらに、OSGiの機能であるフラグメントバンドルを含んだときについて説明する。
図12は、OSGiにおけるホストバンドルとフラグメントバンドルのパーミッションの仕組みについて説明した図である。
JavaVM207、createNewFile600、OSGi拡張部211、ポリシーファイル700は図7と同じ役割の為、ここでの説明は省略する。
/java/bundles/701の配下にある、Host.jar1200は、ホストバンドルである。また、Fragment1.jarとFragment2.jarは、Host.jar1200のフラグメントバンドルである。Fragment1.jar1202とFragment2.jar1203は、バンドル定義ファイル1204、1205を保持している。
次に、図13で各バンドルが抱えるパーミッション定義ファイルについて説明する。
図13は、バンドルが抱えるパーミッション定義ファイルについて説明した図である。Host.jar1200のパーミッション定義ファイル1201には、
(org.osgi.framework.BundlePermission “4d06d282−deb4−462e−bd48−71167c177” “HOST”)
の記載がある。
Fragment1.jar1202のパーミッション定義ファイル1204には、
(org.osgi.framework.BundlePermission “4d06d282−deb4−462e−bd48−71167c177” “FRAGMENT”)
(java.io.FilePermission “/log/foo1.log” “read,write”)
2つのパーミッションが記載されている。
Fragment2.jar1203のパーミッション定義ファイル1205には、
(org.osgi.framework.BundlePermission “4d06d282−deb4−462e−bd48−71167c177” “FRAGMENT”)
(java.io.FilePermission “/log/foo2zu.log” “read,write”)
2つのパーミッションが記載されている。
図12の説明に戻り、Host.jar1200が、保持しているパーミッションについて説明する。OSGi拡張部211は、バンドルの最初のインストール時に、デフォルトポリシーファイル700とバンドル定義ファイル1201を合算したものをメモリ上にパーミッションリスト1206として管理する。このときの状態を状態(1)とする。さらに、Fragment1.jar1202が、Host.jar1200にアタッチされる際に、Fragment1.jar1202が保持しているバンドル定義ファイル1204のパーミッションをパーミッションリスト1206に追加して管理する。同様に、Fragment2.jar1203が、Host.jar1200にアタッチされる際に、Fragment2.jar1203が保持しているバンドル定義ファイル1205のパーミッションをパーミッションリスト1206に追加して管理する(このときの状態を状態(2)とする)。
このときのパーミッションリスト1206の状態について、図14で説明する。また、このときのOSGi拡張部211がバンドルリスト1206を作成するフローは、図15で示す。
図14は、フラグメントバンドルがアタッチされたときに、ホストバンドルが保持するパーミッションリストの変化について説明した図である。
パーミッションリスト1400は、状態(1)のときのパーミッションを示している。
パーミッションリスト1401は、状態(2)のときのパーミッションを示している。このうち1410で示すパーミッションは、Fragment1.jar1202とFragment2.jar1203が保持しているパーミッション定義ファイル1204、1205に記載されたパーミッションである。ただし、重複している同じパーミッションは、重複してリストには含まない。
これらのホストバンドルに保持しているパーミッションリスト1401の内容をパーミッションファイル1402に出力する。パーミッションファイル1402には、画像形成装置にインストールされているすべてのバンドルのパーミッションがバンドルごとに出力されている。1420で示すのは、Host.jar1200が保持するパーミッションとなっており、これはパーミッションリスト1401の内容と同じものである。BundleID1421は、Host.jar1200に割り振られたユニークなIDである。
図15(a)は、フラグメントバンドルがホストバンドルへアタッチされるときのOSGi拡張部211のパーミッション処理についてのフローチャートである。
S1500において、フラグメントバンドルのホストバンドルへのアタッチ処理を開始する。ここで、フラグメントバンドルは、図5で示したように、有効化ボタン515を押下することで、ホストバンドルへアタッチされる。
S1501において、アタッチしようとしているフラグメントバンドルが、パーミッション定義ファイルを保持するかどうかを確認する。保持している場合は、S1502に進む。保持していない場合は、S1503に進む。
S1502において、パーミッション定義ファイル1204/1205のパーミッションを読み込み、記載されたパーミッションをバンドルのパーミッションリスト1206に追加する。ただし、既にパーミッションリスト1206に重複している同じパーミッションがある場合は、重複してリストには追加しない。
S1503において、バンドルのパーミッションリストをパーミッションファイル1402として出力する。
S1504において、フラグメントバンドルのアタッチ時のパーミッションの処理を終了する。
次に、図15(b)は、画像形成装置の起動時に、S1503において出力されたパーミッションファイル1403が、どのように利用されるかを示す。
S1510において、画像形成装置起動時のOSGi拡張部211によるホストバンドルにおけるパーミッションの処理が開始される。
S1511において、パーミッションファイル1402からバンドルID1421をもとに、バンドルごとのパーミッションリストを作成する。図14でいうと、Host.jar1200のパーミッション1420から、Host.jarのパーミッションリスト1401を作成する。
S1512において、起動時のパーミッションの処理を終了する。
こうして、起動後は、フラグメントバンドルが保持しているパーミッション定義ファイルの内容が、ホストバンドルのパーミッションリスト1206がメモリ上に展開される。そして、JavaVM207からのバンドルが保持するパーミッションの問い合わせ時に、参照可能となる。
尚、フラグメントバンドルを含むバンドルを呼び出した時のパーミッション処理に関するシーケンス図は、図11と同様である。図11のバンドル702/703が、フラグメントバンドルとホストバンドルを含むバンドルに相当する。
以上、説明したように、フラグメントバンドルのアタッチのタイミングでホストバンドルのパーミッションリストにフラグメントバンドルが保持するパーミッション定義ファイルの内容を追加する。これにより、一般的なバンドル同様の仕組みで、フラグメントバンドルが必要としているパーミッションを利用可能となるという効果が得られる。
次に、ホストバンドルにアタッチされたフラグメントバンドルを逆にホストバンドルからデタッチ(削除)するときのOSGi拡張部によるパーミッション処理について述べる。
図16は、フラグメントバンドルがホストバンドルへデタッチされるときのOSGi拡張部211のホストバンドルのパーミッション処理についてのフローチャートである。
具体的には、図12で示したように、Fragment1.jar1202とFragment2.jar1203がHost.jar1200にアタッチされている状態からFragment1.jar1202をデタッチするケースを考える。
S1600において、フラグメントバンドルのホストバンドルからのデタッチ処理を開始する。ここで、フラグメントバンドルは、図5で示したように、無効化ボタン514を押下することで、ホストバンドルからデタッチされる。
S1601において、デタッチしようとしているフラグメントバンドルが、パーミッション定義ファイルを保持するかどうかを確認する。保持している場合は、S1602に進む。保持していない場合は、S1607に進む。
S1602において、パーミッション定義ファイル1204のパーミッション読み込み、ここに記載のパーミッションをバンドルのパーミッションリスト1206から削除する。
S1603において、デタッチされたホストバンドルに紐づくフラグメントバンドルが残っているかどうかを判断する。残っている場合、S1604に進む。残っていない場合、S1605に進む。
S1604において、残っているフラグメントバンドルのパーミッション定義ファイルを読み込み、記載されたパーミッションをバンドルのパーミッションリスト1206に追加する。尚、フラグメントバンドルのパーミッション定義ファイルに記載されたパーミッションで、すでに、パーミッションリストに含まれるパーミッションについては、重複させずに、追加しない。
具体例で説明すると、残っているフラグメントバンドルFragment2.jar1203のパーミッション定義ファイル1205を読み込み、ここに記載のパーミッションをバンドルのパーミッションリスト1206に追加する。これは、Fragment1.jar1202のパーミッション定義ファイル1204で重複したパーミッションである
(org.osgi.framework.BundlePermission “4d06d282−deb4−462e−bd48−71167c177” “FRAGMENT”)
が、S1602において削除されているので、ここで改めて追加するために行う。
S1605において、ホストバンドルのパーミッション定義ファイルを読み込み、記載されたパーミッションをバンドルのパーミッションリスト1206に追加する。尚、ホストバンドルのパーミッション定義ファイルに記載されたパーミッションで、すでに、パーミッションリストに含まれるパーミッションについては、重複させずに、追加しない。
S1606において、バンドルのパーミッションリストをパーミッションファイル1402として出力する。
S1607において、フラグメントバンドルのデタッチ時のパーミッションの処理を終了する。
尚、S1604、S1605において、それぞれのステップで、すでに、パーミッションリストに含まれるパーミッションについては、重複させずに、追加しないようにした。しかし、フラグメントバンドルのパーミッション定義ファイルに記載されたパーミッションと、ホストバンドルのパーミッション定義ファイルに記載されたパーミッションをそれぞれ、追加した後に、重複したパーミッションについては削除するようにしてもよい。
図17は、フラグメントバンドルがデタッチされたときに、ホストバンドルが保持するパーミッションリストの変化について説明した図である。
ホストバンドルのパーミッションリスト1700は、Fragment1.jar1202とFragment2.jar1203がHost.jar1200にアタッチされている状態の1401と同じ状態である。
この状態からFragment1.jar1202がデタッチされた場合、最終的には、1701で示すパーミッションがホストバンドルのパーミッションリスト1206となる。ここで、1702は、デフォルトポリシーのパーミッション、1703は、Host.jarに定義されたパーミッション、1704は、Fragment2.jar1203で定義されたパーミッションとなる。
以上、説明したように、フラグメントバンドルのデタッチのタイミングでホストバンドルのパーミッションリストからデタッチするフラグメントバンドルが保持するパーミッション定義ファイルの内容を削除する。これにより、ホストバンドルのパーミッションリストの内容が、必要なパーミッションが残る状態に更新され、セキュリティ上望ましい状態となるという効果が得られる。
以上、説明したように、本実施形態によれば、フラグメントバンドルのアタッチ、デタッチのライフサイクルとパーミッション追加、削除のライフサイクルを同期させる。これにより、フラグメントバンドルの利用可能なパーミッションが、必要なときに必要な分だけ利用可能となる。
また、ホストバンドルは、自身が必要な分だけのパーミッションを保持しておけばよい。
本実施形態の効果を、以下で、具体的に説明する。
バンドルが管理者権限のような強いパーミッションをもつことで、画像形成装置内に悪影響を与えることができる。そのため、セキュリティ的にアプリに必要以上の権限を与えたくないというのが、一般的である。このため、ホストバンドルがもつパーミッションは、ホストバンドルが実装している範囲で必要十分なだけのパーミッションだけを持つことが推奨される。
一方、フラグメントバンドルは、ホストバンドルの機能を追加、差し替えるために利用されるものである。そのため、当然、必要なパーミッションが変わってくる。このとき、フラグメントバンドルで追加、差し替えた機能は、ホストバンドルで定義されたパーミッションに従って処理を行う。そのため、フラグメントバンドルが必要なパーミッションを、予め、ホストバンドルにjava.security.AllPermissionという全てのパーミッションをもつことを意味するパーミッションを保持しておくことが考えられる。しかし、これだと必要最小限のパーミッションを持つべきという推奨ルールに反する。
また、フラグメントバンドルの追加に合わせて、ホストバンドルが保持するパーミッション定義を変えることも考えられる。しかし、これだと、フラグメントバンドルに合わせてホストバンドルを再作成する必要があり、フラグメントバンドルのみで機能が拡張できるフラグメントバンドルの特徴が損なわれることになる。
これらの課題に対して、本実施形態によれば、フラグメントバンドルのホストバンドルへのアタッチおよびデタッチに合わせて、適宜パーミッションを管理する仕組みが提供できる。
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (13)

  1. ホストアプリケーションに対応つけられた前記ホストアプリケーションのパーミッションリストを保持する保持手段と、
    前記ホストアプリケーションに、プラグインアプリケーションを追加する追加手段と、
    前記プラグインアプリケーションに含まれるパーミッションを、前記ホストアプリケーションのパーミッションリストに追加して更新する更新手段と、
    前記更新されたパーミッションリストに基づいて、前記ホストアプリケーションおよび前記プラグインアプリケーションにおける処理を実行するかを判定する判定手段を有することを特徴とする画像形成装置。
  2. 前記プラグインアプリケーションは、前記プラグインアプリケーションのパーミッションを含むパーミッション定義ファイルを保持することを特徴とする請求項1に記載の画像形成装置。
  3. 前記ホストアプリケーションのパーミッションリストは、前記ホストアプリケーションを識別するための識別情報を含むことを特徴とする請求項1または請求項2に記載の画像形成装置。
  4. 前記ホストアプリケーションに、前記プラグインアプリケーションを追加する指示を受け付ける第1の受付手段を有し、
    前記第1の受付手段が受け付けた指示に基づいて、前記追加手段は、前記ホストアプリケーションに、前記プラグインアプリケーションを追加することを特徴とする請求項1乃至3の何れか1項に記載の画像形成装置。
  5. 前記ホストアプリケーションから、前記プラグインアプリケーションを削除する削除手段を有する請求項1乃至4の何れか1項に記載の画像形成装置。
  6. 前記ホストアプリケーションから、前記プラグインアプリケーションを削除する指示を受け付ける第2の受付手段を有する請求項5に記載の画像形成装置。
  7. 前記第2の受付手段が受け付けた指示に基づいて、前記削除手段は、前記ホストアプリケーションから、前記プラグインアプリケーションを削除する請求項6に記載の画像形成装置。
  8. 前記第2の受付手段が受け付けた指示に基づいて、前記更新されたパーミッションリストから、前記プラグインアプリケーションに含まれるパーミッションを削除する削除手段をさらに有することを特徴とする請求項6または請求項7に記載の画像形成装置。
  9. 前記削除手段は、前記更新されたパーミッションリストから、前記プラグインアプリケーションに含まれるパーミッションを削除し、さらに、前記ホストアプリケーションに含まれるパーミッションを追加することを特徴とする請求項8に記載の画像形成装置。
  10. 画像形成装置の制御方法であって、
    ホストアプリケーションに、プラグインアプリケーションを追加する追加工程と、
    前記プラグインアプリケーションに含まれるパーミッションを、ホストアプリケーションに対応つけられたホストアプリケーションのパーミッションリストに追加して更新する更新工程と、
    前記更新されたパーミッションリストに基づいて、前記ホストアプリケーションおよび前記プラグインアプリケーションにおける処理を実行するかを判定する判定工程を有することを特徴とする画像形成装置の制御方法。
  11. 前記プラグインアプリケーションは、前記プラグインアプリケーションのパーミッションを含むパーミッション定義ファイルを保持することを特徴とする請求項10に記載の画像形成装置の制御方法。
  12. 前記ホストアプリケーションのパーミッションリストは、前記ホストアプリケーションを識別するための識別情報を含むことを特徴とする請求項10または請求項11に記載の画像形成装置の制御方法。
  13. 請求項1乃至9の何れか1項に記載の画像形成装置としてコンピュータを機能させるための該コンピュータで読み取り可能なプログラム。
JP2017191762A 2017-09-29 2017-09-29 画像形成装置及びその制御方法 Active JP6935291B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2017191762A JP6935291B2 (ja) 2017-09-29 2017-09-29 画像形成装置及びその制御方法
EP18192933.2A EP3462363B1 (en) 2017-09-29 2018-09-06 Image forming apparatus and control method therefor
US16/143,291 US10545704B2 (en) 2017-09-29 2018-09-26 Image forming apparatus and control method to update an application in an image forming apparatus
CN201811140096.6A CN109597659A (zh) 2017-09-29 2018-09-28 图像形成设备及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017191762A JP6935291B2 (ja) 2017-09-29 2017-09-29 画像形成装置及びその制御方法

Publications (2)

Publication Number Publication Date
JP2019067131A JP2019067131A (ja) 2019-04-25
JP6935291B2 true JP6935291B2 (ja) 2021-09-15

Family

ID=63528533

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017191762A Active JP6935291B2 (ja) 2017-09-29 2017-09-29 画像形成装置及びその制御方法

Country Status (4)

Country Link
US (1) US10545704B2 (ja)
EP (1) EP3462363B1 (ja)
JP (1) JP6935291B2 (ja)
CN (1) CN109597659A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11586746B2 (en) * 2019-11-08 2023-02-21 Microsoft Technology Licensing, Llc Integration management of applications
US11762978B1 (en) * 2023-03-31 2023-09-19 Snowflake Inc. Granular access control of packages

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291466B2 (en) * 2006-10-19 2012-10-16 International Business Machines Corporation Method and system for synchronized policy control in a web services environment
JP4909756B2 (ja) * 2007-02-09 2012-04-04 株式会社リコー 情報処理装置、外部アプリケーション利用方法及びプログラム
JP5037422B2 (ja) * 2008-04-30 2012-09-26 株式会社リコー 画像形成装置、アクセス制御方法、及びアクセス制御プログラム
CN101604371B (zh) * 2009-07-22 2012-02-08 阿里巴巴集团控股有限公司 插件权限的控制方法及***
CN101702715B (zh) * 2009-11-13 2013-01-09 中国电信股份有限公司 应用软件的使用权限控制点、使用权限控制方法和***
CN103761472B (zh) * 2014-02-21 2017-05-24 北京奇虎科技有限公司 基于智能终端设备的应用程序访问方法与装置
JP6403559B2 (ja) * 2014-12-08 2018-10-10 キヤノン株式会社 情報処理装置およびその制御方法、並びにプログラム
JP6388405B2 (ja) * 2014-12-26 2018-09-12 キヤノン株式会社 情報処理装置、情報処理装置の制御方法およびプログラム
JP2017004114A (ja) * 2015-06-05 2017-01-05 キヤノン株式会社 画像形成装置及びアプリケーションの削除方法

Also Published As

Publication number Publication date
EP3462363B1 (en) 2020-07-22
EP3462363A1 (en) 2019-04-03
US20190102121A1 (en) 2019-04-04
US10545704B2 (en) 2020-01-28
CN109597659A (zh) 2019-04-09
JP2019067131A (ja) 2019-04-25

Similar Documents

Publication Publication Date Title
JP5294892B2 (ja) 画像形成装置、装置、制御方法、及びプログラム
JP6147139B2 (ja) 情報処理装置、その制御方法、及びコンピュータプログラム
JP4961288B2 (ja) 情報処理装置、情報処理プログラム、記録媒体、印刷装置及びネットワークシステム
US20180097958A1 (en) Device, software installation method, and storage medium
JP2001356912A (ja) ソフトウェアのインストール/アップデート/アンインストールシステム
EP2953023B1 (en) Information processing apparatus, application management method, and program
JP6935291B2 (ja) 画像形成装置及びその制御方法
JP6403559B2 (ja) 情報処理装置およびその制御方法、並びにプログラム
CN106250068B (zh) 图像形成装置以及应用的删除方法
US9940334B2 (en) Image forming apparatus and control method thereof
JP6057740B2 (ja) 画像形成装置、情報処理方法及びプログラム
JP2009282775A (ja) アプリケーションプラットフォーム
US20130067452A1 (en) Management server, host device, and application management method
JP6991837B2 (ja) 画像形成装置及びその制御方法
JP6890410B2 (ja) 情報処理装置及びアプリケーションの管理方法及びプログラム
JP2016091521A (ja) 案件管理装置、案件管理システムおよび案件管理方法
JP2002351667A (ja) サービス提供システム及びそのアプリケーション管理方法
JP2020154704A (ja) 画像形成装置、情報処理方法及びプログラム
JP2010170257A (ja) アプリケーションプラットフォーム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200727

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210712

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210727

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210825

R151 Written notification of patent or utility model registration

Ref document number: 6935291

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151