欧美一区二区三区四区五区,人人看人人艹,亚洲一区二区中文,99精品视频99,亚洲精品欧美综合四区,国产三区视频在线观看,日韩在线观看一区二区,久久精品色
    主辦單位:全國創(chuàng)爭活動指導(dǎo)協(xié)調(diào)小組 中華職工學(xué)習(xí)網(wǎng)首頁 情景站 聯(lián)系電話:010-68232149
    科學(xué)研究人員 | 工程技術(shù)人員 | 購銷人員 | 倉儲人員 | 運輸服務(wù)人員 | 體育工作人員 | 教學(xué)人員 | 購銷人員

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

    http://www.dcyhziu.cn  2007/6/5 源自:中華職工學(xué)習(xí)網(wǎng) 【字體: 字體顏色

    近年來,隨著Internet技術(shù)的迅猛發(fā)展,計算機網(wǎng)絡(luò)已深入到了人們的工作、學(xué)習(xí)和日常生活中,于是,怎樣構(gòu)建安全的web應(yī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實現(xiàn)安全用戶認證和資源授權(quán)控制進行了較深入的研究和擴展,同時給出了可行的解決方案。

      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è)計模式,即IoC模式。IoC模式進一步降低了類之間的耦合度,并且改變了傳統(tǒng)的對象的創(chuàng)建方法,實現(xiàn)了一種配置式的對象管理方式,Spring框架中由IoC容器負責(zé)配置性的對象的管理。IoC模式極大的提高了系統(tǒng)開發(fā)與維護的靈活性。

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

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

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

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

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

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

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

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

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

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

      對應(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 認證管理器配制示意圖
     

     

    <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”>
     …//這里對緩存有效時間進行設(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>

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


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

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

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


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


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


      結(jié)束語

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

      相關(guān)鏈接
      相關(guān)評論
    主站蜘蛛池模板: 国模一区二区三区白浆| 夜夜嗨av色一区二区不卡| 欧美激情精品久久久久久免费 | 久久久久国产精品免费免费搜索| 欧美高清极品videossex| 中文字幕一级二级三级| 国产一区二区三区久久久| 国产免费一区二区三区四区五区 | 91久久国产露脸精品| 国产品久久久久久噜噜噜狼狼 | 日本黄页在线观看| 乱子伦农村| 久久久久亚洲精品视频| 亚洲精品丝袜| 日韩a一级欧美一级在线播放| 国产日韩欧美91| 中文字幕日本精品一区二区三区| 538国产精品一区二区在线| 国产韩国精品一区二区三区| 国产一区观看| 素人av在线| 中文字幕另类日韩欧美亚洲嫩草| 日韩欧美中文字幕精品| 午夜看片网站| 国产在线拍揄自揄拍| 99国产精品免费| 中文字幕在线一区二区三区| 色就是色欧美亚洲| 国产精品综合久久| 91久久香蕉国产日韩欧美9色| 强制中出し~大桥未久10在线播放| 久久96国产精品久久99软件| 国产麻豆91视频| 夜夜爱av| 国产真裸无庶纶乱视频 | 国产精品女人精品久久久天天| 免费观看黄色毛片| 精品久久久久久中文字幕大豆网| 午夜三级大片| 91波多野结衣| 国产91综合一区在线观看| 99精品视频免费看| 午夜一区二区视频| 欧美黄色片一区二区| 欧美视屏一区| 国产精品视频免费看人鲁| 日韩精品中文字幕一区二区| 一区二区三区在线观看国产| 国产国产精品久久久久| 久久久精品欧美一区二区| 欧美网站一区二区三区| 91精品婷婷国产综合久久竹菊 | av毛片精品| 日本高清不卡二区| 久久99亚洲精品久久99果| 国产又色又爽无遮挡免费动态图| 午夜影院啪啪| 亚洲国产偷| 一区二区三区日韩精品| 91精品啪在线观看国产线免费| 国内揄拍国产精品| 亚洲欧美日韩精品在线观看| 亚洲欧美中日精品高清一区二区| 91精品福利在线| 国产91久久久久久久免费| 中文无码热在线视频| 日韩av在线影院| 91精品国产综合久久婷婷香| 国产亚洲精品久久久久秋霞| 午夜国产一区| 欧美国产一区二区三区激情无套| 狠狠躁日日躁狂躁夜夜躁| 免费看性生活片| 最新国产精品自拍| 亚洲欧美制服丝腿| 日本高清二区| 国产一区二区综合| 国产日韩欧美91| 狠狠色噜噜狠狠狠狠2021天天| 精品一区二区超碰久久久| 99久久99精品| 亚洲国产精品二区| 国产91九色在线播放| 香港三日本三级三级三级| 夜夜躁人人爽天天天天大学生 | 国产日本一区二区三区| 国产在线播放一区二区| 日韩精品一区二区三区免费观看视频| 国产专区一区二区| 日韩精品久久一区二区三区| 99国产精品丝袜久久久久久| 国产欧美日韩在线观看| 国产精品久久久久久久久久嫩草| 久久久午夜爽爽一区二区三区三州| 亚洲乱亚洲乱妇50p| 欧美一级久久精品| 狠狠色狠狠色88综合日日91| 国产区二区| 夜色av网| 欧美一区视频观看| 年轻bbwwbbww高潮| 国产精品一区亚洲二区日本三区| 91精品综合在线观看| 护士xxxx18一19| 国产在线欧美在线| 国产女人和拘做受视频免费| 国产一区二区资源| 精品久久综合1区2区3区激情| 久久国产精品-国产精品| 在线国产二区| 亚州精品国产| 91影视一区二区三区| 91精品免费观看| 午夜欧美a级理论片915影院| 午夜亚洲影院| 久久久人成影片免费观看| 欧美网站一区二区三区| 99久热精品| 日韩av视屏在线观看| 91嫩草入口| 91精品一区在线观看| 欧美日韩三区| 亚洲国产精品国自产拍av| 午夜无人区免费网站| 国产伦精品一区二区三区照片91| 国产欧美一区二区三区沐欲| 精品国产一区二区三区麻豆免费观看完整版| 国产videosfree性另类| 国产99久久久精品视频| 国产大片一区二区三区| 午夜剧场一级片| 欧美日韩不卡视频| 欧美视频1区| av毛片精品| 日本99精品| 99久久夜色精品| 午夜影院一级| 91人人精品| 一区二区三区欧美日韩| 91视频国产一区| 狠狠躁夜夜躁2020| 91免费看国产| 99精品久久久久久久婷婷| 欧美精品一区二区三区四区在线| 91久久久爱一区二区三区| 野花社区不卡一卡二| 99爱精品视频| 午夜看片在线| 国产午夜亚洲精品羞羞网站| 日韩精品1区2区3区| 国产欧美日韩在线观看| 久久精品国产一区二区三区| 538国产精品| 欧美精品综合视频| 6080日韩午夜伦伦午夜伦| 国产一区网址| 国产伦理久久精品久久久久| 欧美一区二区三区久久精品视 | 亚洲三区二区一区| 国产欧美二区| 国产一区二区激情| 福利电影一区二区三区| 久久久精品欧美一区二区免费| 91麻豆精品国产综合久久久久久| 欧美福利一区二区| 亚洲国产精品麻豆| 午夜黄色一级电影| 一区二区三区中文字幕| 欧美在线视频一二三区| 亚洲乱码av一区二区三区中文在线: | 久久久久亚洲最大xxxx| 欧美黄色片一区二区| 一区二区三区欧美日韩| 小萝莉av| 猛男大粗猛爽h男人味| 久久不卡精品| 国产精品二区一区| 日韩av在线导航| 国产呻吟久久久久久久92| 美日韩一区| 国产亚洲精品久久777777| 国产精品一区二区不卡| 国产精品1区2区| 精品99在线视频| 精品videossexfreeohdbbw| 国产伦精品一区二| 美国三级日本三级久久99| 亚洲日韩aⅴ在线视频| 亚洲精品色婷婷| 好吊妞国产欧美日韩免费观看网站| 性生交片免费看片| 国产精品v一区二区三区| 日本看片一区二区三区高清| 97视频一区| 亚洲欧美国产日韩色伦| 少妇高清精品毛片在线视频| 亚洲精品一区在线| 91精品国产91热久久久做人人| 91偷拍网站| 日韩精品中文字幕一区二区三区| 亚洲**毛茸茸| 国模精品免费看久久久| 国产精品一区一区三区| 狠狠色噜噜狠狠狠狠色综合久老司机| 国产欧美一区二区三区四区| 亚洲一级中文字幕| 在线中文字幕一区| 国产精品偷伦一区二区| 久久激情影院| 狠狠色成色综合网| 亚洲精品一区在线| 日韩午夜电影在线| 中文字幕久久精品一区| 黄色av免费| 欧美一级免费在线视频| 精品国产乱码久久久久久a丨| 欧美一区二区三区激情| 日韩精品中文字幕久久臀| 久久天天躁狠狠躁亚洲综合公司| 欧美大片一区二区三区| 久久精品一二三| 国产欧美一区二区精品婷| 99爱国产精品| 国产精品v欧美精品v日韩| 国产一区日韩在线| 91精品视频一区二区| 亚洲国产日韩综合久久精品| 日本福利一区二区| 午夜av免费观看| 国产不卡三区| 中文字幕一区二区三区乱码| 精品少妇的一区二区三区四区| 狠狠色噜噜狠狠狠狠色综合久老司机| 午夜叫声理论片人人影院| 国产欧美一区二区精品久久| 中文字幕一区二区三区乱码| 99精品偷拍视频一区二区三区| 日韩精品1区2区3区| 日本一区中文字幕| 久久婷婷国产麻豆91天堂徐州| 中文天堂在线一区| 午夜老司机电影| 高清国产一区二区三区| 少妇自拍一区| 久久一区二| 亚洲欧美色一区二区三区|