蔣叢萃++史卓
摘要:電子商務(wù)系統(tǒng)平臺(tái)構(gòu)建中,安全性是系統(tǒng)應(yīng)用開(kāi)發(fā)的靈魂,是產(chǎn)品生命各個(gè)周期各個(gè)階段的關(guān)鍵指標(biāo),同時(shí)也是整個(gè)電子商務(wù)運(yùn)用的重要節(jié)點(diǎn)。該文介紹了spring security的認(rèn)證和權(quán)限控制,將spring security訪問(wèn)控制機(jī)制應(yīng)用于電子商務(wù)中,從而給電子商務(wù)系統(tǒng)平臺(tái)安全設(shè)計(jì)提供了強(qiáng)大的支持。
關(guān)鍵詞 : Spring security;電商;訪問(wèn)控制
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)14-0247-02
當(dāng)今社會(huì)電子商務(wù)已經(jīng)取得了飛速發(fā)展,這在很大程度上得益于計(jì)算機(jī)技術(shù)的發(fā)展。電子商務(wù)是基于信息網(wǎng)絡(luò)平臺(tái)按一定標(biāo)準(zhǔn)所進(jìn)行的各類商務(wù)活動(dòng)的總稱。這種網(wǎng)絡(luò)電商操作相比實(shí)體經(jīng)營(yíng)店,不僅降低了營(yíng)業(yè)成本,更極大地方便了消費(fèi)者直接通過(guò)互聯(lián)網(wǎng)購(gòu)買(mǎi)需要的商品,提高了交易效率。而在電子商務(wù)中,客戶及商家最關(guān)注的問(wèn)題莫過(guò)于安全性問(wèn)題。如何設(shè)計(jì)安全可靠的電子商務(wù)交易平臺(tái),成為了電商系統(tǒng)構(gòu)建需要解決的問(wèn)題。本文闡述spring security安全構(gòu)架在電商系統(tǒng)平臺(tái)設(shè)計(jì)中的應(yīng)用。
1 Springsecurity安全構(gòu)架簡(jiǎn)介
1.1 Springsecurity安全構(gòu)架概要
Spring是基于Java語(yǔ)言而開(kāi)發(fā)出的一站式Web框架。Spring框架包含以下子框架:SpringMVC,Spring, SpringSecurity, SpringAOP 等。在數(shù)據(jù)庫(kù)訪問(wèn)層,Spring可以整合Hibernate、iBatis等第三方框架,通過(guò)整合構(gòu)成一個(gè)完整的Web程序框架。
在電子商務(wù)實(shí)踐中,應(yīng)用設(shè)計(jì)需要有一定的開(kāi)源架構(gòu)作支撐,實(shí)現(xiàn)數(shù)據(jù)庫(kù)運(yùn)行的最終目的。這個(gè)開(kāi)源架構(gòu)即Spring?,F(xiàn)存系統(tǒng)架構(gòu)大多是單層體系架構(gòu),Spring程序框架可以將其整合為一個(gè)有機(jī)結(jié)合的統(tǒng)一整體,使得架構(gòu)中各個(gè)層面能相互協(xié)調(diào)運(yùn)作,而且各層面間不相互沖突,把程序架構(gòu)的能動(dòng)性最大限度地發(fā)揮出來(lái)。Spring使用了AOP(面向方面編程)技術(shù)來(lái)實(shí)現(xiàn)安全控制。 Spring框架中,Spring Security子系統(tǒng)負(fù)責(zé)整個(gè)框架的安全。Spring Security實(shí)現(xiàn)安全控制的方法就是基于Spring AOP。
認(rèn)證和權(quán)限控制是Spring Security要處理的兩個(gè)主要領(lǐng)域。首先需要實(shí)現(xiàn)系統(tǒng)安全邏輯和業(yè)務(wù)邏輯在設(shè)計(jì)層面上的分離,要實(shí)現(xiàn)這個(gè)目標(biāo)需要采用Spring Security提供的項(xiàng)目安全認(rèn)證服務(wù)。在安全控制層面,現(xiàn)行的絕大部分身份認(rèn)證模式都可以被Spring Security所識(shí)別,其根本原因在于這些身份認(rèn)證模式采用的是第三方廠商運(yùn)作,整個(gè)研究機(jī)構(gòu)是采用統(tǒng)一標(biāo)準(zhǔn),缺乏自身的特色和特點(diǎn),不利用整個(gè)系統(tǒng)本身的運(yùn)作安全。而Spring Security恰恰解決了這樣一個(gè)難題,其支持的認(rèn)證機(jī)制有以下幾種形式:
同時(shí),Spring Security也提供了一組深入的權(quán)限控制服務(wù)。該權(quán)限控制服務(wù)主要面向三個(gè)領(lǐng)域: Web 請(qǐng)求的權(quán)限控制,方法調(diào)用的權(quán)限控制和單個(gè)對(duì)象實(shí)例訪問(wèn)的權(quán)限控制。
1.2 Springsecurity安全構(gòu)架構(gòu)成
從整個(gè)框架運(yùn)行看,Spring Security的安全框架包含了安全攔截器和安全控制管理組件。具體來(lái)說(shuō),安全控制管理組件又由認(rèn)證管理器,訪問(wèn)決策管理器、運(yùn)行身份管理器、調(diào)用后管理器四大部分組成。這一組成有著自己獨(dú)特的運(yùn)行方式和特點(diǎn)。Spring Security安全框架組成元素如下圖所示:
訪問(wèn)系統(tǒng)中受保護(hù)資源的所有請(qǐng)求,都需要通過(guò)安全欄截器的攔截判斷。因此,安全欄截器被視為Spring Security框架中資源訪問(wèn)必經(jīng)的“大門(mén)”。 辨別用戶身份的功能則由認(rèn)證管理器提供,一般采取用戶憑證辨別(即戶名和密碼)的方法來(lái)實(shí)現(xiàn)此功能。用戶審核后的身份憑證需要與目標(biāo)資源的配置屬性進(jìn)行比較,這一步通過(guò)訪問(wèn)決策管理器來(lái)實(shí)現(xiàn)。經(jīng)過(guò)比較,如果用戶有權(quán)訪問(wèn)目標(biāo)資源,則執(zhí)行授權(quán)。當(dāng)目標(biāo)資源的訪問(wèn)權(quán)限發(fā)生變化時(shí),則需要通過(guò)運(yùn)行身份管理器來(lái)確認(rèn)當(dāng)前用戶的權(quán)限是否與之相適應(yīng)。用戶是否有權(quán)查看目標(biāo)資源的返回結(jié)果則依靠調(diào)用后管理器來(lái)實(shí)現(xiàn)。
2 Springsecurity安全構(gòu)架在電子商務(wù)平臺(tái)系統(tǒng)中的設(shè)計(jì)
在電子商務(wù)交易中,業(yè)務(wù)安全性是至關(guān)重要的,而業(yè)務(wù)安全性的保障就是系統(tǒng)平臺(tái)的安全架構(gòu),一個(gè)優(yōu)秀的安全架構(gòu)能有效保障業(yè)務(wù)交易的平穩(wěn)安全,對(duì)商家和客戶來(lái)說(shuō)都是必不可少的??梢哉f(shuō),任何電子商務(wù)業(yè)務(wù)都離不開(kāi)安全機(jī)制的保障,當(dāng)今電子商務(wù)發(fā)展迅速,系統(tǒng)的參與者和范圍都逐步擴(kuò)大,相應(yīng)的業(yè)務(wù)流程也變得復(fù)雜,平臺(tái)對(duì)安全性的要求也越來(lái)越高。
在當(dāng)前電子商務(wù)應(yīng)用的安全性方面,以下幾個(gè)問(wèn)題是普遍存在的:
1)業(yè)務(wù)邏輯和安全邏輯沒(méi)有做到設(shè)計(jì)和操作上的相對(duì)獨(dú)立,目前二者還是耦合的。造成這一現(xiàn)象的原因主要是目前的電子商務(wù)應(yīng)用系統(tǒng)還在采用面向?qū)ο蟮拈_(kāi)發(fā)方式。
2)目前大部分電子商務(wù)系統(tǒng)在業(yè)務(wù)方法的保護(hù)方面有所欠缺,在操作上僅僅簡(jiǎn)單控制了對(duì)Web資源的基本訪問(wèn)權(quán)限。
3)傳統(tǒng)訪問(wèn)控制技術(shù)的應(yīng)用給企業(yè)應(yīng)用系統(tǒng)帶來(lái)維護(hù)上的不便。
通過(guò)Spring Security技術(shù),這使得AOP方法得到了進(jìn)一步運(yùn)用,系統(tǒng)身份和安全性能得到了很大提高,將安全系能和業(yè)務(wù)功能進(jìn)行耦合,實(shí)現(xiàn)安全邏輯的提高,同時(shí)也使得業(yè)務(wù)邏輯進(jìn)一步得到梳理。安全邏輯與業(yè)務(wù)邏輯是相對(duì)獨(dú)立的一個(gè)系統(tǒng),要保證兩者之間目的的獨(dú)立性,同時(shí)又要保證兩者之間的平臺(tái)運(yùn)用的兼容性,使系統(tǒng)功能的可擴(kuò)展性也得到了有效保障。
將Spring Security安全機(jī)制應(yīng)用于電子商務(wù)平臺(tái)中,其根本目的是為了保證應(yīng)用系統(tǒng)的安全性,使得信息的管理更加科學(xué),信息資源的保密程度更加固化。最大限度地保證系統(tǒng)信息資源的完整,同時(shí)也讓系統(tǒng)安全管理有一定的靈活性和較好的通用易用性。系統(tǒng)的總體構(gòu)架如下圖所示:
Spring Security程序框架的設(shè)計(jì)包括以下幾個(gè)部分:
2.1 系統(tǒng)權(quán)限設(shè)計(jì)
電子商務(wù)系統(tǒng)平臺(tái)的基礎(chǔ)就是權(quán)限設(shè)計(jì)。本文介紹的權(quán)限設(shè)計(jì)方法是基于角色的訪問(wèn)控制技術(shù),具體過(guò)程如下:首先,將商家用戶信息存儲(chǔ)到系統(tǒng)用戶表(sys—user)中,將角色信息存儲(chǔ)到角色信息表(sys—group)中,將權(quán)限信息存儲(chǔ)到權(quán)限信息表(sys junction)中。多個(gè)角色可能會(huì)共同擁有權(quán)限信息表中的目標(biāo)資源,對(duì)于這種情況,需要建立角色/權(quán)限表(sys_group—fimction)對(duì)角色信息和權(quán)限信息進(jìn)行唯一性定義。在具體操作過(guò)程中,將目標(biāo)資源的url訪問(wèn)路徑、業(yè)務(wù)方法等受保護(hù)的資源存儲(chǔ)到權(quán)限控制碼中。數(shù)據(jù)庫(kù)的E-R關(guān)系圖如上所示。
2.2 身份認(rèn)證模塊設(shè)計(jì)
系統(tǒng)的安全防護(hù)要經(jīng)過(guò)的第一道關(guān)卡就是身份認(rèn)證模塊,該模塊會(huì)對(duì)用戶身份進(jìn)行判斷,只有符合規(guī)定的用戶才能通過(guò)。身份認(rèn)證模塊統(tǒng)一欄截用戶提交的業(yè)務(wù)訪問(wèn)請(qǐng)求,并對(duì)不同認(rèn)證方式下的身份認(rèn)證請(qǐng)求加以處理。用戶可以采取不同的認(rèn)證手段,身份認(rèn)證模塊,從實(shí)際情況出發(fā),選取特定的認(rèn)證提供者,在現(xiàn)用戶身份上進(jìn)行識(shí)別,這樣的系統(tǒng)能夠?qū)崿F(xiàn)各種表單的認(rèn)證,也可以實(shí)現(xiàn)證書(shū)的認(rèn)證。如DAOAUTHENTICATIONPROVIDER可以實(shí)現(xiàn)普通的基于表單的認(rèn)證、X509AUTHENTICATIONPROVIDER 可以實(shí)現(xiàn)基于 X.509 證書(shū)的認(rèn)證。
統(tǒng)身份認(rèn)證模塊的時(shí)序圖如下:
2.3 授權(quán)訪問(wèn)模塊的設(shè)計(jì)
授權(quán)訪問(wèn)模塊是在身份認(rèn)證的基礎(chǔ)上,建立起來(lái)的。系統(tǒng)首先要對(duì)用戶身份的合法性進(jìn)行判斷,在此基礎(chǔ)上再判讀用戶是否有權(quán)訪問(wèn)受保護(hù)資源。在授權(quán)訪問(wèn)中,Spring Security可以對(duì)其進(jìn)行授權(quán),根據(jù)訪問(wèn)請(qǐng)求,通過(guò)安全攔截器進(jìn)行攔截,這種資源的訪問(wèn)攔截形式,可以實(shí)現(xiàn)業(yè)務(wù)邏輯與安全邏輯的一個(gè)耦合。通過(guò)兩者之間的聯(lián)系,進(jìn)行平臺(tái)過(guò)濾器,對(duì)其進(jìn)行授權(quán)控制,使切面應(yīng)用到各資源或者業(yè)務(wù)方法上,將相關(guān)的授權(quán)請(qǐng)求進(jìn)行接收,從而根據(jù)權(quán)限進(jìn)行判斷,作出授權(quán)操作,實(shí)現(xiàn)這一安全機(jī)制的根本目標(biāo)。
3 結(jié)束語(yǔ)
目前基于Spring Security技術(shù)的電商系統(tǒng)平臺(tái)設(shè)計(jì)已經(jīng)體現(xiàn)出一定的優(yōu)越性,在商家及客戶信息保護(hù)、安全交易方面都具有良好的操作性和實(shí)用性。通過(guò)其強(qiáng)大的認(rèn)證和權(quán)限控制功能,為商家和客戶的互聯(lián)網(wǎng)交易提供了一個(gè)安全、便捷的環(huán)境。
參考文獻(xiàn):
[1] 丁振凡. 基于Spring Security的Web資源訪問(wèn)控制 [J]. 宜春學(xué)院學(xué)報(bào), 2012(8).
[2] 肖云. 基于Spring Security安全的Web應(yīng)用開(kāi)發(fā)[J]. 計(jì)算機(jī)與現(xiàn)代化, 2011(6).
[3] 李瓊. 基于Spring Security的企業(yè)級(jí)應(yīng)用安全構(gòu)架的研究與實(shí)現(xiàn)[M]. 北京交通大學(xué), 2012(7).