象其他的軟件一樣,Acegi Security也有在整個(gè)框架中都會(huì)使用的特定核心接口,類,和概念抽象。在手冊(cè)的這一部分,在檢視這些規(guī)劃和執(zhí)行Acegi Security集成所必須的核心要素之前,我們先介紹Acegi Security。
第一章. 簡(jiǎn)介
1.1. Acegi Security是什么?
Acegi Security為基于J2EE的企業(yè)軟件應(yīng)用提供全面的安全服務(wù)。特別是使用領(lǐng)先的J2EE解決方案-Srping框架開(kāi)發(fā)的項(xiàng)目。如果您不是使用Spring開(kāi)發(fā)企業(yè)應(yīng)用,我們溫馨提醒您仔細(xì)研究一下。熟悉Spring,尤其是依賴注射原理,會(huì)極大的幫助你快速掌握Acegi Security。
人們使用Acegi Security有很多種原因,不過(guò)通常吸引他們到這個(gè)項(xiàng)目的原因是他們?cè)?/span>J2EE的 Servlet Specification 或者 EJB Specification中找不到迫切需要的典型企業(yè)應(yīng)用場(chǎng)景。提到這些規(guī)范,特別要提出的是他們不是在WAR或者EAR級(jí)別可移植的。這樣,如果你切換服務(wù)器環(huán)境,一般來(lái)說(shuō)你要在目標(biāo)環(huán)境中花費(fèi)很多工夫來(lái)重新配置你的應(yīng)用安全。使用Acegi Security解決了這些問(wèn)題,并且為你提供了很多其他有用的,完全可定制的安全特性。
如你所知,安全包含兩個(gè)主要操作。第一個(gè)被稱為“認(rèn)證”,是為用戶建立一個(gè)它所聲明的principal。Principal通常代表用戶,設(shè)備,或者其他能在你的應(yīng)用中執(zhí)行操作的其他系統(tǒng)。“授權(quán)”指判定一個(gè)principal能否在你的系統(tǒng)中執(zhí)行某個(gè)操作。在到達(dá)授權(quán)判斷之前,principal的的身份認(rèn)證已經(jīng)由認(rèn)證過(guò)程執(zhí)行過(guò)了。這些概念是通用的,不是Acegi Security特有的。
在認(rèn)證層面,Acegi Security廣泛支持各種認(rèn)證模塊。這些認(rèn)證模塊絕大多數(shù)是第三方提供,或者相關(guān)的標(biāo)準(zhǔn)組織開(kāi)發(fā)的,例如Internet Engineering Task Force。作為補(bǔ)充,Acegi Security自己也提供了一些認(rèn)證功能。Acegi Security當(dāng)前支持如下的認(rèn)證技術(shù)。
• 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)
• 你自己的認(rèn)證系統(tǒng) (如下所示)
很多獨(dú)立軟件供應(yīng)商(ISVs)選擇Acegi Security是因?yàn)樗哂胸S富的認(rèn)證模塊。這樣無(wú)論他們的終端客戶需要什么,他們都可以快速集成到他們的系統(tǒng)中,不用花很多工夫或者讓終端客戶改變環(huán)境。如果Acegi Security System for Spring的7個(gè)認(rèn)證模塊還沒(méi)有滿足你的需求的話,Acegi Security是一個(gè)開(kāi)放的系統(tǒng),很容易寫(xiě)你自己的認(rèn)證機(jī)制。許多Acegi Security的企業(yè)用戶需要和“遺留”系統(tǒng)集成,這些遺留系統(tǒng)不遵循任何安全標(biāo)準(zhǔn),Acegi Security能夠和這樣的系統(tǒng)“合作愉快”。
有時(shí)候基本的認(rèn)證是不夠的。有時(shí)候你需要根據(jù)principal和應(yīng)用交互的方式來(lái)應(yīng)用不同的安全措施。例如,你可能為了防止密碼被竊取,或者防止終端用戶受到“中間人”攻擊,需要保證到達(dá)的是請(qǐng)求通過(guò)HTTPS的。或者,你要確保是一個(gè)真正的人而不是某種機(jī)器人或者自動(dòng)進(jìn)程在發(fā)送請(qǐng)求。這對(duì)于保護(hù)密碼恢復(fù)不受暴力破解攻擊,或者防止他人很容易的復(fù)制你應(yīng)用的關(guān)鍵內(nèi)容。為了幫助你實(shí)現(xiàn)這些目標(biāo),Acegi Security完全支持自動(dòng)“通道安全”("channel security"),以及集成Jcaptcha來(lái)檢測(cè)是否是真正人類用戶。
Acegi Security不僅提供了認(rèn)證功能,而且提供了完備的授權(quán)功能。在授權(quán)方面主要有三個(gè)領(lǐng)域,授權(quán)web請(qǐng)求,授權(quán)方法調(diào)用,授權(quán)存取單個(gè)領(lǐng)域?qū)ο髮?shí)例。為了幫助你理解這些區(qū)別,對(duì)照考慮一下Servlet 規(guī)范中的web模式安全的授權(quán)功能,EJB容器管理安全以及文件系統(tǒng)安全。Acegi Security提供了所有這些重要領(lǐng)域的完備功能,我們將在本手冊(cè)的后面介紹。
1.2. 歷史
Acegi Security始于2003年晚期,當(dāng)時(shí)在Spring Developers郵件列表中有人提問(wèn)是否有人考慮提供一個(gè)基于Spring的安全實(shí)現(xiàn)。當(dāng)時(shí),Srping的社區(qū)是相對(duì)比較小的(尤其是和今天相比。,實(shí)際上Spring本身也是2003年早期才作為一個(gè)SourceForge項(xiàng)目出現(xiàn)的。對(duì)此問(wèn)題的回應(yīng)是它確實(shí)是一個(gè)值得研究的領(lǐng)域,雖然限于時(shí)間無(wú)法進(jìn)行深入。
有鑒于此,這個(gè)簡(jiǎn)單的安全實(shí)現(xiàn)雖然構(gòu)建了但是并沒(méi)有發(fā)布。幾周以后,Spring社區(qū)的其他成員詢問(wèn)了安全框架,代碼就被提供給了他們。
隨后又有人請(qǐng)求,到了2004年一月,大約有20人左右在使用這些代碼。另外一些人加入到這些先行的用戶中來(lái),并建議建立一個(gè)SourceForge項(xiàng)目,這個(gè)項(xiàng)目在2004年3月建立起來(lái)。
在早期,該項(xiàng)目自身并布具備任何認(rèn)證模塊。認(rèn)證過(guò)程依賴容器管理安全(Container Managed Security)而Acegi Security注重授權(quán)。在一開(kāi)始這樣是合適的,但是隨著越來(lái)越多的用戶要求額外的容器支持,基于容器的認(rèn)證的限制就顯示出來(lái)了。另外一個(gè)相關(guān)的問(wèn)題是添加新的JAR文件到容器的classpath,通常會(huì)讓最終用戶感到困惑并且配置錯(cuò)誤。
隨后,Acegi Security加入了認(rèn)證服務(wù)。大約一年后,Acegi Security成為了一個(gè)Spring Framework官方子項(xiàng)目。在2年半多的在多個(gè)軟件項(xiàng)目中的活躍使用以及數(shù)以百計(jì)的改進(jìn)和社區(qū)貢獻(xiàn),
今天,Acegi Security成為一個(gè)強(qiáng)大而活躍的社區(qū)。在支持論壇上有數(shù)以千計(jì)的帖子。14位開(kāi)發(fā)人員專職開(kāi)發(fā),一個(gè)活躍的社區(qū)也定期共享補(bǔ)丁并支持他們的同儕。
1.3. 發(fā)行版本號(hào)
理解Acegi Security的版本號(hào)是非常好處的,它可以幫助你判定升級(jí)的到新的版本是否需要花費(fèi)很大精力。我們的正式發(fā)行版本使用Apache Portable Runtime Project版本指引,可以在下述網(wǎng)站查看http://apr.apache.org/versioning.html。為了您查看方便,我們引用該頁(yè)的說(shuō)明部分如下:
“版本號(hào)由三個(gè)部分的整數(shù)組成:主版本號(hào)(MAJOR)、副版本號(hào)(MINOR)、補(bǔ)丁版本號(hào)(PATCH)。主要的含義是主版本號(hào)(MAJOR)是不兼容的,API大規(guī)模升級(jí)。副版本號(hào)(MINOR)在源文件和可執(zhí)行版和老版本保持兼容,補(bǔ)丁版本號(hào)(PATCH)則意味著向前和向后的完全兼容”。
安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢】

熱門(mén)精品專業(yè)

