《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > Spring Security的Web資源保護功能研究與擴展
Spring Security的Web資源保護功能研究與擴展
2015年微型機與應用第15期
賽序朋1,侯瑞春2,丁香乾2
(1.中國海洋大學 信息科學與工程學院,山東 青島 266100; 2.中國海洋大學 信息工程中心,山東 青島 266071)
摘要: 針對開源安全框架Spring Security的Web資源保護功能進行研究,分析框架的認證和授權兩個主要過程,指出了框架對于用戶和Web資源的授權信息外化存儲這一關鍵企業級安全特性支持上的不足,進而對此進行了擴展。借助于Spring容器的依賴注入特性和安全框架的擴展性,結合數據庫存儲授權信息,本文設計了一個基于Spring Security的用戶與Web資源授權信息動態存儲方案,并給出了關鍵的程序代碼。
Abstract:
Key words :

  摘  要: 針對開源安全框架Spring Security的Web資源保護功能進行研究,分析框架的認證和授權兩個主要過程,指出了框架對于用戶和Web資源的授權信息外化存儲這一關鍵企業級安全特性支持上的不足,進而對此進行了擴展。借助于Spring容器的依賴注入特性和安全框架的擴展性,結合數據庫存儲授權信息,本文設計了一個基于Spring Security的用戶與Web資源授權信息動態存儲方案,并給出了關鍵的程序代碼。

  關鍵詞: 安全框架;訪問控制用戶認證;資源授權

0 引言

  權限管理是Web應用系統最重要的組成部分之一,擔負著用戶分級分類管理、系統和數據的訪問控制等重要職責[1]。在B/S架構中主要體現在對系統的Web資源的保護。盡管Servlet規范定義了安全性接口,但因依賴應用服務器的具體實現,使用這種安全服務的應用可移植性較差。而且Servlet規范對于很多常用的企業級安全特性并未作出規定,使得多數應用服務器對這些特性不予支持。企業應用開發急需一種能夠保障應用可移植性強、廣泛支持企業級安全特性的安全解決方案。

  Spring Security[2]正是為解決上述難題而建立的開源安全框架。借助于過濾器技術和Spring框架,應用的可移植性得到了保證。這一框架還為應用提供了常用的企業級安全特性,比如用戶切換、并發Session控制、領域對象的授權支持等[3]。盡管這是一個擴展性極好的安全框架,但是對授權信息的外化存儲[3](將授權信息存儲到數據庫中或者磁盤文件等外部環境)這一關鍵企業級安全特性的支持很不完善。針對這一問題,本文通過研究框架的Web資源保護機制,通過自定義框架接口實現替代系統默認組件的方式,實現了一個動態權限設計方案。

1 Web資源保護機制

  Spring Security借助一系列Servlet過濾器為目標資源提供安全性增強[4],但并不需要在Web容器的配置文件中定義很多過濾器,而是借助于安全框架提供的代理過濾器將請求委托給IoC容器中配置的安全過濾器鏈來處理,使得過濾器鏈中的過濾器可以享受到依賴注入[5]服務,而且減少了框架與Web環境的耦合性。

  Web資源[6]是指能夠通過URL訪問到的一切資源。對Web資源的保護是基于Web的企業級應用最主要的安全需求。Spring Security框架通過過濾器技術對Web資源進行保護,包括認證和授權兩個主要過程。

  認證[7]是驗證一個用戶與其聲明身份是否相符的過程,用戶必須提供憑證,通常是密碼。用戶在訪問目標資源前,框架必須攔截到請求,作出認證處理。比如收集用戶憑證、確認用戶身份。在完成認證后,框架必須管理好認證結果,以供用戶后續訪問使用,避免重復認證。如果通過認證,則生成封裝該用戶授權信息的Authentication認證對象供授權使用。如果未通過認證,則返回登錄頁面。

  授權[7]是控制對受保護資源的訪問的過程,必須在認證之后進行。當已認證用戶訪問受保護資源時,授權過程根據用戶的認證對象和受保護資源的訪問屬性判斷是否允許用戶訪問這個資源。如果授權被通過,則執行目標資源;否則執行拒絕訪問頁面。如果未認證用戶通過直接輸入URL訪問受保護的資源,則會重定向到登錄頁面。

2 認證與授權分析

  2.1 認證過程分析

  當用戶在登錄頁面提交包含用戶名和密碼的請求時,認證過濾器[8]會截獲并處理這個請求,認證過程開始:

 ?。?)認證過濾器從請求中獲取用戶名和密碼封裝成認證對象[9],然后將其交給配置的認證管理器來完成認證工作。如果完成認證,則返回到認證過濾器中,接著執行安全過濾器鏈的下一步。

 ?。?)認證管理器通過認證提供器完成具體的認證操作。認證提供器提供保存在服務器端的用戶信息。認證管理器持有一組認證提供器,按順序遍歷配置的認證提供器。如果某個認證提供器成功認證,則認證結果封裝到認證對象中,供授權使用。其他認證提供器便沒有機會再去完成本次認證請求。

 ?。?)認證提供器處理用戶認證請求的基本過程包括:從緩存或數據庫中獲取用戶信息對象,判斷用戶狀態(是否鎖定、是否有效、帳號是否過期),啟動用戶輸入信息與服務器端存儲的用戶信息的對比。如果對比操作正常完成,則表示通過認證,返回認證管理器,再返回認證過濾器。如果對比操作拋出異常,則表明認證失敗,這一異常將上拋至認證過濾器處理,處理的結果是轉到認證失敗頁面。

  通過認證提供器,應用與認證信息解耦,一切差異都只存在于框架配置文件的元數據中,甚至可以把認證信息轉移到數據庫或者目錄服務器中實現動態存儲,這樣認證信息的修改就無需重啟應用了,這正是企業級應用的安全需求。

  2.2 授權過程分析

  當用戶請求受保護資源時,授權過濾器要判斷是否允許用戶訪問受保護資源。整個授權過程分為如下步驟:(1)授權過濾器攔截請求,經過預處理后,如果滿足條件,則進入“事前評估”過程,即訪問資源前的安全檢查。(2)如果完成“事前評估”,則表示可以訪問目標資源,接著執行安全過濾器鏈的下一步。(3)如果“事前評估”過程發生異常,則表示不能訪問目標資源。此時安全過濾器鏈中異常轉換過濾器將捕獲并處理異常,或者轉向訪問拒絕頁面(用戶權限不足),或者轉向登錄頁面(用戶未認證)。

  “事前評估”是授權過程的關鍵,其操作封裝在授權過濾器父類的beforeInvocation方法中,步驟總結如下:

 ?。?)獲取目標資源的授權信息。如果目標資源受到保護,則返回封裝了目標資源和授權信息的ConfigAttributeDefinition對象。如果目標資源不受保護,則返回null,退出“事前評估”。

 ?。?)獲得當前用戶的認證對象。如果認證對象處于未認證狀態,則認證管理器介入,啟動認證流程。若在認證過程中產生異常,則返回登錄頁面給用戶。如果認證對象處于已認證狀態,則進入授權階段。

  (3)進入授權階段,授權管理器通過引用的幾個授權投票器實施具體授權操作。

  (4)如果授權成功,則進入安全過濾器鏈的下一步驟,通常是調用目標資源。如果授權失敗,則拋出授權異常,被異常轉換過濾器捕捉處理,返回給用戶訪問拒絕頁面。

  授權過濾器通過ObjectDefinitionSource接口獲取配置文件中的資源授權信息。企業級應用通常將資源授權信息存儲到RDBMS或者目錄服務器中,實現動態調整應用的資源授權信息的目的。Spring Security沒有對這一企業特性給出直接支持,但框架是基于IoC容器組織各種組件,因此可以自定義資源授權接口的實現類并進行擴展。

3 動態存儲授權信息研究

  3.1 默認的授權信息存儲方式

  Spring Security默認存儲授權信息的方式是直接寫在配置文件中。這種做法僅僅適合演示或者小型應用,會帶來以下幾個問題:首先,配置文件代碼急劇膨脹,難以維護。其次,無法實現授權信息的動態存儲。因為配置文件只在應用啟動時被加載到內存中,每次修改配置文件都需要重新加載應用才能生效。企業級應用都要求能夠動態授權信息。通常做法是把授權信息存儲在數據庫、目錄服務器或者磁盤文件上,使用程序進行增刪改查操作。但框架對授權信息的外化存儲支持并不完善,需要自行擴展。

  3.2 動態存儲授權信息方式的配置

  對于用戶授權信息的外化存儲,框架給出了較好的支持,通過配置<jdbc-user-service>元素,指定自定義數據表以及提取用戶授權信息的SQL語句,這里不再詳細討論。對于資源授權信息的外化存儲,框架沒有提供支持方法,也沒有留下擴展接口。不過,框架提供了調整安全過濾器鏈的功能,以及基于IoC容器管理組件的方式,從而能夠用自定義組件替換默認實現,進行功能擴展。首先,自定義用戶表、資源表、角色表以及相關映射表,如圖1所示。其次,配置資源授權接口的自定義實現類,同時為其提供定制的提取資源授權信息的SQL語句。再次,配置授權過濾器Bean,將資源授權接口的自定義實現類配置到授權過濾器的objectDefinitionSource屬性中,并利用框架提供的調整過濾器鏈功能標簽    <custom-filter>將配置的授權過濾器Bean放到安全過濾器鏈的默認授權過濾器之前,使得默認授權過濾器不再執行授權操作。

001.jpg001.jpg

  3.3 資源授權接口實現

  當Web容器裝載應用時,spring會自動解析配置文件中的資源授權信息,按特定格式生成默認的資源授權實現類。對于采用數據庫存儲資源授權信息的應用,必須自行將資源授權信息從數據庫中取出并按照特定格式存儲到資源授權接口實現對象中,并將此對象設置到授權過濾器的屬性中。通過實現FactoryBean接口并且繼承JdbcDaoSupport的自定義類來提供資源授權對象。其中關鍵是buildRequestMap()方法調用findResources()方法從數據庫中獲取資源授權信息,組裝成特定格式,實現代碼如圖2和圖3所示。其中findResources()方法通過內部類ResourceMapping的execute()方法利用spring JDBC技術完成數據存取操作。

4 結束語

  Spring Security安全框架通過過濾器技術,為應用提供了強大的Web資源保護機制,安全命名空間更是進一步簡化了配置代碼,但默認組件并不支持授權信息的外化存儲。本文對框架的認證與授權流程及原理進行了研究,在此基礎上對用戶授權信息和資源授權信息的外化存儲進行了設計,這種方案符合企業級應用對于授權信息的動態存儲,對于應用的權限設計方案具有一定的參考價值和實用性。

參考文獻

  [1] 信科,楊峰,楊光旭,等.基于RBAC權限管理系統的優化設計與實現[J].計算機技術與發展,2011(7):172-174,249.

  [2] CRAIG W.Spring實戰[M].耿淵,譯.北京:人民郵電出版社,2011.

  [3] 羅時飛.敏捷Acegi、CAS[M].北京:電子工業出版社,2005.

  [4] MAK G, LONG J, RUBIO D. Spring攻略[M].陳宗恒,姚軍,蔣亮,譯.北京:人民郵電出版社,2011.

  [5] 羅時飛.精通Spring—深入JavaEE開發核心技術[M].北京:電子工業出版社,2008.

  [6] 周秀,劉培順,劉加標,等.海洋環境云平臺訪問控制系統研究[J].微型機與應用,2015,34(7):9-12,23.

  [7] 路鵬,殷兆麟.基于Spring的Acegi安全框架認證與授權的分析及擴展[J].計算機工程與設計,2007(6):1313-1316.

  [8] 許軍林,蔣年德.Acegi安全框架在Web系統中的應用[J].現代計算機(專業版),2007(9):25-26,57.

  [9] 黎小紅.基于Spring框架應用的權限控制系統的研究和實現[J].計算機與信息技術,2006(11):4-7.


此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          裸体女人亚洲精品一区| 在线午夜精品| 日韩系列欧美系列| 在线一区二区三区做爰视频网站| 国产日韩在线亚洲字幕中文| 亚洲少妇诱惑| 亚洲一品av免费观看| 一本色道婷婷久久欧美| 国产日韩欧美在线播放不卡| 亚洲大胆视频| 香蕉免费一区二区三区在线观看| 在线观看视频一区二区| 国产亚洲一本大道中文在线| 日韩视频中文| 亚洲高清不卡| 国产一区二区三区精品久久久| 日韩视频国产视频| 在线精品国产成人综合| 欧美亚州一区二区三区| 欧美日韩一区二区欧美激情| 国内在线观看一区二区三区| 亚洲国产精品精华液2区45| 久久国产精品黑丝| 国产一区二区三区在线观看免费| 亚洲国产精品va在线看黑人| 99精品视频网| 国产一区日韩一区| 国产一区二区三区在线播放免费观看| 欧美欧美天天天天操| 国产精品伦理| 久久精彩视频| 免费亚洲一区二区| 一本色道久久88综合亚洲精品ⅰ| 狠狠色丁香婷婷综合影院| 亚洲高清在线观看| 亚洲午夜激情在线| 久久国产福利| 国产一区二区三区成人欧美日韩在线观看| 午夜国产一区| 国产日韩一区在线| 国产精品99久久久久久白浆小说| 怡红院av一区二区三区| 鲁大师成人一区二区三区| 国产精品v日韩精品| 国产精品高潮呻吟久久av无限| 欧美成人综合| 亚洲国语精品自产拍在线观看| 久久久久久9999| 欧美激情第3页| 亚洲国产欧洲综合997久久| 136国产福利精品导航| 亚洲综合精品自拍| 欧美本精品男人aⅴ天堂| 一本色道久久综合亚洲精品小说| 国产精品豆花视频| 一本久久知道综合久久| 最新日韩av| 欧美精品亚洲一区二区在线播放| 久久综合久久久| 久久se精品一区精品二区| 在线激情影院一区| 亚洲国产精品成人一区二区| 欧美亚洲一区二区在线观看| 一区二区三区四区五区视频| 亚洲国内在线| 欧美激情偷拍| 欧美一区精品| 久久国内精品自在自线400部| 亚洲一区在线视频| 亚洲理论在线观看| 欧美国产日韩精品免费观看| 亚洲电影在线观看| 免费成人网www| 欧美激情精品久久久久久变态| 欧美三区免费完整视频在线观看| 精品99一区二区| 国模私拍一区二区三区| 99国产精品视频免费观看一公开| 亚洲一区精品在线| 欧美午夜不卡影院在线观看完整版免费| 亚洲字幕一区二区| 国产色产综合产在线视频| 在线一区欧美| 欧美伊人久久久久久午夜久久久久| 欧美视频一区在线观看| 欧美人与性禽动交情品| 久久精品国产亚洲高清剧情介绍| 午夜国产欧美理论在线播放| 久久久亚洲高清| 欧美一区二区三区四区视频| 一区二区三区无毛| 欧美一区二区三区另类| 亚洲精品视频一区二区三区| 久久久www成人免费无遮挡大片| 国产一区视频观看| 中文无字幕一区二区三区| 国产欧美一区二区精品性| 欧美日韩免费在线视频| 国产在线国偷精品产拍免费yy| 欧美亚洲动漫精品| 亚洲欧美国产毛片在线| 欧美日韩国产bt| 欧美日韩大陆在线| 亚洲一区二区三区高清| 欧美一区二区三区免费看| 久久精品国内一区二区三区| 欧美天天视频| 国产精品美女主播在线观看纯欲| 亚洲高清不卡在线观看| 欧美成人免费大片| 久久精品国产一区二区三区| 黄色亚洲精品| 欧美色图首页| 欧美在线视频一区二区三区| 老鸭窝91久久精品色噜噜导演| 国产精品黄页免费高清在线观看| 国产精品一区二区在线| 国产一区二区三区在线观看精品| 国产欧美精品一区二区三区介绍| 国产一区深夜福利| 久久国产主播精品| 国产精品日产欧美久久久久| 欧美成年人视频| 欧美成人资源| 国产乱人伦精品一区二区| 欧美影片第一页| 久久国产精品亚洲77777| 麻豆精品国产91久久久久久| 久久久久久一区二区| 韩国av一区二区三区四区| 精久久久久久久久久久| 久久riav二区三区| 亚洲少妇自拍| 国产伦精品一区二区三区高清| 久久精品在线| 欧美激情精品久久久久久大尺度| 亚洲国产婷婷综合在线精品| 好吊色欧美一区二区三区视频| 日韩亚洲一区二区| 欧美成人综合| 欧美人体xx| 欧美激情一级片一区二区| 亚洲专区欧美专区| 亚洲天堂av图片| 美女福利精品视频| 亚洲夫妻自拍| 激情婷婷亚洲| 美女脱光内衣内裤视频久久影院| 国产九区一区在线| 韩国av一区二区三区四区| 久久久久久久精| 午夜精品福利在线| 欧美黄在线观看| 激情av一区二区| 久久天天躁狠狠躁夜夜爽蜜月| 免费一级欧美在线大片| 亚洲国产精品精华液2区45| 国产一区免费视频| 亚洲素人在线| 欧美国产亚洲另类动漫| 欧美日韩国产美女| 亚洲精品国产精品乱码不99按摩| 国产精品毛片在线| 久久人人精品| 亚洲欧美激情诱惑| 国产精品jvid在线观看蜜臀| 国产日韩欧美一二三区| 免费看精品久久片| 一区二区三区波多野结衣在线观看| 久热爱精品视频线路一| 欧美va亚洲va国产综合| 一区二区三区回区在观看免费视频| 久久综合综合久久综合| 欧美亚男人的天堂| 精东粉嫩av免费一区二区三区| 在线日韩av永久免费观看| 在线视频欧美日韩| 国产精品日韩精品欧美在线| 亚洲天堂网在线观看| 亚洲国产精品成人va在线观看| 亚洲免费黄色| 欧美在线在线| 亚洲日本欧美在线| 亚洲国产一区二区三区青草影视| 欧美激情一二区| 亚洲在线视频免费观看| 国产精品久久久久久久第一福利| 欧美三日本三级少妇三2023| 极品少妇一区二区| 国产午夜久久久久| 国产一区二区电影在线观看| 韩国av一区二区三区在线观看| 久久中文字幕一区二区三区| 亚洲视频在线播放| 欧美成人精品1314www| 欧美三级韩国三级日本三斤| 日韩亚洲欧美一区二区三区| 久久一区二区三区国产精品| 欧美一区二区三区日韩视频| 久久一日本道色综合久久| 一区二区三区精品国产| 国产精品免费小视频| 欧美在线首页| 欧美高清视频一二三区| 欧美日韩中文在线观看| 亚洲永久免费精品| 国产精品视频精品| 国产精品综合av一区二区国产馆| 亚洲日产国产精品| 伊人成人开心激情综合网| 在线一区二区视频| 亚洲在线网站| 极品中文字幕一区| 老鸭窝毛片一区二区三区| 国产精品捆绑调教| 国语自产精品视频在线看8查询8| 久久精品夜夜夜夜久久| 免费成人毛片| 欧美在线网站| 久久精品一区二区三区不卡| 国产一区二区在线观看免费| 亚洲国产日韩欧美一区二区三区| 欧美激情久久久久久| 欧美日韩免费看| 在线亚洲欧美专区二区| 日韩视频永久免费| 国产精品99久久久久久人| 国产啪精品视频| 在线一区亚洲| 亚洲大片精品永久免费| 亚洲美女啪啪| 国产一区日韩欧美| 欧美一区二区三区四区高清| 国产精品久久久久久久午夜| 亚洲图片在线观看| 国产一区二区精品在线观看| 欧美伊人久久久久久午夜久久久久| 欧美女同在线视频| 亚洲久久一区| 亚洲综合社区| 99一区二区| 国产精品女人毛片| 香蕉av777xxx色综合一区| 欧美无砖砖区免费| 欧美成人免费小视频| 久久久久久久久蜜桃| 西西裸体人体做爰大胆久久久| 国产自产高清不卡| 久久久亚洲国产天美传媒修理工| 国产精品电影网站| 红桃视频国产一区| 欧美日韩在线精品一区二区三区| 久久一二三国产| 日韩视频中午一区| 一区二区三区在线高清| 欧美另类在线观看| 国语自产精品视频在线看一大j8| 一本久道久久综合狠狠爱| 久久都是精品| 老司机久久99久久精品播放免费| 在线观看中文字幕亚洲| 国产精品视频网址| 欧美激情国产高清| 亚洲欧美一级二级三级| 久久影院午夜论| 你懂的成人av| 亚洲国产91色在线| 国产一区激情| 国产精品五区| 欧美亚洲成人免费| 亚洲欧洲视频| 狠狠色综合网站久久久久久久| 欧美一区永久视频免费观看| 伊人久久大香线蕉综合热线| 狠狠色丁香婷婷综合久久片| 亚洲欧美色一区| 久久不射电影网| 国产精品成人一区二区三区夜夜夜| 亚洲小说春色综合另类电影| 99精品视频免费全部在线| 久久亚洲国产精品日日av夜夜| 一卡二卡3卡四卡高清精品视频| 欧美日本国产精品| 国产精品自拍小视频| 免费日韩精品中文字幕视频在线| 国产精品三区www17con| 久久av一区二区三区漫画| 在线成人小视频| 国产美女扒开尿口久久久| 亚洲欧美国产高清| 亚洲福利视频在线| 在线观看不卡| 久久躁日日躁aaaaxxxx| 亚洲电影有码| 黄色综合网站| 麻豆视频一区二区| 亚洲看片网站| 久久不射中文字幕| 美女精品视频一区| 国产精品永久| 亚洲一区在线观看免费观看电影高清| 亚洲高清在线观看一区| 亚洲精品日韩综合观看成人91| 久久―日本道色综合久久| 一区二区三区自拍| 在线观看免费视频综合| 欧美一区永久视频免费观看| 欧美一区二区三区婷婷月色| 国产综合精品一区| 欧美日韩一区高清| 久久久在线视频| 国产亚洲欧美日韩日本| 亚洲人体1000| 亚洲精品日韩综合观看成人91| 免费视频一区二区三区在线观看| 久久精品国产亚洲a| 亚洲国产精品成人va在线观看| 欧美香蕉大胸在线视频观看| 午夜宅男欧美| 欧美理论大片| 欧美一区三区二区在线观看| 欧美一区二区视频在线| 日韩小视频在线观看专区| 91久久国产综合久久| 亚洲无毛电影| 在线中文字幕不卡| 免费日韩av片| 亚洲一区二区在线看|