JAAS 認証はプラグイン可能な形式で実行されるため、Java アプリケーションは、基盤となる認証技術から独立した状態を維持できます。適切な認証技術などの構成情報は実行時に指定されます。構成情報のソース (ファイルやデータベース) は、現在の javax.security.auth.login.Configuration 実装によって異なります。Sun Microsystems のデフォルトの Configuration
実装は、このドキュメントで説明するように、構成ファイルから構成情報を読み取ります。
ログイン構成ファイルは、1 つ以上のエントリで構成されます。各エントリには、特定のアプリケーションで使用する基盤となる認証技術が指定されます。各エントリの構造を、次に示します。
<entry name> { <LoginModule> <flag> <LoginModule options>; <LoginModule> <flag> <LoginModule options>; . . . };
このように、各ログイン構成ファイルエントリは、LoginModule の名前と LoginModule 固有の項目 1 個以上で構成されます。LoginModule 固有の項目は、LoginModule、フラグ値、LoginModule に渡されるオプションを指定します。これらについては以降を参照してください。LoginModule 固有の個々の項目の末尾にはセミコロンを付けます。さらに、すべての項目を 1 組の中括弧で囲みます。各構成ファイルのエントリの最後に、セミコロンを付けます。
たとえば、「JAAS 認証」チュートリアルで使用するログイン構成ファイルには、次のエントリだけが含まれます。
JaasSample { com.sun.security.auth.module.Krb5LoginModule required; };
ここでは、エントリの名前は「JaasSample」です。この名前を使用して、JAAS 認証チュートリアルアプリケーション (JaasAcn.java
) はエントリを参照します。このエントリは、ユーザー認証に使用するログインモジュールが com.sun.security.auth.module
パッケージ内の Krb5LoginModule であること、および認証が成功したと見なされるためにはこの Krb5LoginModule が「成功する」必要があることを示します。Krb5LoginModule が成功するのは、ユーザーが入力した名前およびパスワードを使用して、Kerberos KDC へのログインに成功した場合だけです。
JAAS 認証チュートリアルの「LoginContext のインスタンス化」で説明したように、ログイン構成ファイルのエントリの名前は、LoginContext のインスタンス化時にアプリケーションがエントリの参照に使用する名前です。アプリケーション開発者は、任意の名前を設定できます。ここで、「アプリケーション」という語は、JAAS ログインを行う何らかのコードを指します。これは、アプリケーションの場合 (「JAAS 認証」および「JAAS 承認」チュートリアルで示したように) も、JAAS 操作を行う Login ユーティリティーの場合 (「JAAS Login ユーティリティーの使用」および「JAAS Login ユーティリティーおよび Java GSS-API を使用したセキュアなメッセージ交換」チュートリアルで示したように) もあります。
次に、LoginModule 固有の項目の構成要素を示します。詳細は、「構成」のドキュメントを参照してください。
特定の認証テクノロジを実装するクラスの完全指定クラス名を指定します。このクラスは javax.security.auth.spi.LoginModule
インタフェースを実装している必要があります。通常、LoginModule はユーザー名およびパスワードの入力を要求して、それを検証します。どのベンダーの提供するログインモジュール実装でも使用可能です。いくつかの実装が、Sun Microsystems の JRE に同梱されています。これらのチュートリアルを通じて、com.sun.security.auth.module
パッケージ内の Krb5LoginModule を使用します。Krb5LoginModule は、基盤となる認証技術として Kerberos を使用します。さまざまなログインモジュールのドキュメントを参照してください。すべてのドキュメントは、com.sun.security.auth
パッケージ内にあります。
フラグ値は、LoginModule が「required」、「requisite」、「sufficient」、「optional」に成功したかどうかを表します。
指定されたログインモジュール実装でオプションの設定が可能な場合、ここで任意のオプション値を指定できます。空白で区切られた値リストは、基盤となるログインモジュールに直接渡されます。オプションは LoginModule 自体で定義されており、内部で動作を制御します。たとえば、ログインモジュールでデバッグ/テスト機能をサポートするオプションを定義する場合を考えましょう。一連のチュートリアルで使用する Krb5LoginModule 用に定義されたオプションの詳細は、Krb5LoginModule ドキュメントを参照してください。
構成ファイルのオプションを指定する適正な方法は、名前-値ペアの使用です (例、debug=true)。オプション名 (この場合は「debug」) と値 (この場合は「true」) は、等号で区切ります。
使用する構成ファイルは、次の 2 つのいずれかの方法で指定できます。
コマンド行引数 -Djava.security.auth.login.config
を使用して、使用するログイン構成ファイルを指定できます。この方法は、すべてのチュートリアルで使用されます。たとえば、JAAS 認証チュートリアルでは、JaasAcn
アプリケーションの実行に次のコマンドを使用します。このコマンドは、構成ファイルが現行のディレクトリの jaas.conf
ファイルであることを指定します。
java -Djava.security.auth.login.config=jaas.conf JaasAcn
ログイン構成ファイルの位置を指定する別の方法は、セキュリティープロパティーファイルの 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 つに連結されます。
ここで、このチュートリアルで使用する jaas.conf
ログイン構成ファイルを指定するために、セキュリティープロパティーファイルに追加する必要のある項目の例を示します。この例は、ファイルが次の Microsoft Windows システムの C:\AcnTest
ディレクトリにあると仮定しています。
login.config.url.1=file:C:/AcnTest/jaas.confURL には、ユーザーの実行するオペレーティングシステムに関係なく、常にスラッシュを使用します。