- java.lang.Object
-
- javax.security.auth.login.Configuration
-
- 已知直接子类:
-
ConfigFile
public abstract class Configurationextends 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 - 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.仅当所有必需和必需的 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 interface
Configuration.Parameters
这表示配置参数的标记接口。
-
构造方法摘要
构造方法 变量 构造器 描述 protected
Configuration()
唯一的构造函数。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 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
方法设置了配置对象,则返回该对象。 否则,返回默认的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.preferred
Security
属性来确定指定算法的首选提供程序顺序。 这可能与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.
-
-