Module  java.base

Class Configuration

  • 已知直接子类:
    ConfigFile


    public abstract class Configuration
    extends Object
    一个配置对象负责指定哪一个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通过其完全限定的类名来指定。 验证以指定的确切顺序向下移动模块列表。 如果应用程序没有特定的条目,则默认为“ 其他 ”的特定条目。

    标识值控制整体行为,因为认证向下移动堆栈。 下面代表对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. 

    仅当所有必需必需 LoginModules成功时,才能成功执行整体认证。 如果一个足够的 LoginModule被配置和成功,那么只有那个充足的 LoginModule之前的必需必需的 LoginModule需要成功才能使整体身份验证成功。 如果没有为应用程序配置必需必需的 LoginModule,那么至少有一个足够可选的 LoginModule必须成功。

    ModuleOptions是一个LoginModule特定值的空格分隔列表,它们直接传递到底层的LoginModules。 选项由LoginModule本身定义,并控制其中的行为。 例如, LoginModule可以定义支持调试/测试功能的选项。 Configuration指定选项的正确方法是使用以下键值配对: debug =“true” 键和值应该用“equals”符号分隔,该值应该用双引号括起来。 如果一个字符串的形式$ {system.property}出现在该值中,它将被扩展为系统属性的值。 请注意, LoginModule可能定义的选项数量没有限制。

    以下代表一个基于上述语法的示例Configuration条目:

      Login {
       com.sun.security.auth.module.UnixLoginModule required;
       com.sun.security.auth.module.Krb5LoginModule optional
                       useTicketCache="true"
                       ticketCache="${user.home}${/}tickets";
     }; 

    Configuration指定名为“登录”的应用程序要求用户首先对com.sun.security.auth.module.UnixLoginModule进行身份验证,这是成功所必需的。 即使UnixLoginModule身份验证失败,仍可以调用com.sun.security.auth.module.Krb5LoginModule 这有助于隐藏失败的根源。 由于Krb5LoginModule可选的 ,因此只有在UnixLoginModule必需 )成功时才可以进行整体验证。

    还要注意的是,LoginModule特定的选项, useTicketCache =“true”ticketCache = $ {user.home} $ {/}票据“被传递给Krb5LoginModule ,这些选项指示Krb5LoginModule在指定的位置使用票证缓存该系统属性user.home/(文件分割符),被扩展为它们各自的值。

    在任何给定时间,运行时只安装一个Configuration对象。 可以通过调用setConfiguration方法来安装配置对象。 可以通过调用getConfiguration方法获得已安装的配置对象。

    如果运行时中没有安装配置对象,则调用getConfiguration将安装默认配置实现(此抽象类的默认子类实现)的实例。 通过将login.configuration.provider安全属性的值设置为所需配置子类实现的完全限定名称,可以更改默认配置实现。

    应用程序代码可以直接子类化以提供自定义的实现。 另外,可以通过使用标准类型调用getInstance工厂方法之一来构造一个Configuration对象的实例。 默认策略类型为“JavaLoginConfig”。 有关标准配置类型的列表,请参阅Java Security Standard Algorithm Names Specification中的配置部分。

    从以下版本开始:
    1.4
    另请参见:
    LoginContextsecurity properties
    • 构造方法详细信息

      • Configuration

        protected Configuration​()
        唯一的构造函数。 (用于子类构造函数的调用,通常是隐式的。)
    • 方法详细信息

      • setConfiguration

        public static void setConfiguration​(Configuration configuration)
        设置登录 Configuration
        参数
        configuration - 新的 Configuration
        异常
        SecurityException - 如果当前线程没有权限设置 Configuration
        另请参见:
        getConfiguration()
      • getProvider

        public Provider getProvider​()
        返回此配置的提供程序。

        如果通过调用Configuration.getInstance获取该配置实例,则该配置实例将只有一个提供者。 否则,此方法返回null。

        结果
        此配置的提供者,或null。
        从以下版本开始:
        1.6
      • getType

        public String getType​()
        返回此配置的类型。

        此配置实例只有通过调用Configuration.getInstance获得的类型。 否则,此方法返回null。

        结果
        此配置的类型,或null。
        从以下版本开始:
        1.6
      • getParameters

        public Configuration.Parameters getParameters​()
        返回配置参数。

        此配置实例只有通过调用Configuration.getInstance获取参数。 否则,此方法返回null。

        结果
        配置参数,或null。
        从以下版本开始:
        1.6
      • getAppConfigurationEntry

        public abstract AppConfigurationEntry[] getAppConfigurationEntry​(String name)
        从此配置中检索指定的 name的AppConfigurationEntries。
        参数
        name - 用于索引配置的名称。
        结果
        AppConfigurationEntries为指定的数组 name从该结构中,或者为null如果对于指定的任何条目 name
      • refresh

        public void refresh​()
        刷新并重新加载配置。

        此方法使此Configuration对象以实现相关的方式刷新/重新加载其内容。 例如,如果此配置对象将其条目存储在文件中,则调用refresh可能会导致重新读取该文件。

        这种方法的默认实现什么都不做。 如果实现支持刷新操作,则该方法应该被覆盖。

        异常
        SecurityException - if the caller does not have permission to refresh its Configuration.