Module java.base
Package java.security

Class ProtectionDomain

java.lang.Object
java.security.ProtectionDomain

public class ProtectionDomain extends Object
ProtectionDomain类封装了一个域的特征,该域包含一组类的实例,当代表给定一组主体执行时,这些实例被授予一组权限。

在构造ProtectionDomain时可以将静态权限集绑定到它;无论当前生效的策略如何,这些权限都将授予该域。然而,为了支持动态安全策略,也可以构造ProtectionDomain,使其在检查权限时动态映射到一组权限,由当前策略确定。

自版本:
1.2
  • Constructor Details

    • ProtectionDomain

      public ProtectionDomain(CodeSource codesource, PermissionCollection permissions)
      创建一个具有给定CodeSource和权限的新ProtectionDomain。如果权限不为null,则会在传入的权限上调用setReadOnly()

      授予此域的权限是静态的,即调用staticPermissionsOnly()方法将返回true。它们仅包含传递给此构造函数的权限和当前策略不会被查询。

      参数:
      codesource - 与此域关联的代码源
      permissions - 授予此域的权限
    • ProtectionDomain

      public ProtectionDomain(CodeSource codesource, PermissionCollection permissions, ClassLoader classloader, Principal[] principals)
      创建一个由给定CodeSource、权限、ClassLoader和主体数组限定的新ProtectionDomain。如果权限不为null,则会在传入的权限上调用setReadOnly()

      授予此域的权限是动态的,即调用staticPermissionsOnly()方法将返回false。它们包括传递给此构造函数的静态权限以及在检查权限时当前策略授予此域的任何权限。

      此构造函数通常由委托给Policy对象的ClassLoadersDomainCombiners使用,以积极地关联授予此域的权限。此构造函数为策略提供者提供了机会,以反映策略更改来增强提供的PermissionCollection

      参数:
      codesource - 与此域关联的CodeSource
      permissions - 授予此域的权限
      classloader - 与此域关联的ClassLoader
      principals - 与此域关联的Principal对象数组。数组的内容会被复制以防止后续修改。
      自版本:
      1.4
      参见:
  • Method Details

    • 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
      参见:
    • staticPermissionsOnly

      public final boolean staticPermissionsOnly()
      如果此域仅包含静态权限且在检查权限时不检查当前Policy,则返回true
      返回:
      如果此域仅包含静态权限,则返回true
      自版本:
      9
    • implies

      public boolean implies(Permission perm)
      检查此ProtectionDomain是否包含Permission对象中表达的权限。

      评估的权限集取决于ProtectionDomain是使用静态权限集构造的还是绑定到动态映射的权限集。

      如果staticPermissionsOnly()方法返回true,则权限将仅针对构造时提供的PermissionCollection进行检查。

      否则,权限将针对构造时提供的PermissionCollection和当前策略绑定的组合进行检查。

      参数:
      perm - 要检查的Permission对象。
      返回:
      如果perm由此ProtectionDomain隐含,则返回true
    • toString

      public String toString()
      ProtectionDomain转换为String
      覆盖:
      toString 在类 Object
      返回:
      对象的字符串表示形式。