• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Acegi的Web系統(tǒng)安全架構(gòu)的設(shè)計(jì)與實(shí)現(xiàn)

    2011-04-20 07:27:20周平杜海舟張超
    關(guān)鍵詞:提供者配置文件管理器

    周平,杜海舟,張超

    (上海電力學(xué)院計(jì)算機(jī)與信息工程學(xué)院,上海 200090)

    Java EE框架日益成熟,為企業(yè)的開(kāi)發(fā)應(yīng)用提供了良好服務(wù)和支持.隨著基于Java EE平臺(tái)企業(yè)級(jí)應(yīng)用程序的日益增加,如何保證Web應(yīng)用程序安全[1]是信息系統(tǒng)架構(gòu)師與開(kāi)發(fā)人員亟待解決的重要問(wèn)題之一.

    Acegi可以為企業(yè)應(yīng)用提供強(qiáng)大而靈活的安全訪問(wèn)控制解決方案.Acegi又稱(chēng)為Spring Security,是基于Spring Framework[2]的安全框架,能夠和目前主流的Web容器無(wú)縫集成.Acegi充分利用Spring的IoC(Inversion of Control)和AOP (Aspect Oriented Programming)功能,提供聲明式安全訪問(wèn)控制的功能[3].

    通過(guò)對(duì)Acegi精心配置和編程就可以實(shí)現(xiàn)復(fù)雜的安全需求.本文主要研究了如何使用Acegi對(duì)應(yīng)用程序?qū)崿F(xiàn)安全訪問(wèn)控制,以上海市研究生學(xué)術(shù)網(wǎng)站為例,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Acegi的安全應(yīng)用系統(tǒng),并驗(yàn)證了Acegi框架對(duì)保護(hù)Web應(yīng)用程序安全、有效、可行.

    1 Acegi安全控制粒度及組件

    1.1 Acegi安全控制粒度

    針對(duì)應(yīng)用程序Acegi提供了3個(gè)方面的安全控制策略,可以實(shí)現(xiàn)業(yè)務(wù)對(duì)象方法級(jí)的安全訪問(wèn)控制粒度.

    (1)對(duì)URL資源的訪問(wèn)控制URL資源包括JSP頁(yè)面、Servlet,以及網(wǎng)站圖片等.客戶(hù)端向Web服務(wù)器發(fā)送一個(gè)URL請(qǐng)求,這個(gè)請(qǐng)求首先被Acegi的Servlet過(guò)濾器攔截.Acegi從配置文件或Web上下文中讀取該用戶(hù)的信息(可以是匿名用戶(hù)),判斷用戶(hù)是否有權(quán)訪問(wèn)目標(biāo)資源.授權(quán)者允許訪問(wèn),而未授權(quán)者將被拒絕.同時(shí)將認(rèn)證成功的用戶(hù)名、密碼、授權(quán)等信息存到Acegi的上下文容器中,目的是為了以后對(duì)資源訪問(wèn)驗(yàn)證授權(quán)時(shí)可以直接從Acegi容器中獲取此用戶(hù)的所有授權(quán).在配置文件中定義用戶(hù)授權(quán)訪問(wèn)的一些URL資源路徑時(shí),可使用正則表達(dá)式.

    (2)對(duì)業(yè)務(wù)類(lèi)的訪問(wèn)控制業(yè)務(wù)類(lèi)即Java Bean或Bean,可實(shí)現(xiàn)業(yè)務(wù)的邏輯功能,包含增加、刪除、查詢(xún)用戶(hù)等方法.在調(diào)用Bean所有方法前,Acegi將檢查用戶(hù)的訪問(wèn)控制列表ACL(Aeccess Control List),查看其是否包含正要進(jìn)行操作的Bean對(duì)象,只有Bean對(duì)象被授權(quán)時(shí),程序才可以調(diào)用該對(duì)象中的方法.因此,可通過(guò)在數(shù)據(jù)庫(kù)中定義用戶(hù)授權(quán)調(diào)用Bean類(lèi)的方法來(lái)控制對(duì)業(yè)務(wù)類(lèi)的訪問(wèn).

    (3)對(duì)Bean方法的訪問(wèn)控制Bean方法訪問(wèn)控制比Bean訪問(wèn)控制粒度更小,前者是對(duì)Bean中所有方法進(jìn)行控制,后者是在未對(duì)Bean訪問(wèn)控制下對(duì)Bean中的部分方法進(jìn)行控制.我們對(duì)用戶(hù)管理Bean增加和刪除用戶(hù)的方法進(jìn)行控制,而查詢(xún)方法不受控制.當(dāng)用戶(hù)的請(qǐng)求引發(fā)調(diào)用Bean的受控方法時(shí),Acegi通過(guò)Spring AOP[4]對(duì)容器中Bean的受控方法進(jìn)行攔截,阻止未授權(quán)者的調(diào)用.Spring容器中所有Bean的方法都可以被Acegi管理.

    1.2 Acegi安全框架主要組件

    Acegi安全框架主要由過(guò)濾器、管理器、提供者和處理程序等4種主要類(lèi)型的組件組成[5].

    (1)過(guò)濾器是處在Acegi最高級(jí)的組件.當(dāng)用戶(hù)請(qǐng)求服務(wù)器資源時(shí),首先被Acegi過(guò)濾器攔截進(jìn)行安全認(rèn)證,但過(guò)濾器本身并沒(méi)有實(shí)現(xiàn)這些安全服務(wù),而是將用戶(hù)信息提交給安全認(rèn)證的管理器處理.

    (2)管理器作為管理者,它本身不提供安全服務(wù),但可以依據(jù)配置文件的不同調(diào)度相應(yīng)的安全提供者程序.Acegi的管理器將在運(yùn)行時(shí)選擇合適的提供者.

    (3)提供者主要提供較低級(jí)的安全服務(wù).提供者與不同類(lèi)型的數(shù)據(jù)通信,并提供用戶(hù)的身份驗(yàn)證信息,如從數(shù)據(jù)庫(kù)或配置文件里讀出用戶(hù)名和密碼,在用戶(hù)的Cookie里讀出身份信息或在Session里讀出身份驗(yàn)證信息,獲取這些信息后進(jìn)行安全驗(yàn)證.

    (4)處理程序供提供者程序調(diào)用,如會(huì)話(huà)無(wú)效處理程序、刪除用戶(hù)的Cookie處理程序等.

    2 Acegi認(rèn)證授權(quán)流程

    Web應(yīng)用程序系統(tǒng)的安全一般由認(rèn)證和授權(quán)兩個(gè)方面構(gòu)成[6].認(rèn)證是確認(rèn)用戶(hù)的身份.在Acegi安全系統(tǒng)中,需要被認(rèn)證的用戶(hù)、系統(tǒng)或代理稱(chēng)為“Principal”.授權(quán)是應(yīng)用程序決定用戶(hù)訪問(wèn)Web內(nèi)容的方法.總的來(lái)說(shuō),決定用戶(hù)的授權(quán)需要先對(duì)用戶(hù)進(jìn)行身份驗(yàn)證.通過(guò)驗(yàn)證后,就可以使用安全服務(wù)或由安全服務(wù)來(lái)決定用戶(hù)的授權(quán).Acegi認(rèn)證授權(quán)流程包括認(rèn)證流程和授權(quán)流程兩部分.

    2.1 認(rèn)證流程

    認(rèn)證流程分為以下4個(gè)步驟.用戶(hù)通過(guò)認(rèn)證后,進(jìn)入授權(quán)流程.認(rèn)證流程見(jiàn)圖1.

    (1)過(guò)濾器攔截URL請(qǐng)求當(dāng)用戶(hù)登陸時(shí),Acegi通過(guò)Authentication Processing Filter過(guò)濾器攔截登陸請(qǐng)求URL,獲取Principal和Credential信息(即用戶(hù)名和密碼).

    (2)認(rèn)證管理器調(diào)用相應(yīng)的提供者驗(yàn)證用戶(hù)名密碼Authentication Processing Filter過(guò)濾器調(diào)用Authentication Manager進(jìn)行驗(yàn)證.Authentication Manager本身沒(méi)有實(shí)現(xiàn)驗(yàn)證的功能,它是通過(guò)調(diào)用提供者(provider)來(lái)進(jìn)行驗(yàn)證的.一個(gè)管理者可以具有多個(gè)提供者程序,但只要有一個(gè)提供者驗(yàn)證通過(guò),管理者就認(rèn)為驗(yàn)證成功.此外,還可以在配置文件中配置提供者程序.

    (3)提供者進(jìn)行驗(yàn)證是真正的驗(yàn)證模塊,并且決定了驗(yàn)證的模式.目前Acegi提供了Dao,Jaas,Cas,X509,Ldap等幾種驗(yàn)證方式.通過(guò)驗(yàn)證后,提供者將Authentication對(duì)象返回.

    (4)認(rèn)證成功保存用戶(hù)信息Authentication Processing Filter將對(duì)象保存到Context Holder中,并為以后的驗(yàn)證使用提供程序性能.

    圖1 Acegi認(rèn)證流程

    2.2 授權(quán)流程

    授權(quán)流程分為攔截用戶(hù)請(qǐng)求、鑒權(quán)和投票3步.

    (1)攔截用戶(hù)請(qǐng)求用戶(hù)提交請(qǐng)求,攔截器Filter Security Interceptor攔截請(qǐng)求,攔截器本質(zhì)上也是一個(gè)過(guò)濾器.

    (2)鑒權(quán)攔截器調(diào)用Access Decision Manager進(jìn)行鑒權(quán),主要是通過(guò)投票的方式來(lái)決定用戶(hù)是否有權(quán)限訪問(wèn)資源.投票包括參與者和策略?xún)煞矫?投票的參與者Decision Voters是Access Decision Manager的一個(gè)屬性,可決定用戶(hù)是否能訪問(wèn)資源.例如Role Voter用來(lái)判斷用戶(hù)是否有訪問(wèn)資源的權(quán)限,Maxuser Voter用以決定某個(gè)資源的訪問(wèn)用戶(hù)數(shù)是否達(dá)到最大值等.投票策略是由Acegi提供的Affirmative Based對(duì)象,其策略就是只要有一個(gè)投票通過(guò)就全體通過(guò).Unanimous Based對(duì)象的策略是必須全體投票通過(guò)才能通過(guò).

    (3)投票投票類(lèi)必須實(shí)現(xiàn)Access Decision Voter接口,可通過(guò)Vote方法來(lái)完成.Vote方法返回一個(gè)int型的數(shù)據(jù)代表投票結(jié)果,它們是Access Decision Voter的3個(gè)靜態(tài)成員屬性,即ACCESS_ ABSTAIN,ACCESS-DENIED和ACCESS_ GRANTED,分別表示棄權(quán)、否決和贊成.

    3 基于Acegi上海市研究生學(xué)術(shù)網(wǎng)站的安全設(shè)計(jì)與實(shí)現(xiàn)

    3.1 網(wǎng)站組織結(jié)構(gòu)

    上海市研究生學(xué)術(shù)網(wǎng)站(以下簡(jiǎn)稱(chēng)學(xué)術(shù)網(wǎng)站)是一個(gè)針對(duì)高校在校學(xué)生學(xué)術(shù)交流的平臺(tái).網(wǎng)站由前臺(tái)與后臺(tái)兩個(gè)部分構(gòu)成.前臺(tái)程序一般用戶(hù)(不需要認(rèn)證)可以進(jìn)行在線瀏覽學(xué)術(shù)會(huì)議公告、會(huì)議新聞、咨詢(xún)會(huì)議問(wèn)題,以及會(huì)議注冊(cè)等.對(duì)于注冊(cè)用戶(hù)(注冊(cè)并通過(guò)認(rèn)證)可以提交會(huì)議論文,并進(jìn)行論文狀態(tài)查詢(xún)等.網(wǎng)站后臺(tái)部分由管理員對(duì)網(wǎng)站內(nèi)容進(jìn)行管理,如發(fā)布會(huì)議信息、公告、新聞、會(huì)議論文管理,以及會(huì)議注冊(cè)人員管理等.學(xué)術(shù)網(wǎng)站采用典型的MVC(即業(yè)務(wù)層Model,界面層View,控制層Controller)架構(gòu),安全設(shè)計(jì)使用AOP技術(shù),其架構(gòu)如圖2所示.

    圖2 網(wǎng)站MVC架構(gòu)設(shè)計(jì)

    3.2 網(wǎng)站安全設(shè)計(jì)

    網(wǎng)站安全設(shè)計(jì)主要包括訪問(wèn)用戶(hù)的分組、網(wǎng)站安全數(shù)據(jù)庫(kù)的設(shè)計(jì),以及Acegi配置文件的編寫(xiě).

    3.2.1 訪問(wèn)用戶(hù)分組

    針對(duì)該網(wǎng)站需求,我們根據(jù)角色不同將用戶(hù)分為4種類(lèi)型:一是一般用戶(hù),不需要注冊(cè),即可訪問(wèn)普通URL資源;二是注冊(cè)用戶(hù),可以向會(huì)議提交論文;三是會(huì)議管理組,即針對(duì)特定會(huì)議的管理員小組,該組成員可以對(duì)特定會(huì)議進(jìn)行管理,具備接受與會(huì)者的注冊(cè)及其論文等功能;四是網(wǎng)站管理組,可分配會(huì)議管理員權(quán)限,該組成員及權(quán)限分配可通過(guò)數(shù)據(jù)庫(kù)表映射.

    3.2.2 網(wǎng)站安全數(shù)據(jù)庫(kù)的設(shè)計(jì)

    根據(jù)Acegi安全保護(hù)粒度所支持的3種類(lèi)型——URL資源、業(yè)務(wù)對(duì)象、業(yè)務(wù)方法等,本網(wǎng)站將安全信息在數(shù)據(jù)庫(kù)中作持久化保存.這些安全信息主要由用戶(hù)表、權(quán)限表、角色表、資源表等組成.在設(shè)計(jì)過(guò)程中遵循一個(gè)用戶(hù)擁有多個(gè)角色,一個(gè)角色擁有多個(gè)相應(yīng)的權(quán)限,一個(gè)權(quán)限可以對(duì)應(yīng)多個(gè)資源的設(shè)計(jì)原則.

    這樣,配置可以更靈活地使用Acegi安全策略.該數(shù)據(jù)庫(kù)設(shè)計(jì)見(jiàn)圖3.

    圖3 Acegi認(rèn)證部分?jǐn)?shù)據(jù)庫(kù)表

    3.2.3 Acegi配置文件的編寫(xiě)

    (1)配置過(guò)濾器鏈通過(guò)Filter Chain Proxy定義一個(gè)Authentication Processing Filter的過(guò)濾器鏈.這個(gè)過(guò)濾器鏈可匹配所有的URL請(qǐng)求.

    (2)配置認(rèn)證過(guò)濾器Authentication Processing Filter配置主要有選擇認(rèn)證管理器、處理用戶(hù)身份認(rèn)證服務(wù)所在的URL(Filter Processes Url)、認(rèn)證成功后轉(zhuǎn)向的URL(Default Target Url),以及認(rèn)證失敗后轉(zhuǎn)向的URL(Authentication Failure Url)等.

    (3)配置認(rèn)證管理者Provider Manager使用Dao來(lái)獲取用戶(hù)名和密碼,Dao Authentication Provider通過(guò)比較從數(shù)據(jù)庫(kù)中獲取的用戶(hù)名和密碼以及來(lái)自認(rèn)證管理器的通過(guò)Authentication對(duì)象中傳入的主體和憑證完成身份驗(yàn)證.

    (4)配置基于Dao的認(rèn)證提供者Dao Authentication Provider主要功能是從數(shù)據(jù)庫(kù)中提取用戶(hù)名和密碼,并存放到Cache中,以便今后再次使用.

    (5)配置授權(quán)管理器這一步主要配置投票策略等.

    4 結(jié)論

    (1)利用Acegi框架可以顯著減輕程序員負(fù)擔(dān),提高工作效率;

    (2)可通過(guò)配置文件靜態(tài)配置資源與角色的映射,但如果在程序運(yùn)行期間用戶(hù)提出動(dòng)態(tài)改變權(quán)限分配要求,則需要?jiǎng)討B(tài)調(diào)整相應(yīng)的配置策略;

    (3)需要對(duì)Acegi與其他開(kāi)源項(xiàng)目特別是SSH開(kāi)源框架的集成作進(jìn)一步研究.

    [1]林青,許鎖坤.基于J2EE的企業(yè)級(jí)系統(tǒng)持久性框架的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007(7):1 732-1 734.

    [2]HARROPRob,MACHACEK Jan.Spring專(zhuān)業(yè)開(kāi)發(fā)指南[M].北京:電子工業(yè)出版社,2006:135-189.

    [3]W ILLIAM Stallings.Cryptography and network security:principles and practices[M].3th Edition.NJ:Prentice Hall,2003:9-89.

    [4]SPRING.Acegi security reference[EB/OL].[2010-05-20]http://www.acegisecurity.org/reference.html.

    [5]BILAL Siddiqui,F(xiàn)REELANCE consultant,WAX-SYS.Securing Java applications with Acegi[EB/OL].[2007-05-09]http://www.ibm.com/developerworks/cn/java/j-acegi1.

    [6]魏楚元,李陶深,張?jiān)龇?J2EE安全機(jī)制的分析與研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2005(6):1 434-1 437.

    (編輯蘇娟)

    猜你喜歡
    提供者配置文件管理器
    提示用戶(hù)配置文件錯(cuò)誤 這樣解決
    應(yīng)急狀態(tài)啟動(dòng)磁盤(pán)管理器
    網(wǎng)絡(luò)交易平臺(tái)提供者的法律地位與民事責(zé)任分析
    法制博覽(2020年2期)2020-04-29 06:45:18
    搭建簡(jiǎn)單的Kubernetes集群
    基于隱私度和穩(wěn)定度的D2D數(shù)據(jù)共享伙伴選擇機(jī)制
    互不干涉混用Chromium Edge
    Windows文件緩沖處理技術(shù)概述
    忘記ESXi主機(jī)root密碼怎么辦
    網(wǎng)絡(luò)言論自由的行政法規(guī)制研究
    做商用車(chē)行業(yè)新材料應(yīng)用解決方案的提供者——訪同元集團(tuán)副總裁趙延?xùn)|
    许昌市| 平谷区| 濉溪县| 永新县| 邻水| 舞阳县| 洛扎县| 海淀区| 江阴市| 鞍山市| 成都市| 开平市| 西乌| 张家界市| 黄陵县| 工布江达县| 苗栗县| 策勒县| 边坝县| 平远县| 海口市| 岗巴县| 昌宁县| 曲阜市| 古丈县| 乡城县| 湖南省| 青川县| 宣城市| 汽车| 五莲县| 望江县| 察隅县| 龙口市| 类乌齐县| 紫云| 十堰市| 长岛县| 夏河县| 新干县| 三明市|