- 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都通过其完全限定的类名指定。 身份验证按照指定的确切顺序沿模块列表继续进行。 如果应用程序没有特定条目,则默认为“ 其他 ”的特定条目。当身份验证沿着堆栈向下进行时, Flag值控制整体行为。 以下表示Flag的有效值及其各自语义的说明: 1) Required - TheLoginModuleis required to succeed. If it succeeds or fails, authentication still continues to proceed down theLoginModulelist. 2) Requisite - TheLoginModuleis required to succeed. If it succeeds, authentication continues down theLoginModulelist. If it fails, control immediately returns to the application (authentication does not proceed down theLoginModulelist). 3) Sufficient - TheLoginModuleis not required to succeed. If it does succeed, control immediately returns to the application (authentication does not proceed down theLoginModulelist). If it fails, authentication continues down theLoginModulelist. 4) Optional - TheLoginModuleis not required to succeed. If it succeeds or fails, authentication still continues to proceed down theLoginModulelist.仅当所有必需和必需的 LoginModule都成功时,整体身份验证才会成功。 如果配置了足够的 LoginModule并且成功,LoginModule需要足够的LoginModule之前的必需和必需的 LoginModule成功完成整个身份验证。 如果没有为应用程序配置必需或必需的 LoginModule,则必须至少有一个Sufficient或OptionalLoginModule成功。ModuleOptions是一个以空格分隔的 LoginModule特定值列表,它们直接传递给底层的LoginModule。 选项由LoginModule本身定义,并控制其中的行为。 例如,LoginModule可以定义支持调试/测试功能的选项。 在Configuration指定选项的正确方法是使用以下键值配对: debug =“true” 。 键和值应该用'等于'符号分隔,值应该用双引号括起来。 如果表单中出现$ {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指定名为“Login”的应用程序要求用户首先对com.sun.security.auth.module.UnixLoginModule进行身份验证,这是成功所必需的。 即使UnixLoginModule身份验证失败,仍然会调用com.sun.security.auth.module.Krb5LoginModule 。 这有助于隐藏失败的根源。 由于Krb5LoginModule是Optional ,因此只有在UnixLoginModule ( Required )成功时,整体身份验证才会成功。另请注意,特定于LoginModule的选项useTicketCache =“true”和ticketCache = $ {user.home} $ {/} ticket“将传递给Krb5LoginModule 。这些选项指示Krb5LoginModule在指定位置使用票证缓存该系统属性user.home和/(文件分割符),被扩展为它们各自的值。 在任何给定时间,运行时中只安装了一个Configuration对象。 可以通过调用 setConfiguration方法来安装Configuration对象。 可以通过调用getConfiguration方法获取已安装的Configuration对象。如果运行时中未安装Configuration对象,则对 getConfiguration的调用将安装默认Configuration实现的实例(此抽象类的默认子类实现)。 可以通过将login.configuration.provider安全属性的值设置为所需Configuration子类实现的完全限定名称来更改默认Configuration实现。应用程序代码可以直接子类化Configuration以提供自定义实现。 此外,可以通过使用标准类型调用其中一个 getInstance工厂方法来构造Configuration对象的实例。 默认策略类型是“JavaLoginConfig”。 有关标准配置类型的列表,请参阅Java Security Standard Algorithm Names Specification中的“配置”部分。- 从以下版本开始:
- 1.4
- 另请参见:
-  
         LoginContext,security properties
 
-  
        
       -  
             嵌套类汇总嵌套类 变量和类型 类 描述 static interfaceConfiguration.Parameters这表示配置参数的标记接口。
 -  
             构造方法摘要构造方法 变量 构造器 描述 protectedConfiguration()唯一的构造函数。
 -  
             方法摘要所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract AppConfigurationEntry[]getAppConfigurationEntry(String name)从此配置中检索指定的name的AppConfigurationEntries。static ConfigurationgetConfiguration()获取已安装的登录配置。static ConfigurationgetInstance(String type, Configuration.Parameters params)返回指定类型的Configuration对象。static ConfigurationgetInstance(String type, Configuration.Parameters params, String provider)返回指定类型的Configuration对象。static ConfigurationgetInstance(String type, Configuration.Parameters params, Provider provider)返回指定类型的Configuration对象。Configuration.ParametersgetParameters()返回配置参数。ProvidergetProvider()返回此配置的提供程序。StringgetType()返回此配置的类型。voidrefresh()刷新并重新加载配置。static voidsetConfiguration(Configuration configuration)设置登录Configuration。
 
-  
             
-  
        
       -  
             方法详细信息-  getConfigurationpublic static Configuration getConfiguration() 获取已安装的登录配置。- 结果
-  
              登录配置。 
              如果通过Configuration.setConfiguration方法设置了配置对象,则返回该对象。 否则,返回默认的Configuration对象。
- 异常
-  
              SecurityException- 如果调用者没有检索配置的权限。
- 另请参见:
-  
              setConfiguration(javax.security.auth.login.Configuration)
 
 -  setConfigurationpublic static void setConfiguration(Configuration configuration) 设置登录Configuration。- 参数
-  
              configuration- 新的Configuration
- 异常
-  
              SecurityException- 如果当前线程没有权限设置Configuration。
- 另请参见:
-  
              getConfiguration()
 
 -  getInstancepublic static Configuration getInstance(String type, Configuration.Parameters params) throws NoSuchAlgorithmException 返回指定类型的Configuration对象。此方法遍历已注册的安全提供程序列表,从最首选的提供程序开始。 将返回从第一个支持指定类型的Provider封装ConfigurationSpi实现的新Configuration对象。 请注意,可以通过 Security.getProviders()方法检索已注册提供商的列表。- Implementation Note:
-  
              JDK Reference Implementation还使用jdk.security.provider.preferredSecurity属性来确定指定算法的首选提供程序顺序。 这可能与Security.getProviders()返回的提供程序顺序不同。
- 参数
-  
              type- 指定的配置类型。 有关标准配置类型的列表,请参阅Java Security Standard Algorithm Names Specification中的“配置”部分。
-  
              params- 配置的参数,可以为null。
- 结果
- 
               新的 
              Configuration对象
- 异常
-  
              IllegalArgumentException- 如果ConfigurationSpi实现未从所选Provider理解指定的参数
-  
              NoSuchAlgorithmException- 如果没有Provider支持指定类型的ConfigurationSpi实现
-  
              NullPointerException- 如果type是null
-  
              SecurityException- 如果调用者没有获得指定类型的Configuration实例的权限
- 从以下版本开始:
- 1.6
- 另请参见:
-  
              Provider
 
 -  getInstancepublic static Configuration getInstance(String type, Configuration.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException 返回指定类型的Configuration对象。将返回封装指定提供程序的ConfigurationSpi实现的新Configuration对象。 必须在提供者列表中注册指定的提供者。 请注意,可以通过 Security.getProviders()方法检索已注册提供程序的列表。- 参数
-  
              type- 指定的配置类型。 有关标准配置类型的列表,请参阅Java Security Standard Algorithm Names Specification中的“配置”部分。
-  
              params- 配置的参数,可以为null。
-  
              provider- 提供者。
- 结果
- 
               新的 
              Configuration对象
- 异常
-  
              IllegalArgumentException- 如果指定的提供程序为null或为空,或者指定的提供程序的ConfigurationSpi实现不理解指定的参数
-  
              NoSuchProviderException- 如果指定的提供程序未在安全提供程序列表中注册
-  
              NoSuchAlgorithmException- 如果指定的提供程序不支持指定类型的ConfigurationSpi实现
-  
              NullPointerException- 如果type是null
-  
              SecurityException- 如果调用者没有获得指定类型的Configuration实例的权限
- 从以下版本开始:
- 1.6
- 另请参见:
-  
              Provider
 
 -  getInstancepublic static Configuration getInstance(String type, Configuration.Parameters params, Provider provider) throws NoSuchAlgorithmException 返回指定类型的Configuration对象。将返回从指定的Provider对象封装ConfigurationSpi实现的新Configuration对象。 请注意,指定的Provider对象不必在提供程序列表中注册。 - 参数
-  
              type- 指定的配置类型。 有关标准配置类型的列表,请参阅Java Security Standard Algorithm Names Specification中的“配置”部分。
-  
              params- 配置的参数,可以为null。
-  
              provider- 提供者。
- 结果
- 
               新的 
              Configuration对象
- 异常
-  
              IllegalArgumentException- 如果指定的Provider是null,或者指定的提供程序的ConfigurationSpi实现不理解指定的参数
-  
              NoSuchAlgorithmException- 如果指定的Provider不支持指定类型的ConfigurationSpi实现
-  
              NullPointerException- 如果type是null
-  
              SecurityException- 如果调用者没有获得指定类型的Configuration实例的权限
- 从以下版本开始:
- 1.6
- 另请参见:
-  
              Provider
 
 -  getProviderpublic Provider getProvider() 返回此配置的提供程序。如果通过调用 Configuration.getInstance获得此配置实例,则该实例仅具有提供者。 否则此方法返回null。- 结果
- 此配置的提供程序,或null。
- 从以下版本开始:
- 1.6
 
 -  getTypepublic String getType() 返回此配置的类型。如果通过调用 Configuration.getInstance获得此配置实例,则该实例仅具有类型。 否则此方法返回null。- 结果
- 此配置的类型,或null。
- 从以下版本开始:
- 1.6
 
 -  getParameterspublic Configuration.Parameters getParameters() 返回配置参数。如果通过调用 Configuration.getInstance获得此配置实例,则该实例仅具有参数。 否则此方法返回null。- 结果
- 配置参数,或null。
- 从以下版本开始:
- 1.6
 
 -  getAppConfigurationEntrypublic abstract AppConfigurationEntry[] getAppConfigurationEntry(String name) 从此配置中检索指定的name的AppConfigurationEntries。- 参数
-  
              name- 用于索引配置的名称。
- 结果
- 
               此配置中指定的 
              name的AppConfigurationEntries数组,如果指定的name没有条目,name
 
 -  refreshpublic void refresh() 刷新并重新加载配置。此方法使此Configuration对象以依赖于实现的方式刷新/重新加载其内容。 例如,如果此Configuration对象将其条目存储在文件中,则调用 refresh可能会导致重新读取该文件。此方法的默认实现不执行任何操作。 如果实现支持刷新操作,则应该重写此方法。 - 异常
-  
              SecurityException- if the caller does not have permission to refresh its Configuration.
 
 
-  
 
-