- 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 - The
LoginModule
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.仅当所有必需和必需 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 interface
Configuration.Parameters
这表示配置参数的标记界面。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
Configuration()
唯一的构造函数。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract AppConfigurationEntry[]
getAppConfigurationEntry(String name)
从此配置检索指定的name
的AppConfigurationEntries。static Configuration
getConfiguration()
获取安装的登录配置。static Configuration
getInstance(String type, Configuration.Parameters params)
返回指定类型的Configuration对象。static Configuration
getInstance(String type, Configuration.Parameters params, String provider)
返回指定类型的Configuration对象。static Configuration
getInstance(String type, Configuration.Parameters params, Provider provider)
返回指定类型的Configuration对象。Configuration.Parameters
getParameters()
返回配置参数。Provider
getProvider()
返回此配置的提供程序。String
getType()
返回此配置的类型。void
refresh()
刷新并重新加载配置。static void
setConfiguration(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.preferred
Security
属性来确定指定算法的首选提供者顺序。 这可能与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.
-
-