新聞中心
以前叫做spring的acegi安全框架,現(xiàn)在重新標(biāo)識(shí)為spring security 2.0,它實(shí)現(xiàn)了簡(jiǎn)易配置的承諾,提高了開(kāi)發(fā)者的生產(chǎn)力。它已經(jīng)是java平臺(tái)上應(yīng)用最廣的安全框架了,在sourceforge上擁有250,000的下載量,Spring Security 2.0又提供了一系列的新功能。

專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)平陸免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過(guò)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
Spring Security是什么
Spring Security是目前用于替換acegi的框架,它提供了一系列新的功能。
◆大為簡(jiǎn)化了配置
◆繼承OpenID,標(biāo)準(zhǔn)單點(diǎn)登錄
◆支持windows NTLM,在windows合作網(wǎng)絡(luò)上實(shí)現(xiàn)單點(diǎn)登錄
◆支持JSR 250("EJB 3")的安全注解
◆支持AspectJ切點(diǎn)表達(dá)式語(yǔ)言
◆全面支持REST Web請(qǐng)求授權(quán)
◆長(zhǎng)期要求的支持組,層級(jí)角色和用戶管理API
◆提升了功能,使用后臺(tái)數(shù)據(jù)庫(kù)的remember-me實(shí)現(xiàn)
◆通過(guò)spring webflow 2.0對(duì)web狀態(tài)和流轉(zhuǎn)授權(quán)進(jìn)行新的支持
◆通過(guò)Spring Web Services 1.5加強(qiáng)對(duì)WSS(原來(lái)的WS-Security)的支持
◆整個(gè)更多的……
目標(biāo)
目前,我工作在一個(gè)spring的web應(yīng)用上,使用acegi控制對(duì)資源的訪問(wèn)權(quán)限。用戶信息保存在數(shù)據(jù)庫(kù)中,我們配置acegi使用了基于JDBC的UserDetails服務(wù)。同樣的,我們所有的web資源都保存在數(shù)據(jù)庫(kù)里,acegi配置成使用自定義的 AbstractFilterInvocationDefinitionSource,對(duì)每個(gè)請(qǐng)求檢測(cè)授權(quán)細(xì)節(jié)。
隨著Spring Security 2.0的發(fā)布,我想看看是不是可以替換acegi,但還要保持當(dāng)前的功能,使用數(shù)據(jù)庫(kù)作為我們驗(yàn)證和授權(quán)的數(shù)據(jù)源,而不是xml配置文件(大多數(shù)演示程序里使用的都是xml)。
這里是我采取的步驟……
步驟
1.第一步(也是最重要的)是下載新的Spring Security 2.0框架,并確保jar文件放到正確的位置(/WEB-INF/lib/)。
Spring Security 2.0下載包里包含22個(gè)jar文件。我不需要把它們?nèi)蒙希ㄓ绕涫悄切﹕ources包)。在這次練習(xí)中我僅僅包含了以下幾個(gè):
◆spring-security-acl-2.0.0.jar
◆spring-security-core-2.0.0.jar
◆spring-security-core-tiger-2.0.0.jar
◆spring-security-taglibs-2.0.0.jar
2.在web.xml文件里配置一個(gè)DelegatingFilterProxy
3.Spring Security 2.0的配置比acegi簡(jiǎn)單太多了,所以我沒(méi)有在以前acegi配置文件的基礎(chǔ)上進(jìn)行修改,我發(fā)現(xiàn)從一個(gè)空白文件開(kāi)始更簡(jiǎn)單。如果你想修改你以前的配置文件,我確定你刪除的行數(shù)比添加的行數(shù)還要多。配置文件的第一部分是指定安全資源過(guò)濾器的細(xì)節(jié),這讓安全資源可以通過(guò)數(shù)據(jù)庫(kù)讀取,而不是在配置文件里保存信息。這里是一個(gè)你將在大多數(shù)例子中看到的代碼。
使用這些內(nèi)容進(jìn)行替換:
這段配置的主要部分secureResourceFilter,這是一個(gè)實(shí)現(xiàn)了FilterInvocationDefinitionSource 的類(lèi),它在Spring Security需要對(duì)請(qǐng)求頁(yè)面檢測(cè)權(quán)限的時(shí)候調(diào)用。這里是MySecureResouceFilter的代碼:
getAttributes()方法返回權(quán)限的名稱(我稱之為角色),它們控制當(dāng)前url的訪問(wèn)權(quán)限。
4.好了,現(xiàn)在我們需要安裝信息數(shù)據(jù)庫(kù),下一步是讓Spring Security從數(shù)據(jù)庫(kù)中讀取用戶信息。這個(gè)Spring Security 2.0的例子告訴你如何從下面這樣的配置文件里獲得用戶和權(quán)限的列表:
你可以把這些例子的配置替換掉,這樣你可以像這樣從數(shù)據(jù)庫(kù)中直接讀取用戶信息:
這里有一種非??焖偃菀椎姆椒▉?lái)配置安全數(shù)據(jù)庫(kù),意思是你需要使用默認(rèn)的數(shù)據(jù)庫(kù)表結(jié)構(gòu)。默認(rèn)情況下,
我的情況下,我的安全數(shù)據(jù)庫(kù)表無(wú)法這樣工作,它和
通過(guò)添加users-by-username-query和authorities-by-username-query屬性,你可以使用你自己的 SQL覆蓋默認(rèn)的SQL語(yǔ)句。就像在acegi中一樣,你必須確保你的SQL語(yǔ)句返回的列與Spring Security所期待的一樣。這里有另一個(gè)group-authorities-by-username-query屬性,我在這里沒(méi)有用到,所以也沒(méi)有出現(xiàn)在這里例子中,不過(guò)它的用法與其他兩個(gè)SQl語(yǔ)句的方法完全一致。
dataSource bean中指示的是鏈接數(shù)據(jù)庫(kù)的信息,它沒(méi)有包含在我的配置文件中,因?yàn)樗⒉恢挥迷诎踩小_@里是一個(gè)dataSource的例子,如果誰(shuí)不熟悉可以參考一下:
5.這就是Spring Security的所有配置文件。我最后一項(xiàng)任務(wù)是修改以前的登陸頁(yè)面。在acegi中你可以創(chuàng)建自己的登陸


咨詢
建站咨詢
