- java.lang.Object
-
- java.security.ProtectionDomain
-
public class ProtectionDomain extends Object
ProtectionDomain类封装了一个域的特性,该域包含一组类,当代表一组给定的主体执行时,该类的实例被授予一组权限。一个静态权限集可以在构建时绑定到一个ProtectionDomain; 不管有效的政策如何,这种权限都被授予域。 但是,为了支持动态安全策略,还可以构建一个ProtectionDomain,使得当检查权限时,它将被动态映射到当前策略的一组权限。
- 从以下版本开始:
- 1.2
-
-
构造方法摘要
构造方法 Constructor 描述 ProtectionDomain(CodeSource codesource, PermissionCollection permissions)
使用给定的CodeSource和权限创建一个新的ProtectionDomain。ProtectionDomain(CodeSource codesource, PermissionCollection permissions, ClassLoader classloader, Principal[] principals)
创建一个由给定的CodeSource,Permissions,ClassLoader和Principals数组限定的新的ProtectionDomain。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 ClassLoader
getClassLoader()
返回此域的ClassLoader。CodeSource
getCodeSource()
返回此域的CodeSource。PermissionCollection
getPermissions()
返回授予此域的静态权限。Principal[]
getPrincipals()
返回此域的主体数组。boolean
implies(Permission perm)
检查并看看ProtectionDomain是否隐含在Permission对象中表达的权限。boolean
staticPermissionsOnly()
如果此域只包含静态权限,并且在许可检查时不检查当前的Policy
,则返回true。String
toString()
将ProtectionDomain转换为字符串。
-
-
-
构造方法详细信息
-
ProtectionDomain
public ProtectionDomain(CodeSource codesource, PermissionCollection permissions)
使用给定的CodeSource和权限创建一个新的ProtectionDomain。 如果权限对象不为空,那么将在传入的Permissions对象中调用setReadOnly()
。授予此域的权限是静态的,即调用
staticPermissionsOnly()
方法返回true。 它们只包含传递给此构造函数的那些,并且不会查询当前的“策略”。- 参数
-
codesource
- 与该域相关联的代码源 -
permissions
- 授予此域的权限
-
ProtectionDomain
public ProtectionDomain(CodeSource codesource, PermissionCollection permissions, ClassLoader classloader, Principal[] principals)
创建一个由给定的CodeSource,Permissions,ClassLoader和Principals数组限定的新的ProtectionDomain。 如果权限对象不为空,那么将在传入的Permissions对象中调用setReadOnly()
。授予此域的权限是动态的,即调用
staticPermissionsOnly()
方法返回false。 它们包括传递给此构造函数的静态权限以及当前策略在选中权限时授予此域的任何权限。此构造函数通常由
ClassLoaders
和DomainCombiners
使用, 代理到Policy
以主动关联授予此域的权限。 此构造函数为策略提供者提供了增加提供的PermissionCollection以反映策略更改的机会。- 参数
-
codesource
- 与此域相关联的CodeSource -
permissions
- 授予此域的权限 -
classloader
- 与此域相关联的ClassLoader -
principals
- 与此域相关联的主体数组。 复制数组的内容以防止后续修改。 - 从以下版本开始:
- 1.4
- 另请参见:
-
Policy.refresh()
,Policy.getPermissions(ProtectionDomain)
-
-
方法详细信息
-
getCodeSource
public final CodeSource getCodeSource()
返回此域的CodeSource。- 结果
- 该域的CodeSource可能为null。
- 从以下版本开始:
- 1.2
-
getClassLoader
public final ClassLoader getClassLoader()
返回此域的ClassLoader。- 结果
- 该域的ClassLoader可以为null。
- 从以下版本开始:
- 1.4
-
getPrincipals
public final Principal[] getPrincipals()
返回此域的主体数组。- 结果
- 此域的一个非空数组的主体。 每次调用此方法时都会返回一个新数组。
- 从以下版本开始:
- 1.4
-
getPermissions
public final PermissionCollection getPermissions()
返回授予此域的静态权限。- 结果
- 该域的静态权限集可能为null。
- 另请参见:
-
Policy.refresh()
,Policy.getPermissions(ProtectionDomain)
-
staticPermissionsOnly
public final boolean staticPermissionsOnly()
如果此域仅包含静态权限,并且在许可检查时不检查当前的Policy
,则返回true。- 结果
- 如果此域仅包含静态权限,则为true。
- 从以下版本开始:
- 9
-
implies
public boolean implies(Permission perm)
检查并看看ProtectionDomain是否隐含在Permission对象中表达的权限。所评估的权限集是ProtectionDomain是否由静态权限组构建的功能,或者绑定到一组动态映射的权限集。
如果
staticPermissionsOnly()
方法返回true,那么只能根据构造中提供的PermissionCollection进行权限检查。否则,将根据构建中提供的PermissionCollection和当前的Policy绑定来组合权限。
- 参数
-
perm
- 要检查的权限对象。 - 结果
-
如果此ProtectionDomain隐含有
perm
则为true。
-
-