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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Acegi 安全框架

發布時間:2024/4/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Acegi 安全框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.diybl.com/course/3_program/java/javajs/2007117/84951.html

1、spring?? 框架

  Spring框架是由Open?? Source開發的一個優秀的多層J2EE系統框架,它為企業級應用提供了一個非常輕量級的解決方案,大大地降低了應用開發的難度與復雜度,提高了開發的速度。

  Spring框架的核心是IoC和AOP。IoC是一種設計模式,即IoC模式。IoC模式進一步降低了類之間的耦合度,并且改變了傳統的對象的創建方法,實現了一種配置式的對象管理方式,Spring框架中由IoC容器負責配置性的對象的管理。IoC模式極大的提高了系統開發與維護的靈活性。

  AOP是一種編程模式,它是從系統的橫切面關注問題。傳統的面向對象編程OOP主要從系統的垂直切面對問題進行關注,對于系統的橫切面關注很少,或者說很難關注,這樣當考慮到系統的安全性、日志、事務以及其他企業級服務時,OOP就無能為力了,只能在所有相關類中加入類似的系統服務級的代碼。AOP為解決系統級服務問題提供了一種很好的方法。AOP將系統服務分解成方面看待,并為類提供一種聲明式系統服務方式。Java類不需要知道日志服務的存在也不需要考慮相關的代碼。所以,用AOP編寫的應用程序是松耦合的,代碼的復用性就提高了。

  2、Acegi?? 安全框架

  借助于Spring框架,開發者能夠快速構建結構良好的WEB應用,但現有的Spring框架本身沒有提供安全相關的解決方案。同樣來自于Open?? Source?? 社區的Acegi安全框架為實現基于Spring框架的WEB應用的安全控制提供了一個很好的解決方案。Acegi本身就是利用Spring提供的IoC和AOP機制實現的一個安全框架,它將安全性服務作為J2EE平臺中的系統級服務,以AOP?? Aspect形式發布。所以借助于Acegi安全框架,開發者能夠在Spring使能應用中采用聲明式方式實現安全控制。

  Acegi安全框架主要由安全管理對象、攔截器以及安全控制管理組件組成。安全管理對象是系統可以進行安全控制的實體,Acegi框架主要支持方法和URL請求兩類安全管理對象;攔截器是Acegi中的重要部件,用來實現安全控制請求的攔截,針對不同的安全管理對象的安全控制請求使用不同的攔截器進行攔截;安全控制管理部件是實際實現各種安全控制的組件,對被攔截器攔截的請求進行安全管理與控制,主要組件包括實現用戶身份認證的AuthenticationManager、實現用戶授權的AccessDecisionManager?? 以及實現角色轉換的RunAsManager。安全管理對象、攔截器以及安全控制管理組件三者關系如圖1所示。

  Acegi安全框架在基于Spring框架的系統中的應用

  1、分析系統安全性需求

  首先,需要明確進行安全控制的對象,可為業務方法和URL資源。

  其次,需要進一步明確,系統身份認證資料和資源授權信息的數據持久化形式。

  2、Acegi安全系統數據庫設計

  在Acegi框架中支持多種安全信息的持久化方式,可以在配置文件中配置或存放在關系數據庫。由于在實際應用中,需求是經常發生變化的。所以,在配置文件中配置是滿足不了實際應用需求的。然而,Acegi本身對權限表的設計非常簡單,users表{username,password,enabled}?? 和authorities表{username,authority},這樣簡單的設計肯定無法適用復雜的權限需求。為了解決權限管理的復雜性,在這里引入了role(角色)的概念,使得用戶和權限分離,一個用戶擁有多個角色,一個角色擁有多個相應的權限,這樣就更靈活地支持安全策略。

  同時,為了更好地配合Acegi安全框架,還引入resource(資源)的概念,資源可分為URL和FUNCTION(方法)兩種,一個權限可以對應多個資源。具體的數據庫設計見圖2。

?

圖1?? 安全管理對象,攔截器和安全管理組件交互圖

?

圖2?? Acegi安全控制系統數據庫設計?

3、認證管理器,授權管理器的配置

  實現系統的安全控制,首先需要對系統的安全管理器和授權管理器進行配置,系統進行認證和授權需要獲取安全信息,Acegi本身提供了對認證信息的獲取機制,在實現認證與授權過程中,系統將主動根據配制信息和相應的信息解釋安全信息的讀取。圖3給出了一個將用戶安全信息存儲在數據庫中的認證管理器的配置示意圖。

  對應于圖示的XML配置文件的代碼如下:

?

?

?

?


  授權管理器的配置方法與認證管理器的配置基本類似,這里不再討論。

  4、安全請求攔截器的配置

  以上配置完成后,就需要配置安全攔截器。不同的安全管理對象需要使用不同的安全攔截器。對于方法級的安全認證需要使用的攔截器為MethodSecurityInterceptor,而應用于URL資源的安全攔截器為FilterSecurityInterceptor?? 。其中,MethodSecurityInterceptor攔截器是借助于Spring?? Aop實現的,而FilterSecurityInterceptor攔截器是借助于Servlet?? Filter?? 實現的。本文以URL資源請求的安全攔截器為例說明配置情況。

  由于URL資源請求安全攔截是借助于過濾器進行的。因此首先要配置Acegi?? Servlet過濾器。過濾器類似于AOP?? Around裝備,實現在web資源調用前后進行的一些操作6種過濾器,他們依次構成Servlet過濾器鏈,依次處理客戶請求。需要注意的是過濾器配置的順序是不能交換的,當不需要使用某個過濾器時,可直接將其刪除和注釋。過濾器在web.xml中配置形式為

?

顯示代碼打印
01 <filter>?

02  <filter-name>Acegi?? HTTP?? Request?? Security?? Filter</filter-name>?

03  <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>?

04  <init-param>?

05   <param-name>targetClass</param-name>?

06   <param-value>?

07    Org.acegisecurity.intercept.web.SecurityEnforcementFilter?

08   </param-value>?

09  </init-param>?

10 </filter>?

11 <filter-mapping>?

12  <filter-name>Acigi?? HTTP?? Request?? Security?? Filter</filter-name>?

13  <url-pattern>/*</url-pattern>?

14 </filter-mapping>???

15???

16   在spring?? applicationContext.xml文件中的配置形式為?

17???

18 <bean?? id=”securityEnforcementFilter”?? class=””>?

19  <property?? name=”filterSecurityInterceptor”>?

20   <ref?? bean=”filterInvocationInteceptor”/>?

21  </property>?

22  <property?? name=”authenticationEntryPoint”>?

23   <ref?? bean=”authenticationProcessingFilterEntryPoint”/>?

24  </property>
?

?

  以上代碼是SecurityEnforcementFilter的配置,該過濾器對用戶是否有權訪問web資源作出最后的決定。其它的過濾器的配置類同。
配置完過濾器后,需要對攔截器FilterSecurityInterceptor進行配置,

?


  objectDefinitionSource屬性定義了那些受保護的URL資源,其中引用了一個本地對象filterObjectDefinitionSource。filterObjectDefinitionSource類從數據庫中讀取需要保護的URL安全信息,它擴展了PathBasedFilterInvocationDefinition?? Map類。
同樣,實現了另外一個methodObjectDefinitionSource類從數據庫中讀取需要保護的FUNCTION資源,它擴展了MethodDefinitionMap類。限于篇幅,在這里就不列出具體實現的源代碼。

?

  結束語

  由于Spring在越來越多的項目中的應用,因此基于Spring應用的安全控制系統的研究就顯得非常重要。Acegi提供了對Spring應用安全的支持,然而?? Acegi本身提供的實例并不能滿足大規模的復雜的權限需求,本文通過擴展Acegi的數據庫設計即可滿足復雜的權限需求。然而,怎樣將Acegi應用到非Spring的系統中,還有待進一步研究。
文章出處:飛諾網(www.diybl.com):http://www.diybl.com/course/3_program/java/javajs/2007117/84951.html

?

總結

以上是生活随笔為你收集整理的Acegi 安全框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。