- java.lang.Object
-
- javax.security.auth.Policy
-
- com.sun.security.auth.PolicyFile
-
不推荐用于删除:此API元素将在以后的版本中被删除。截至JDK 1.4,由sun.security.provider.PolicyFile
替代。 这个类完全被弃用了。 此类可能在将来的Java SE版本中被删除。
@Deprecated(since="1.4", forRemoval=true) public class PolicyFile extends Policy
此类代表javax.security.auth.Policy
的默认实现。此对象存储整个Java运行时的策略,并且是驻留在文件中的多个静态策略配置的合并。 用于定位策略文件并将其信息读入此
Policy
对象的算法是:- 循环安全属性auth.policy.url.1 , auth.policy.url.2 ,..., auth.policy.url.X “。每个属性值指定一个
URL
指向要加载的策略文件。读入并加载每个策略。 -
java.lang.System
属性java.security.auth.policy也可以设置为指向另一个策略文件(在用户在运行时使用-D开关的情况下)的URL
。 如果定义了此属性,并且安全属性文件(Security属性policy.allowSystemProperty设置为true )允许其使用,则还会加载该策略。 - 如果使用“==”(而不是“=”)定义了java.security.auth.policy属性,则忽略所有其他指定的策略,并且仅加载此策略。
grant signedBy "alias", codeBase "URL", principal principalClass "principalName", principal principalClass "principalName", ... { permission Type "name "action", signedBy "alias"; permission Type "name "action", signedBy "alias"; .... };
以上所有非粗体项目必须按原样显示(尽管情况并不重要,有些则是可选的,如下所述)。 斜体表示变量值。授权条目必须以字母
grant
。signedBy
和codeBase
名称/值对是可选的。 如果它们不存在,则任何签名者(包括未签名的代码)将匹配,并且任何codeBase将匹配。 请注意,principal
名称/值对不是可选的。 这个Policy
实现只允许基于主体的授权条目。 请注意, principalClass可以设置为通配符值*,它允许它匹配任何Principal
类。 此外, principalName也可以设置为通配符值*,允许它匹配任何Principal
名称。 当将principalName设置为*时,不要用引号括住*。许可条目必须以字母
permission
。 上述模板中的字Type
是一个特定的权限类型,如java.io.FilePermission
或java.lang.RuntimePermission
。对于许多许可类型,例如
java.io.FilePermission
(其中指定允许的文件访问类型)是必需的“ 动作 ”。 对于不需要的类别,java.lang.RuntimePermission
,您必须具有“name
”值以下类型名称指定的权限,否则您不需要。权限条目的
signedBy
名称/值对是可选的。 如果存在,表示已签署的许可。 也就是说,许可类本身必须由给定的别名签名才能被授予。 例如,假设您有以下授权条目:grant principal foo.com.Principal "Duke" { permission Foo "foobar", signedBy "FooSoft"; }
那么如果“FooSoft”别名已经签署了
Foo.class
权限,或者如果Foo.class
是系统类(即在CLASSPATH上找到),则授予类型为Foo的此权限。出现在条目中的项目必须以指定的顺序(
permission
, 类型 ,“ 名称 ”和“ 操作 ”)显示。 条目以分号终止。案例是不重要的标识符(
permission
,signedBy
,codeBase
,等等),但显著的类型或传递中作为一个值的字符串。策略配置文件中的两个条目的示例是
// if the code is comes from "foo.com" and is running as "Duke", // grant it read/write to all files in /tmp. grant codeBase "foo.com", principal foo.com.Principal "Duke" { permission java.io.FilePermission "/tmp/*", "read,write"; }; // grant any code running as "Duke" permission to read // the "java.vendor" Property. grant principal foo.com.Principal "Duke" { permission java.util.PropertyPermission "java.vendor";
这个
Policy
实现支持Policy
特殊处理。 如果授权条目配置了PrivateCredentialPermission
,以及“主体类/主体名称”为PrivateCredentialPermission
的“自我”,则该条目授予指定Subject
权限来访问自己的私有证书。 例如,以下授权Subject
“公爵”访问自己的abCredential。grant principal foo.com.Principal "Duke" { permission javax.security.auth.PrivateCredentialPermission "a.b.Credential self", "read"; };
以下授予Subject
“Duke”访问所有自己的私人凭证:grant principal foo.com.Principal "Duke" { permission javax.security.auth.PrivateCredentialPermission "* self", "read"; };
以下授权所有被认证为SolarisPrincipal
(无论其各自的名称)的主体是否允许访问自己的私有凭据:grant principal com.sun.security.auth.SolarisPrincipal * { permission javax.security.auth.PrivateCredentialPermission "* self", "read"; };
以下授权所有Subjects权限访问自己的私有凭据:grant principal * * { permission javax.security.auth.PrivateCredentialPermission "* self", "read"; };
- 另请参见:
-
CodeSource
,Permissions
,ProtectionDomain
,security properties
- 循环安全属性auth.policy.url.1 , auth.policy.url.2 ,..., auth.policy.url.X “。每个属性值指定一个
-
-
构造方法摘要
构造方法 Constructor 描述 PolicyFile()
不推荐用于删除:此API元素将在以后的版本中被删除。初始化Policy对象,并将默认策略配置文件读入Policy对象。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 PermissionCollection
getPermissions(Subject subject, CodeSource codesource)
不推荐用于删除:此API元素将在以后的版本中被删除。检查此Policy
并返回授予给指定的Subject
和CodeSource
的权限。void
refresh()
不推荐用于删除:此API元素将在以后的版本中被删除。通过重新读取所有策略文件来刷新策略对象。
-
-
-
方法详细信息
-
refresh
public void refresh()
不推荐用于删除:此API元素将在以后的版本中被删除。通过重新读取所有策略文件来刷新策略对象。- Specified by:
-
refresh
在类Policy
- 异常
-
SecurityException
- 如果来电者没有权限刷新Policy
。
-
getPermissions
public PermissionCollection getPermissions(Subject subject, CodeSource codesource)
不推荐用于删除:此API元素将在以后的版本中被删除。检查此Policy
并返回授予给指定的Subject
和CodeSource
的权限。对于特定的授权条目权限返回如果
CodeSource
利用在条目中指定的基本代码和signedby值构建implies
的CodeSource
提供给这个方法,并且如果Subject
提供给该方法包含了所有在条目中指定的主体。提供给此方法的
Subject
包含条目中指定的所有主体,如果对于每个Principal
,在授予条目中指定的“P1”满足以下两个条件之一:-
Subject
有一个Principal
“P2”,其中P2.getClass().getName()
等于P1的类名,其中P2.getName()
等于P1的名字。 - P1实现
com.sun.security.auth.PrincipalComparator
,和P1.implies
提供的Subject
。
请注意,这个
Policy
实现对PrivateCredentialPermissions有特殊处理。 当这种方法遇到一个PrivateCredentialPermission
,其中指定“self”作为Principal
类和名称,它不会将Permission
添加到返回的PermissionCollection
。 相反,它建立了一个新的PrivateCredentialPermission
每个Principal
与所提供的相关Subject
。 每个新的PrivateCredentialPermission
包含与最初授予的权限中指定的相同的凭证类,以及相应的Principal
的类和名称。- Specified by:
-
getPermissions
在Policy
- 参数
-
subject
- 返回授予此Subject
的权限和附加提供的CodeSource
。 -
codesource
- 返回授予CodeSource
和附加提供的Subject
的权限。 - 结果
-
授予
Subject
CodeSource
的权限。
-
-
-