2009-11-25 28 views
2

我有一個由幾個OSGi包組成的應用程序。我希望強制他們中的一些只有在提供了有效的令牌(例如許可證密鑰)時才提供其他捆綁服務訪問他們的服務。有沒有辦法確保OSGi中的軟件包的訪問權限?

這也是爲什麼我會想限制訪問到這些集合:

  • 安全性:他們沒有自己的訪問策略,因爲這些依靠什麼應用程序正在使用的包。這意味着他們必須信任客戶端軟件包以驗證他們代表的應用程序或用戶的權限。我想保持對我信任的訪問控制方案的控制。
  • 可靠性:我允許並鼓勵開發第三方模塊來爲我的系統添加功能。爲了能夠保證一些可靠性,我想控制這些擴展與我的系統進行交互的級別。另外,我想確保我自己的捆綁包僅用於已經過測試的組合。
  • 許可證:某些模塊中可能只有正確的許可證才能使用,或者我可能希望確保客戶不能在不同的安裝之間交換捆綁軟件。

我看了一些關於ServicePermission類和OSGi框架相關的,但在我看來,這些讓網站管理員控制的訪問策略,而不是捆綁製造商,這是我想要的。

回答

1

您的用例似乎相當複雜,所以我不確定這是否會完全回答您的問題。不過,您可以看看Service Hooks,這是OSGi第4版4.2版中添加的一項新功能。

隨着Find Hook它應該能夠「看,減少,的getServiceReferencegetServiceReferences方法的結果。這個鉤子可以刪除服務引用從結果對象,也有效地從主叫隱藏的服務。」 (由Peter Kriens編寫的article

使用此功能,您可以實現自己的機制,讓客戶端軟件包「授權」自己訪問特定服務(或者相反「檢查」客戶端軟件包以確定是否訪問特定服務應該被授予)。

相關問題