モジュール java.base
パッケージ javax.security.auth.login

クラスConfiguration

java.lang.Object
javax.security.auth.login.Configuration
直系の既知のサブクラス:
ConfigFile

public abstract class Configuration extends Object
Configurationオブジェクトは、特定のアプリケーションで使用されるLoginModuleと、LoginModuleが呼び出される順番を指定します。

ログイン構成には次に示す情報が格納されます。 この例では、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     - The LoginModule is required to succeed.
                      If it succeeds or fails, authentication still continues
                      to proceed down the LoginModule list.

      2) Requisite    - The LoginModule is required to succeed.
                      If it succeeds, authentication continues down the
                      LoginModule list.  If it fails,
                      control immediately returns to the application
                      (authentication does not proceed down the
                      LoginModule list).

      3) Sufficient   - The LoginModule is not required to
                      succeed.  If it does succeed, control immediately
                      returns to the application (authentication does not
                      proceed down the LoginModule list).
                      If it fails, authentication continues down the
                      LoginModule list.

      4) Optional     - The LoginModule is not required to
                      succeed.  If it succeeds or fails,
                      authentication still continues to proceed down the
                      LoginModule 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は呼び出されます。 これにより、失敗したソースを隠すことができます。 Krb5LoginModuleOptionalであるため、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です。 標準の構成タイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」の「構成」の項を参照してください。

