JAAS 認証はプラグイン可能な形式で実行されるため、Java アプリケーションは、基盤となる認証技術から独立した状態を維持できます。適切な認証技術などの構成情報は実行時に指定されます。構成情報のソース (ファイルやデータベース) は、現在の javax.security.auth.login.Configuration 実装によって異なります。Sun Microsystems のデフォルトの
Configuration
実装は、このドキュメントで説明するように、構成ファイルから構成情報を読み取ります。ログイン構成ファイルの構造および内容
ログイン構成ファイルは、1 つ以上のエントリで構成されます。各エントリには、特定のアプリケーションで使用する基盤となる認証技術が指定されます。各エントリの構造を、次に示します。
<name used by application to refer to this entry> { <LoginModule> <flag> <LoginModule options>; <optional additional LoginModules, flags and options>; };このため、各ログイン構成ファイルのエントリは、名前、ついで 1 つ以上のログインモジュール固有エントリになります。ログインモジュール固有の各エントリはセミコロンで区切られ、ログインモジュール固有エントリグループ全体は中括弧で囲まれます。各構成ファイルのエントリの最後に、セミコロンを付けます。
たとえば、「JAAS 認証」チュートリアルで使用するログイン構成ファイルには、次のエントリだけが含まれます。
Sample { sample.module.SampleLoginModule required debug=true; };ここでは、エントリの名前は「Sample」です。この名前を使用して、JAAS 認証チュートリアルアプリケーション (
SampleAcn.java
) はエントリを参照します。このエントリは、ユーザ認証に使用するログインモジュールがsample.module
パッケージ内の SampleLoginModule であること、認証が成功したと見なされるためにはこの SampleLoginModule が「成功する」必要があることを示します。SampleLoginModule は、ユーザから提供された名前とパスワードが正しい (testUser と testPassword である) 場合に限り成功します。JAAS 認証チュートリアルの「LoginContext のインスタンス化」で説明したように、ログイン構成ファイルのエントリの名前は、LoginContext のインスタンス化時にアプリケーションがエントリの参照に使用する名前です。アプリケーション開発者は、任意の名前を設定できます。ここで、「アプリケーション」とは、JAAS ログインを実行するあらゆるコードを指します。
指定されたログインモジュール (後述) は、認証プロセスの制御に使用されます。認証は、リスト内で指定された順番に正確に従って行われます。詳細は、ここを参照してください。
各ログインモジュール固有のエントリサブパートを、次に示します。
- LoginModule
これは、使用する認証技術を実装するクラスを指定します。特に、このクラスは、
javax.security.auth.spi
パッケージに含まれる LoginModule クラスのサブクラスでなければなりません。通常、ログインモジュールは、これらのチュートリアルで使用する SampleLoginModule (sample.module
パッケージ内) と同じように、ユーザ名とパスワードを要求し、検証します。どのベンダーの提供するログインモジュール実装でも使用可能です。いくつかの実装が、サンの JRE に同梱されています。さまざまなログインモジュールのドキュメントを参照してください。すべてのドキュメントは、com.sun.security.auth
パッケージ内にあります。
- flag
ログインモジュールのフラグ値として、「required」、「requisite」、「sufficient」、「optional」 のいずれかを設定できます。チュートリアルのように、存在するログインモジュール固有のエントリが 1 つだけの場合、フラグを「required」にする必要があります。オプションの詳細は、ここを参照してください。
- ログインモジュールオプション
指定されたログインモジュール実装でオプションの設定が可能な場合、ここで任意のオプション値を指定できます。空白で区切られた値リストは、基盤となるログインモジュールに直接渡されます。オプションは、ログインモジュール自体により定義され、内部の動作を制御します。たとえば、デバッグ/テスト機能をサポートするオプションをログインモジュールで定義できます。
構成ファイルのオプションを指定する適正な方法は、名前 - 値ペアの使用です (例: debug=true)。オプション名 (この場合は「debug」) と値 (この場合は「true」) は、等号で区切ります。
使用するログイン構成ファイルの位置指定
使用する構成ファイルは、次の 2 つのいずれかの方法で指定できます。
- コマンド行
インタープリタのコマンド行引数
-Djava.security.auth.login.config
を使用して、使用するログイン構成ファイルを指定できます。この方法は、すべてのチュートリアルで使用されます。たとえば、JAAS 認証チュートリアルでは、SampleAcn
アプリケーションの実行に次のコマンドを使用します。このコマンドは、構成ファイルが現行のディレクトリのsample_jaas.config
ファイルであることを指定します。java -Djava.security.auth.login.config==sample_jaas.config sample.SampleAcn- Java セキュリティのプロパティファイル
ログイン構成ファイルの位置を指定する別の方法は、セキュリティプロパティファイルの
login.config.url.n
プロパティ値に URL を指定することです。セキュリティプロパティファイルは、JRE のlib/security
内のjava.security
ファイルです。ここで、n は 1 から始まる整数の連番です。このため、必要に応じて複数のログイン構成ファイルを指定できます。この場合、
login.config.url.1
プロパティに最初のファイルの URL を、login.config.url.2
プロパティに 2 番目のファイルの URL を設定します。複数の構成ファイルを指定する (つまり n > 1 の) 場合、ファイルは読み取られて 1 つに連結されます。ここで、このチュートリアルで使用する
sample_jaas.config
ログイン構成ファイルを指定するために、セキュリティプロパティファイルに追加する必要のある項目の例を示します。この例は、ファイルが、Microsoft Windows システムのC:\AcnTest
ディレクトリにあると仮定しています。URL には、ユーザの実行するオペレーティングシステムに関係なく、常にスラッシュを使用します。login.config.url.1=file:C:/AcnTest/sample_jaas.config