模块 java.base

类 Policy

java.lang.Object
java.security.Policy

@Deprecated (since ="17", forRemoval =true) public abstract class Policy extends Object
已弃用,将被删除:此 API 元素可能会在未来版本中删除。
此类仅与 安全管理器 结合使用,后者已弃用并会在未来版本中删除。因此,此类也已弃用并可能被删除。安全管理器或此类没有替代品。
Policy 对象负责确定在 Java 运行时环境中执行的代码是否具有执行安全敏感操作的权限。

在任何给定时间,运行时中只安装了一个 Policy 对象。可以通过调用 setPolicy 方法安装 Policy 对象。安装好的Policy对象可以通过调用getPolicy方法获取。

如果运行时没有安装 Policy 对象,则调用 getPolicy 会安装默认 Policy 实现的实例(此抽象类的默认子类实现)。可以通过将 policy.provider 安全属性的值设置为所需 Policy 子类实现的完全限定名称来更改默认 Policy 实现。系统类加载器用于加载此类。

应用程序代码可以直接继承 Policy 以提供自定义实现。此外,可以通过调用具有标准类型的 getInstance 工厂方法之一来构造 Policy 对象的实例。默认策略类型是“JavaPolicy”。

安装 Policy 实例(默认情况下或通过调用 setPolicy )后,Java 运行时会在需要确定执行代码(封装在 ProtectionDomain 中)是否可以执行受 SecurityManager 保护的操作时调用其 implies 方法。 Policy 对象如何检索其策略数据取决于 Policy 实现本身。策略数据可以存储在例如平面 ASCII 文件、Policy 类的序列化二进制文件或数据库中。

refresh 方法导致策略对象刷新/重新加载其数据。此操作依赖于实现。例如,如果策略对象将其数据存储在配置文件中,调用refresh 将导致它重新读取配置策略文件。如果不支持刷新操作,则此方法不执行任何操作。请注意,刷新的策略可能不会对特定 ProtectionDomain 中的类产生影响。这取决于策略提供者对 implies 方法的实现及其 PermissionCollection 缓存策略。

