説明

ミドルウェアに係るプログラム

【課題】アプリケーション作成者が柔軟なユーザ認証及びアクセス制限の実装を可能とすることを目的とする。
【解決手段】コンピュータを、ユーザ管理を行うユーザ管理手段と、ファイル管理を行うファイル管理手段と、ユーザ管理と、ファイル管理と、の連携を行う連携手段と、として機能させるためのミドルウェアに係るプログラムであって、各手段の機能を外部的にカスタマイズ可能に構成したことによって前記課題を解決する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ミドルウェアに係るプログラムに関する。
【背景技術】
【0002】
近年の組込み機器に要求される機能は多岐にわたっている。例としては FTP、HTTP(WWW)等のネットワーク機能、ハードディスクやFlashROM等の記憶装置管理機能、ファイルシステム機能があげられる。
【0003】
これらの機能は「ミドルウェア」として実装される場合がある。ミドルウェアは、基本ソフトウェア(OS)上で動作し、アプリケーションにこれらの機能を提供するソフトウェアモジュールである。図6は、ソフトウェアモジュールの一例を示す図である。
【0004】
図6において、21は、アプリケーション、22は、ミドルウェア、23は、基本ソフトウェアであり。アプリケーション21を作成する者は、部品として提供されるミドルウェア22及びOS23の機能を利用することでアプリケーションを作成する。
【0005】
利用するミドルウェアは一つとは限らず複数を利用する場合もある。特定の機能をミドルウェアとして実装することにはいくつかのメリットがある。
【0006】
即ち、下位層のハードウェアや基本ソフトを変更しても、この変更をミドルウェア層で吸収することで、アプリケーションを変更する必要がなくなる。
【0007】
また、同じ機能を必要とする複数の機器を実現する際に、ミドルウェア層を流用(再利用)することで、全体として開発にかかる開発コスト(期間、人員等)を減らすことが可能となる。
【0008】
このようなミドルウェアの一例としてFTP(File Transfer Prorocol:RFC959)サーバを考える。
【0009】
従来ネットワーク機器間でのファイル転送にはFTPが広く用いられてきた。FTPにしたがって通信することで、機器の種類を問わないファイルの相互転送が可能となる。
【0010】
FTPではファイルの送受信の要求を発行する側をクライアント、要求を受けてファイルを受信又は送信する側をサーバと呼ぶ。
【0011】
FTPにおけるユーザ認証はサーバ上で、ユーザ名と、パスワードとの組で行なわれる。認証は、まず、クライアントがサーバに"USER"コマンドを使用してユーザ名を提
示する。サーバは、そのユーザ名に対するパスワードを要求し、ユーザは"PASS"コ
マンドでパスワードをサーバに送る。サーバは、このユーザ名と、パスワードと、を用いて認証を行なう。組合せが適当であれば認証は成功し、FTPのセッションが開始される。
【0012】
この認証に必要なユーザ管理は、例えばUNIX(登録商標)のようなマルチユーザOSでは、OS自身に備わったユーザ管理機能を用いて実現される。
【0013】
一方、組込み機器では基本ソフトとして、リアルタイムOSが利用されることが多い。リアルタイムOSは、組込みOSとも呼ばれる小型、軽量のOSである。リアルタイムOSは小規模な機器でも動作できるように必要とする資源量(メモリやCPU速度)が小さい。
【0014】
このため、複雑なメモリ管理機能やユーザ管理機能を持たない場合が多い。このため組込み機器でFTPサーバ機能を実装するには、FTPサーバ内部にユーザ管理機能を持つことが一般的だった。
【0015】
【特許文献1】特開2006−11985号公報
【発明の開示】
【発明が解決しようとする課題】
【0016】
しかしながら上記のように、FTPサーバ自身で認証のためのユーザ管理を行なう場合、いくつかの欠点がある。
【0017】
一つは、ユーザ管理の柔軟性のなさである。FTPサーバがユーザ管理を実装する場合、通常、ユーザ名と、パスワードと、の管理は固定的なものとなる。この場合、例えばワンタイムパスワードのような機能の実現は難しい。
【0018】
更に、この方式ではユーザ管理をファイル管理と結び付けて特定のユーザのファイルの書き込みを許可したり禁止したりすることは難しい。例えば、FTPサーバ経由ではファイルAは読めるがファイルBは読めない、ユーザXは全てのファイルが読み書きできるが、ユーザYは読み出ししかできない、等の制限を実現することは難しかった。
【0019】
本発明はこのような問題点に鑑みなされたもので、アプリケーション作成者が柔軟なユーザ認証及びアクセス制限の実装を可能とすることを目的とする。
【課題を解決するための手段】
【0020】
そこで、本発明のミドルウェアに係るプログラムは、コンピュータを、ユーザ管理を行うユーザ管理手段と、ファイル管理を行うファイル管理手段と、ユーザ管理と、ファイル管理と、の連携を行う連携手段と、として機能させるためのミドルウェアに係るプログラムであって、前記各手段の機能を外部的にカスタマイズ可能に構成したことを特徴とする。
【0021】
本発明によれば、アプリケーション作成者が柔軟なユーザ認証及びアクセス制限の実装を可能とすることができる。
【発明の効果】
【0022】
本発明によれば、アプリケーション作成者が柔軟なユーザ認証及びアクセス制限の実装を可能とすることができる。
【発明を実施するための最良の形態】
【0023】
以下、本発明の実施形態について図面に基づいて説明する。
【0024】
図1は、組み込み機器の一例のハードウェア構成図である。図1に示されるように、組み込み機器1は、ハードウェア構成として、入力装置11と、表示装置12と、記録媒体ドライブ装置13と、ROM15と、RAM16と、CPU17と、インターフェース装置18と、HD19と、を含む。
【0025】
入力装置11は、組み込み機器1の操作者(又はユーザ)が操作等に応じて、組み込み機器1に各種操作情報等を入力する。表示装置12は、各種情報(又は画面)等を表示する。インターフェース装置18は、組み込み機器1をネットワーク等に接続するインターフェースである。
【0026】
後述する組み込み機器1の機能等に係るプログラムは、例えば、CD−ROM等の記録媒体14によって組み込み機器1に提供されるか、ネットワーク等を通じてダウンロードされる。記録媒体14は、記録媒体ドライブ装置13にセットされ、プログラムが記録媒体14から記録媒体ドライブ装置13を介してHD19にインストールされる。なお、プログラムは、始めからHD19等にインストールされていてもよい。
【0027】
ROM15は、組み込み機器1の電源投入時に最初に読み込まれるプログラム等を記録する。RAM16は、組み込み機器1のメインメモリである。CPU17は、必要に応じて、HD19よりプログラムを読み出して、RAM16に格納し、プログラムを実行することで、後述する機能の全て又は一部を提供する。また、HD19は、プログラム以外に、例えば後述する図5に示すテーブルに係る情報や、後述するFTPミドルウェア設定ヘッダファイル等を格納する。
【0028】
本実施形態では、ミドルウェアにおいてユーザ管理機構の枠組を提供し、実際のユーザ認証のためのメカニズムはアプリケーション作成者が定義、実装することを可能にする。
【0029】
このために、ユーザ認証のソフトウェアインターフェースを定め、アプリケーション作成者が、これにしたがってユーザ認証のためのプログラムを書くようにすることで、これを可能とする。図2は、ユーザ認証のカスタマイズを示す図である。
【0030】
図2において、31は、FTPサーバを利用するアプリケーションである。32は、FTPサーバミドルウェアである。33は、基本ソフトウェアである。34は、アプリケーション独自のユーザ認証ソフトウェアモジュールである。35は、ユーザ認証のためのソフトウェアインターフェースである。
【0031】
例えばC言語の場合、より具体的には以下のようにインターフェースを定める。
int FTP_USER_AUTH(char* username, char* password)
関数の戻り値は、例えば0ならば認証成功、それ以外は認証失敗というように定める。
【0032】
アプリケーション作成者はこのインターフェースにしたがって独自の認証関数を記述する。
【0033】
この実装にはユーザ独自のアルゴリズムを実装してもよいし、ユーザ管理のためのほかのミドルウェアを使用して実装してもよい。
【0034】
実際の動作時には、エンドユーザが入力したユーザ名と、パスワードと、の組はFTPサーバミドルウェア32から上記のインターフェースを介してアプリケーション作成者が書いたユーザ認証モジュール34に渡される。
【0035】
ユーザ認証モジュール34は、そのユーザ名と、パスワードと、の組の妥当性をチェックし、OKならば0を、そうでなければ1を返す。
【0036】
このカスタマイズ機能を利用する場合は関数名をC言語のマクロFTP_USER_AUTHとして定義することとする。
例えば以下の定義を行なう。
#define FTP_USER_AUTH my_own_auth
【0037】
これにより、FTPサーバミドルウェア34では認証関数として my_own_auth()を呼ぶことになる。
【0038】
この定義は、FTPサーバミドルウェア34のソースコードからインクルードされる、FTPミドルウェア設定ヘッダファイルに記述する。図3は、ソースコード記述の方法を示す図である。
【0039】
FTPミドルウェア設定ヘッダファイルは、このミドルウェアを使用するアプリケーション作成者が作成、記述する。
【0040】
また、FTPサーバミドルウェア内で、例えば以下のような記述をしておくことで、カスタマイズの機能を利用しない場合にデフォルトの認証関数を使用することも可能となる。
#ifndef FTP_USER_AUTH
#define FTP_USER_AUTH default_auth
int default_auth(char* username, char* password)
{ }
#endif
【0041】
これにより、コンパイル時に"FTP_USER_AUTH"に作成した名前を定義す
れば、その名前のユーザ作成の認証関数が使われ、未定義のままコンパイルすれば、デフォルトの認証関数が使用される。
【0042】
デフォルトの認証関数は、FTPサーバミドルウェアの一部として提供することにより、複雑な機能が必要のない場合のアプリケーション作成者の手間を減らすことができる。
【0043】
またこの方法では、関数名を自由に設定することができ、例えばユーザ認証が必要な他のミドルウェアと、認証モジュールを共用することも可能となる。
以上により、ユーザ認証をカスタマイズ可能にすることができる。
【0044】
次に、個々のファイルに対するユーザごとのアクセスの制限を実現するための、ファイルシステムへのアクセスのカスタマイズについて説明する。図4は、ファイルアクセスのカスタマイズを示す図である。図4において、51は、FTPサーバを利用するアプリケーションである。52は、FTPサーバミドルウェアである。53は、基本ソフトウェアである。54は、ファイルの読み出しや、書き込みを行うファイルシステムミドルウェアである。55は、ファイルアクセスのためのソフトウェアインターフェースである。
【0045】
FTPサーバミドルウェアは、クライアントからのファイルの読み出し、又は書き込み要求を受けて、それに応答するためにサーバマシン上のファイルの読み書きを行なう。これは下位のOS(又はファイルシステムミドルウェアのサービス)を呼び出すことで実行される。これはファイルの読み書きに限らず、ファイルの削除や名前の変更、ファイル名一覧の取得等に関しても同様である。
【0046】
本実施形態ではこれらファイルシステムに関する呼び出しを、上述のユーザ認証と同様の方法でカスタマイズを行なえるようにすることで、種々のアクセス制限の実現を可能とする。
【0047】
以下、ファイルの読み出し(read)と、書き込み(write)とを例に説明を行う。ファイルの読み出しと、書き込みと、には一般的に OSやファイルシステムミドルウェアが提供するread()と、write()と、が使用される。これはたとえば以下のような形式を持つ。
【0048】
size_t read(fd, char* buf, size_t size)
size_t write(int fd, char* buf, size_t size)
【0049】
FTPサーバミドルウェアではこれらの呼び出しを全て以下のマクロで置き換える。
read → FTPD_FILE_READ
write → FTPD_FILE_WRITE
【0050】
更に、FTPのユーザ(ユーザ名)ごとのアクセス制限を実現するために、以下の機構を準備する。
【0051】
即ち、FTPサーバミドルウェアは、認証が成功しFTPのセッションが開始された時点で、そのセッションの「ユーザ名(username)」と、「セッション番号」と、を組として記録し、管理する。
【0052】
また、FTPサーバミドルウェアは、セッションの開始時に以下のインターフェースでアプリケーションにこれを通知する。なお、sidは、セッション番号とする。
int ftpd_id_start(sid, username)
【0053】
セッション番号は、セッションが継続している間、FTPサーバミドルウェア等に保持され、セッションの終了時に開放される。このセッション終了の際にも、FTPサーバミドルウェアは、これをアプリケーションに通知する。
int ftpd_id_end(sid)
【0054】
例えば、ユーザ名"canon"のユーザがセッションを開始した際、他にセッション
が進行中でなければ、セッション番号は0となり、これとユーザ名"canon"が組で
管理される(図5参照)。図5は、ユーザ名と、セッション番号と、を組での管理方法の一例を示す図である。
【0055】
このうえで、先に述べたFTPミドルウェア設定ヘッダファイルで、以下のマクロ変換を行なう。
#define FTPD_FILE_READ(fd, buf, size) my_own_read(sid, fd, buf, size)
#define FTPD_FILE_WRITE(fd, buf, size) my_own_write(sid, fd, buf, size)
my_own_read()及びmy_own_write()は、上述のユーザ認証の場合と同様にアプリケーション作成者が作成する。これらは基本的にはread及びwriteのラッパー(wrapper)関数であり、最終的に基本ソフトウェア又はファイルシステムミドルウェアが提供するread及びwriteを呼び出す。
【0056】
その際に、FTPサーバミドルウェアから渡されたセッションID、sidを用いて、必要なアクセス制限を実装することができる。
【0057】
sidで示されるユーザにアクセスを許したくない場合は、read及びwriteを呼び出さずにエラーを返すことで、アクセス制限が実現できる。
【0058】
これによりアプリケーション作成者は、ユーザ毎に細かなアクセス制限を実装することができる。
【0059】
read,writeのみならず、FTPサーバミドルウェアが呼び出す全てのファイルシステムに関する呼び出しを上の例のように記述することで、先のユーザ認証同様に、アプリケーション作成者が個々の呼び出しをフックして、自由にアクセス制限を実装することができる。
【0060】
またユーザ認証の場合と同様に以下の設定により、アクセス制限を必要としないときは新たに何も記述する必要はない。
#ifndef FTPD_FILE_READ
#define FTPD_FILE_READ(fd, buf, size) read(fd, buf, size)
#endif
#ifndef FTPD_FILE_WRITE
#define FTPD_FILE_WRITE(fd, buf, size) write(fd, buf, size)
#endif
【0061】
例えばFTPD_FILE_READに独自読み出し関数の関数名が定義されていない場合は、基本ソフトウェアが提供する本来のreadが呼ばれる。
ファイルの読み出しは一切のアクセス制限をせず、書き込みのみユーザごとの制限を行ないたい場合はこのような設定をすることで実現できる。
もちろんこれもread/writeにかぎらず全てのファイルシステム機能の呼び出しに関して同様である。
【0062】
以上説明したように、本実施形態によれば、ミドルウェアソフトウェアにおいて一部機能をアプリケーション作成者がカスタマイズ可能とすることで柔軟かつ多機能なアプリケーション作成を可能とした。
【0063】
特にFTPサーバミドルウェアにおいて、ユーザ管理機能と、ファイルシステムアクセス制限機能と、のカスタマイズを可能とした。更に、これらの間の連携機能を提供することで、アプリケーション作成者が柔軟なユーザ認証及びアクセス制限の実装できるようになる。
【0064】
また、カスタマイズを行なわない場合の所謂デフォルトの機能を提供することで、高度な機能が不要な場合のアプリケーション作成の負担を軽減することもできる。
【0065】
更に、本実施形態の構成方法でミドルウェアを作成することで、ミドルウェア作成者が幅広いユーザの要望に応えることができるという効果がある。
【0066】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【0067】
【図1】組み込み機器の一例のハードウェア構成図である。
【図2】ユーザ認証のカスタマイズを示す図である。
【図3】ソースコード記述の方法を示す図である。
【図4】ファイルアクセスのカスタマイズを示す図である。
【図5】ユーザ名と、セッション番号と、を組での管理方法の一例を示す図である。
【図6】ソフトウェアモジュールの一例を示す図である。
【符号の説明】
【0068】
11 入力装置
12 表示装置
13 記録媒体ドライブ装置
14 記録媒体
15 ROM
16 RAM
17 CPU
18 インターフェース装置
19 HD




















【特許請求の範囲】
【請求項1】
コンピュータを、
ユーザ管理を行うユーザ管理手段と、
ファイル管理を行うファイル管理手段と、
ユーザ管理と、ファイル管理と、の連携を行う連携手段と、
として機能させるためのミドルウェアに係るプログラムであって、
前記各手段の機能を外部的にカスタマイズ可能に構成したことを特徴とするミドルウェアに係るプログラム。
【請求項2】
前記各手段の元々の機能と、前記カスタマイズによって実現した機能と、を選択可能としたことを特徴とする請求項1に記載のミドルウェアに係るプログラム。
【請求項3】
前記ユーザ管理手段は、FTPの認証に使われるユーザの識別情報と、FTPのセッションを特定する識別情報と、を組で管理することを特徴とする請求項1又は2に記載のミドルウェアに係るプログラム。
【請求項4】
前記連携手段は、前記FTPのセッションを特定する識別情報を用いて、前記ユーザ管理と、ファイル管理と、の連携を行うことを特徴とする請求項3に記載のミドルウェアに係るプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate