首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring Security 前身 Acegi 框架技術深度解析

     編輯:Java 相關知識

框架定位與核心價值

Acegi Security(現 Spring Security)是基於 Spring 的企業級安全框架,通過在 Spring 容器配置 Bean,充分利用 IoC 與 AOP,提供宣告式安全存取控制。雖可用於非 Spring 環境,但與 Spring 整合最自然。其核心優勢:業務代碼零侵入,安全邏輯外部化配置。

三大安全控制維度

維度控制粒度典型場景實現機制
URL 資源路徑模式(Ant/Regex)匿名訪問首頁,登入用戶訪問 /user/**Servlet Filter 鏈攔截 HttpServletRequest
業務方法Bean 方法級所有用戶可查詢,只有管理員可刪除Spring AOP 方法攔截器
領域物件具體實體實例 (ACL)用戶只能修改自己的貼文AfterInvocationProvider + ACL 查詢

技術架構深度剖析

URL 安全:FilterSecurityInterceptor

多個 Servlet Filter 組成鏈,核心 FilterSecurityInterceptor 在請求進入 Controller 前判斷權限。配置範例:

<bean id="filterInvocationInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
    <property name="objectDefinitionSource">
        <value>
            PATTERN_TYPE_APACHE_ANT
            /index.jsp=ROLE_ANONYMOUS
            /user/**=ROLE_USER
            /admin/**=ROLE_ADMIN
        </value>
    </property>
</bean>

方法安全:MethodSecurityInterceptor

Spring AOP 代理目標 Bean,攔截受保護方法。配置支援角色投票、ACL 權限:

<bean id="methodSecurityInterceptor" class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor">
    <property name="objectDefinitionSource">
        <value>
            com.bbs.BbtForum.getRefinedTopicCount=ROLE_ANONYMOUS
            com.bbs.BbtForum.addTopic=ROLE_USER
            com.bbs.BbtForum.updateUser=ROLE_USER,ACL_CONTACT_ADMIN
        </value>
    </property>
</bean>

領域物件安全:ACL 與 AfterInvocationManager

  • ACL (Access Control List):每個領域物件實例關聯權限條目(如:用戶 A 對文檔 101 有 WRITE)。
  • 前置檢查:方法執行前驗證當前用戶 ACL 是否包含目標物件所需權限。
  • 後置過濾:方法返回集合時,過濾掉用戶無權訪問的物件(數據可視域控制)。
  • 建議:數據可視域若極複雜,動態 SQL 往往比 ACL 更簡維護。

AOP 統一觀:Filter 即原生 AOP

Servlet Filter 本質是「請求級切面」,Spring AOP 是「方法級切面」。Acegi 將兩者統一在 AOP 理念下:業務開發完成後,像穿「鐵布衫」一樣透過配置為應用穿上安全防護,零代碼侵入,極致分離關注點。

遷移提示:Acegi → Spring Security

  • 包名變更:org.acegisecurity → org.springframework.security。
  • 命名空間配置:<security:http>、<security:global-method-security> 取代大量 Bean 定義。
  • 核心概念不變:Authentication、Authorization、ACL、Filter Chain、Method Security。

結語

Acegi/Spring Security 證明了「安全即切面」的架構威力。掌握其三大控制維度、Filter 與 AOP 的協作模型、ACL 領域物件保護機制,是構建企業級安全應用的核心能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved