欧美一区二区三区四区五区,人人看人人艹,亚洲一区二区中文,99精品视频99,亚洲精品欧美综合四区,国产三区视频在线观看,日韩在线观看一区二区,久久精品色
     
     
    類 型:
    頻 道:
    關(guān)鍵字:
     
     
       位置: 中華職工學(xué)習(xí)網(wǎng) >> 職工學(xué)習(xí)中心 >> 工程技術(shù)人員 >> 計(jì)算機(jī)與應(yīng)用工程技術(shù)人員 >> 正文
     
      標(biāo) 題:實(shí)現(xiàn)基于Spring框架應(yīng)用的權(quán)限控制系統(tǒng)
      日 期:2007/6/5  源 自:中華職工學(xué)習(xí)網(wǎng) 【字體: 字體顏色
     

    近年來,隨著Internet技術(shù)的迅猛發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)已深入到了人們的工作、學(xué)習(xí)和日常生活中,于是,怎樣構(gòu)建安全的web應(yīng)用也成為了當(dāng)前最熱門的話題。Spring是一個基于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框架本身并沒有提供對系統(tǒng)安全性的支持,本文通過介紹一種可用于Spring框架中的安全框架Acegi,并對在Spring框架中使用Acegi實(shí)現(xiàn)安全用戶認(rèn)證和資源授權(quán)控制進(jìn)行了較深入的研究和擴(kuò)展,同時給出了可行的解決方案。

      Spring框架和Acegi安全框架介紹

      1、spring 框架

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

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

      AOP是一種編程模式,它是從系統(tǒng)的橫切面關(guān)注問題。傳統(tǒng)的面向?qū)ο缶幊蘋OP主要從系統(tǒng)的垂直切面對問題進(jìn)行關(guān)注,對于系統(tǒng)的橫切面關(guān)注很少,或者說很難關(guān)注,這樣當(dāng)考慮到系統(tǒng)的安全性、日志、事務(wù)以及其他企業(yè)級服務(wù)時,OOP就無能為力了,只能在所有相關(guān)類中加入類似的系統(tǒng)服務(wù)級的代碼。AOP為解決系統(tǒng)級服務(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)用的安全控制提供了一個很好的解決方案。Acegi本身就是利用Spring提供的IoC和AOP機(jī)制實(shí)現(xiàn)的一個安全框架,它將安全性服務(wù)作為J2EE平臺中的系統(tǒng)級服務(wù),以AOP Aspect形式發(fā)布。所以借助于Acegi安全框架,開發(fā)者能夠在Spring使能應(yīng)用中采用聲明式方式實(shí)現(xiàn)安全控制。

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

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

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

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

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

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

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

      同時,為了更好地配合Acegi安全框架,還引入resource(資源)的概念,資源可分為URL和FUNCTION(方法)兩種,一個權(quán)限可以對應(yīng)多個資源。
    3、認(rèn)證管理器,授權(quán)管理器的配置

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

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


    /* 配置數(shù)據(jù)庫datasource 和Acegi 的 jdbcDao */
    <bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
     <property name=”driverClassName”>
      <value>${jdbc.driverClassName}</value>
     </property>
     <property name=”url”>
      <value>${jdbc.url}</value>
     </property>

     


    圖3 認(rèn)證管理器配制示意圖
     

     

    <property name=”username”>
     <value>${jdbc.username}</value>
    </property>
    <property name=”password”>
     <value>${jdbc.password}</value>
    </property>
    </bean>
    <bean id=”jdbcDaoImpl” class=”org.acegisecurity. roviders. dao.jdbc.JdbcDaoImpl”>
     <property name=”dataSource”>
      <ref bean=”dataSource”/>
     </property>
    </bean>

    /*配置用戶信息的加密算法*/
    <bean id=”passwordEncoder”
    Class=”org.acegisecurity.providers.encoding.Md5passwordEncoder”/>
    /*配置緩存有效時間*/
    <bean id=”userCache” class=”org.acegiSecurity. providers. dao.cache.EhCacheBasedUserCache”>
     …//這里對緩存有效時間進(jìn)行設(shè)置
    </bean>

    /*配置daoAuthenticationProvider*/
    <bean id=”daoAuthenticationProvider”
    class=”org.acegisecurity.providers.dao.DaoAuthenticationProvider”>
     <property name=”authenticationDao”>
      <ref local=”JdbcDaoImpl”/>
     </property>
     <property name=”passwordEncoder”>
      <ref local=” passwordEncoder”/>
     </property>
     <property name=”userCache”>
      <ref local=” userCache”/>
     </property>

    </bean>

    /*配置認(rèn)證管理器*/
    <bean id=”authenticationManager” class=”org.acegisecurity. providers.ProviderManager”>
     <property name=”providers”>
      <list>
       <ref local=”daoAuthenticationProvider”/>
      </list>
     </property>
    </bean>


      授權(quán)管理器的配置方法與認(rèn)證管理器的配置基本類似,這里不再討論。
    4、安全請求攔截器的配置

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

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


    <filter>
     <filter-name>Acegi HTTP Request Security Filter</filter-name>
     <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
     <init-param>
      <param-name>targetClass</param-name>
      <param-value>
       Org.acegisecurity.intercept.web.SecurityEnforcementFilter
      </param-value>
     </init-param>
    </filter>
    <filter-mapping>
     <filter-name>Acigi HTTP Request Security Filter</filter-name>
     <url-pattern>/*</url-pattern>
    </filter-mapping>


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


    <bean id=”securityEnforcementFilter” class=””>
     <property name=”filterSecurityInterceptor”>
      <ref bean=”filterInvocationInteceptor”/>
     </property>
     <property name=”authenticationEntryPoint”>
      <ref bean=”authenticationProcessingFilterEntryPoint”/>
     </property>


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


    <bean id=”filterInvocationInterceptor”
    Class=””>
     <property name=”authenuserCacheticationManager”>1
     <property name=”accessDecisionManager”>
     <property name=”objectDefinitionSource”>
      <ref local="filterObjectDefinitionSource"/>
     </property>
    <bean id="filterObjectDefinitionSource"
    class="org.xiaohongli.acegi.db.DBFilterObjectDefinitionSource">
     <constructor-arg><refbean="jdbcTemplate"/>
     </constructor-arg>
    </bean>


      objectDefinitionSource屬性定義了那些受保護(hù)的URL資源,其中引用了一個本地對象filterObjectDefinitionSource。filterObjectDefinitionSource類從數(shù)據(jù)庫中讀取需要保護(hù)的URL安全信息,它擴(kuò)展了PathBasedFilterInvocationDefinition Map類。
    同樣,實(shí)現(xiàn)了另外一個methodObjectDefinitionSource類從數(shù)據(jù)庫中讀取需要保護(hù)的FUNCTION資源,它擴(kuò)展了MethodDefinitionMap類。限于篇幅,在這里就不列出具體實(shí)現(xiàn)的源代碼。


    <bean id="methodObjectDefinitionSource"
    class="org.xiaohongli.acegi.db.DBMethodObjectDefinitionSource">
    <constructor-arg><refbean="jdbcTemplate"/>
    </constructor-arg>
    </bean>


      結(jié)束語

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

     
    [打印此文][關(guān)閉窗口][返回頂部
     
    主站蜘蛛池模板: 亚洲国产精品一区二区久久hs| 亚洲国产精品一区在线| 国产精品日韩电影| 中文字幕另类日韩欧美亚洲嫩草| 国产大片一区二区三区| 日本久久丰满的少妇三区| 91精品啪在线观看国产| 国产乱人伦精品一区二区| 日韩av中文字幕在线| 91偷自产一区二区三区精品 | av素人在线| 久久夜色精品国产噜噜麻豆| 欧美在线视频一二三区| 国产欧美三区| 国产精品乱综合在线| free×性护士vidos欧美| 欧美在线观看视频一区二区三区| 欧美综合在线一区| 日本二区在线播放| 亚洲欧美色图在线| aaaaa国产欧美一区二区| 国产精品一区在线观看你懂的 | 亚洲欧美日韩三区| 欧美系列一区二区| 99爱精品在线| 狠狠色噜狠狠狠狠| 国产欧美亚洲一区二区| 夜夜夜夜曰天天天天拍国产 | 中文字幕另类日韩欧美亚洲嫩草| 精品国精品国产自在久不卡| 国产一级二级在线| 国产一区二区资源| 片毛片免费看| 日韩精品一区在线观看| 亚洲国产欧美一区| 国产精品久久久综合久尹人久久9| 欧美三区二区一区| 欧美精品二区三区| 日韩欧美激情| 91精品第一页| 狠狠色狠狠色综合久久一| 午夜剧场伦理| 精品午夜电影| 国产91免费观看| 国产欧美日韩精品一区二区三区| 中文字幕二区在线观看| 午夜影院91| 日本精品一二区| 91av中文字幕| 制服.丝袜.亚洲.另类.中文| 亚洲国产欧洲综合997久久,| 一区二区三区欧美视频| 欧美日韩偷拍一区| 一区二区三区欧美日韩| 26uuu亚洲电影在线观看| 99久久久国产精品免费调教网站| 精品综合久久久久| 久久国产精品网站| 欧美日韩一区视频| 国产精品999久久久| 狠狠色依依成人婷婷九月| 一级女性全黄久久生活片免费| 综合国产一区| 午夜av片| 欧美精品在线一区二区| 色午夜影院| 久久免费视频一区二区| 九九热国产精品视频 | 欧美系列一区| 欧美日韩激情在线| 欧美乱大交xxxxx胶衣| 国产麻豆精品久久| 麻豆视频免费播放| 99国产伦精品一区二区三区 | 日韩欧美一区二区在线视频| 日本看片一区二区三区高清| 狠狠色丁香久久婷婷综合_中| 99精品国产一区二区三区麻豆| 免费看片一区二区三区| 国产精品白浆一区二区| 色综合久久88| 午夜毛片影院| 亚洲1区2区3区4区| free性欧美hd另类丰满| 国模吧一区二区| 免费的午夜毛片| 免费看性生活片| 精品少妇的一区二区三区四区| 欧美乱妇高清无乱码免费| 久久精品一| 久久国产精久久精产国| 日韩av在线高清| 国产精品欧美一区乱破| 91黄色免费看| 91精品久| 91精品一区二区中文字幕| 国偷自产中文字幕亚洲手机在线| 美女直播一区二区三区| 精品国产一区二区三区久久久久久| 国产美女三级无套内谢| 日本亚洲国产精品| 国产一区观看| 狠狠操很很干| 国产极品一区二区三区| 午夜生活理论片| 国产精品久久久av久久久| 国产精品1区二区| 久久精品爱爱视频| 国产91丝袜在线| 欧美日韩国产精品综合| 国产极品一区二区三区| 亚洲精品久久在线| 99爱精品在线| 欧美日韩国产一二| 精品无人国产偷自产在线| 少妇在线看www| 精品国产一区二区在线| 精品国产乱码久久久久久虫虫| 欧美在线一级va免费观看| 少妇中文字幕乱码亚洲影视| 偷拍自中文字av在线| 久久国产视屏| 日韩夜精品精品免费观看| 日日夜夜亚洲精品| 欧美视屏一区| 性欧美1819sex性高播放| 日本一区二区在线电影| 99久久国产免费,99久久国产免费大片| 99国产精品永久免费视频| 日韩一级精品视频在线观看 | 国91精品久久久久9999不卡| 精品一区欧美| 亚洲精品日本无v一区| 日韩欧美中文字幕精品| 国产一区二区大片| 国产69精品久久777的优势| 欧美日韩中文字幕三区| 国产毛片精品一区二区| 国产乱一乱二乱三| 国产精品综合一区二区| 日本精品一二三区| 日本aⅴ精品一区二区三区日| 黄毛片在线观看| 日韩av电影手机在线观看| 日本久久不卡| 亚洲精品中文字幕乱码三区91| 亚洲v欧美v另类v综合v日韩v| 思思久久96热在精品国产| 欧美三级午夜理伦三级中视频| 伊人精品一区二区三区| 亚洲天堂国产精品| 日本精品一二三区| 国产人成看黄久久久久久久久| 国产九九九精品视频| 日韩av中文字幕在线免费观看| 欧美日韩激情一区| 欧美亚洲精品suv一区| 国产精品无码永久免费888| 亚洲欧美日韩另类精品一区二区三区| 不卡在线一区二区| 国产精品v欧美精品v日韩精品v| 国产精品高潮呻| 国精偷拍一区二区三区| 免费久久一级欧美特大黄| 国产在线精品一区二区| 中文字幕1区2区3区| 99精品国产一区二区三区麻豆| 国产一区二区在线91| 日韩精品一区二区久久| 国内精品久久久久影院日本| 国产精品一区二区在线看| 色婷婷精品久久二区二区蜜臂av| 欧美三区视频| 免费精品99久久国产综合精品应用| 黄色国产一区二区| 性生交片免费看片| 少妇久久精品一区二区夜夜嗨 | 岛国黄色网址| 夜夜爽av福利精品导航| 亚洲欧美国产精品一区二区| 亚洲国产精品二区| 国产精品久久久久久久四虎电影| 午夜一级电影| 国产网站一区二区| 7777久久久国产精品| 国产第一区在线观看| 国91精品久久久久9999不卡| 亚洲欧美另类久久久精品2019| 欧美高清极品videossex| 欧美国产一区二区三区激情无套| 久久99精品久久久噜噜最新章节| 日韩精品免费一区二区在线观看| 国产97免费视频| 性精品18videosex欧美| 国产日韩欧美网站| 香港三日本三级三级三级| 久久久久久中文字幕| 欧美精品中文字幕亚洲专区| 国产精品白浆视频| 国产日韩欧美精品一区二区| 色婷婷久久一区二区三区麻豆| 亚洲欧美国产一区二区三区| 97国产精品久久久| 久久国产精彩视频| 一区二区三区欧美在线| 91精品久| 激情久久一区| 99久久99精品| 国内少妇自拍视频一区| 久久久精品a| 欧美一区二区三区爽大粗免费| 日韩欧美一区精品| 国产免费一区二区三区四区五区| 性欧美一区二区| 亚洲精品欧美精品日韩精品| 国产一区二区黄| 欧美hdxxxx| 久久精品爱爱视频| 国产精品麻豆一区二区三区| 91在线一区二区| 国产二区免费视频| xxxx在线视频| 国产欧美精品一区二区三区小说| 久久精品入口九色| 日本精品视频一区二区三区| 激情久久精品| 日韩女女同一区二区三区| 亚洲日本国产精品| 国产伦精品一区二区三区免费迷| 欧美一区二区三区久久精品| 91社区国产高清| 国产中文字幕91| 99爱精品视频| 国产精品69久久久| 毛片大全免费看| 17c国产精品一区二区| 日韩av视屏在线观看| 精品一区二区在线视频| 国产99视频精品免费视频7| 97久久精品一区二区三区观看| 国产一区二区三区网站| 91麻豆精品国产91久久久久| 久久国产精品欧美| 中文字幕亚洲欧美日韩在线不卡| 欧美精品日韩| 欧美freesex极品少妇|