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

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


咨詢
建站咨詢
