【问题标题】:Update Java security policy at runtime?在运行时更新 Java 安全策略?
【发布时间】:2010-11-03 22:47:51
【问题描述】:

是否有在运行时向 Java 安全策略添加/删除权限的合法方法?

【问题讨论】:

    标签: java security policy


    【解决方案1】:

    Javadoc 说 Policy.refresh() 用于基于文件的策略将重新读取文件。因此,可以在运行时通过编辑策略文件然后调用Policy.refresh()来修改系统范围的策略

    【讨论】:

    • 您会发现权限已经从Policy中复制到Classes和ClassLoaders的ProtectionDomains中。
    • 在通过System.setProperty("java.security.policy", policyURL) 设置策略,然后刷新Policy.policy.refresh() 并随后安装安全管理器System.setSecurityManager(new SecurityManager()); 时,这对我来说工作正常。
    【解决方案2】:

    从 1.4 动态ProtectionDomains 可以委托给Policy。从代码中动态删除权限不太可能有任何意义。 AccessController.doPrivileged 的两种参数形式也可能有用。

    【讨论】:

    • 我们正在开发一个基于 OSGi 的框架,它应该可以长时间运行并尽可能避免重启。该框架是 SAAS,但客户能够将自己的捆绑包(插件)部署到系统中。所以,对我们来说,在运行时修改权限会很好。
    【解决方案3】:

    可以使用Policy.setPolicy() 方法设置自定义策略实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 2018-01-07
      • 1970-01-01
      • 2010-09-14
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多