日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

idea中使用osgi_OSGi中的权限

發(fā)布時(shí)間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 idea中使用osgi_OSGi中的权限 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

idea中使用osgi

在上一篇文章中 ,我們介紹了為Java應(yīng)用程序?qū)崿F(xiàn)沙箱的方法,在其中我們可以安全地運(yùn)行移動代碼 。

這篇文章探討了如何在OSGi環(huán)境中執(zhí)行相同的操作。

OSGi

OSGi規(guī)范 為Java定義了一個(gè)動態(tài)模塊系統(tǒng) 。 因此,它是實(shí)施那種可以使您的應(yīng)用程序動態(tài)添加移動代碼的插件系統(tǒng)的理想人選。

在OSGi的安全建立在Java 2安全架構(gòu),我們討論了前面 ,這樣你就可以重新使用您關(guān)于知識的代碼簽名等。

但是,OSGi進(jìn)一步走了幾步。

吊銷權(quán)限

Java權(quán)限模型的弱點(diǎn)之一是,您只能顯式授予權(quán)限,而不能撤銷它們。 在很多情況下,您都希望允許所有內(nèi)容,但特殊情況除外。

不能使用標(biāo)準(zhǔn)Java權(quán)限來執(zhí)行此操作,但是幸運(yùn)的是,OSGi引入了一種解決方案。

缺點(diǎn)是OSGi引入了自己的語法來指定策略。

以下示例顯示如何拒絕com.acme.secret子包的PackagePermission :

DENY {( ..PackagePermission "com.acme.secret.*" "import,exportonly" ) } "denyExample"

(在本示例及以下示例中,我給出了權(quán)限類的簡單名稱,而不是全限定名稱。我通過在簡單名稱前面加上..暗示這一點(diǎn).. )

PackagePermission是OSGi定義的用于對包導(dǎo)入和導(dǎo)出進(jìn)行授權(quán)的權(quán)限。 您的應(yīng)用程序可以使用這樣的策略來確保移動代碼無法調(diào)用給定程序包中的類,例如,以限制對數(shù)據(jù)庫的直接訪問。

權(quán)限的可擴(kuò)展條件

OSGi帶來的第二個(gè)改進(jìn)是可以在運(yùn)行時(shí)動態(tài)評估授予權(quán)限的條件。

以下示例顯示如何有條件地授予ServicePermission :

ALLOW {[ ..BundleSignerCondition "* ; o=ACME" ]( ..ServicePermission "..ManagedService" "register" ) } "conditionalExample"

ServicePermission是OSGi定義的權(quán)限,用于限制對OSGi服務(wù)的訪問。

條件是方括號之間的部分。 OSGi定義了兩個(gè)條件,它們對應(yīng)于常規(guī)Java策略中的signedBy和codeBase構(gòu)造。

您還可以定義自己的條件 。 該規(guī)范給出了有關(guān)實(shí)施條件的詳細(xì)說明,尤其是有關(guān)性能的說明。

不同類型的權(quán)限

OSGi帶給Java權(quán)限模型的最后一項(xiàng)創(chuàng)新是存在不同類型的權(quán)限。

捆綁包可以指定自己的權(quán)限。 這并不意味著捆綁包可以為其授予權(quán)限,而是可以指定其運(yùn)行所需的最大特權(quán)。 這些權(quán)限稱為本地權(quán)限

OSGi框架確保該捆綁包永遠(yuǎn)不會擁有比本地權(quán)限更多的權(quán)限,從而實(shí)現(xiàn)了最小特權(quán)的原則 。

實(shí)際上,該說法并不完全正確。 每個(gè)捆綁軟件都將具有在OSGi環(huán)境中運(yùn)行所需的某些權(quán)限,例如能夠讀取org.osgi.framework.*系統(tǒng)屬性。

這些權(quán)限稱為隱式權(quán)限 ,因?yàn)槊總€(gè)捆綁軟件都將擁有它們,而不管這些權(quán)限是否明確授予捆綁軟件。

權(quán)限的最終類型是系統(tǒng)權(quán)限 。 這些是授予捆綁軟件的權(quán)限。

有效權(quán)限是在運(yùn)行時(shí)檢查的一組權(quán)限:

effective = (local ∩ system) ∪ implicit

本地權(quán)限啟用審核。 在將捆綁軟件安裝到OSGi環(huán)境之前,您可以檢查OSGI-INF/permissions.perm的捆綁軟件許可資源 ,以查看捆綁軟件需要哪些許可。

如果您不滿意向捆綁軟件授予這些權(quán)限,則可以決定不安裝捆綁軟件。 關(guān)鍵是您無需運(yùn)行捆綁軟件,也無需訪問其源代碼就可以了解所有這些信息。

集成到Java權(quán)限模型中

OSGi框架通過將ProtectionDomain子類化,將其擴(kuò)展的權(quán)限模型集成到標(biāo)準(zhǔn)Java權(quán)限模型中。

每個(gè)捆綁軟件都會為此目的獲得一個(gè)BundleProtectionDomainImpl 。

這種方法使OSGi可以利用您已經(jīng)了解的標(biāo)準(zhǔn)Java權(quán)限模型,從而可以重用該領(lǐng)域的大部分技能。 您唯一需要重新學(xué)習(xí)的就是如何編寫策略。

權(quán)限模型比較

為了透視OSGi權(quán)限模型,請考慮以下比較表,該表使用了XACML規(guī)范中的術(shù)語:

標(biāo)準(zhǔn)Java OSGi 特效 目標(biāo),條件 組合算法
權(quán)限模型
許可證 允許,拒絕
codeBase,已簽名 codeBase,signedBy,自定義條件
先申請 首先適用,本地/系統(tǒng)/隱式

從該表中可以看到,OSGi模型比標(biāo)準(zhǔn)Java權(quán)限模型更具表現(xiàn)力,盡管不如XACML表現(xiàn)力強(qiáng)。

參考: 安全軟件開發(fā)博客上來自我們JCG合作伙伴 Remon Sinnema的OSGi許可 。

翻譯自: https://www.javacodegeeks.com/2012/11/permissions-in-osgi.html

idea中使用osgi

總結(jié)

以上是生活随笔為你收集整理的idea中使用osgi_OSGi中的权限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。