2013-03-31 143 views
9

我正在尋找一種安全框架,該框架允許基於角色的OSGi服務安全性以及CXF web服務。 前段時間我已經使用過彈簧安全功能,但就我們現在轉向藍圖而言,根據我的理解,它不再是一種選擇。要配置訪問規則,我想主要使用標準@RolesAllowed annotation。那麼我最好的出發點是什麼?我也想過把自己作爲一個藍圖擴展來實現,但我更喜歡現有的解決方案。OSGi的基於角色的安全性

+0

我在我的應用程序中配置了Shiro,運行在Karaf上。我設法配置安全管理器,所以我可以使用存儲在數據庫中的憑證登錄/註銷。現在我正在努力尋找一種方法來使用這些註釋。你找到了解決方案嗎? – jhamon

+0

最後我沒有使用shiro。相反,我使用CXF JaasLoginFeature。它使用憑證進行jaas登錄,然後可以從同一個線程檢索憑證。例如,aries blueprint-authz模塊使用jaas登錄。 –

+0

CXF Jaas是否也支持類似Shiro提供的'Session'功能? – jhamon

回答

8

我建議你用Apache Shiro代替,http://shiro.apache.org/

它爲認證,授權,加密和會話管理提供了簡單的API。它也可以輕鬆部署在OSGI容器內部。阿帕奇四郎有些職業選手都在這裏Apache Shiro vs Java EE native APIs

+0

Shiro位於我正在調查的框架列表中。是否有一些文件如何設置爲OSGi?特別是我正在尋找一些關於如何將它用於普通OSGi服務和CXF服務的示例/提示。我發現的例子總是引用java web(servlet)應用程序。 因此,例如,如果我創建一個OSGi服務,我如何啓用shiro並如何使它符合RolesAllowed註釋?或者,如果我打電話給OSGi服務,我該如何進行身份驗證。我想會有一些本地線程來保存我的認證信息。 –

5

列在我創建了一個基於JAAS和Java EE annoations授權的藍圖擴展(@RolesAllowed,@PermitAll,@DenyAll)的平均時間。您可以將擴展名添加到任何藍圖文件。然後,它會掃描所有bean以查找這些通知,並在發現它們時攔截呼叫。它使用現有的JAAS上下文來獲取用戶的角色。

這樣做的先決條件是做JAAS登錄。我還創建了CXF JAASAuthentication功能,該功能基於基本身份驗證或ws安全用戶名主體登錄用戶。該模塊與Apache Karaf JAAS支持一起工作。所有卡拉夫用戶和角色都適用。

我將創建一個教程,演示如何在使用包含授權模塊的aries藍圖版本之後使用所有這些。同時,如果你嘗試一下並報告你有任何問題,我會很高興。

Btw。 karaf的另一種方法是內置於karaf 3+中的基於角色的OSGi服務訪問控制。它不適用於註釋,但也易於使用。請參閱 http://coderthoughts.blogspot.de/2013/10/role-based-access-control-for-karaf.html

+0

基督徒,你有沒有鏈接你做了什麼,因爲我會有興趣做基本相同的這(意思是你的藍圖擴展)謝謝。 –

+0

這應該有助於https://github.com/cschneider/Karaf-Tutorial/blob/master/cxf/personservice/server/src/main/resources/OSGI-INF/blueprint/blueprint.xml。註釋掉的配置會激活authz模塊以允許@RolesAllowed並且JAASAuthenticationFeature負責登錄。 –