(58)【調査した分野】(Int.Cl.,DB名)
前記トークンが付与されていないコマンドに含まれるユーザ認証情報は、ユーザ認証を実行する際に使用されるID及びパスワードであることを特徴とする請求項2に記載の画像形成装置。
前記トークン識別子を有していると判定されたコマンドは、トークンを格納するヘッダ部と、前記コマンドに前記トークンが付与されていることを示す情報を含むことを特徴とする請求項1記載の画像形成装置。
【発明を実施するための形態】
【0013】
以下、本発明の実施の形態について図面を参照しながら詳述する。
【0014】
図1は、本発明の実施の形態に係る画像形成装置としてのMFP101を含む画像形成システム100の構成を概略的に示すブロック図である。
【0015】
図1の画像形成システム100はMFP101及び情報処理装置としてのPC102を備え、MFP101及びPC102はネットワーク、例えば、LAN103を介して互いに接続されている。MFP101はクライアントであるPC102から送信された画像データやユーザ認証を実行する際に使用される情報としてのID及びパスワードを受信する。
【0016】
図2は、
図1のMFP101の内部構成を概略的に示すブロック図である。
【0017】
図2のMFP101は通信部201、読取部202、制御部203、入力画像処理部204、出力画像処理部205、操作部206、印刷部207、認証部208、及びFAX通信部209を備え、これらの構成要素はバス210を介して互いに接続されている。また、通信部201はLAN103に接続されている。
【0018】
通信部201はLAN103を介してPC102から、例えば、画像データ、印刷コマンド、MFP101の設定値に関するコマンド、ジョブを管理する管理コマンド、印刷ジョブ、スキャンジョブ、又はFAX送信ジョブを受信する。読取部202は原稿を読み取るとともに当該原稿に対応する画像データを生成する。
【0019】
制御部203はCPU203a、RAM203b、ROM203c、及びHDD203dを備える。CPU203aはRAM203bに格納されたプログラムを動作してMFP101を制御する。RAM203bは、各種プログラムやPC102から受信した画像データを格納する。ROM203cはCPU203aが動作させる各種プログラムや各種データ等を格納する。HDD203dは不揮発性の記憶装置であり、各種プログラムや各種データ等を格納する。
【0020】
入力画像処理部204は読取部202が生成した画像データに所定の画像処理、例えば、シェーディング補正処理やMTF補正処理等を施す。出力画像処理部205は入力画像処理部204によって処理された画像データや通信部201から入力された画像データに所定の画像処理、例えば、ラスタ化処理、モノクロ化処理、モノカラー化処理、付加画像合成処理、又はハーフトーン処理等を施す。操作部206はハードキーや操作パネルを備え、ユーザはハードキーや操作パネルを操作してMFP101に指示を入力する。
【0021】
印刷部207は、例えば、読取部202によって生成された画像データを記録紙に印刷する。認証部208は後述の通常認証処理又はトークン認証処理を実行する。FAX通信部209は電話回線211を介して外部装置とのFAX通信を実行する。
【0022】
図3は、
図1におけるPC102の内部構成を概略的に示すブロック図である。
【0023】
図3のPC102は、通信部301、制御部302、コマンド処理部303、操作部304、及び表示部305を備え、これらの構成要素はバス306を介して互いに接続されている。また、通信部301はLAN103に接続されている。
【0024】
通信部301はLAN103を介してMFP101に、例えば、画像データ、印刷コマンド、MFP101の設定値に関するコマンド、ジョブを管理する管理コマンド、印刷ジョブ、スキャンジョブ、又はFAX送信ジョブを送信する。制御部302はCPU302a、RAM302b、ROM302c、及びHDD302dを備え、CPU302aはRAM302bに格納されたプログラムを動作してPC102を制御する。RAM302bは、各種プログラムやMFP101から受信したデータを格納する。ROM302cはCPU302aにおいて動作する各種プログラムや各種データ等を格納する。HDD302dは不揮発性の記憶装置であり、各種プログラムや各種データ等を格納する。また、ROM302c又はHDD302dは後述のトークンリストを格納する。
【0025】
コマンド処理部303は各種コマンドを生成する。また、コマンド処理部303は各種コマンドを受信するとともに受信されたコマンドを解釈する。操作部304は、例えば、マウスやキーボードから構成される入力用のユーザーインターフェイスである。表示部305は、例えば、LCDディスプレイであり、出力用のユーザーインターフェイスである。
【0026】
図4は、
図2のMFP101における操作部206又は
図3のPC102における操作部304に表示される認証方式設定画面400を説明するために用いられる図である。認証方式設定画面400は通常認証方式(第1の認証方式)によるユーザ認証(以下、「通常認証処理」という。)の禁止を設定する際に使用される。認証方式設定画面400はチェックボックス401を有する。チェックボックス401にチェックマークが入力されたとき、通常認証処理は禁止され、トークン認証方式(第2の認証方式)によるユーザ認証(以下、「トークン認証処理」という。)が実行される。なお、通常認証処理の禁止が設定される場合は、上述した認証方式設定画面400を介して通常認証処理の禁止が設定される場合の他にユーザ認証に使用されるパスワードが複雑な場合、例えば、パスワードが10桁の数字と文字とから構成される場合であってもよい。
【0027】
図5は、
図2のMFP101におけるCPU203aによって実行されるトークン生成処理の手順を示すフローチャートである。
図5のトークン生成処理ではトークン認証処理において使用されるトークンが生成される。
【0028】
図5において、まず、トークン生成要求コマンド600(
図6)を受信する(ステップS501)。トークン生成要求コマンド600はユーザが操作部304に表示される認証情報入力画面700(
図7)を介して入力したIDやパスワードに基づいて生成され、PC102からMFP101に送信される。トークン生成要求コマンド600はヘッダ部601(第1のヘッダ部)及びコマンドデータ部602(第1のデータ部)を有するパケット構造からなる。ヘッダ部601はヘッダID603、バージョン情報604、応答要求フラグ605、オペレーションコード606、データ長607、ID608、及びパスワード609を格納し、コマンドデータ部602は認証方式610、ユーザ名611、パスワードハッシュ値612、及びソルト値613を格納する。
【0029】
ヘッダID603はいわゆるコマンド体系を識別する識別子を示す。例えば、ヘッダID603にはトークン生成要求コマンド600や後述のトークン付きコマンド900が属するコマンド体系であることを示す「0xabcd」が設定される。バージョン情報604はコマンド体系のバージョン情報を示す。例えば、バージョン情報604にはコマンド体系がバージョン1.0であることを示す「0x10」が設定される。応答要求フラグ605はPC102がMFP101に本コマンドを送信したときにMFP101に対して応答を要求するか否かのフラグを示す。例えば、本実施の形態では応答要求フラグ605にPC102がMFP101に応答を要求する「ON」が設定される。
【0030】
オペレーションコード606はコマンドの種別を示す。例えば、オペレーションコード606にはトークン生成要求コマンド600がユーザ認証に関するコマンドであることを示す「User Authetication」が設定される。オペレーションコード606に「User Authetication」が設定されると、認証部208はID608及びパスワード609と認証情報とに基づいて通常認証処理を実行し、又はユーザ名611、パスワードハッシュ値612、及びソルト値613と認証情報とに基づいてトークン認証処理を実行し、実行された通常認証処理及びトークン認証処理のいずれか一方の結果をPC102に通知する。
【0031】
データ長607はトークン生成要求コマンド600のコマンドデータ部602のデータ長をバイト数によって示す。ID608及びパスワード609には通常認証処理が実行されるときに使用されるID及びパスワードが設定される。認証方式610にはトークンの生成を要求することを示す「Token Request」が設定される。認証方式610に「Token Request」が設定されるときはID608及びパスワード609には、例えば、「Don’t Care」が設定される。
【0032】
ユーザ名611にはトークンを生成するときに使用されるIDが設定される。パスワードハッシュ値612にはトークンを生成するときに使用されるパスワード及びソルト値613から算出されるハッシュ値が設定される。
【0033】
トークンの生成が要求されるとき、認証部208は予めMFP101に格納されているID及びユーザ名611が一致するか否かを判別し、ID及びユーザ名611が一致するとき、予めMFP101に格納されているパスワード及びトークン生成要求コマンド600のソルト値613からハッシュ値を算出する。次いで、認証部208は算出されたハッシュ値及びパスワードハッシュ値612の値が一致するか否かを判別し、夫々が一致するとき、ユーザを認証してMFP101の使用を許可する(ユーザ認証の成功)。
【0034】
図5に戻り、ユーザ名611、パスワードハッシュ値612、及びソルト値613とMFP101に予め格納されているID及びパスワードとに基づいてユーザ認証処理を実行し(ステップS502)、ユーザ認証が成功したか否かを判別する(ステップS503)。
【0035】
ステップS503の判別の結果、ユーザ認証が成功しなかった(失敗した)とき、トークンを生成できないことを通知するトークン生成失敗通知をPC102に送信して(ステップS507)本処理を終了し、ユーザ認証が成功したとき、トークンを生成する(ステップS504)。ここで、生成されたトークンは8バイトのデータ量を有するデータであり、トークンであることを示すトークン識別子(1バイト)とトークンが生成される時刻に基づいて作成される乱数(7バイト)とから構成される。次いで、生成されたトークンをトークンリストに登録し(ステップS505)、生成されたトークンをPC102に送信して(ステップS506)本処理を終了する。
【0036】
ここで、トークンリストとは生成されたトークンが順次登録される一覧表である。生成されたトークンがトークンリストに登録されるとき、予めMFP101に格納されている認証情報、例えば、ID、パスワード、及びユーザの種別に関する情報(以下、「ユーザ種別情報」という。)がトークンに関連付けられる。すなわち、ユーザに対応してトークンがトークンリストに登録される。また、トークンリストに登録されたトークンはPC102からトークン破棄に関するコマンドを受信したときにトークンリストから破棄される。トークン破棄に関するコマンドはトークンが生成された後であって、所定の時間、例えば、ユーザによって設定された時間が経過したときにPC102からMFP101に送信される。
【0037】
図8は、
図3のPC102におけるCPU302aによって実行されるトークン付きコマンド900の送信処理の手順を示すフローチャートである。
【0038】
図8において、まず、
図5のステップS506においてMFP101から送信されたトークンを受信したか否かを判別する(ステップS801)。ステップS801の判別の結果、トークンを受信したとき、後述のトークン付きコマンド900(
図9)を生成し(ステップS802)、トークンを受信していないとき、CPU203aは
図5のトークン生成処理を実行してトークンを生成し(ステップS803)、CPU302aは生成されたトークンをMFP101から受信したか否かを判別する(ステップS804)。ステップS804の判別の結果、トークンを受信したとき、ステップS802に進み、トークンを受信していないとき、表示部305にトークンが受信されていないことを示すエラーを表示して(ステップS805)本処理を終了する。
【0039】
ここで、トークン付きコマンド900はヘッダ部901(第2のヘッダ部)及びコマンドデータ部902(第2のデータ部)を有するパケット構造からなる。ヘッダ部901はヘッダID903、バージョン情報904、応答要求フラグ905、オペレーションコード906、データ長907、ID908a又はToken908b、及びパスワード909a又はToken909bを格納し、コマンドデータ部902は、例えば、ユーザ認証を実行する際に使用される情報以外の情報としてオブジェクト910、Attribute ID911、及びレベル912を格納する。
【0040】
ヘッダID903はいわゆるコマンド体系を識別する識別子を示す。例えば、ヘッダID903にはトークン付きコマンド900が属するコマンド体系であることを示す「0xabcd」が設定される。バージョン情報904はコマンド体系のバージョン情報を示す。例えば、バージョン情報904にはコマンド体系がバージョン1.0であることを示す「0x10」が設定される。応答要求フラグ905はPC102がMFP101に本コマンドを送信したときにMFP101に対して応答を要求するか否かのフラグを示す。例えば、本実施の形態では応答要求フラグ905にPC102がMFP101に応答を要求する「ON」が設定される。
【0041】
オペレーションコード906はコマンドの種別を示す。例えば、オペレーションコード906には「Set」が設定され、トークン付きコマンド900はユーザ認証に必要なトークンを有するコマンドであることを示す。データ長907はトークン付きコマンド900のコマンドデータ部902のデータ長をバイト数によって示す。
【0042】
ID908aはユーザ認証が通常認証方式によって実行されるときに使用されるIDからなり、パスワード909aはユーザ認証が通常認証方式によって実行されるときに使用されるパスワードからなる。Token908b及びToken909bはユーザ認証がトークン認証方式によって実行されるときに使用されるトークンからなる。トークンはトークン識別子(1バイト)とトークンが生成された時刻に基づいて作成された乱数(7バイト)とから構成され、Token908bはトークン識別子(1バイト)と乱数の一部(3バイト)からなり、Token909bはToken908bに用いられていない乱数の一部(4バイト)からなる。ここで用いられるトークンはMFP101から送信されたトークンである。なお、トークン識別子はToken908bを構成する「0xe0」である。
【0043】
オブジェクト910にはユーザ認証を要求するユーザの識別子が設定される。Attribute ID911はユーザ認証を要求するユーザの種別、具体的に、ゲストユーザ、一般ユーザ、及び管理ユーザのいずれか1つが設定される。例えば、ユーザの種別が管理ユーザの場合、Attribute ID911には管理ユーザであることを示す「id_att_user_management_level」が設定される。
【0044】
レベル912にはユーザに要求されるセキュリティレベルが設定される。なお、ユーザに要求されるセキュリティレベルはユーザの種別によって異なり、管理ユーザに要求されるセキュリティレベルは最も高いレベル3であり、ゲストユーザに要求されるセキュリティレベルは最も低いレベル1である。例えば、レベル912には「3」が設定され、ユーザ認証を要求するユーザが管理ユーザであることを示す。
【0045】
また、コマンドデータ部902には印刷ジョブやFAX送信ジョブ等の各種ジョブが含まれていてもよい。
【0046】
図8に戻り、ステップS802においてトークン付きコマンド900が生成されると、トークン付きコマンド900をMFP101に送信し(ステップS806)、後述の認証エラー通知又は認証成功通知を受信して(ステップS807)本処理を終了する。
【0047】
図10は、
図2のMFP101におけるCPU203aによって実行されるトークン付きコマンド900の受信処理の手順を示すフローチャートである。
【0048】
図10において、まず、
図8のステップS806においてPC102から送信されたトークン付きコマンドを受信したか否かを判別する(ステップS1001)。ステップS1001の判別の結果、トークン付きコマンド900を受信していないとき、ステップS1001に戻り、トークン付きコマンド900を受信したとき、受信されたトークン付きコマンド900がトークン識別子を有しているか否かを判別する(ステップS1002)。ステップS1002の判別の結果、トークン付きコマンド900がトークン識別子を有しているとき、トークン認証処理を実行し(ステップS1003)、トークン付きコマンド900がトークン識別子を有しないとき、通常認証処理の禁止が設定されているか否かを判別する(ステップS1004)。ステップS1004の判別の結果、通常認証処理の禁止が設定されているとき、ユーザ認証が実行されない旨のエラー通知(以下、「認証エラー通知」という。)をPC102に送信して(ステップS1005)本処理を終了し、通常認証処理の禁止が設定されていないとき、通常認証処理を実行する(ステップS1006)。
【0049】
次いで、トークン認証処理又は通常認証処理が成功したか否かを判別する(ステップS1007)。ステップS1007の判別の結果、ユーザ認証が成功しなかった(失敗した)とき、ステップS1005に進み、ユーザ認証が成功したとき、ユーザ認証が成功した旨の通知(以下、「認証成功通知」という。)をPC102に送信して(ステップS1008)本処理を終了する。
【0050】
図11は、
図10のステップS1003において実行されるトークン認証処理の手順を示すフローチャートである。
【0051】
図11において、まず、トークン付きコマンド900からトークン付きコマンド900に付与されたトークンを読み出し(ステップS1101)、読み出されたトークンがROM302c又はHDD302dに格納されているトークンリストに含まれているか否かを判別する(ステップS1102)。ステップS1102の判別の結果、読み出されたトークンがトークンリストに含まれているとき、認証成功通知を生成して(ステップS1103)本処理を終了し、読み出されたトークンがトークンリストに含まれていないとき、認証エラー通知を生成して(ステップS1104)本処理を終了する。
【0052】
なお、読み出されたトークンがトークンリストに含まれているときでも所定の場合は認証エラー通知を生成してもよい。例えば、予めMFP101に格納されている認証情報としてのユーザ種別情報が関連付けられたトークンをユーザ種別情報とともにトークンリストから読み出し、読み出されたユーザ種別情報とトークン付きコマンド900に含まれるAttribute ID911が示すユーザ種別とが一致しない場合(例えば、読み出されたユーザ種別情報は管理ユーザであるのに対してAttribute ID911が示すユーザ種別はゲストユーザである場合)、認証エラー通知が生成されてもよい。また、例えば、MFP101に印刷データが格納され且つ印刷データを格納したユーザの認証情報とトークンリストから読み出された認証情報とが一致しない場合、認証エラー通知が生成されてもよい。
【0053】
図5の処理によれば、トークン生成要求コマンド600が受信され(ステップS501)、ユーザ名611、パスワードハッシュ値612、及びソルト値613とMFP101に予め格納されている認証情報とに基づいてユーザ認証処理が実行され(ステップS502)、ユーザ認証が成功したとき(ステップS503でYES)、トークンが生成される(ステップS504)。ここで、トークン生成要求コマンド600はヘッダ部601及びコマンドデータ部602を有する。ユーザ認証処理を実行する際に使用されるユーザ名611、パスワードハッシュ値612、及びソルト値613はコマンドデータ部602に格納されるので、複雑化されたユーザ認証を実行する際に使用される情報であるユーザ名611、パスワードハッシュ値612、及びソルト値613をヘッダ部601に格納する必要を無くすことができ、もって、ヘッダ部601の容量を増大させる必要を無くすことができる。
【0054】
図10及び
図11の処理によれば、トークン付きコマンド900が受信され(ステップS1001でYES)、トークン付きコマンドからトークンが読み出され(ステップS1003,S1101)、読み出されたトークンに基づいてユーザ認証が実行される(ステップS1102〜S1104)。ここで、トークン付きコマンド900はヘッダ部901及びコマンドデータ部902を有する。ユーザ認証がトークン認証処理によって実行されるとき、ヘッダ部901はユーザ認証を実行する際に使用される情報としてトークンのみを格納するので、ヘッダ部901の容量を増大させる必要を無くすことができる。その結果、コマンドデータ部902の容量が減少することがなく、コマンドデータ部902に格納されるコマンドデータを分割する必要を無くすことができる。すなわち、MFP101に送信されるトークン付きコマンド900が含むコマンドデータ部902のデータ構造の変更を防止することができる。
【0055】
図5、
図10、及び
図11の処理によれば、トークン生成要求コマンド600が受信され(ステップS501)、ユーザ名611、パスワードハッシュ値612、及びソルト値613とMFP101に予め格納されている認証情報とに基づいてユーザ認証処理が実行され(ステップS502)、ユーザ認証が成功したとき(ステップS503でYES)、トークンが生成され(ステップS504)、生成されたトークンが予めMFP101に格納されている認証情報としてID、パスワード及びユーザ種別情報に関連付けられてトークンリストに登録され(ステップS505)、トークン付きコマンド900から読み出されたトークン及び当該トークンが登録されているトークンリストに基づいてトークン認証処理が実行される(ステップS1003,S1101〜S1104)ので、トークンが複数存在していても各ユーザに対応して各トークンを管理することができ、もって、適切なユーザ認証を実行することができる。
【0056】
図12は、
図5のトークン生成処理の変形例の手順を示すフローチャートである。
図12の処理はCPU203aによって実行される。
【0057】
図12において、まず、トークン生成要求コマンド1300(
図13)を受信する(ステップS1201)。トークン生成要求コマンド1300の構成はトークン生成要求コマンド600の構成と基本的に同じであり、トークン生成要求コマンド1300はトークン生成要求コマンド600のコマンドデータ部602に対応するコマンドデータ部1301にジョブ1302をさらに格納する点でトークン生成要求コマンド600と異なる。ジョブ1302はMFP101が実行するジョブである。例えば、ジョブ1302には印刷データ「text1」を印刷するための「printjob_hdd_text1」が設定され、後述のステップS1208においてHDD203dに格納された印刷データ「text1」が印刷される。
【0058】
図12に戻り、ユーザ名611、パスワードハッシュ値612、及びソルト値613とMFP101に予め格納されている認証情報とに基づいてユーザ認証処理を実行し(ステップS1202)、ユーザ認証が成功したか否かを判別する(ステップS1203)。
【0059】
ステップS1203の判別の結果、ユーザ認証が成功しなかった(失敗した)とき、トークンを生成できないことを通知するトークン生成失敗通知をPC102に送信して(ステップS1210)本処理を終了し、ユーザ認証が成功したとき、ジョブ1301に基づいてジョブを生成し(ステップS1204)、さらにトークンを生成する(ステップS1205)。生成されたトークンはステップS504で生成されるトークンと同じ構成を有する。
【0060】
次いで、生成されたトークンを予めMFP101に格納されている認証情報に関連付けてトークンリストに登録し(ステップS1206)、トークンをPC102に送信し(ステップS1207)、さらにジョブの実行を開始するとともにジョブの実行が終了したか否かを判別する(ステップS1208)。ステップS1208の判別の結果、ジョブの実行が終了していないとき、ステップS1208に戻り、ジョブの実行が終了したとき、トークンを破棄して(ステップS1209)本処理を終了する。
【0061】
図12の処理によれば、トークン生成要求コマンド1300がコマンドデータ部1202にジョブ1301を有するとき、ジョブ1301に基づいてジョブが生成され(ステップS1204)、トークンが生成される(ステップS1205)ので、ジョブの生成とトークンの生成とを同時に要求でき、もって、ジョブの生成とトークンの生成とを別々に要求する手間を省くことができる。また、ジョブの実行が終了したとき、トークンは破棄される(ステップS1209)ので、トークンの破棄を別途要求する必要を無くすことができる。
【0062】
本発明は、上述の実施の形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。