|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.security.auth.login
类 Configuration
java.lang.Object javax.security.auth.login.Configuration
-
public abstract class Configuration
- extends Object
这是用于表示应用程序中 LoginModules 的配置的抽象类。Configuration
指定应该将哪一个 LoginModules 用于某一特定应用程序,以及应该以什么样的顺序调用 LoginModules。需要为此抽象类创建子类,以提供能够读取和加载实际 Configuration
的实现。
登录配置包含以下信息。注意,此示例仅表示 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)进行索引的,并且每个条目都包含为该应用程序配置的 LoginModules 的列表。每个 LoginModule
都是通过其完全限定类名来指定的。身份验证是按指定的具体顺序沿着模块列表向下进行。如果应用程序没有特定条目,则验证的条目默认为用于“其他方面”的特定条目。
当顺着堆栈往下进行身份验证时,Flag 值控制整个行为。下面是 Flag 的有效值的描述和它们各自的语义:
1) Required - 要求 LoginModule 成功。 不管它成功或失败,身份验证都将沿着 LoginModule 列表继续向下进行。 2) Requisite - 要求 LoginModule 成功。 如果它成功,则身份验证沿着 LoginModule 列表继续向下进行。 如果它失败,则该控制立即返回给应用程序(身份验证不再沿着 LoginModule 列表继续向下进行)。 3) Sufficient - 不要求 LoginModule 成功。 如果成功,则控制立即返回到应用程序(身份验证不再沿着 LoginModule 列表继续向下进行)。 如果失败,则身份验证沿着 LoginModule 列表继续向下进行。 4) Optional - 不要求 LoginModule 成功。 不管它成功或失败,身份验证都将沿着 LoginModule 列表继续向下进行。
仅在所有 Required 和 Requisite LoginModules 成功时,整个身份验证才成功。如果配置了 Sufficient LoginModule
并且获得成功,则只要 Sufficient LoginModule
之前的 Required 和 Requisite LoginModules 是成功的,整个身份验证就会成功。如果没有为应用程序配置 Required 或 Requisite LoginModules,那么至少有一个 Sufficient 或 Optional LoginModule
必须成功。
ModuleOptions 是特定于 LoginModule
的值的空格隔开列表,这些值被直接传递给基础 LoginModules。这些选项由 LoginModule
自身定义,并在其自身中控制它的行为。例如,LoginModule
可以定义一些选项,以便支持调试/测试功能。在 Configuration
中指定选项的正确方法是使用如下的键-值对:debug="true"。键和值应该用等号分隔,值应该用双引号括起来。如果在值中出现 ${system.property} 形式的 String,则将它扩展为系统属性值。注意,对 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}${/}tickets" 被传递到 Krb5LoginModule。这些选项指示 Krb5LoginModule 使用指定位置处缓存的票据。系统属性 user.home 和 / (file.separator) 扩展成它们各自的值。
通过将 "login.configuration.provider" 的安全属性(在 Java 安全属性文件中)的值设置为所需的 Configuration 实现类的完全限定名,可以更改默认的 Configuration 实现。Java 安全属性文件位于名称为 <JAVA_HOME>/lib/security/java.security 文件中,其中 <JAVA_HOME> 是指安装 JDK 的目录。
- 另请参见:
-
LoginContext
构造方法摘要 | |
---|---|
protected |
Configuration() 唯一的构造方法。 |
方法摘要 | |
---|---|
abstract AppConfigurationEntry[] |
getAppConfigurationEntry(String name) 为此 Configuration 中的 name 检索 AppConfigurationEntries。 |
static Configuration |
getConfiguration() 获取 Login Configuration。 |
abstract void |
refresh() 刷新和重新加载 Configuration。 |
static void |
setConfiguration(Configuration configuration) 设置 Login Configuration 。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
Configuration
protected Configuration()
- 唯一的构造方法。(由子类构造方法调用,通常是隐式的)。
方法详细信息 |
---|
getConfiguration
public static Configuration getConfiguration()
- 获取 Login Configuration。
-
- 返回:
-
登录 Configuration。如果 Configuration 对象是由
Configuration.setConfiguration
方法设置的,则返回该对象。否则返回默认的 Configuration 对象。 - 抛出:
-
SecurityException
- 如果调用方没有检索此 Configuration 的权限。 - 另请参见:
-
setConfiguration(javax.security.auth.login.Configuration)
setConfiguration
public static void setConfiguration(Configuration configuration)
-
设置 Login
Configuration
。 -
- 参数:
-
configuration
- 新的Configuration
- 抛出:
-
SecurityException
- 如果当前线程没有设置Configuration
的 Permission。 - 另请参见:
-
getConfiguration()
getAppConfigurationEntry
public abstract AppConfigurationEntry[] getAppConfigurationEntry(String name)
- 为此 Configuration 中的 name 检索 AppConfigurationEntries。
-
- 参数:
-
name
- 用于索引 Configuration 的名称。 - 返回:
- 对应于此 Configuration 中指定 name 的 AppConfigurationEntries 数组,如果不存在指定的 name 条目,则返回 null。
refresh
public abstract void refresh()
-
刷新和重新加载 Configuration。
此方法导致此 Configuration 对象以与实现有关的方式刷新/重新加载其内容。例如,如果此 Configuration 对象将其条目存储在文件中,则调用
refresh
可能导致重新读取该文件。 -
- 抛出:
-
SecurityException
- 如果调用方没有刷新此 Configuration 的权限。
所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |