首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat中RMI的安全异常

Tomcat中RMI的安全异常
EN

Stack Overflow用户
提问于 2013-12-04 15:21:34
回答 1查看 771关注 0票数 0

当使用server.policy作为Tomcat7 Servlet运行时,我的RMI服务器似乎没有运行。

我的策略文件和代码库正在我的服务器上运行。

我的server.policy位于/home/foo/policyfiles/server.policy中。

我仍然有一些异常,抱怨我的java.rmi.server.hostname属性。

我使用这些代码行来检查SecurityManager是否正在运行:

代码语言:javascript
复制
if (System.getSecurityManager() == null) {
        System.setSecurityManager(new RMISecurityManager());
}

在这样做之后,我就为JVM设置了策略文件,使用inputstream从属性文件中加载。

代码语言:javascript
复制
System.setProperty("java.security.policyfile", serverProperties.getProperty("foo.server.rmi.security.policy", null));

我的属性文件中的行如下所示:

代码语言:javascript
复制
foo.server.rmi.security.policy = /home/foo/policyfiles/server.policy

我的server.policy看起来是这样的:

代码语言:javascript
复制
grant codeBase "/home/foo/lib/*" signedBy "foo" {
permission java.net.SocketPermission "*" "accept, connect, resolve, listen";
permission java.lang.RuntimePermission "*";
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission java.util.PropertyPermission "*", "read, write";
permission java.util.logging.LoggingPermission "control";
};

尽管如此,我还是得到了一个例外:

代码语言:javascript
复制
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.hostname" "write")
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
        at java.security.AccessController.checkPermission(AccessController.java:559)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
        at java.lang.System.setProperty(System.java:782)
        at com.foo.bl.server.Server.loadConfig(Server.java:114)
        at com.foo.bl.server.Server.start(Server.java:44)
        at com.foo.bl.servlet.ServletHandler.run(ServletHandler.java:187)
        at java.lang.Thread.run(Thread.java:724)

似乎这个小属性在我的RMI服务器类中造成了混乱:

代码语言:javascript
复制
System.setProperty("java.rmi.server.hostname",
                    serverProperties.getProperty("foo.server.rmi.hostname", null));

我不明白,我设置了策略文件,创建了一个安全管理器,向策略文件添加了路径,并设置了异常属性。

是卡塔琳娜干的吗?就像政策文件从来没有读过什么的.

请帮帮我!

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-12-04 22:19:37

您需要先设置策略文件,否则没有效果。但是,我不认为在servlet容器中安装安全管理器是合情合理的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20379166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档