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

    實現基于Spring框架應用的權限控制系統

    http://m.dcyhziu.cn  2007/6/5 源自:中華職工學習網 【字體: 字體顏色

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

      Spring框架和Acegi安全框架介紹

      1、spring 框架

      Spring框架是由Open Source開發的一個優秀的多層J2EE系統框架,它為企業級應用提供了一個非常輕量級的解決方案,大大地降低了應用開發的難度與復雜度,提高了開發的速度。

      Spring框架的核心是IoC和AOP。IoC是一種設計模式,即IoC模式。IoC模式進一步降低了類之間的耦合度,并且改變了傳統的對象的創建方法,實現了一種配置式的對象管理方式,Spring框架中由IoC容器負責配置性的對象的管理。IoC模式極大的提高了系統開發與維護的靈活性。

      AOP是一種編程模式,它是從系統的橫切面關注問題。傳統的面向對象編程OOP主要從系統的垂直切面對問題進行關注,對于系統的橫切面關注很少,或者說很難關注,這樣當考慮到系統的安全性、日志、事務以及其他企業級服務時,OOP就無能為力了,只能在所有相關類中加入類似的系統服務級的代碼。AOP為解決系統級服務問題提供了一種很好的方法。AOP將系統服務分解成方面看待,并為類提供一種聲明式系統服務方式。Java類不需要知道日志服務的存在也不需要考慮相關的代碼。所以,用AOP編寫的應用程序是松耦合的,代碼的復用性就提高了。

      2、Acegi 安全框架

      借助于Spring框架,開發者能夠快速構建結構良好的WEB應用,但現有的Spring框架本身沒有提供安全相關的解決方案。同樣來自于Open Source 社區的Acegi安全框架為實現基于Spring框架的WEB應用的安全控制提供了一個很好的解決方案。Acegi本身就是利用Spring提供的IoC和AOP機制實現的一個安全框架,它將安全性服務作為J2EE平臺中的系統級服務,以AOP Aspect形式發布。所以借助于Acegi安全框架,開發者能夠在Spring使能應用中采用聲明式方式實現安全控制。

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

      Acegi安全框架在基于Spring框架的系統中的應用

      1、分析系統安全性需求

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

      其次,需要進一步明確,系統身份認證資料和資源授權信息的數據持久化形式。

      2、Acegi安全系統數據庫設計

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

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

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

      對應于圖示的XML配置文件的代碼如下:


    /* 配置數據庫datasource 和Acegi 的 jdbcDao */
    <bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
    。紁roperty name=”driverClassName”>
     。紇alue>${jdbc.driverClassName}</value>
    。/property>
    。紁roperty name=”url”>
     。紇alue>${jdbc.url}</value>
    。/property>

     


    圖3 認證管理器配制示意圖
     

     

    <property name=”username”>
     <value>${jdbc.username}</value>
    </property>
    <property name=”password”>
    。紇alue>${jdbc.password}</value>
    </property>
    </bean>
    <bean id=”jdbcDaoImpl” class=”org.acegisecurity. roviders. dao.jdbc.JdbcDaoImpl”>
    。紁roperty name=”dataSource”>
     。紃ef bean=”dataSource”/>
    。/property>
    </bean>

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

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

    </bean>

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


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

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

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


    <filter>
    。糵ilter-name>Acegi HTTP Request Security Filter</filter-name>
    。糵ilter-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>
    。紆rl-pattern>/*</url-pattern>
    </filter-mapping>


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


    <bean id=”securityEnforcementFilter” class=””>
     <property name=”filterSecurityInterceptor”>
     。紃ef bean=”filterInvocationInteceptor”/>
    。/property>
    。紁roperty name=”authenticationEntryPoint”>
     。紃ef bean=”authenticationProcessingFilterEntryPoint”/>
     </property>


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


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


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


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


      結束語

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

      相關鏈接
      相關評論
    主站蜘蛛池模板: 曰韩av在线| 亚洲欧美另类国产| 91精品国产综合久久福利软件| 91av精品| 久久91精品国产91久久久| 国产在线一卡二卡| 国产精品1234区| 久久综合激情网| 国产女人与拘做受免费视频| 欧美日韩国产免费观看| 国产精品国产亚洲精品看不卡15 | 国产三级欧美三级日产三级99| 国产理论片午午午伦夜理片2021| 欧美精品一区二区三区久久久竹菊| 欧美乱妇在线视频播放| 国产精品乱码久久久久久久| 欧美黄色一二三区| 岛国黄色网址| 鲁丝一区二区三区免费观看| 欧美日韩久久一区二区| 欧美精品国产一区二区| 欧美日韩一区二区三区69堂| 国产97在线播放| 久久久精品欧美一区二区免费| a级片一区| 99精品区| 国产激情视频一区二区| 国产一级片自拍| 欧美在线一级va免费观看| 99国产午夜精品一区二区天美 | 一区二区久久精品| 91久久国产露脸精品国产| 久久久久国产亚洲日本| 亚洲va欧美va国产综合先锋| 久久久精品久久日韩一区综合| 97国产精品久久| 国产欧美综合一区| 国产精品一二三在线观看| 久久99精品国产麻豆宅宅| 国产麻豆一区二区三区在线观看| 国产精品一二三在线观看| 精品国产免费一区二区三区| 日韩av一区不卡| 国产一区三区四区| 超碰97国产精品人人cao| 日本美女视频一区二区| 欧美一区二区三区久久精品| 亚洲日韩aⅴ在线视频| 护士xxxx18一19| 91av一区二区三区| 国产一区二区电影在线观看| 欧美日韩国产一区二区三区在线观看| 国产一区二区视频免费在线观看 | 午夜生活理论片| 国产日韩一区二区在线| 狠狠躁夜夜躁人人爽天天天天97 | 色综合久久久久久久粉嫩| 99久热精品| 99久久国产综合精品尤物酒店| 国产精品麻豆一区二区三区| 91在线一区二区| 亚洲精品人| 国产精品白浆一区二区| 国产伦理精品一区二区三区观看体验| 国产性生交xxxxx免费| 性生交大片免费看潘金莲| 国内精品久久久久影院日本| 欧美一区二区精品久久| 国产二区免费视频| 国产精品三级久久久久久电影| 国产欧美视频一区二区三区| 一本一道久久a久久精品综合蜜臀| 国产在线一二区| 午夜激情在线| 日本一区二区在线观看视频| 狠狠色噜噜狼狼狼色综合久| 欧美一区二区三区免费视频| 国产精品视频一区二区在线观看| 国产精品第56页| 91精品夜夜| 精品一区二区三区视频?| 91国偷自产一区二区介绍| 国产伦理一区| 欧美一级免费在线视频| 玖玖玖国产精品| 国产精品剧情一区二区三区| 99久久久久久国产精品| 少妇自拍一区| 浪潮av网站| 色婷婷精品久久二区二区6| 久久福利视频网| 国产一区二区三区精品在线| 国产馆一区二区| 欧美激情午夜| 亚洲精品少妇一区二区| 国产玖玖爱精品视频| 日韩精品一区中文字幕| 国产精品久久久久久久久久不蜜月| 夜色av网| 精品久久小视频| 高清人人天天夜夜曰狠狠狠狠| 久久久综合香蕉尹人综合网| 欧美国产一二三区| 91avpro| 国产在线欧美在线| 国产伦精品一区二区三| 午夜影院一区二区| 一区二区三区欧美精品| 99国产精品永久免费视频 | 国产一区二区视频免费在线观看| 欧美人妖一区二区三区| 国产日韩欧美网站| 日韩区欧美久久久无人区| 17c国产精品一区二区| 中文字幕另类日韩欧美亚洲嫩草| 欧美视屏一区二区| 国产区一区| 99久久精品一区二区| 亚洲精品国产久| 国产一区二区激情| 91精品国产高清一区二区三区 | 久久久99精品国产一区二区三区| 一本色道久久综合亚洲精品浪潮| 国产午夜一级片| **毛片免费| 在线精品国产一区二区三区88| 96国产精品视频| www色视频岛国| 午夜国产一区二区| 午夜一级免费电影| 色综合久久88| 日韩精品一区二区三区中文字幕| 国产欧美一区二区三区在线看| 久久一区二| 一区二区三区欧美视频| 午夜毛片在线观看| 国产日韩欧美另类| 精品久久久久99| 国产精品亚洲一区二区三区| 久免费看少妇高潮a级特黄按摩| 日本亚洲国产精品| 91麻豆精品国产91久久久资源速度 | 亚洲精品日韩激情欧美| 日韩午夜一区| 99久久精品免费看国产交换| 日韩亚洲欧美一区| 亚洲国产精品一区在线| 国产suv精品一区二区4| 国产精品videossex国产高清| 免费a级毛片18以上观看精品| 日韩夜精品精品免费观看| 天干天干天干夜夜爽av| 欧美一区二区三区艳史| 中文在线一区二区三区| 中文字幕制服狠久久日韩二区 | 99久久国产综合精品女不卡| 欧美一区二区三区中文字幕| 国产精品久久久久久亚洲美女高潮| 最新国产精品自拍| 欧美日韩中文不卡| 亚洲国产精品国自产拍av| 日韩精品中文字幕在线| 精品亚洲午夜久久久久91| 精品国产一二区| 国产麻豆91欧美一区二区| 精品午夜电影| 强制中出し~大桥未久10| 欧美一区久久| 国产精品久久久久久久久久不蜜臀| 久久99精| 国产一区二区在线免费| 精品少妇一区二区三区免费观看焕| 日韩亚洲欧美一区| 欧美一区二区三区久久精品视 | av午夜影院| 国产欧美一区二区三区免费| 国产99久久久国产精品免费看| 欧美一级片一区| 黑人巨大精品欧美黑寡妇| 91制服诱惑| 精品国产九九九| 日本xxxxxxxxx68护士| 欧美亚洲精品一区二区三区| 中文字幕日本精品一区二区三区| 天啦噜国产精品亚洲精品| 国内精品久久久久影院日本| 激情久久综合网| 国产全肉乱妇杂乱视频在线观看| 日本精品一二三区| 999国产精品999久久久久久| 福利片91| 国产69精品久久久久久久久久| 小萝莉av| 日本伦精品一区二区三区免费| 国产精品九九九九九九| 国产午夜一级一片免费播放| 自偷自拍亚洲| 亚洲欧美国产一区二区三区| 欧美精品免费一区二区| 午夜影院5分钟| 欧美日韩一级黄| 91黄在线看 | 黄色香港三级三级三级| 国产馆一区二区| 国精偷拍一区二区三区| 久久精品国产一区二区三区| 欧美精品日韩一区| 天堂av一区二区| 久久久精品久久日韩一区综合| 国产精品国产亚洲精品看不卡15 | 欧美日韩一区电影| 欧美一区二区三区免费电影| 狠狠色丁香久久婷婷综| 国产玖玖爱精品视频| 免费欧美一级视频| 精品久久久久久中文字幕| 狠狠综合久久av一区二区老牛| 国产精品视频久久| 国产精品二区在线| 国产乱对白刺激视频在线观看| 26uuu亚洲电影在线观看| 国产精品久久久久久一区二区三区| 高清欧美精品xxxxx| 国产精品久久久久久久久久嫩草| 亚洲天堂国产精品| 久久第一区| 国产一区二区三区四区五区七| 国产精品视频一二区| 久久综合国产伦精品免费| 午夜毛片在线观看| **毛片在线| 强制中出し~大桥未久4| 日本一区二区三区中文字幕| 国产69精品久久99不卡解锁版| 国产一区二区精品在线| 午夜亚洲影院| 日韩无遮挡免费视频| _97夜夜澡人人爽人人| 美女被羞羞网站视频软件| 一区二区不卡在线| 国产麻豆精品久久| 国产精欧美一区二区三区久久久| 日韩欧美国产精品一区| 国产一区=区| 欧美3p激情一区二区三区猛视频 | 欧美在线视频精品|