自从:
1.2
参见:
  • 内部类总结

    内部类
    修饰符和类型
    描述
    static interface 
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    此类仅与 安全管理器 结合使用,后者已弃用并会在未来版本中删除。
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    static final PermissionCollection
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    一个只读的空 PermissionCollection 实例。
  • 构造方法总结

    构造方法
    构造方法
    描述
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    子类调用的构造方法。
  • 方法总结

    修饰符和类型
    方法
    描述
    static Policy
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    返回指定类型的策略对象。
    static Policy
    getInstance(String type, Policy.Parameters params, String provider)
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    返回指定类型的 Policy 对象。
    static Policy
    getInstance(String type, Policy.Parameters params, Provider provider)
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    返回指定类型的 Policy 对象。
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    返回 Policy 参数。
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    返回一个 PermissionCollection 对象,其中包含授予指定 CodeSource 的权限集。
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    返回一个 PermissionCollection 对象,其中包含授予指定 ProtectionDomain 的权限集。
    static Policy
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    返回已安装的 Policy 对象。
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    返回此策略的Provider
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    返回此 Policy 的类型。
    boolean
    implies(ProtectionDomain domain, Permission permission)
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    评估授予 ProtectionDomain 的权限的全局策略并测试是否授予权限。
    void
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    刷新/重新加载策略配置。
    static void
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    设置系统范围的 Policy 对象。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细信息

    • UNSUPPORTED_EMPTY_COLLECTION

      public static final PermissionCollection  UNSUPPORTED_EMPTY_COLLECTION
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      一个只读的空 PermissionCollection 实例。
      自从:
      1.6
  • 构造方法详细信息

    • Policy

      public Policy()
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      子类调用的构造方法。
  • 方法详情

    • getPolicy

      public static Policy  getPolicy()
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回已安装的 Policy 对象。这个值不应该被缓存,因为它可以通过调用 setPolicy 来改变。此方法首先调用具有SecurityPermission("getPolicy")权限的SecurityManager.checkPermission,以确保可以获取Policy对象。
      返回:
      安装的策略。
      抛出:
      SecurityException - 如果安全管理器存在且其 checkPermission 方法不允许获取 Policy 对象。
      参见:
    • setPolicy

      public static void setPolicy(Policy  p)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      设置系统范围的 Policy 对象。此方法首先调用具有 SecurityPermission("setPolicy") 权限的 SecurityManager.checkPermission 以确保可以设置策略。
      参数:
      p - 新系统 Policy 对象。
      抛出:
      SecurityException - 如果安全管理器存在且其 checkPermission 方法不允许设置策略。
      参见:
    • getInstance

      public static Policy  getInstance(String  type, Policy.Parameters  params) throws NoSuchAlgorithmException
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回指定类型的策略对象。

      此方法遍历已注册安全提供程序的列表,从最首选的提供程序开始。返回一个新的 Policy 对象,该对象封装了支持指定类型的第一个提供程序的 PolicySpi 实现。

      请注意,可以通过 Security.getProviders() 方法检索已注册提供商的列表。

      实现注意事项:
      JDK 参考实现还使用 jdk.security.provider.preferred Security 属性来确定指定算法的首选提供程序顺序。这可能与 Security.getProviders() 返回的提供商顺序不同。
      参数:
      type - 指定的策略类型。有关标准策略类型的列表,请参阅 Java 安全标准算法名称规范 中的策略部分。
      params - Policy 的参数,可能是 null
      返回:
      新的 Policy 对象
      抛出:
      IllegalArgumentException - 如果选定的 ProviderPolicySpi 实现不理解指定的参数
      NoSuchAlgorithmException - 如果没有 Provider 支持指定类型的 PolicySpi 实现
      NullPointerException - 如果 typenull
      SecurityException - 如果调用者无权获取指定类型的 Policy 实例。
      自从:
      1.6
      参见:
    • getInstance

      public static Policy  getInstance(String  type, Policy.Parameters  params, String  provider) throws NoSuchProviderException , NoSuchAlgorithmException
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回指定类型的 Policy 对象。

      返回一个新的 Policy 对象,它封装了来自指定提供者的 PolicySpi 实现。指定的提供者必须在提供者列表中注册。

      请注意,可以通过 Security.getProviders() 方法检索已注册提供商的列表。

      参数:
      type - 指定的策略类型。有关标准策略类型的列表,请参阅 Java 安全标准算法名称规范 中的策略部分。
      params - Policy 的参数,可能是 null
      provider - 提供商。
      返回:
      新的 Policy 对象
      抛出:
      IllegalArgumentException - 如果指定的提供者为 null 或为空,或者指定的提供者的 PolicySpi 实现不理解指定的参数
      NoSuchAlgorithmException - 如果指定的提供者不支持指定类型的 PolicySpi 实现
      NoSuchProviderException - 如果指定的提供者没有在安全提供者列表中注册
      NullPointerException - 如果 typenull
      SecurityException - 如果调用者无权获取指定类型的 Policy 实例
      自从:
      1.6
      参见:
    • getInstance

      public static Policy  getInstance(String  type, Policy.Parameters  params, Provider  provider) throws NoSuchAlgorithmException
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回指定类型的 Policy 对象。

      返回一个新的 Policy 对象,它封装了来自指定提供者的 PolicySpi 实现。请注意,指定的提供者不必在提供者列表中注册。

      参数:
      type - 指定的策略类型。有关标准策略类型的列表,请参阅 Java 安全标准算法名称规范 中的策略部分。
      params - Policy 的参数,可能是 null
      provider - Provider
      返回:
      新的 Policy 对象
      抛出:
      IllegalArgumentException - 如果指定的 Providernull ,或者如果指定的参数不被指定的 ProviderPolicySpi 实现理解
      NoSuchAlgorithmException - 如果指定的 Provider 不支持指定类型的 PolicySpi 实现
      NullPointerException - 如果 typenull
      SecurityException - 如果调用者无权获取指定类型的 Policy 实例
      自从:
      1.6
      参见:
    • getProvider

      public Provider  getProvider()
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回此策略的Provider

      这个 Policy 实例只有通过调用 Policy.getInstance 获得时才会有一个提供者。否则此方法返回 null

      返回:
      本策略的 Provider,或 null
      自从:
      1.6
    • getType

      public String  getType()
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回此 Policy 的类型。

      如果通过调用 Policy.getInstance 获得此 Policy 实例,则它只有一个类型。否则此方法返回 null

      返回:
      Policynull 的类型。
      自从:
      1.6
    • getParameters

      public Policy.Parameters  getParameters()
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回 Policy 参数。

      这个 Policy 实例只有在通过调用 Policy.getInstance 获得时才会有参数。否则此方法返回 null

      返回:
      Policy 参数,或 null
      自从:
      1.6
    • getPermissions

      public PermissionCollection  getPermissions(CodeSource  codesource)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回一个 PermissionCollection 对象,其中包含授予指定 CodeSource 的权限集。

      不鼓励应用程序调用此方法,因为并非所有策略实现都支持此操作。应用程序应该完全依赖 implies 方法来执行策略检查。如果应用程序绝对必须调用 getPermissions 方法,它应该调用 getPermissions(ProtectionDomain)

      此方法的默认实现返回 Policy.UNSUPPORTED_EMPTY_COLLECTION。如果策略实现可以返回一组授予 CodeSource 的权限,则可以重写此方法。

      参数:
      codesource - 返回的 PermissionCollection 已被授予的 CodeSource。
      返回:
      授予指定 CodeSource 的一组权限。如果支持此操作,则返回的权限集必须是一个新的可变实例,并且它必须支持异构权限类型。如果不支持此操作,则返回 Policy.UNSUPPORTED_EMPTY_COLLECTION。
    • getPermissions

      public PermissionCollection  getPermissions(ProtectionDomain  domain)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回一个 PermissionCollection 对象,其中包含授予指定 ProtectionDomain 的权限集。

      不鼓励应用程序调用此方法,因为并非所有策略实现都支持此操作。应用程序应依赖 implies 方法来执行策略检查。

      此方法的默认实现首先检索通过 getPermissions(CodeSource) 返回的权限(CodeSource 取自指定的 ProtectionDomain),以及位于指定 ProtectionDomain 内的权限。然后将所有这些权限合并并返回到一个新的 PermissionCollection 对象中。如果 getPermissions(CodeSource) 返回 Policy.UNSUPPORTED_EMPTY_COLLECTION,则此方法返回新 PermissionCollection 对象中指定 ProtectionDomain 中包含的权限。

      如果策略实现支持返回一组授予 ProtectionDomain 的权限,则可以重写此方法。

      参数:
      domain - 已授予返回的 PermissionCollection 的 ProtectionDomain。
      返回:
      授予指定 ProtectionDomain 的一组权限。如果支持此操作,则返回的权限集必须是一个新的可变实例,并且它必须支持异构权限类型。如果不支持此操作,则返回 Policy.UNSUPPORTED_EMPTY_COLLECTION。
      自从:
      1.4
    • implies

      public boolean implies(ProtectionDomain  domain, Permission  permission)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      评估授予 ProtectionDomain 的权限的全局策略并测试是否授予权限。
      参数:
      domain - 要测试的 ProtectionDomain
      permission - 要测试暗示的权限对象。
      返回:
      true 如果“权限”是授予此 ProtectionDomain 的权限的适当子集。
      自从:
      1.4
      参见:
    • refresh

      public void refresh()
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      刷新/重新加载策略配置。此方法的行为取决于实现。例如,在基于文件的策略上调用 refresh 将导致重新读取文件。

      此方法的默认实现不执行任何操作。如果策略实现支持刷新操作,则应重写此方法。