Acegi 01 Acegi安全系統介紹

2021-08-29 08:23:52 字數 2249 閱讀 6304

1acegi安全系統介紹

acegi始於

2023年晚期,當時在spring developers郵件列表中有人提問是否有人考慮提供乙個基於spring的安全實現。當時,srping的社群是相對比較小的(尤其是和今天相比!),實際上spring本身也是2023年早期才作為乙個sourceforge專案出現的。對此問題的回應是它確實是乙個值得研究的領域,雖然限於時間無法進行深入。

有鑑於此,這個簡單的安全實現雖然構建了但是並沒有發布。幾周以後,

spring社群的其他成員詢問了安全框架,**就被提供給了他們。隨後又有人請求,到了2023年一月,大約有20人左右在使用這些**。另外一些人加入到這些先行的使用者中來,並建議建立乙個sourceforge專案,這個專案在2023年3月建立起來。

在早期,該專案自身並不具備任何認證模組。認證過程依賴容器管理安全(

container managed security)而acegi注重授權。在一開始這樣是合適的,但是隨著越來越多的使用者要求額外的容器支援,基於容器的認證的限制就顯示出來了。另外乙個相關的問題是新增新的jar檔案到容器的classpath,通常會讓終端使用者感到困惑並且配置錯誤。

隨後, acegi加入了認證服務。大約一年後,acegi成為了乙個spring framework官方子專案。在2年半多的在多個軟體專案中的活躍使用以及數以百計的改進和社群貢獻,1.0.0最終版在2023年5月發布。

今天, acegi security成為乙個強大而活躍的社群。在支援論壇上有數以千計的帖子。14個開發人員專職開發,乙個活躍的社群也定期共享補丁並支援他們的同儕。

現在的 acegi是乙個能夠為基於spring的應用系統提供描述性安全保護的安全框架。它提供了一組可以在spring應用上下文中配置的bean,充分利用了spring對依賴注入和面向切面編成的支援。

當保護 web應用系統時,acegi使用servlet過濾器來攔截servlet請求,以實施身份認證並強制安全性。並且,acegi採取了一種獨特的機制來宣告servlet過濾器,使你可以使用spring ioc注入它所依賴的其他物件。(該方法建議檢視原始碼,會有些啟發)

acegi也能夠通過保護方法呼叫在更底層的級別上強制安全性。使用

spring aop,acegi**物件,將「切面」應用於物件,以確保使用者只有在擁有恰當授權時才能呼叫受保護的方法。

無論你正在保護乙個

web應用還是需要方法呼叫級別的安全性,acegi都是使用如下的4個主要元件來實施安全性:

安全***、認證管理器、訪問決策管理器、執行身份管理器。

1.1安全***

在acegi中,我們可以把安全***想象成一扇上著兩把鎖的大門(這兩把鎖有著嚴格的規定,必須先開第一把鎖,然後才能開第二把鎖),它阻止對應用系統中受保護資源的訪問。為了要訪問受保護的資源,你首先必須向這扇上著鎖的大門提供鑰匙(對於系統來說,通常就是使用者名稱和密碼)來開第一把鎖,然後才是第二把鎖。

1.2認證管理器

認證管理器就是那第一把鎖,當你向那扇上著鎖的大門提供了鑰匙後,即你向系統提供了使用者名稱和密碼後,認證管理器就要負責認證你的鑰匙是否有效,即你的使用者名稱和密碼是否正確。如果鑰匙有效,使用者名稱密碼正確,那麼認證管理器就要給你乙個可以代表你身份的標識,即確定你是誰,那麼你開啟了第一把鎖,然後你要去開第二把鎖才能訪問被保護的資源。

1.3訪問決策管理器

訪問決策管理器就是那第二把鎖,你要向第二把鎖提供鑰匙,來開啟它。對於認證管理器來說,這第二把鑰匙就是你的授權,如果你被授予了訪問該受保護資源的許可權,那麼訪問決策管理器就會幫你開啟第二把鎖。這樣安全***的那扇大門就會為你開啟,讓你訪問受保護的資源。

1.4執行身份管理器

當你開啟了認真管理器和訪問決策管理器這兩把鎖,並開啟了安全***這扇大門之前,安全***也許還有一件事情要做。

即時你已經通過身份認證並且已經獲得了訪問被保護資源的授權,門後也許還有更多的安全限制在等著你。比如,你也許已被授權訪問檢視某個

web頁面,但用於建立該頁面的物件與許和頁面本身有不同的安全需求。乙個執行身份管理器可以用另乙個身份替換你的身份,從而允許你訪問應用系統內部更深處的受保護物件。

執行身份管理器的用處在大多數應用系統中是有限的。幸運的是,當你使用

acegi保護應用系統時可以不必使用甚至不必完全理解執行身份管理器。

簡介 Acegi安全框架

spring沒有提供j2ee安全性相關的抽象,而是單獨地使用acegi安全框架來實現應用地安全。事實上安全主要是兩個部分,認證和授權。認證就是看看使用者是不是它宣稱的人,授權就是決定已認證的使用者 以角色區分 是否有權對資源訪問和操作。acegi能對web資源和pojo進行保護,主要的元件有安全性 ...

Acegi安全系統介紹

acegi是spring framework 下最成熟的安全系統,它提供了強大靈活的企業級安全服務,如完善的認證和授權機制,http資源訪問控制,method 呼叫訪問控制,access control list acl 基於物件例項的訪問控制,yale central authentication...

在專案中應用Spring的Acegi安全框架的步驟

0 準備 配置資料來源 1 配置認證管理器 org.acegisecurity.providers.providermanager 1 1宣告乙個dao認證提供者 即 配置authenticationdao的例項 依賴0步驟 acegi提供了兩個可供選擇的authenticationdao的例項 i...