導入されたバージョン:
1.4
関連項目:
  • コンストラクタの詳細

    • Configuration

      protected Configuration()
      唯一のコンストラクタです。 (サブクラスのコンストラクタによる呼出し用で、通常は暗黙的に呼び出されます。)
  • メソッドの詳細

    • getConfiguration

      public static Configuration getConfiguration()
      インストール済みのログインConfigurationを取得します。
      戻り値:
      ログインConfiguration。 ConfigurationオブジェクトがConfiguration.setConfigurationメソッドで設定されている場合は、そのConfigurationオブジェクトが返される。 そうでない場合は、デフォルトのConfigurationオブジェクトが返される。
      例外:
      SecurityException - 呼出し側に、Configurationを取得する権限がない場合。
      関連項目:
    • setConfiguration

      public static void setConfiguration(Configuration configuration)
      ログインConfigurationを設定します。
      パラメータ:
      configuration - 新しいConfiguration
      例外:
      SecurityException - 現在のスレッドにConfigurationを設定する権限がない場合。
      関連項目:
    • getInstance

      public static Configuration getInstance(String type, Configuration.Parameters params) throws NoSuchAlgorithmException
      指定された型のConfigurationオブジェクトを返します。

      このメソッドは、最優先のProviderから順に、登録済みのセキュリティ・プロバイダのリストをトラバースします。 指定されたタイプをサポートする最初のプロバイダのConfigurationSpi実装をカプセル化する新しいConfigurationオブジェクトが返されます。

      登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

      実装上のノート:
      JDKリファレンス実装では、さらにjdk.security.provider.preferred Securityプロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
      パラメータ:
      type - 指定されたConfiguration型。 標準の構成タイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」の「構成」の項を参照してください。
      params - Configurationのパラメータ。nullの場合もある。
      戻り値:
      新しいConfigurationオブジェクト
      例外:
      IllegalArgumentException - 指定されたパラメータが、選択されたProviderからのConfigurationSpi実装によって理解されない場合
      NoSuchAlgorithmException - Providerが、指定された型のConfigurationSpi実装をサポートしていない場合
      NullPointerException - typenullである場合
      SecurityException - 呼び出し元に、指定された型のConfigurationインスタンスを取得する権限がない場合
      導入されたバージョン:
      1.6
      関連項目:
    • getInstance

      public static Configuration getInstance(String type, Configuration.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException
      指定された型のConfigurationオブジェクトを返します。

      指定されたプロバイダのConfigurationSpi実装をカプセル化する新しいConfigurationオブジェクトが返されます。 プロバイダ・リストに登録されたプロバイダを指定する必要があります。

      登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

      パラメータ:
      type - 指定されたConfiguration型。 標準の構成タイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」の「構成」の項を参照してください。
      params - Configurationのパラメータ。nullの場合もある。
      provider - プロバイダ
      戻り値:
      新しいConfigurationオブジェクト
      例外:
      IllegalArgumentException - 指定されたプロバイダがnullまたは空の場合、または指定されたパラメータが指定されたプロバイダからのConfigurationSpi実装によって認識されない場合
      NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
      NoSuchAlgorithmException - 指定されたプロバイダが、指定された型のConfigurationSpi実装をサポートしていない場合
      NullPointerException - typenullである場合
      SecurityException - 呼び出し元に、指定された型のConfigurationインスタンスを取得する権限がない場合
      導入されたバージョン:
      1.6
      関連項目:
    • getInstance

      public static Configuration getInstance(String type, Configuration.Parameters params, Provider provider) throws NoSuchAlgorithmException
      指定された型のConfigurationオブジェクトを返します。

      指定されたProviderオブジェクトのConfigurationSpi実装をカプセル化する新しいProviderオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。

      パラメータ:
      type - 指定されたConfiguration型。 標準の構成タイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」の「構成」の項を参照してください。
      params - Configurationのパラメータ。nullの場合もある。
      provider - Provider。
      戻り値:
      新しいConfigurationオブジェクト
      例外:
      IllegalArgumentException - 指定されたProvidernullである場合、または指定されたプロバイダからのConfigurationSpi実装によって指定されたパラメータが認識されない場合
      NoSuchAlgorithmException - 指定されたProviderが、指定された型のConfigurationSpi実装をサポートしていない場合
      NullPointerException - typenullである場合
      SecurityException - 呼び出し元に、指定された型のConfigurationインスタンスを取得する権限がない場合
      導入されたバージョン:
      1.6
      関連項目:
    • getProvider

      public Provider getProvider()
      このConfigurationのプロバイダを返します。

      このConfigurationインスタンスは、Configuration.getInstanceメソッドを使って取得された場合にかぎり、プロバイダを持ちます。 それ以外の場合、このメソッドはnullを返します。

      戻り値:
      このConfigurationのプロバイダ、またはnull。
      導入されたバージョン:
      1.6
    • getType

      public String getType()
      このConfigurationの型を返します。

      このConfigurationインスタンスは、Configuration.getInstanceの呼出しによって取得された場合にかぎり型を持ちます。 それ以外の場合、このメソッドはnullを返します。

      戻り値:
      このConfigurationの型、またはnull。
      導入されたバージョン:
      1.6
    • getParameters

      public Configuration.Parameters getParameters()
      Configurationパラメータを返します。

      このConfigurationインスタンスは、Configuration.getInstanceの呼出しによって取得された場合にかぎりパラメータを持ちます。 それ以外の場合、このメソッドはnullを返します。

      戻り値:
      Configurationパラメータ、またはnull。
      導入されたバージョン:
      1.6
    • getAppConfigurationEntry

      public abstract AppConfigurationEntry[] getAppConfigurationEntry(String name)
      この構成から、指定されたnameのAppConfigurationEntriesを取得します。
      パラメータ:
      name - Configurationのインデックスとして使用される名前。
      戻り値:
      この構成から指定されたnameのAppConfigurationEntriesの配列、または指定されたnameのエントリがない場合はnull
    • refresh

      public void refresh()
      Configurationをリフレッシュし、再ロードします。

      このメソッドは、このConfigurationオブジェクトに、実装に依存した方法でその内容のリフレッシュや再ロードを行わせます。 たとえば、Configurationオブジェクトのエントリがファイルに格納されている場合、refreshを呼び出すと、ファイルがもう一度読み取られることになります。

      このメソッドのデフォルト実装では何の処理も行われません。 実装によってリフレッシュ操作がサポートされている場合、このメソッドはオーバーライドされます。

      例外:
      SecurityException - 呼出し側に、そのConfigurationをリフレッシュするアクセス権がない場合。