【问题标题】:Is there a way to secure access to bundles in OSGi?有没有办法保护对 OSGi 中捆绑包的访问?
【发布时间】:2010-12-20 09:09:11
【问题描述】:

我有一个由几个 OSGi 包组成的应用程序。我想强制它们中的一些仅在提供有效令牌(例如许可证密钥)时才提供对其服务的其他捆绑包。

这就是我想要限制对这些捆绑包的访问的原因:

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

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

【问题讨论】:

    标签: security osgi


    【解决方案1】:

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

    使用Find Hook,应该可以“查看并减少getServiceReferencegetServiceReferences 方法的结果。这个钩子可以从结果中删除服务引用对象,也可以有效地隐藏来电者的服务。” (来自article 由 Peter Kriens 撰写)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 2017-09-10
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多