小菜毛毛技術(shù)分享

          與大家共同成長(zhǎng)

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks
          【IT168 專(zhuān)稿】對(duì)于任何一個(gè)完整的應(yīng)用系統(tǒng),完善的認(rèn)證和授權(quán)機(jī)制是必不可少的。Acegi Security(以下簡(jiǎn)稱(chēng)Acegi)是一個(gè)能為基于Spring的企業(yè)應(yīng)用提供強(qiáng)大而靈活安全訪問(wèn)控制解決方案的框架,Acegi已經(jīng)成為Spring官方的一個(gè)子項(xiàng)目,所以也稱(chēng)為Spring Security。它通過(guò)在Spring容器中配置一組Bean,充分利用Spring的IoC和AOP功能,提供聲明式安全訪問(wèn)控制的功能。雖然,現(xiàn)在Acegi也可以應(yīng)用到非Spring的應(yīng)用程序中,但在Spring中使用Acegi是最自然的方式。
          Acegi可以實(shí)現(xiàn)業(yè)務(wù)對(duì)象方法級(jí)的安全訪問(wèn)控制粒度,它提供了以下三方面的應(yīng)用程序的安全:

          ? URL資源的訪問(wèn)控制
              如所有用戶(hù)(包括其名用戶(hù))可以訪問(wèn)index.jsp登錄頁(yè)面,而只有授權(quán)的用戶(hù)可以訪問(wèn)/user/addUser.jsp頁(yè)面。Acegi允許通過(guò)正則表達(dá)式或Ant風(fēng)格的路徑表達(dá)式定義URL模式,讓授權(quán)用戶(hù)訪問(wèn)某一URL匹配模式下的對(duì)應(yīng)URL資源。

          ? 業(yè)務(wù)類(lèi)方法的訪問(wèn)控制
              Spring容器中所有Bean的方法都可以被Acegi管理,如所有用戶(hù)可以調(diào)用BbtForum#getRefinedTopicCount()方法,而只有授權(quán)用戶(hù)可以調(diào)用BbtForum#addTopic()方法。

          ? 領(lǐng)域?qū)ο蟮脑L問(wèn)控制
              業(yè)務(wù)類(lèi)方法代表一個(gè)具體的業(yè)務(wù)操作,比如更改、刪除、審批等,業(yè)務(wù)類(lèi)方法訪問(wèn)控制解決了用戶(hù)是否有調(diào)用某種操作的權(quán)限,但并未對(duì)操作的客體(領(lǐng)域?qū)ο螅┻M(jìn)行控制。對(duì)于我們的論壇應(yīng)用來(lái)說(shuō),用戶(hù)可以調(diào)用BbtForum#updateUser(User user)方法更改用戶(hù)注冊(cè)信息,但應(yīng)該僅限于更改自己的用戶(hù)信息,也即調(diào)用BbtForum#updateUser()所操作的User這個(gè)領(lǐng)域?qū)ο蟊仨毷鞘芟薜摹?

              Acegi通過(guò)多個(gè)不同用途的Servlet過(guò)濾器對(duì)URL資源進(jìn)行保護(hù),在請(qǐng)求受保護(hù)的URL資源前,Acegi的Servlet過(guò)濾器判斷用戶(hù)是否有權(quán)訪問(wèn)目標(biāo)資源,授權(quán)者被開(kāi)放訪問(wèn),而未未被授權(quán)者將被阻擋在大門(mén)之外。
              Acegi通過(guò)Spring AOP對(duì)容器中Bean的受控方法進(jìn)行攔截,當(dāng)用戶(hù)的請(qǐng)求引發(fā)調(diào)用Bean的受控方法時(shí),Acegi的方法攔截器開(kāi)始工作,阻止未授權(quán)者的調(diào)用。 
              
              對(duì)領(lǐng)域?qū)ο蟮脑L問(wèn)控制建立在對(duì)Bean方法保護(hù)的基礎(chǔ)上,在最終開(kāi)放目標(biāo)Bean方法的執(zhí)行前,Acegi將檢查用戶(hù)的ACL(Aeccess Control List:訪問(wèn)控制列表)是否包含正要進(jìn)行操作的領(lǐng)域?qū)ο螅挥蓄I(lǐng)域?qū)ο蟊皇跈?quán)時(shí),用戶(hù)才可以使用Bean方法對(duì)領(lǐng)域?qū)ο筮M(jìn)行處理。此外,Acegi還可以對(duì)Bean方法返回的結(jié)果進(jìn)行過(guò)濾,將一些不在當(dāng)前用戶(hù)訪問(wèn)權(quán)限范圍內(nèi)的領(lǐng)域?qū)ο筇蕹簟磦鹘y(tǒng)的數(shù)據(jù)可視域范圍的控制。一般來(lái)說(shuō),使用Acegi控制數(shù)據(jù)可視域未非理想的選擇,相反通過(guò)傳統(tǒng)的動(dòng)態(tài)SQL的解決方案往往更加簡(jiǎn)單易行。

              從本質(zhì)特性上來(lái)說(shuō),Servlet過(guò)濾器就是最原始的原生態(tài)AOP,所以我們可以說(shuō)Acegi不但對(duì)業(yè)務(wù)類(lèi)方法、領(lǐng)域?qū)ο笤L問(wèn)控制采用了AOP技術(shù)方案,對(duì)URL資源的訪問(wèn)控制也使用了AOP的技術(shù)方案。使用AOP技術(shù)方案的框架是令人振奮的,這意味著,開(kāi)發(fā)者可以在應(yīng)用程序業(yè)務(wù)功能開(kāi)發(fā)完畢后,輕松地通過(guò)Acegi給應(yīng)用程序穿上安全保護(hù)的“鐵布衫”。
          1 2 3 4 5 6 7
          posted on 2009-05-24 14:54 小菜毛毛 閱讀(282) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 權(quán)限管理

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
          相關(guān)文章:
           
          主站蜘蛛池模板: 佛学| 南康市| 调兵山市| 璧山县| 辛集市| 新竹县| 富锦市| 红原县| 永仁县| 临夏市| 曲沃县| 安徽省| 金门县| 新邵县| 休宁县| 珲春市| 河津市| 长海县| 安西县| 汶川县| 广昌县| 新晃| 嘉禾县| 马鞍山市| 凌海市| 陇川县| 大城县| 隆子县| 五常市| 万州区| 全椒县| 阿坝县| 五家渠市| 华蓥市| 天峻县| 东乌珠穆沁旗| 灵武市| 乐东| 玛多县| 马边| 略阳县|