设置OSGi包的权限

时间:2014-04-03 07:11:15

标签: java eclipse osgi equinox accesscontrolexception

我遇到了一个问题,试图限制OSGi包可以执行的操作。根据我读过的文档,应该在bundle的JAR中的OSGI-INF / permissions.perm文件中设置OSGi包的权限。但是,无论我在该文件中写什么(无论该文件是否存在),bundle似乎都有AllPermissions。更具体地说,我使用命令

从命令行启动OSGi
D:\temp\2>java -jar org.eclipse.osgi_3.3.2.R33x_v20080105.jar -console
-Djava.security.manager=org.eclipse.osgi.framework.internal.core.FrameworkSecurityManager

然后我用命令

安装bundle
osgi> install file:/d:/temp/2/J1.jar

然后开始吧。当我尝试执行应该受限制的操作(例如,访问文件,加载库等)时,操作总是成功,即使使用空的permissions.perm文件也是如此。如何在permissions.perm文件中指定权限?

2 个答案:

答案 0 :(得分:2)

permissions.perm没有指定捆绑包可以执行的操作。它指定了捆绑包想要做的事情:请参阅http://www.javacodegeeks.com/2012/11/permissions-in-osgi.html

因此,如果缺少权限,此文件似乎可以快速失败。如果您不需要,您甚至可以将其遗漏。

必须在框架上完成真正的安全设置。有关felix的信息,请参见此内容:https://felix.apache.org/documentation/subprojects/apache-felix-framework-security.html

答案 1 :(得分:0)

管理以使工作正常 - 如果SecurityManager可用,则在我的代码中检查。似乎在旧版本的OSGi JAR上我使用过安全管理器无法正常工作。我已经尝试过org.eclipse.osgi_3.7.2.v20120110-1415.jar,并且在OSGI-INF / permissions.perm文件中为bundle设置的权限工作正常。