如何在 WAS 中定义 java 安全策略文件?

Posted

技术标签:

【中文标题】如何在 WAS 中定义 java 安全策略文件?【英文标题】:How to define a java security policy file in WAS? 【发布时间】:2014-06-03 17:48:28 【问题描述】:

我正在使用 RMI 开发企业应用程序,但在尝试(重新)绑定对象时出现错误:

Naming.rebind(url, this);

// 对象“this”是 UnicastRemoteObject 的子类 在此说明之前,我创建了一个新的 RMISecurityManager:

if (System.getSecurityManager() == null) 
    System.setSecurityManager(new RMISecurityManager());

确切的错误是:

[err] java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.sun.reflect")

我正在开发 WAS Liberty Profile 8.5.5。我尝试在EAR项目的META-INF文件夹中创建java.policy、app.policy、was.policy、server.policy,没有成功。

我尝试使用以下指令设置文件: System.setProperty("java.security.policy", ".../security/java.policy"); 就这样,它奏效了!

我错过了什么? (由于最后一个解决方案有效,我假设 java.policy 文件格式正确且高效,因此这只是将这个文件包含到我的 ear 文件中并在配置中纳入 WAS 的方式......) 谢谢。

【问题讨论】:

您真的需要安全管理器吗? 【参考方案1】:

取自Info Center,ear 存档中 was.policy 文件的正确位置是 META-INF/was.policy,但可能还有更多。 “当启用 Java 2 安全性时,应用程序 EAR 文件现在可以运行了。”所以必须启用 Java 2 安全性。

同样,并非所有java.policy 中接受的关键字都适用于was.policy(也如Info Center 中所述),因此您可能应该验证您的was.policy 文件不使用任何不受支持的语法。有关was.policy 文件here 的更多信息。

【讨论】:

以上是关于如何在 WAS 中定义 java 安全策略文件?的主要内容,如果未能解决你的问题,请参考以下文章

Rejected because no crossdomain.xml policy file was found

Rejected because no crossdomain.xml policy file was found

windows如何查看删除记录

如何在安全管理器策略文件中为可变父目录授予文件读/写权限

关于信息安全运维那些事儿

如何生成WAS的heapdump文件