acegi

在Acegi安全系統中,需要被認證的用戶,系統或代理稱為"Principal"。Acegi安全系統和其他的安全系統不同,它並沒有角色和用戶組的概念。

基本介紹

  • 中文名:acegi
  • 用於SpringFramework的安全框架
  • 提供:安全和認證安全服務
  • 組件: Authentication
介紹,系統設計,安全管理對象,

介紹

Acegi安全系統,是一個用於SpringFramework的安全框架,能夠和目前流行的Web容器無縫集成。它使用了Spring的方式提供了安全和認證安全服務,包括使用Bean Context,攔截器和面向接口的編程方式。因此,Acegi安全系統能夠輕鬆地適用於複雜的安全需求。
Acegi成為Spring子項目後改名為Spring Security。查看安全許可權管理手冊。
安全涉及到兩個不同的概念,認證和授權。前者是關於確認用戶是否確實是他們所宣稱的身份。授權則是關於確認用戶是否有允許執行一個特定的操作的許可權。

系統設計

關鍵組件
Acegi安全系統包含以下七個關鍵的功能組件:
1 Authentication對象,包含了Principal,Credential和Principal的授權信息。同時還可以包含關於發起認證請求的客戶的其他信息,如IP位址
2 ContextHolder對象,使用ThreadLocal儲存Authentication對象的地方。
3 AuthenticationManager,用於認證ContextHolder中的Authentication對象。
4 AccessDecissionManager,用於授權一個特定的操作。
5 RunAsManager,當執行特定的操作時,用於選擇性地替換Authentication對象。
6 Secure Object攔截器,用於協調AuthenticationManager,AccessDecissionManager,RunAsManager和特定操作的執行。
7 ObjectDefinitionSource,包含了特定操作的授權定義。
這七個關鍵的功能組件的關係如下圖所示(圖中灰色部分是關鍵組件):

安全管理對象

Acegi安全系統目前支持兩類安全管理對象。
第一類的安全管理對象管理AOP Alliance的MethodInvocation,開發人員可以用它來保護Spring容器中的業務對象。為了使Spring管理的Bean可以作為MethodInvocation來使用,Bean可以通過ProxyFactoryBean和BeanNameAutoProxyCreator來管理,就像在Spring的事務管理一樣使用。
第二類是FilterInvocation。它用過濾器(Filter)來創建,並簡單地包裝了HTTP的ServletRequest,ServletResponse和FilterChain。FilterInvocation可以用來保護HTTP資源。通常,開發人員並不需要了解它的工作機制,因為他們只需要將Filter加入web.xml,Acegi安全系統就可以工作了。
安全配置參數
每個安全管理對象都可以描述數量不限的各種安全認證請求。例如,MethodInvocation對象可以描述帶有任意參數的任意方法的調用,而FilterInvocation可以描述任意的HTTP URL。
Acegi安全系統需要記錄套用於每個認證請求的安全配置參數。例如,對於BankManager.getBalance(int accountNumber)方法和BankManager.approveLoan(int applicationNumber)方法,它們需要的認證請求的安全配置很不相同。
為了保存不同的認證請求的安全配置,需要使用配置參數。從實現的視角來看,配置參數使用ConfigAttribute接口來表示。Acegi安全系統提供了ConfigAttribute接口的一個實現,SecurityConfig,它把配置參數保存為一個字元串。
ConfigAttributeDefinition類是ConfigAttribute對象的一個簡單的容器,它保存了和特定請求相關的ConfigAttribute的集合。
當安全攔截器收到一個安全認證請求時,需要決定套用哪一個配置參數。換句話說,它需要找出套用於這個請求的ConfigAttributeDefinition對象。這個查找的過程是由ObjectDefinitionSource接口來處理的。這個接口的主要方法是public ConfigAttributeDefinition getAttributes(Object object),其中Object參數是一個安全管理對象。因為安全管理對象包含有認證請求的詳細信息,所以ObjectDefinitionSource接口的實現類可以從中獲得所需的詳細信息,以查找相關的ConfigAttributeDefiniton對象。

相關詞條

熱門詞條

聯絡我們