サーバー認証メカニズムの制御

このセクションでは、Web アプリケーションを実行するアプリケーション サーバーの認証メカニズムを設定する方法について説明します。認証メカニズムの選択には、アプリケーションの実行時に使用するサーバーに基づいて、次の 3 つの選択肢があります。

既定の JRun 認証メカニズムの使用法

JRun サーバーには、サーバーで実行される Web アプリケーションを認証するための組み込みメカニズムがあります。この認証メカニズムでは、ユーザ、グループ、およびロールに関する情報を 1 つのファイルを使用して記録します。ユーザがアプリケーションにアクセスすると、JRun サーバーはユーザのロールを判別し、そのロールでアプリケーションにアクセスできるかどうかを決めます。

既定の JRun 認証メカニズムは、global.properties ファイルに次のコードを設定して定義します。

# 認証
authentication.service=propfile 
authentication.class=allaire.jrun.servlet.ResourceAuthenticator
authentication.propfile.class=allaire.jrun.security.PropertyFileAuthent
ication 
authentication.propfile.filename={jrun.rootdir}/lib/users.properties 

authentication.service プロパティでは認証サービス名を propfile と指定します。残りのプロパティでは、認証メカニズムを定義する Java クラスの名前を設定し、users.properties ファイルの場所を設定します。JRun サーバーで実装されている認証メカニズムでは、users.properties を使用してユーザ、グループ、およびロールに関する情報を保持します。

組み込み型の JRun 認証メカニズムでは、すべての JRun サーバーはユーザ、グループ、およびロール情報が格納されている 1 つの users.properties ファイルを共有します。このため、すべてのアプリケーションは同じユーザ認証情報を共有します。


メモ

独自のファイルを使用するように個々の JRun サーバーを設定し、そのサーバー専用の ユーザ情報を格納できます。このように設定するには、サーバーの local.properties ファイルを編集してプロパティauthentication.propfile.filename を追加し、 users.properties ファイルの場所を指定します。このプロパティの詳細については、 "local.properties 内のプロパティ"を参照してください。


users.properties ファイルは単純なテキスト ファイルであり、編集してユーザ、グループ、およびロールを追加できます。このファイルの構文は JRun プロパティ ファイルの構文と同じです。プロパティ ファイルの構文の詳細については、『JRun セットアップ ガイド』を参照してください。

次の例では、users.properties ファイルに 5 人のユーザ、2 つのグループ、および 3 つのロールを定義しています。

# ユーザを定義します。
# パスワードは UNIX のパスワード暗号化を使用して暗号化します。
user.admin=adpexzg3FUZAk 
user.ajones=kmBt0v90ZbRE6 
user.bsmith=bs.e1isDZSIX. 
user.csmith=cszOt89s3eWaU 
user.user1=swJBBnSJUNwbQ 

# グループを定義します。
group.jrundeveloper=ajones,bsmith,user1 
group.all=* 

# ユーザとグループにロールを割り当てます。
role.developer=jrundeveloper 
role.manager=csmith 
role.users=* 

ユーザ名は次の形式となります。

user.userName=UnixCryptPassword

userName にはユーザ名を定義します。UnixCryptPassword はユーザのパスワードの暗号化フォームです。

この例にあるワイルドカード文字 (*) を使用すると、すべてのユーザにグループ all を割り当てたり、すべてのグループにロール users に割り当てることができます。

新規ユーザを Web サイトに追加する場合は、users.properties を更新してユーザとユーザの暗号化パスワードを追加し、ユーザを適切なグループとロールに追加する必要があります。アプリケーション内からプログラムによってユーザを追加したり、JRun のコマンド ライン ユーティリティを使用できます。

コマンド ライン ユーティリティを使用すると、ユーザと暗号化パスワードを
users.properties ファイルに追加できます。ただし、この場合も users.properties を変更してロールとグループにユーザを追加する必要があります。


メモ

パスワードの長さに制限はありませんが、ユーティリティでは最初の 8 文字だけを 暗号化します。


このユーティリティの起動コマンドは、Windows と UNIX システムでは異なります。

Windows

JRun の ホーム ディレクトリ/lib/jrun.jar ファイルがシステムの CLASSPATH 環境変数に含まれていることを確認します。次に、Windows コマンド プロンプトで、次のコマンドを使用してこのユーティリティを起動します。

java allaire.jrun.security.PropertyFileAuthentication options

UNIX

JRun には UNIX でこのユーティリティを起動するためのシェル スクリプトが用意されています。その構文は次のとおりです。

jrunpasswd options

Windows および UNIX のどちらの場合も、このコマンドに次のオプションを使用できます。

command [-verbose] -convert <users.properties file> <pass.properties
file>
command [-verbose] -add <users.properties file> <username> <password>
command [-verbose] -edit <users.properties file> <username> <password>
command [-verbose] -remove <users.properties file> <username>

このコマンドで、プレーン テキストのユーザのパスワードを入力します。ユーティリティによってこれが暗号化され、users.properties ファイルに書き込まれます。JRun 2.3.3 pass.properties ファイルからユーザ名とパスワードを users.properties ファイルにコピーするには、コマンドの入力として pass.properties ファイルを使用します。

たとえば、次のコマンドによって、Bob というユーザおよび Bob の暗号化パスワードを UNIX システムの users.properties に追加します。

# jrunpasswd -add /usr/local/jrun/lib/users.properties Bob Bobpassword
User Bob added

JRun によるカスタム認証メカニズムの使用

前のセクションで説明した既定の JRun 認証メカニズムは Web サイトによっては適合しない場合があります。たとえば、LDAP データベースなどのユーザに関する情報を保存するためのメカニズムがすでに存在し、それをアプリケーション認証に統合することもあります。

この場合は、JRun インターフェイス
allaire.jrun.security.AuthenticationInterface を実装することによって独自の認証メカニズムを定義できます。このインターフェイスには、JRun 認証メカニズムのメソッドが定義されています。このインターフェイスを実装すると、独自の認証メカニズムを定義できます。次の表は、このインターフェイスのメソッドの一覧です。
メソッド
目的
authenticate
 
パスワードなどの所定の証明を使用してユーザを認証します。
destroy
 
認証サービスを破棄します。
init  
 
認証サービスを初期化します。
isPrincipalInRole
 
プリンシパル (ユーザ) に認証領域内でロールが与えられたかどうかを調べます。ユーザ名を取得するときに使用する Principal オブジェクトを返します。

このクラスの情報については、ディレクトリ {JRun root dir}/docs にある JavaDocs を参照してください。

認証インターフェイスを定義したら、JRun サーバーの local.properties にある authentication.serviceName.class プロパティを使用して、このインターフェイスを JRun に指定します。

次の例では、JRun サーバーが使用するカスタム認証メカニズムを指定しています。

# 認証
authentication.service=myauth 
authentication.myauth.class=classFileName

JRun の外部でのアプリケーションの実行

JRun は Web アプリケーションの認証に関する最新の業界標準仕様 (Java サーブレット API バージョン 2.2 の仕様) に準拠しています。JRun で開発するアプリケーションは、この仕様に準拠しているほかのすべての Web アプリケーション環境に移植できます。

Web アプリケーションは、アプリケーションにアクセスするためにユーザに割り当てられている必要のあるロールを定義します。一方、アプリケーションを実行するアプリケーション サーバーでは、ロール情報を解釈して適用する必要があります。

したがって、アプリケーションによって参照されるロールを認識するように実行環境の認証メカニズムが設定されている限り、JRun で作成した Web アプリケーションは別の実行環境に移植できる必要があります。