|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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.doAs
的 Subject
相关联,以便授予该 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
以及提供的 subject 和 cs 参数中指定的代码的 Permissions Collection。
refresh
public abstract void refresh()
- 已过时。
-
刷新/重新加载 Policy。
此方法使该对象刷新/重新加载其当前 Policy。这是依赖于实现的。例如,如果 Policy 对象存储在文件中,调用
refresh
将会引起重新读取该文件。 -
- 抛出:
-
SecurityException
- 如果调用方没有刷新此 Policy 的权限。
所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |