JAAS認証はプラガブルな形式で実行されるため、Javaアプリケーションは、基盤となる認証技術から独立した状態を維持できます。適切な認証技術などの構成情報は実行時に指定されます。構成情報のソース(ファイルやデータベースなど)は、クラスjavax.security.auth.login.Configurationによって異なります。これは、このセクションで説明する構成ファイルから構成情報を読み取ります。
ログイン構成ファイルは、1つ以上のエントリで構成され、各エントリには、特定のアプリケーションで使用される基礎となる認証技術が指定されます。各エントリの構造を、次に示します。
<entry name> { <LoginModule> <flag> <LoginModule options>; <LoginModule> <flag> <LoginModule options>; // ... };
このように、各ログイン構成ファイル・エントリは、ログイン・モジュールの名前とログイン・モジュール固有の1つ以上の項目で構成されます。ログイン・モジュール固有の項目は、ログイン・モジュール、フラグ値、ログイン・モジュールに渡されるオプションを指定します。(これらについては以降を参照してください。)ログイン・モジュール固有の個々の項目の末尾にはセミコロンを付け、項目のグループ全体を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固有の項目の構成要素を示します。詳細は、「構成」のドキュメントを参照してください。
LoginModule
特定の認証テクノロジを実装するクラスの完全修飾クラス名を指定します。このクラスはjavax.security.auth.spi.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
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つの構成に連結されます。
ここで、このチュートリアルで使用するjaas.conf
ログイン構成ファイルを指定するために、セキュリティ・プロパティ・ファイルに追加する必要のある項目の例を示します。この例は、ファイルが次のMicrosoft WindowsシステムのC:\AcnTest
ディレクトリにあると仮定しています。
login.config.url.1=file:C:/AcnTest/jaas.conf
URLには、ユーザーの実行するオペレーティング・システムに関係なく、常にスラッシュを使用します。