• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學(xué)習(xí)啦 > 論文大全 > 學(xué)科論文 > 計(jì)算機(jī)論文 > 實(shí)現(xiàn)基于Spring框架應(yīng)用的權(quán)限控制系統(tǒng)論文

    實(shí)現(xiàn)基于Spring框架應(yīng)用的權(quán)限控制系統(tǒng)論文

    時(shí)間: 謝樺657 分享

    實(shí)現(xiàn)基于Spring框架應(yīng)用的權(quán)限控制系統(tǒng)論文

      Spring的形成,最初來自Rod Jahnson所著的一本很有影響力的書籍《Expert One-on-One J2EE Design and Development》,就是在這本書中第一次出現(xiàn)了Spring的一些核心思想,該書出版于2002年。另外一本書《Expert One-on-One J2EE Development without EJB》,更進(jìn)一步闡述了在不使用EJB開發(fā)J2EE企業(yè)級(jí)應(yīng)用的一些設(shè)計(jì)思想和具體的做法。以下是學(xué)習(xí)啦小編今天為大家精心準(zhǔn)備的:實(shí)現(xiàn)基于Spring框架應(yīng)用的權(quán)限控制系統(tǒng)相關(guān)論文,內(nèi)容僅供參考,歡迎閱讀!

      實(shí)現(xiàn)基于Spring框架應(yīng)用的權(quán)限控制系統(tǒng)全文如下:

      摘 要 :Spring框架是一個(gè)優(yōu)秀的多層J2EE系統(tǒng)框架,Spring本身沒有提供對(duì)系統(tǒng)的安全性支持。Acegi是基于Spring IOC 和 AOP機(jī)制實(shí)現(xiàn)的一個(gè)安全框架。本文探討了Acegi安全框架中各部件之間的交互,并通過擴(kuò)展Acegi數(shù)據(jù)庫(kù)設(shè)計(jì)來實(shí)現(xiàn)基于Spring框架的應(yīng)用的安全控制方法。

      關(guān)鍵詞: Spring ;Acegi ;認(rèn)證; 授權(quán)

      引言

      近年來,隨著Internet技術(shù)的迅猛發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)已深入到了人們的工作、學(xué)習(xí)和日常生活中,于是,怎樣構(gòu)建安全的web應(yīng)用也成為了當(dāng)前最熱門的話題。Spring是一個(gè)基于IoC(Inversion of Control)和AOP(Aspect Oriented Programming)的構(gòu)架多層J2EE應(yīng)用系統(tǒng)的框架。Spring框架正在以其優(yōu)良的特性吸引了越來越多的開發(fā)人員的關(guān)注,并在大量的系統(tǒng)開發(fā)中被使用。然而,現(xiàn)有的Spring框架本身并沒有提供對(duì)系統(tǒng)安全性的支持,本文通過介紹一種可用于Spring框架中的安全框架Acegi,并對(duì)在Spring框架中使用Acegi實(shí)現(xiàn)安全用戶認(rèn)證和資源授權(quán)控制進(jìn)行了較深入的研究和擴(kuò)展,同時(shí)給出了可行的解決方案。

      Spring框架和Acegi安全框架介紹

      1、spring 框架

      Spring框架是由Open Source開發(fā)的一個(gè)優(yōu)秀的多層J2EE系統(tǒng)框架,它為企業(yè)級(jí)應(yīng)用提供了一個(gè)非常輕量級(jí)的解決方案,大大地降低了應(yīng)用開發(fā)的難度與復(fù)雜度,提高了開發(fā)的速度。

      Spring框架的核心是IoC和AOP。IoC是一種設(shè)計(jì)模式,即IoC模式。IoC模式進(jìn)一步降低了類之間的耦合度,并且改變了傳統(tǒng)的對(duì)象的創(chuàng)建方法,實(shí)現(xiàn)了一種配置式的對(duì)象管理方式,Spring框架中由IoC容器負(fù)責(zé)配置性的對(duì)象的管理。IoC模式極大的提高了系統(tǒng)開發(fā)與維護(hù)的靈活性。

      AOP是一種編程模式,它是從系統(tǒng)的橫切面關(guān)注問題。傳統(tǒng)的面向?qū)ο缶幊蘋OP主要從系統(tǒng)的垂直切面對(duì)問題進(jìn)行關(guān)注,對(duì)于系統(tǒng)的橫切面關(guān)注很少,或者說很難關(guān)注,這樣當(dāng)考慮到系統(tǒng)的安全性、日志、事務(wù)以及其他企業(yè)級(jí)服務(wù)時(shí),OOP就無能為力了,只能在所有相關(guān)類中加入類似的系統(tǒng)服務(wù)級(jí)的代碼。AOP為解決系統(tǒng)級(jí)服務(wù)問題提供了一種很好的方法。AOP將系統(tǒng)服務(wù)分解成方面看待,并為類提供一種聲明式系統(tǒng)服務(wù)方式。Java類不需要知道日志服務(wù)的存在也不需要考慮相關(guān)的代碼。所以,用AOP編寫的應(yīng)用程序是松耦合的,代碼的復(fù)用性就提高了。

      2、Acegi 安全框架

      借助于Spring框架,開發(fā)者能夠快速構(gòu)建結(jié)構(gòu)良好的WEB應(yīng)用,但現(xiàn)有的Spring框架本身沒有提供安全相關(guān)的解決方案。同樣來自于Open Source 社區(qū)的Acegi安全框架為實(shí)現(xiàn)基于Spring框架的WEB應(yīng)用的安全控制提供了一個(gè)很好的解決方案。Acegi本身就是利用Spring提供的IoC和AOP機(jī)制實(shí)現(xiàn)的一個(gè)安全框架,它將安全性服務(wù)作為J2EE平臺(tái)中的系統(tǒng)級(jí)服務(wù),以AOP Aspect形式發(fā)布。所以借助于Acegi安全框架,開發(fā)者能夠在Spring使能應(yīng)用中采用聲明式方式實(shí)現(xiàn)安全控制。

      Acegi安全框架主要由安全管理對(duì)象、攔截器以及安全控制管理組件組成。安全管理對(duì)象是系統(tǒng)可以進(jìn)行安全控制的實(shí)體,Acegi框架主要支持方法和URL請(qǐng)求兩類安全管理對(duì)象;攔截器是Acegi中的重要部件,用來實(shí)現(xiàn)安全控制請(qǐng)求的攔截,針對(duì)不同的安全管理對(duì)象的安全控制請(qǐng)求使用不同的攔截器進(jìn)行攔截;安全控制管理部件是實(shí)際實(shí)現(xiàn)各種安全控制的組件,對(duì)被攔截器攔截的請(qǐng)求進(jìn)行安全管理與控制,主要組件包括實(shí)現(xiàn)用戶身份認(rèn)證的AuthenticationManager、實(shí)現(xiàn)用戶授權(quán)的AccessDecisionManager 以及實(shí)現(xiàn)角色轉(zhuǎn)換的RunAsManager。安全管理對(duì)象、攔截器以及安全控制管理組件三者關(guān)系如圖1所示。

      Acegi安全框架在基于Spring框架的系統(tǒng)中的應(yīng)用

      1、分析系統(tǒng)安全性需求

      首先,需要明確進(jìn)行安全控制的對(duì)象,可為業(yè)務(wù)方法和URL資源。

      其次,需要進(jìn)一步明確,系統(tǒng)身份認(rèn)證資料和資源授權(quán)信息的數(shù)據(jù)持久化形式。

      2、Acegi安全系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)

      在Acegi框架中支持多種安全信息的持久化方式,可以在配置文件中配置或存放在關(guān)系數(shù)據(jù)庫(kù)。由于在實(shí)際應(yīng)用中,需求是經(jīng)常發(fā)生變化的。所以,在配置文件中配置是滿足不了實(shí)際應(yīng)用需求的。然而,Acegi本身對(duì)權(quán)限表的設(shè)計(jì)非常簡(jiǎn)單,users表{username,password,enabled} 和authorities表{username,authority},這樣簡(jiǎn)單的設(shè)計(jì)肯定無法適用復(fù)雜的權(quán)限需求。為了解決權(quán)限管理的復(fù)雜性,在這里引入了role(角色)的概念,使得用戶和權(quán)限分離,一個(gè)用戶擁有多個(gè)角色,一個(gè)角色擁有多個(gè)相應(yīng)的權(quán)限,這樣就更靈活地支持安全策略。

      同時(shí),為了更好地配合Acegi安全框架,還引入resource(資源)的概念,資源可分為URL和FUNCTION(方法)兩種,一個(gè)權(quán)限可以對(duì)應(yīng)多個(gè)資源。具體的數(shù)據(jù)庫(kù)設(shè)計(jì)見圖2。

      3、認(rèn)證管理器,授權(quán)管理器的配置

      實(shí)現(xiàn)系統(tǒng)的安全控制,首先需要對(duì)系統(tǒng)的安全管理器和授權(quán)管理器進(jìn)行配置,系統(tǒng)進(jìn)行認(rèn)證和授權(quán)需要獲取安全信息,Acegi本身提供了對(duì)認(rèn)證信息的獲取機(jī)制,在實(shí)現(xiàn)認(rèn)證與授權(quán)過程中,系統(tǒng)將主動(dòng)根據(jù)配制信息和相應(yīng)的信息解釋安全信息的讀取。圖3給出了一個(gè)將用戶安全信息存儲(chǔ)在數(shù)據(jù)庫(kù)中的認(rèn)證管理器的配置示意圖。

      對(duì)應(yīng)于圖示的XML配置文件的代碼如下:

      由于URL資源請(qǐng)求安全攔截是借助于過濾器進(jìn)行的。因此首先要配置Acegi Servlet過濾器。過濾器類似于AOP Around裝備,實(shí)現(xiàn)在web資源調(diào)用前后進(jìn)行的一些操作6種過濾器,他們依次構(gòu)成Servlet過濾器鏈,依次處理客戶請(qǐng)求。需要注意的是過濾器配置的順序是不能交換的,當(dāng)不需要使用某個(gè)過濾器時(shí),可直接將其刪除和注釋。過濾器在web.xml中配置形式為  授權(quán)管理器的配置方法與認(rèn)證管理器的配置基本類似,這里不再討論。
    4、安全請(qǐng)求攔截器的配置

      以上配置完成后,就需要配置安全攔截器。不同的安全管理對(duì)象需要使用不同的安全攔截器。對(duì)于方法級(jí)的安全認(rèn)證需要使用的攔截器為MethodSecurityInterceptor,而應(yīng)用于URL資源的安全攔截器為FilterSecurityInterceptor 。其中,MethodSecurityInterceptor攔截器是借助于Spring Aop實(shí)現(xiàn)的,而FilterSecurityInterceptor攔截器是借助于Servlet Filter 實(shí)現(xiàn)的。本文以URL資源請(qǐng)求的安全攔截器為例說明配置情況。

      在spring applicationContext.xml文件中的配置形式為

      以上代碼是SecurityEnforcementFilter的配置,該過濾器對(duì)用戶是否有權(quán)訪問web資源作出最后的決定。其它的過濾器的配置類同。

      配置完過濾器后,需要對(duì)攔截器FilterSecurityInterceptor進(jìn)行配置,

      objectDefinitionSource屬性定義了那些受保護(hù)的URL資源,其中引用了一個(gè)本地對(duì)象filterObjectDefinitionSource。filterObjectDefinitionSource類從數(shù)據(jù)庫(kù)中讀取需要保護(hù)的URL安全信息,它擴(kuò)展了PathBasedFilterInvocationDefinition Map類。

      同樣,實(shí)現(xiàn)了另外一個(gè)methodObjectDefinitionSource類從數(shù)據(jù)庫(kù)中讀取需要保護(hù)的FUNCTION資源,它擴(kuò)展了MethodDefinitionMap類。限于篇幅,在這里就不列出具體實(shí)現(xiàn)的源代碼。

      結(jié)束語(yǔ)

      由于Spring在越來越多的項(xiàng)目中的應(yīng)用,因此基于Spring應(yīng)用的安全控制系統(tǒng)的研究就顯得非常重要。Acegi提供了對(duì)Spring應(yīng)用安全的支持,然而 Acegi本身提供的實(shí)例并不能滿足大規(guī)模的復(fù)雜的權(quán)限需求,本文通過擴(kuò)展Acegi的數(shù)據(jù)庫(kù)設(shè)計(jì)即可滿足復(fù)雜的權(quán)限需求。然而,怎樣將Acegi應(yīng)用到非Spring的系統(tǒng)中,還有待進(jìn)一步研究。

    391848 主站蜘蛛池模板: 亚洲日韩中文无码久久| 国产欧美va欧美va香蕉在| 你是我的城池营垒免费观看完整版| 中文字幕校园春色| 草莓视频国产在线观看| 日本最刺激夫妇交换影片| 国产壮汉男同志69可播放| 久久精品国产日本波多野结衣| 国产h视频在线| 日韩精品无码一本二本三本色| 国产成人精品一区二三区在线观看 | 投资6000能开一个sf吗| 四虎国产精品免费久久影院| 中国大陆高清aⅴ毛片| 精品视频www| 娇喘午夜啪啪五分钟娇喘| 伊人久久综合谁合综合久久| 99精品视频在线免费观看| 毛片让我看一下毛片| 国产精品怡红院永久免费| 亚洲w码欧洲s码免费| 国产成人精品怡红院| 日韩一区二区三区电影 | 2022国产精品手机在线观看| 欧美性猛交ⅹxxx乱大交禽| 国产第一页在线观看| 久久精品国产99国产精品亚洲| 茄子视频国产在线观看| 成人性生交大片免费看好| 免费人成在线观看69式小视频| 99久久人妻无码精品系列蜜桃 | 性欧美18-19sex性高清播放| 免费福利在线播放| 99久久国产亚洲综合精品| 欧美xxxxx性视频| 国产乱子精品免费视观看片| 中国免费一级片| 永久域名在线观看视频| 国产福利一区二区三区在线视频| 久久国产免费观看精品| 精品国产乱码久久久久久1区2区|