- 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 方法 描述 PermissionCollectiongetPermissions(Subject subject, CodeSource codesource)不推荐用于删除:此API元素将在以后的版本中被删除。检查此Policy并返回授予给指定的Subject和CodeSource的权限。voidrefresh()不推荐用于删除:此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的权限。 - 结果
-
授予
SubjectCodeSource的权限。
-
-
-