- java.lang.Object
-
- javax.security.auth.login.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 - 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.仅当所有必需和必需 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
- 另请参见:
-
LoginContext,security properties
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static interfaceConfiguration.Parameters这表示配置参数的标记界面。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protectedConfiguration()唯一的构造函数。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 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。
-
-
-
方法详细信息
-
getConfiguration
public static Configuration getConfiguration()
获取安装的登录配置。- 结果
-
登录配置。
如果通过
Configuration.setConfiguration方法设置了配置对象,则返回该对象。 否则返回一个默认的配置对象。 - 异常
-
SecurityException- 如果呼叫者没有获取配置的权限。 - 另请参见:
-
setConfiguration(javax.security.auth.login.Configuration)
-
setConfiguration
public static void setConfiguration(Configuration configuration)
设置登录Configuration。- 参数
-
configuration- 新的Configuration - 异常
-
SecurityException- 如果当前线程没有权限设置Configuration。 - 另请参见:
-
getConfiguration()
-
getInstance
public static Configuration getInstance(String type, Configuration.Parameters params) throws NoSuchAlgorithmException
返回指定类型的Configuration对象。此方法遍历已注册的安全提供程序列表,从最为首选的提供程序开始。 返回从支持指定类型的第一个Provider中封装ConfigurationSpi实现的新配置对象。
请注意,注册提供商的列表可以通过
Security.getProviders()方法检索。- Implementation Note:
-
JDK参考实现另外使用
jdk.security.provider.preferredSecurity属性来确定指定算法的首选提供者顺序。 这可能与Security.getProviders()返回的提供商的顺序不同。 - 参数
-
type- 指定的配置类型。 有关标准配置类型的列表,请参阅Java Security Standard Algorithm Names Specification中的配置部分。 -
params- 配置的参数,可以为空。 - 结果
-
新的
Configuration对象 - 异常
-
IllegalArgumentException- 如果指定的参数不被ConfigurationSpi实现从所选Provider -
NoSuchAlgorithmException- 如果没有Provider支持指定类型的ConfigurationSpi实现 -
NullPointerException- 如果type是null -
SecurityException- 如果呼叫者没有获得指定类型的Configuration实例的权限 - 从以下版本开始:
- 1.6
- 另请参见:
-
Provider
-
getInstance
public static Configuration getInstance(String type, Configuration.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException
返回指定类型的Configuration对象。返回从指定提供程序封装ConfigurationSpi实现的新配置对象。 指定的提供者必须在提供者列表中注册。
请注意,注册提供商的列表可以通过
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
-
getInstance
public static Configuration getInstance(String type, Configuration.Parameters params, Provider provider) throws NoSuchAlgorithmException
返回指定类型的Configuration对象。返回从指定的Provider对象封装ConfigurationSpi实现的新配置对象。 请注意,指定的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
-
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.
-
-