このセクションでは、Web アプリケーションを実行するアプリケーション サーバーの認証メカニズムを設定する方法について説明します。認証メカニズムの選択には、アプリケーションの実行時に使用するサーバーに基づいて、次の 3 つの選択肢があります。
JRun を使用して Web アプリケーションを実行します。既定では、JRun アプリケー ション サーバーは JRun に用意されている認証メカニズムを使用します。詳細に ついては、"既定の JRun 認証メカニズムの使用法"を参照してください。
JRun を使用して Web アプリケーションを実行しますが、独自の認証メカニズムを 定義します。グループやロール情報が含まれている既存のユーザ データベースが あり、そのデータベースを使用してアプリケーションへのユーザ アクセスを認証 する場合、このメソッドが多くの場合必要になります。詳細については、"JRun に よるカスタム認証メカニズムの使用"を参照してください。
JRun は、Web アプリケーションの認証に関する最新の業界標準仕様 (Java サーブ レット API バージョン 2.2 の仕様) に準拠しています。このため、JRun で開発する アプリケーションは、この仕様に準拠しているほかのすべての Web アプリケー ション環境に移植できます。
異なるアプリケーション サーバー上で Web アプリケーションを実行する場合は、 アプリケーションの実行に使用するサーバーで独自の認証メカニズムを定義し ます。詳細については、"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 サーバーを設定し、そのサーバー専用の
ユーザ情報を格納できます。このように設定するには、サーバーの |
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 システムでは異なります。
JRun の ホーム ディレクトリ
/lib/jrun.jar
ファイルがシステムの CLASSPATH 環境変数に含まれていることを確認します。次に、Windows コマンド プロンプトで、次のコマンドを使用してこのユーティリティを起動します。
java allaire.jrun.security.PropertyFileAuthentication options
JRun には UNIX でこのユーティリティを起動するためのシェル スクリプトが用意されています。その構文は次のとおりです。
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 認証メカニズムは 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 は Web アプリケーションの認証に関する最新の業界標準仕様 (Java サーブレット API バージョン 2.2 の仕様) に準拠しています。JRun で開発するアプリケーションは、この仕様に準拠しているほかのすべての Web アプリケーション環境に移植できます。
Web アプリケーションは、アプリケーションにアクセスするためにユーザに割り当てられている必要のあるロールを定義します。一方、アプリケーションを実行するアプリケーション サーバーでは、ロール情報を解釈して適用する必要があります。
したがって、アプリケーションによって参照されるロールを認識するように実行環境の認証メカニズムが設定されている限り、JRun で作成した Web アプリケーションは別の実行環境に移植できる必要があります。