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
类 Policy

java.lang.Object
  继承者 javax.security.auth.Policy

已过时。 从 JDK 1.4 版本开始,由 java.security.Policy 取代。java.security.Policy 有一个方法:
        public PermissionCollection getPermissions
            (java.security.ProtectionDomain pd)
 
 
ProtectionDomain 有一个构造方法:
        public ProtectionDomain
            (CodeSource cs,
             PermissionCollection permissions,
             ClassLoader loader,
             Principal[] principals)
 
这两个 API 为调用方提供向 Policy 查询基于 Principal 的 Permission 条目的方法。

@Deprecated
public abstract class Policy
extends Object

这是用于表示基于 Subject 授权的系统策略的抽象类。此类的子类实现提供一种方式来指定一个基于 Subject 的访问控制 Policy

可以通过以下方式查询 Policy 对象,查找授予作为 Principal 运行的代码的 Permission 集合:

        policy = Policy.getPolicy();
        PermissionCollection perms = policy.getPermissions(subject,
                                                        codeSource);
 
Policy 对象查询本地策略,且返回适当的 Permissions 对象,该对象所具有的权限被授予与所提供的 subject 相关联的 Principals,同时也授予由提供的 codeSource 指定的代码。

Policy 包含下面的信息。注意,此例子只表示默认的 Policy 实现的语法。此类的子类实现可以实现替代语法,也可以根据任何如文件、数据库或服务器之类的源检索 Policy

Policy 中的每一项表示为一个 grant 条目。每个 grant 条目指定代码基、代码签名者和 Principals 三元组,以及授予该三元组的 Permissions。

        grant CodeBase ["URL"], Signedby ["signers"],
              Principal [Principal_Class] "Principal_Name" {
            Permission Permission_Class ["Target_Name"]
                                        [, "Permission_Actions"]
                                        [, signedBy "SignerName"];
        };
 
三元组名称/值对的组成部分 CodeBase 和 Signedby 是可选的。如果它们不存在,任何代码基和任何签名者(包括未签名代码)都将相符。例如,
        grant CodeBase "foo.com", Signedby "foo",
              Principal com.sun.security.auth.SolarisPrincipal "duke" {
            permission java.io.FilePermission "/home/duke", "read, write";
        };
 
grant 条目指定 "foo.com" 中的代码,由 "foo" 签名,作为 SolarisPrincipal 运行且名称为 duke,权限为 Permission。此 Permission 允许执行代码在目录 "/home/duke" 下读取和写入文件。

为了作为一个特定的 Principal“运行”,代码调用 Subject.doAs(subject, ...) 方法。调用该方法后,代码作为与指定的 Subject 相关联的所有 Principals 运行。注意,只在调用 Subject.doAs 之后,此 Policy(以及在此 Policy 中授予的 Permission)才有效。

多个 Principals 可以列在一个 grant 条目中。在 grant 条目中的所有 Principals 必须与提供给 Subject.doAsSubject 相关联,以便授予该 Subject 指定的 Permissions。

        grant Principal com.sun.security.auth.SolarisPrincipal "duke",
              Principal com.sun.security.auth.SolarisNumericUserPrincipal "0" {
            permission java.io.FilePermission "/home/duke", "read, write";
            permission java.net.SocketPermission "duke.com", "connect";
        };
 
此条目授予任何以 "duke" 和 "0" 运行的代码在 duke 的主目录下读取和写入文件的权限,以及创建到 "duke.com" 的套接字连接的权限。

注意,在此 Policy 中不允许非基于 Principal 的 grant 条目。因此,像下面这样的 grant 条目:

        grant CodeBase "foo.com", Signedby "foo" {
            permission java.io.FilePermission "/tmp/scratch", "read, write";
        };
 
是被拒绝的。这种权限必须列在 java.security.Policy 中。

可以通过把 "auth.policy.provider" 安全属性(在 Java 安全属性文件中)的值设置为所需的 Policy 实现类的完全限定名,从而改变默认的 Policy 实现。Java 安全属性文件位于名称为 <JAVA_HOME>/lib/security/java.security 的文件中,其中 <JAVA_HOME> 是指安装 JDK 的目录。


构造方法摘要
protected Policy()
          已过时。 惟一的构造方法。
 
方法摘要
abstract  PermissionCollection getPermissions(Subject subject, CodeSource cs)
          已过时。 检索授予与指定的 CodeSource 关联的 Principals 的 Permissions。
static Policy getPolicy()
          已过时。 返回安装的 Policy 对象。
abstract  void refresh()
          已过时。 刷新/重新加载 Policy。
static void setPolicy(Policy policy)
          已过时。 设置系统级 Policy 对象。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

Policy

protected Policy()
已过时。 
惟一的构造方法。(由子类构造方法调用,通常是隐式的)。

方法详细信息

getPolicy

public static Policy getPolicy()
已过时。 
返回安装的 Policy 对象。此方法首先通过 AuthPermission("getPolicy") 权限调用 SecurityManager.checkPermission ,以确保调用方具有获取 Policy 对象的权限。

返回:
安装的 Policy。返回值不能为 null
抛出:
SecurityException - 如果当前线程不具有获取此 Policy 对象的权限。
另请参见:
setPolicy(javax.security.auth.Policy)

setPolicy

public static void setPolicy(Policy policy)
已过时。 
设置系统级 Policy 对象。此方法首先通过 AuthPermission("setPolicy") 权限调用 SecurityManager.checkPermission ,以确保调用方具有设置 Policy 对象的权限。

参数:
policy - 新的系统 Policy 对象。
抛出:
SecurityException - 如果当前线程不具有设置此 Policy 的权限。
另请参见:
getPolicy()

getPermissions

public abstract PermissionCollection getPermissions(Subject subject,
                                                    CodeSource cs)
已过时。 
检索授予与指定的 CodeSource 关联的 Principals 的 Permissions。

参数:
subject - 与此 Subject(主题)所关联的 Principal(主体)与提供的 CodeSource 共同确定此方法返回的 Permission。此参数可以为 null

cs - 它的 CodeSource 所指定的代码,与提供的 CodeSource 一起使用,确定此方法返回的 Permissions。此参数可以为 null
返回:
授予所有的 Subject 以及提供的 subjectcs 参数中指定的代码的 Permissions Collection。

refresh

public abstract void refresh()
已过时。 
刷新/重新加载 Policy。

此方法使该对象刷新/重新加载其当前 Policy。这是依赖于实现的。例如,如果 Policy 对象存储在文件中,调用 refresh 将会引起重新读取该文件。

抛出:
SecurityException - 如果调用方没有刷新此 Policy 的权限。

JavaTM 2 Platform
Standard Ed. 5.0

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

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