0

我在尝试限制 OSGi 包可以执行的操作时遇到了问题。根据我读过的文档,OSGi 包的权限应该在包的 JAR 中的 OSGI-INF/permissions.perm 文件中设置。但是,无论我在那个文件中写了什么(也不管这个文件是否存在),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

然后我用命令安装包

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

并启动它。当我尝试执行应该被限制的操作(例如,访问文件、加载库等)时,操作总是成功,即使是空的 permissions.perm 文件。如何激活 permissions.perm 文件中指定的权限?

4

2 回答 2

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

于 2014-04-03T07:52:27.897 回答
0

Managed to get the thing working - checked in my code if the SecurityManager was available or not. It seemed that on old version of OSGi JAR I've used security manager was not working. I've tried org.eclipse.osgi_3.7.2.v20120110-1415.jar instead, and permissions set for bundle in OSGI-INF/permissions.perm file work fine.

于 2014-04-04T06:11:25.563 回答