java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

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 列表继续向下进行。

仅在所有 RequiredRequisite LoginModules 成功时,整个身份验证才成功。如果配置了 Sufficient LoginModule 并且获得成功,则只要 Sufficient LoginModule 之前的 RequiredRequisite LoginModules 是成功的,整个身份验证就会成功。如果没有为应用程序配置 RequiredRequisite LoginModules,那么至少有一个 SufficientOptional 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 仍将被调用。这有助于隐藏失败源。由于 Krb5LoginModuleOptional,所以仅在 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 的权限。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策