小菜毛毛技術分享

          與大家共同成長

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

          ? URL資源的訪問控制
              如所有用戶(包括其名用戶)可以訪問index.jsp登錄頁面,而只有授權的用戶可以訪問/user/addUser.jsp頁面。Acegi允許通過正則表達式或Ant風格的路徑表達式定義URL模式,讓授權用戶訪問某一URL匹配模式下的對應URL資源。

          ? 業務類方法的訪問控制
              Spring容器中所有Bean的方法都可以被Acegi管理,如所有用戶可以調用BbtForum#getRefinedTopicCount()方法,而只有授權用戶可以調用BbtForum#addTopic()方法。

          ? 領域對象的訪問控制
              業務類方法代表一個具體的業務操作,比如更改、刪除、審批等,業務類方法訪問控制解決了用戶是否有調用某種操作的權限,但并未對操作的客體(領域對象)進行控制。對于我們的論壇應用來說,用戶可以調用BbtForum#updateUser(User user)方法更改用戶注冊信息,但應該僅限于更改自己的用戶信息,也即調用BbtForum#updateUser()所操作的User這個領域對象必須是受限的。

              Acegi通過多個不同用途的Servlet過濾器對URL資源進行保護,在請求受保護的URL資源前,Acegi的Servlet過濾器判斷用戶是否有權訪問目標資源,授權者被開放訪問,而未未被授權者將被阻擋在大門之外。
              Acegi通過Spring AOP對容器中Bean的受控方法進行攔截,當用戶的請求引發調用Bean的受控方法時,Acegi的方法攔截器開始工作,阻止未授權者的調用。 
              
              對領域對象的訪問控制建立在對Bean方法保護的基礎上,在最終開放目標Bean方法的執行前,Acegi將檢查用戶的ACL(Aeccess Control List:訪問控制列表)是否包含正要進行操作的領域對象,只有領域對象被授權時,用戶才可以使用Bean方法對領域對象進行處理。此外,Acegi還可以對Bean方法返回的結果進行過濾,將一些不在當前用戶訪問權限范圍內的領域對象剔除掉——即傳統的數據可視域范圍的控制。一般來說,使用Acegi控制數據可視域未非理想的選擇,相反通過傳統的動態SQL的解決方案往往更加簡單易行。

              從本質特性上來說,Servlet過濾器就是最原始的原生態AOP,所以我們可以說Acegi不但對業務類方法、領域對象訪問控制采用了AOP技術方案,對URL資源的訪問控制也使用了AOP的技術方案。使用AOP技術方案的框架是令人振奮的,這意味著,開發者可以在應用程序業務功能開發完畢后,輕松地通過Acegi給應用程序穿上安全保護的“鐵布衫”。
          1 2 3 4 5 6 7
          posted on 2009-05-24 14:54 小菜毛毛 閱讀(282) 評論(0)  編輯  收藏 所屬分類: 權限管理

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 游戏| 炎陵县| 资兴市| 武鸣县| 嘉义市| 莱芜市| 浑源县| 江西省| 泾源县| 浮梁县| 邓州市| 郧西县| 大姚县| 云南省| 南澳县| 周口市| 沅江市| 福鼎市| 金秀| 红河县| 扬中市| 迁安市| 蓬溪县| 临沂市| 永寿县| 岳西县| 阿克苏市| 易门县| 巴里| 枝江市| 轮台县| 莱州市| 白玉县| 韩城市| 疏附县| 霍城县| 元朗区| 安国市| 高密市| 尤溪县| 凤城市|