java policy_java11教程--类Policy用法

Policy对象负责确定在Java运行时环境中执行的代码是否具有执行安全敏感操作的权限。

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

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

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

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

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

这表示Policy参数的标记接口。

只读空PermissionCollection实例。

返回指定类型的Policy对象。

返回指定类型的Policy对象。

返回指定类型的Policy对象。

退货政策参数。

返回一个PermissionCollection对象,该对象包含授予指定CodeSource的权限集。

返回PermissionCollection对象,该对象包含授予指定ProtectionDomain的权限集。

返回已安装的Policy对象。

退回本政策的提供者。

返回此政策的类型。

评估授予ProtectionDomain的权限的全局策略,并测试是否授予了权限。

刷新/重新加载策略配置。

设置系统范围的Policy对象。

只读空PermissionCollection实例。

返回已安装的Policy对象。

不应缓存此值,因为可以通过调用setPolicy更改此值。

此方法首先调用SecurityManager.checkPermission并获得SecurityPermission("getPolicy")权限,以确保可以获取Policy对象。

设置系统范围的Policy对象。

此方法首先使用SecurityPermission("setPolicy")权限调用SecurityManager.checkPermission ,以确保可以设置策略。

返回指定类型的Policy对象。

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

返回指定类型的Policy对象。

将返回从指定提供程序封装PolicySpi实现的新Policy对象。 必须在提供者列表中注册指定的提供者。

返回指定类型的Policy对象。

将返回从指定的Provider对象封装PolicySpi实现的新Policy对象。 请注意,指定的Provider对象不必在提供程序列表中注册。

退回本政策的提供者。

如果通过调用Policy.getInstance获得此策略实例,则该实例仅具有提供者。 否则此方法返回null。

返回此政策的类型。

如果通过调用Policy.getInstance获取此策略实例,则该实例仅具有类型。 否则此方法返回null。

退货政策参数。

如果通过调用Policy.getInstance获取此策略实例,则该实例仅具有参数。 否则此方法返回null。

返回一个PermissionCollection对象,该对象包含授予指定CodeSource的权限集。

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

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

返回PermissionCollection对象,该对象包含授予指定ProtectionDomain的权限集。

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

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

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

评估授予ProtectionDomain的权限的全局策略,并测试是否授予了权限。

刷新/重新加载策略配置。

此方法的行为取决于实现。

例如,在基于文件的策略上调用refresh将导致重新读取该文件。

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

嵌套类

变量和类型

描述

static interface

这表示Policy参数的标记接口。构造方法

构造器

描述变量和类型

方法

描述

返回一个PermissionCollection对象,该对象包含授予指定CodeSource的权限集。

返回PermissionCollection对象,该对象包含授予指定ProtectionDomain的权限集。

static Policy

返回已安装的Policy对象。

boolean

评估授予ProtectionDomain的权限的全局策略,并测试是否授予了权限。

void

刷新/重新加载策略配置。

static void

设置系统范围的Policy对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值