- 已知子类:
ConfigFile
登录配置包含以下信息。请注意,此示例仅代表 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 都是通过其完全限定的类名指定的。身份验证按照指定的确切顺序在模块列表中向下进行。如果应用程序没有特定条目,则默认为“其他".
这旗帜value 控制整个行为,因为身份验证在堆栈中进行。以下代表对有效值的描述旗帜以及它们各自的语义:
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 需要成功才能使整体身份验证成功。如果不必需的或者必要的LoginModules 是为一个应用程序配置的,那么至少有一个充足的或者OptionalLoginModule 必须成功。
ModuleOptions是一个以空格分隔的 LoginModule 特定值列表,这些值直接传递给底层的登录模块。选项由 LoginModule 本身定义,并控制其中的行为。例如,LoginModule 可以定义支持调试/测试功能的选项。在 Configuration 中指定选项的正确方法是使用以下键值对:调试=“真”.键和值应该用“等号”分隔,值应该用双引号括起来。如果值中出现 ${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 (必需的) 成功。
还要注意 LoginModule 特定的选项,useTicketCache="true"和ticketCache=${user.home}${/}门票”, 被传递给Krb5LoginModule.这些选项指示Krb5LoginModule在指定位置使用票证缓存。系统属性,user.home和/(file.separator),被扩展为它们各自的值。
在任何给定时间,运行时中只安装了一个配置对象。可以通过调用 setConfiguration 方法来安装配置对象。安装的Configuration对象可以通过调用getConfiguration方法获取。
如果运行时未安装配置对象,则调用 getConfiguration 将安装默认配置实现的实例(此抽象类的默认子类实现)。通过将login.configuration.providersecurity 属性的值设置为所需Configuration 子类实现的完全限定名称,可以更改默认Configuration 实现。
应用程序代码可以直接子类化 Configuration 以提供自定义实现。此外,可以通过调用具有标准类型的 getInstance 工厂方法之一来构造 Configuration 对象的实例。默认策略类型是“JavaLoginConfig”。有关标准配置类型的列表,请参阅 Java 安全标准算法名称规范 中的配置部分。
- 自从:
- 1.4
- 参见:
-
内部类总结
内部类 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract AppConfigurationEntry[]从此配置中检索指定name的 AppConfigurationEntries。static Configuration获取已安装的登录配置。static ConfigurationgetInstance(String type, Configuration.Parameters params) 返回指定类型的配置对象。static ConfigurationgetInstance(String type, Configuration.Parameters params, String provider) 返回指定类型的配置对象。static ConfigurationgetInstance(String type, Configuration.Parameters params, Provider provider) 返回指定类型的配置对象。返回配置参数。返回此配置的提供者。getType()返回此配置的类型。voidrefresh()刷新并重新加载配置。static voidsetConfiguration(Configuration configuration) 设置登录名Configuration。
-
构造方法详细信息
-
Configuration
protected Configuration()唯一的构造方法。 (对于子类构造方法的调用,通常是隐式的。)
-
-
方法详情
-
getConfiguration
获取已安装的登录配置。- 返回:
-
登录配置。如果通过
Configuration.setConfiguration方法设置了 Configuration 对象,则返回该对象。否则,将返回默认配置对象。 - 抛出:
SecurityException- 如果调用者没有检索配置的权限。- 参见:
-
setConfiguration
设置登录名Configuration。- 参数:
configuration- 新的Configuration- 抛出:
SecurityException- 如果当前线程没有设置Configuration的权限。- 参见:
-
getInstance
public static Configuration getInstance(String type, Configuration.Parameters params) throws NoSuchAlgorithmException 返回指定类型的配置对象。此方法遍历已注册的安全提供者列表,从最喜欢的提供者开始。返回一个新的 Configuration 对象,该对象封装了第一个支持指定类型的 Provider 的 ConfigurationSpi 实现。
请注意,可以通过
Security.getProviders()方法检索已注册提供商的列表。- 实现注意事项:
-
JDK 参考实现还使用
jdk.security.provider.preferredSecurity属性来确定指定算法的首选提供程序顺序。这可能与Security.getProviders()返回的提供商顺序不同。 - 参数:
type- 指定的配置类型。有关标准配置类型的列表,请参阅 Java 安全标准算法名称规范 中的配置部分。params- 配置参数,可能为空。- 返回:
-
新的
Configuration对象 - 抛出:
IllegalArgumentException- 如果选定的Provider的ConfigurationSpi实现不理解指定的参数NoSuchAlgorithmException- 如果没有Provider支持指定类型的ConfigurationSpi实现NullPointerException- 如果type是nullSecurityException- 如果调用者无权获取指定类型的Configuration实例- 自从:
- 1.6
- 参见:
-
getInstance
public static Configuration getInstance(String type, Configuration.Parameters params, String provider) throws NoSuchProviderException , NoSuchAlgorithmException 返回指定类型的配置对象。返回一个新的 Configuration 对象,该对象封装了来自指定提供程序的 ConfigurationSpi 实现。指定的提供者必须在提供者列表中注册。
请注意,可以通过
Security.getProviders()方法检索已注册提供商的列表。- 参数:
type- 指定的配置类型。有关标准配置类型的列表,请参阅 Java 安全标准算法名称规范 中的配置部分。params- 配置参数,可能为空。provider- 提供商。- 返回:
-
新的
Configuration对象 - 抛出:
IllegalArgumentException- 如果指定的提供者是null或为空,或者如果指定的参数不被来自指定提供者的ConfigurationSpi实现所理解NoSuchProviderException- 如果指定的提供者没有在安全提供者列表中注册NoSuchAlgorithmException- 如果指定的提供者不支持指定类型的ConfigurationSpi实现NullPointerException- 如果type是nullSecurityException- 如果调用者无权获取指定类型的Configuration实例- 自从:
- 1.6
- 参见:
-
getInstance
public static Configuration getInstance(String type, Configuration.Parameters params, Provider provider) throws NoSuchAlgorithmException 返回指定类型的配置对象。返回一个新的 Configuration 对象,封装了来自指定 Provider 对象的 ConfigurationSpi 实现。请注意,指定的提供者对象不必在提供者列表中注册。
- 参数:
type- 指定的配置类型。有关标准配置类型的列表,请参阅 Java 安全标准算法名称规范 中的配置部分。params- 配置参数,可能为空。provider- 提供者。- 返回:
-
新的
Configuration对象 - 抛出:
IllegalArgumentException- 如果指定的Provider是null,或者指定的 Provider 的ConfigurationSpi实现不理解指定的参数NoSuchAlgorithmException- 如果指定的Provider不支持指定类型的ConfigurationSpi实现NullPointerException- 如果type是nullSecurityException- 如果调用者无权获取指定类型的Configuration实例- 自从:
- 1.6
- 参见:
-
getProvider
返回此配置的提供者。只有通过调用
Configuration.getInstance获得的配置实例才会有一个提供者。否则,此方法返回 null。- 返回:
- 此配置的提供者,或 null。
- 自从:
- 1.6
-
getType
返回此配置的类型。只有通过调用
Configuration.getInstance获得的配置实例才会有类型。否则,此方法返回 null。- 返回:
- 此配置的类型,或 null。
- 自从:
- 1.6
-
getParameters
返回配置参数。只有通过调用
Configuration.getInstance获得的配置实例才会有参数。否则,此方法返回 null。- 返回:
- 配置参数,或空。
- 自从:
- 1.6
-
getAppConfigurationEntry
从此配置中检索指定name的 AppConfigurationEntries。- 参数:
name- 用于索引配置的名称。- 返回:
-
此配置中指定
name的 AppConfigurationEntries 数组,如果没有指定name的条目,则为 null
-
refresh
public void refresh()刷新并重新加载配置。此方法导致此 Configuration 对象以依赖于实现的方式刷新/重新加载其内容。例如,如果此 Configuration 对象将其条目存储在文件中,则调用
refresh可能会导致重新读取该文件。此方法的默认实现不执行任何操作。如果实现支持刷新操作,则应重写此方法。
- 抛出:
SecurityException- 如果调用者没有刷新其配置的权限。
-