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 - TheLoginModule
is required to succeed. If it succeeds or fails, authentication still continues to proceed down theLoginModule
list. 2) Requisite - TheLoginModule
is required to succeed. If it succeeds, authentication continues down theLoginModule
list. If it fails, control immediately returns to the application (authentication does not proceed down theLoginModule
list). 3) Sufficient - TheLoginModule
is not required to succeed. If it does succeed, control immediately returns to the application (authentication does not proceed down theLoginModule
list). If it fails, authentication continues down theLoginModule
list. 4) Optional - TheLoginModule
is not required to succeed. If it succeeds or fails, authentication still continues to proceed down theLoginModule
list.
すべての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実装は、login.configuration.provider
セキュリティ・プロパティの値を希望するConfigurationサブクラス実装の完全修飾名に設定することによって変更できます。
アプリケーション・コードは、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 を設定します。 |
protected 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, 2014, Oracle and/or its affiliates. All rights reserved.