2009-11-25 52 views
2

我有一个由几个OSGi包组成的应用程序。我希望强制他们中的一些只有在提供了有效的令牌(例如许可证密钥)时才提供其他捆绑服务访问他们的服务。有没有办法确保OSGi中的软件包的访问权限?

这也是为什么我会想限制访问到这些集合:

  • 安全性:他们没有自己的访问策略,因为这些依靠什么应用程序正在使用的包。这意味着他们必须信任客户端软件包以验证他们代表的应用程序或用户的权限。我想保持对我信任的访问控制方案的控制。
  • 可靠性:我允许并鼓励开发第三方模块来为我的系统添加功能。为了能够保证一些可靠性,我想控制这些扩展与我的系统进行交互的级别。另外,我想确保我自己的捆绑包仅用于已经过测试的组合。
  • 许可证:某些模块中可能只有正确的许可证才能使用,或者我可能希望确保客户不能在不同的安装之间交换捆绑软件。

我看了一些关于ServicePermission类和OSGi框架相关的,但在我看来,这些让网站管理员控制的访问策略,而不是捆绑制造商,这是我想要的。

回答

1

您的用例似乎相当复杂,所以我不确定这是否会完全回答您的问题。不过,您可以看看Service Hooks,这是OSGi第4版4.2版中添加的一项新功能。

随着Find Hook它应该能够“看,减少,的getServiceReferencegetServiceReferences方法的结果。这个钩子可以删除服务引用从结果对象,也有效地从主叫隐藏的服务。” (由Peter Kriens编写的article

使用此功能,您可以实现自己的机制,让客户端软件包“授权”自己访问特定服务(或者相反“检查”客户端软件包以确定是否访问特定服务应该被授予)。

相关问题