【问题标题】:How can I add at runtime a new RuntimePermission to Java security policy?如何在运行时向 Java 安全策略添加新的 RuntimePermission?
【发布时间】:2009-05-18 12:46:40
【问题描述】:

我想在运行时向一组已经存在的权限 (java.policy) 文件添加一个新的 RuntimePermission。 这是我的代码:

ProtectionDomain domain = MyClass.class.getProtectionDomain();
        final PermissionCollection domainPerms = domain.getPermissions();
        Enumeration<Permission> oldPerms = domainPerms.elements();
        PermissionCollection newPerms = new Permissions();

        //add the old permissions to
        while (oldPerms.hasMoreElements()) {
            newPerms.add(oldPerms.nextElement());
        }
        //add my new permission
        RuntimePermission rtPermission = new RuntimePermission("accessDeclaredMembers");
        newPerms.add(rtPermission);

..

但是我该如何使用newPerms 对象呢?

我还尝试将新权限添加到oldPerms,但由于oldPerms 是只读的,我得到了一个不错的SecurityException。

谢谢!

【问题讨论】:

    标签: java security permissions


    【解决方案1】:

    Permissions 类型有一个非常奇怪的 API,尽管您不能修改已设置为只读的对象应该不足为奇。 ProtectionDomains 应该是不可变的。

    但是,从大约 1.4 开始,您可以拥有“动态”ProtectionDomains,它遵循当前的 Policy。但是,我不建议尝试即时更改权限,因为它没有多大意义。更好地使用功能方法创建 API - SecurityManager 只是用来弥补不良 API 的裂缝。

    【讨论】:

      猜你喜欢
      • 2010-11-03
      • 2021-07-27
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 2021-02-08
      • 2022-12-01
      相关资源
      最近更新 更多