象其他的軟件一樣,Acegi Security也有在整個框架中都會使用的特定核心接口,類,和概念抽象。在手冊的這一部分,在檢視這些規劃和執行Acegi Security集成所必須的核心要素之前,我們先介紹Acegi Security。
第一章. 簡介
1.1. Acegi Security是什么?
Acegi Security為基于J2EE的企業軟件應用提供全面的安全服務。特別是使用領先的J2EE解決方案-Srping框架開發的項目。如果您不是使用Spring開發企業應用,我們溫馨提醒您仔細研究一下。熟悉Spring,尤其是依賴注射原理,會極大的幫助你快速掌握Acegi Security。
人們使用Acegi Security有很多種原因,不過通常吸引他們到這個項目的原因是他們在J2EE的 Servlet Specification 或者 EJB Specification中找不到迫切需要的典型企業應用場景。提到這些規范,特別要提出的是他們不是在WAR或者EAR級別可移植的。這樣,如果你切換服務器環境,一般來說你要在目標環境中花費很多工夫來重新配置你的應用安全。使用Acegi Security解決了這些問題,并且為你提供了很多其他有用的,完全可定制的安全特性。
如你所知,安全包含兩個主要操作。第一個被稱為“認證”,是為用戶建立一個它所聲明的principal。Principal通常代表用戶,設備,或者其他能在你的應用中執行操作的其他系統。“授權”指判定一個principal能否在你的系統中執行某個操作。在到達授權判斷之前,principal的的身份認證已經由認證過程執行過了。這些概念是通用的,不是Acegi Security特有的。
在認證層面,Acegi Security廣泛支持各種認證模塊。這些認證模塊絕大多數是第三方提供,或者相關的標準組織開發的,例如Internet Engineering Task Force。作為補充,Acegi Security自己也提供了一些認證功能。Acegi Security當前支持如下的認證技術。
• HTTP BASIC authentication headers (an IEFT RFC-based standard)
• HTTP Digest authentication headers (an IEFT RFC-based standard)
• HTTP X.509 client certificate exchange (an IEFT RFC-based standard)
• LDAP (a very common approach to cross-platform authentication needs, especially in large environments)
• Form-based authentication (for simple user interface needs)
• Computer Associates Siteminder
• JA-SIG Central Authentication Service (otherwise known as CAS, which is a popular open source single sign on system)
• Transparent authentication context propagation for Remote Method Invocation (RMI) and HttpInvoker (a Spring remoting protocol)
• Auto
• Anonymous authentication (allowing every call to auto
• Run-as authentication (which is useful if one call should proceed with a different security identity)
• Java Authentication and Authorization Service (JAAS)
• Container integration with JBoss, Jetty, Resin and Tomcat (so you can still use Container Manager Authentication if desired)
• 你自己的認證系統 (如下所示)
很多獨立軟件供應商(ISVs)選擇Acegi Security是因為它具有豐富的認證模塊。這樣無論他們的終端客戶需要什么,他們都可以快速集成到他們的系統中,不用花很多工夫或者讓終端客戶改變環境。如果Acegi Security System for Spring的7個認證模塊還沒有滿足你的需求的話,Acegi Security是一個開放的系統,很容易寫你自己的認證機制。許多Acegi Security的企業用戶需要和“遺留”系統集成,這些遺留系統不遵循任何安全標準,Acegi Security能夠和這樣的系統“合作愉快”。
有時候基本的認證是不夠的。有時候你需要根據principal和應用交互的方式來應用不同的安全措施。例如,你可能為了防止密碼被竊取,或者防止終端用戶受到“中間人”攻擊,需要保證到達的是請求通過HTTPS的。或者,你要確保是一個真正的人而不是某種機器人或者自動進程在發送請求。這對于保護密碼恢復不受暴力破解攻擊,或者防止他人很容易的復制你應用的關鍵內容。為了幫助你實現這些目標,Acegi Security完全支持自動“通道安全”("channel security"),以及集成Jcaptcha來檢測是否是真正人類用戶。
Acegi Security不僅提供了認證功能,而且提供了完備的授權功能。在授權方面主要有三個領域,授權web請求,授權方法調用,授權存取單個領域對象實例。為了幫助你理解這些區別,對照考慮一下Servlet 規范中的web模式安全的授權功能,EJB容器管理安全以及文件系統安全。Acegi Security提供了所有這些重要領域的完備功能,我們將在本手冊的后面介紹。
1.2. 歷史
Acegi Security始于2003年晚期,當時在Spring Developers郵件列表中有人提問是否有人考慮提供一個基于Spring的安全實現。當時,Srping的社區是相對比較小的(尤其是和今天相比!),實際上Spring本身也是2003年早期才作為一個SourceForge項目出現的。對此問題的回應是它確實是一個值得研究的領域,雖然限于時間無法進行深入。
有鑒于此,這個簡單的安全實現雖然構建了但是并沒有發布。幾周以后,Spring社區的其他成員詢問了安全框架,代碼就被提供給了他們。
隨后又有人請求,到了2004年一月,大約有20人左右在使用這些代碼。另外一些人加入到這些先行的用戶中來,并建議建立一個SourceForge項目,這個項目在2004年3月建立起來。
在早期,該項目自身并布具備任何認證模塊。認證過程依賴容器管理安全(Container Managed Security)而Acegi Security注重授權。在一開始這樣是合適的,但是隨著越來越多的用戶要求額外的容器支持,基于容器的認證的限制就顯示出來了。另外一個相關的問題是添加新的JAR文件到容器的classpath,通常會讓最終用戶感到困惑并且配置錯誤。
隨后,Acegi Security加入了認證服務。大約一年后,Acegi Security成為了一個Spring Framework官方子項目。在2年半多的在多個軟件項目中的活躍使用以及數以百計的改進和社區貢獻,
今天,Acegi Security成為一個強大而活躍的社區。在支持論壇上有數以千計的帖子。14位開發人員專職開發,一個活躍的社區也定期共享補丁并支持他們的同儕。
1.3. 發行版本號
理解Acegi Security的版本號是非常好處的,它可以幫助你判定升級的到新的版本是否需要花費很大精力。我們的正式發行版本使用Apache Portable Runtime Project版本指引,可以在下述網站查看http://apr.apache.org/versioning.html。為了您查看方便,我們引用該頁的說明部分如下:
“版本號由三個部分的整數組成:主版本號(MAJOR)、副版本號(MINOR)、補丁版本號(PATCH)。主要的含義是主版本號(MAJOR)是不兼容的,API大規模升級。副版本號(MINOR)在源文件和可執行版和老版本保持兼容,補丁版本號(PATCH)則意味著向前和向后的完全兼容”。
安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢】