【问题标题】:Java RMI with no SecurityManager没有 SecurityManager 的 Java RMI
【发布时间】:2011-01-18 22:09:18
【问题描述】:

我有一些不使用 SecurityManager 但使用 RMI 的旧代码。从我读过的内容来看,RMI 需要一个安全管理器,但代码似乎可以在同一台机器上和两台机器之间正常工作和运行。我在 1.5 上测试过这些东西,但在 1.6 上没有。

我找不到任何资源来讨论何时需要 SecurityManager,何时不需要,或者该要求是否随 Java 版本而改变。

我将更新代码以使用一个,我只是想了解它背后的细节。

感谢您的任何反馈!

【问题讨论】:

  • '根据我的阅读,RMI 需要安全管理器':不,它不需要。你以为你在哪里读到的?不在 Oracle 文档中。不要“更新代码以使用一个”,也不要破坏工作代码。

标签: java security rmi


【解决方案1】:

仅当 RMI 从远程机器下载代码时才需要安全管理器。如果客户端和服务器都使用相同的类,则不需要。

来自RMI Tutorial

安全管理器确定下载的代码是否可以访问本地文件系统或是否可以执行任何其他特权操作。

如果 RMI 程序没有安装安全管理器,RMI 将不会下载作为参数接收的对象的类(除了从本地类路径)或远程方法调用的返回值。此限制确保下载的代码执行的操作受安全策略的约束。

【讨论】:

    猜你喜欢
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    相关资源
    最近更新 更多