- 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。
-
-
-
方法详细信息
-
getConfiguration
public static Configuration getConfiguration()
获取已安装的登录配置。- 结果
-
登录配置。
如果通过
Configuration.setConfiguration方法设置了配置对象,则返回该对象。 否则,返回默认的Configuration对象。 - 异常
-
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实现的新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
-
getInstance
public 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
-
getInstance
public 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
-
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- 用于索引配置的名称。 - 结果
-
此配置中指定的
name的AppConfigurationEntries数组,如果指定的name没有条目,name
-
refresh
public void refresh()
刷新并重新加载配置。此方法使此Configuration对象以依赖于实现的方式刷新/重新加载其内容。 例如,如果此Configuration对象将其条目存储在文件中,则调用
refresh可能会导致重新读取该文件。此方法的默认实现不执行任何操作。 如果实现支持刷新操作,则应该重写此方法。
- 异常
-
SecurityException- if the caller does not have permission to refresh its Configuration.
-
-