public abstract class Configuration extends Object
ログイン構成には次に示す情報が格納されます。この例では、Configuration
のデフォルト構文だけを表しています。このクラスのサブクラス実装では別の構文を実装することもでき、ファイル、データベース、サーバーといった任意のソースから Configuration
を取得することもできます。
Name { ModuleClass Flag ModuleOptions; ModuleClass Flag ModuleOptions; ModuleClass Flag ModuleOptions; }; Name { ModuleClass Flag ModuleOptions; ModuleClass Flag ModuleOptions; }; other { ModuleClass Flag ModuleOptions; ModuleClass Flag ModuleOptions; };
Configuration
の各エントリは、アプリケーション名 Name でインデックス付けされており、そのアプリケーション用に構成された LoginModule のリストが含まれています。各 LoginModule
は、その完全指定クラス名で指定されます。認証は、モジュールリストで指定した順番どおりに処理されます。アプリケーションの固有エントリがない場合、other の固有エントリがデフォルトになります。
Flag の値は、スタック内で認証を進める際の全体的な動作を制御します。Flag の有効な値の説明とそれぞれのセマンティクスを次に示します。
1) Required -LoginModule
の処理は成功しなければならない。 成功しても失敗しても、LoginModule
リストに従って 認証が続行されます。 2) Requisite -LoginModule
の処理は成功しなければならない。 成功した場合は、LoginModule
リストに従って認証が 続行されます。失敗した場合は、ただちに制御がアプリケーションに 戻ります (LoginModule
リストの順序で認証が行われない)。 3) Sufficient -LoginModule
の処理は成功しなくても良い。 成功した場合は、ただちに制御がアプリケーションに戻ります (LoginModule
リストの順序で認証が行われない)。 4) Optional -LoginModule
の処理は成功しなくても良い。 成功しても失敗しても、LoginModule
リストに 従って認証が続行されます。
すべての Required LoginModule と Requisite LoginModule が成功した場合にだけ、認証全体が成功します。Sufficient LoginModule
が構成され成功した場合は、その Sufficient LoginModule
より前に Required LoginModule と Requisite LoginModule が成功していれば認証全体が成功します。アプリケーションで Required LoginModule も Requisite LoginModule も構成されていない場合は、少なくとも 1 つの Sufficient または Optional LoginModule
が成功する必要があります。
ModuleOptions は、LoginModule
固有の値のスペース区切りのリストで、ベースとなる LoginModule に直接渡されます。各オプションは LoginModule
自身によって定義されており、内部の動作を制御します。たとえば、LoginModule
でデバッグ/テスト機能をサポートするオプションを定義する場合を考えましょう。Configuration
にオプションを指定する正しい方法は、鍵と値のペア debug="true" を使用することです。鍵と値は等号記号 (=) で区切り、値は二重引用符で囲む必要があります。値に ${system.property} という形式の String を指定した場合は、システムプロパティーの値に展開されます。LoginModule
で定義できるオプションの数に上限はありません。
前述の構文に基づく Configuration
エントリの例を次に示します。
Login { com.sun.security.auth.module.UnixLoginModule required; com.sun.security.auth.module.Krb5LoginModule optional useTicketCache="true" ticketCache="${user.home}${/}tickets"; };
この Configuration
では、Login というアプリケーションを指定しており、ユーザーは最初に com.sun.security.auth.module.UnixLoginModule で認証され、成功する必要があります。UnixLoginModule 認証に失敗しても、com.sun.security.auth.module.Krb5LoginModule は呼び出されます。これにより、失敗したソースを隠すことができます。Krb5LoginModule は Optional であるため、UnixLoginModule (Required) が成功した場合だけ、認証全体が成功します。
LoginModule 固有のオプションである useTicketCache="true" と ticketCache=${user.home}${/}tickets" は Krb5LoginModule に渡されます。これらのオプションによって、Krb5LoginModule では指定した場所にあるチケットキャッシュを使用するようになります。システムプロパティーの user.home と / (file.separator) は、それぞれの値に展開されます。
実行時にインストールされる Configuration オブジェクトは、常に 1 つだけです。Configuration オブジェクトは、setConfiguration
メソッドを呼び出すことでインストールできます。インストールされた Configuration オブジェクトを取得するには、getConfiguration
メソッドを呼び出します。
実行時に Configuration オブジェクトがインストールされていない場合は、getConfiguration
を呼び出すと、デフォルトの Configuration 実装のインスタンス (この抽象クラスのデフォルトのサブクラス実装) がインストールされます。デフォルトの Configuration 実装は、(Java セキュリティープロパティーファイル内の) login.configuration.provider セキュリティープロパティーの値を希望する Configuration サブクラス実装の完全指定名に設定することによって変更できます。Java セキュリティープロパティーファイルは、<JAVA_HOME>/lib/security/java.security という名前のファイルとして格納されています。<JAVA_HOME> は java.home システムプロパティーの値を参照しており、JRE のインストールディレクトリを示します。
アプリケーションコードは、Configuration を直接サブクラス化して、カスタム実装を提供できます。また、標準型の getInstance
ファクトリメソッドの 1 つを呼び出すことで、Configuration オブジェクトのインスタンスを構築できます。デフォルトのポリシー型は JavaLoginConfig です。標準の Configuration 型のリストは、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの Configuration のセクションを参照。
LoginContext
修飾子と型 | クラスと説明 |
---|---|
static interface |
Configuration.Parameters
このインタフェースは、Configuration パラメータのマーカーインタフェースです。
|
修飾子 | コンストラクタと説明 |
---|---|
protected |
Configuration()
唯一のコンストラクタです。
|
修飾子と型 | メソッドと説明 |
---|---|
abstract AppConfigurationEntry[] |
getAppConfigurationEntry(String name)
この Configuration から、指定された name の AppConfigurationEntries を取得します。
|
static Configuration |
getConfiguration()
インストール済みのログイン Configuration を取得します。
|
static Configuration |
getInstance(String type, Configuration.Parameters params)
指定された型の Configuration オブジェクトを返します。
|
static Configuration |
getInstance(String type, Configuration.Parameters params, Provider provider)
指定された型の Configuration オブジェクトを返します。
|
static Configuration |
getInstance(String type, Configuration.Parameters params, String provider)
指定された型の Configuration オブジェクトを返します。
|
Configuration.Parameters |
getParameters()
Configuration パラメータを返します。
|
Provider |
getProvider()
この Configuration のプロバイダを返します。
|
String |
getType()
この Configuration の型を返します。
|
void |
refresh()
Configuration をリフレッシュし、再ロードします。
|
static void |
setConfiguration(Configuration configuration)
ログイン
Configuration を設定します。 |
public static Configuration getConfiguration()
Configuration.setConfiguration
メソッドで設定されている場合は、その Configuration オブジェクトが返される。そうでない場合は、デフォルトの Configuration オブジェクトが返される。SecurityException
- 呼び出し側に、Configuration を取得する権限がない場合。setConfiguration(javax.security.auth.login.Configuration)
public static void setConfiguration(Configuration configuration)
Configuration
を設定します。
configuration
- 新しい Configuration
SecurityException
- 現在のスレッドに Configuration
を設定する権限がない場合。getConfiguration()
public static Configuration getInstance(String type, Configuration.Parameters params) throws NoSuchAlgorithmException
このメソッドは、最優先の Provider から順に、登録済みのセキュリティープロバイダのリストをトラバースします。指定されたタイプをサポートする最初のプロバイダの ConfigurationSpi 実装をカプセル化する新しい Configuration オブジェクトが返されます。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
type
- 指定された Configuration 型。標準の Configuration 型のリストは、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの Configuration のセクションを参照。params
- Configuration のパラメータ。null の場合もある。SecurityException
- 呼び出し側に、指定された型の Configuration インスタンスを取得するアクセス権がない場合。NullPointerException
- 指定された型が null の場合。IllegalArgumentException
- 指定されたパラメータが、選択されたプロバイダの ConfigurationSpi 実装によって認識されない場合。NoSuchAlgorithmException
- 指定された型の ConfigurationSpi 実装をサポートするプロバイダが存在しない場合。Provider
public static Configuration getInstance(String type, Configuration.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException
指定されたプロバイダの ConfigurationSpi 実装をカプセル化する新しい Configuration オブジェクトが返されます。プロバイダリストに登録されたプロバイダを指定する必要があります。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
type
- 指定された Configuration 型。標準の Configuration 型のリストは、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの Configuration のセクションを参照。params
- Configuration のパラメータ。null の場合もある。provider
- プロバイダ。SecurityException
- 呼び出し側に、指定された型の Configuration インスタンスを取得するアクセス権がない場合。NullPointerException
- 指定された型が null の場合。IllegalArgumentException
- 指定されたプロバイダが null か空の場合、または指定されたパラメータが指定されたプロバイダの ConfigurationSpi 実装によって認識されない場合。NoSuchProviderException
- 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合。NoSuchAlgorithmException
- 指定されたプロバイダが、指定された型の ConfigurationSpi 実装をサポートしない場合。Provider
public static Configuration getInstance(String type, Configuration.Parameters params, Provider provider) throws NoSuchAlgorithmException
指定された Provider オブジェクトの ConfigurationSpi 実装をカプセル化する新しい Provider オブジェクトが返されます。指定された Provider オブジェクトは、プロバイダリストに登録する必要はありません。
type
- 指定された Configuration 型。標準の Configuration 型のリストは、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの Configuration のセクションを参照。params
- Configuration のパラメータ。null の場合もある。provider
- Provider。SecurityException
- 呼び出し側に、指定された型の Configuration インスタンスを取得するアクセス権がない場合。NullPointerException
- 指定された型が null の場合。IllegalArgumentException
- 指定されたプロバイダが null の場合、または指定されたパラメータが指定されたプロバイダの ConfigurationSpi 実装によって認識されない場合。NoSuchAlgorithmException
- 指定されたプロバイダが、指定された型の ConfigurationSpi 実装をサポートしない場合。Provider
public Provider getProvider()
この Configuration インスタンスは、Configuration.getInstance
メソッドを使って取得された場合にかぎり、プロバイダを持ちます。そうでない場合は、このメソッドは null を返します。
public String getType()
この Configuration インスタンスは、Configuration.getInstance
の呼び出しによって取得された場合にかぎり型を持ちます。そうでない場合は、このメソッドは null を返します。
public Configuration.Parameters getParameters()
この Configuration インスタンスは、Configuration.getInstance
の呼び出しによって取得された場合にかぎりパラメータを持ちます。そうでない場合は、このメソッドは null を返します。
public abstract AppConfigurationEntry[] getAppConfigurationEntry(String name)
name
- Configuration のインデックスとして使用される名前。public void refresh()
このメソッドは、この Configuration オブジェクトに、実装に依存した方法でその内容のリフレッシュや再ロードを行わせます。たとえば、Configuration オブジェクトのエントリがファイルに格納されている場合、refresh
を呼び出すと、ファイルがもう一度読み取られることになります。
このメソッドのデフォルト実装では何の処理も行われません。実装によってリフレッシュ操作がサポートされている場合、このメソッドはオーバーライドされます。
SecurityException
- 呼び出し側に、その Configuration をリフレッシュするアクセス権がない場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.