謝滿 魏小銳
(東莞理工學院 計算機學院,廣東東莞 523808)
訪問控制技術是信息系統安全的核心技術之一,通過對用戶訪問資源的活動進行有效監(jiān)控,使合法的用戶在合法的時間內獲得有效的系統訪問權限,防止非授權用戶訪問系統資源[1]。目前在大多數實際系統中,訪問控制管理都采取簡單的處理,指定一個特權管理員執(zhí)行所有的管理操作,這種傳統的訪問控制管理在計算機系統中的管理架構與現實的管理架構相脫節(jié),這對管理工作造成了一定的阻礙[2-4]。以績效考核系統為例,不同的部門采用了不同的訪問控制模型,而傳統的訪問控制都是針對一種訪問控制模型提出的,很難適應這種多訪問控制模型并存的情況。
針對上述問題和目前現狀,提出了一個基于Freemarker自定義訪問控制可行性實現方案。Freemarker是一個使用純Java編寫的開源模板引擎,能夠基于模板生成文本輸出的框架,因此,只要在Freemaker的基礎下進行二次開發(fā),自定義一套統一通用的權限管理標簽,開發(fā)人員便可以使用標簽傳入訪問的URL參數,對各類信息資源的訪問加以控制以及對用戶和相關人員的權限加以管理[5-7]。以績效考核管理系統為例,教務處、科研處、組織部在系統中擔當著不同的角色有著不同權限,如:教務處只有管理教師的教學工作量及服務工作量的權限,科研處只有管理教師的科研工作量的權限,組織部只有管理中層干部領導的評價值的權限,而前端只需要一個基于Freemaker技術的Html5界面便可以準確區(qū)分出被授權的用戶所能訪問的數據和信息。
權限管理系統可以通過不同的技術來實現。以績效考核管理業(yè)務處理為基礎,有效的利用FreeMarker技術的支持,通過訪問接口的URL地址參數及自定義PermistionDirective標簽來實現統一界面權限管理,并且構造出能靈活處理各個管理系統的通用權限管理標簽[8-9]。
自定義通用標簽流程圖如圖1所示。
在傳統的權限管理業(yè)務系統中,權限設計通常是針對具體到某個用戶賦予不同的訪問權限,因此,系統權限管理的范圍較窄、通用性較差。以績效考核系統為例,采用傳統的方式實現權限管理時,不同的權限用戶創(chuàng)建一個唯一前端頁面,這樣會造成當系統越來越龐大;當管理權限越來越復雜時,前端代碼冗余,維護艱難。而通用權限管理模型,則能夠解決上述問題,具有以下特性:
(1)通用性強、可移植。該標簽模版兼容JDK 5以上,可以將其加入到任何需要進行權限管理的JAVA系統中。另外,該標簽可以被重復利用,具有較好的可移植性。
(2)易替換性。隨著JDK的環(huán)境及項目環(huán)境的變化,該標簽模版升級時,只需將對應的標簽類替換,其他代碼不需要修改。
圖1 自定義統一標簽流程圖
(3)易安裝性。集成該標簽模版只需拷貝封裝好的AuthTemple.jar包添加到lib目錄下編譯即可使用。
設計一個單例PermistionDirective實體Bean對標簽統一管理,并初始化環(huán)境,設置全局設置標簽屬性:如default_encoding編碼模式,template_version模版版本,locale本地化處理等。以績效系統為例,采用SpringMVC框架注入Bean類PermistionDirective,實現全局統一管理,這樣設計沒有依賴于特定的系統,根據需求配置模版環(huán)境,升級模版版本等。
通過實現Freemarker模版基類TemplateDirectiveModel的接口,將傳入的PARAM_URL在數據庫匹配驗證該登錄用戶的權限是否包含傳進來的URL參數,如對于教務處來說權限是僅限于管理教師的教學工作量及服務工作量,擁有權限對應URL為PARAM_URL="/teaWork.do"及PARAM_URL="/ser-Work.do",此時傳入的PARAM_URL="/teaWork.do"則驗證通過,渲染頁面,反之,如果傳入的是科研處的URL="sciWork/do",則權限驗證失敗。
當通過數據庫驗證URL的匹配時,需要對頁面展示做渲染。在自定義模版標簽模塊的配置中,定義了一個叫jx_perm的bean,這樣就可以在頁面中使用<@jx_perm url=""></@jx_perm>標簽。頁面解析到該標簽時,就會訪問服務器PermistionDirective的接口,判斷該用戶是否有權限訪問url,如果有,則渲染標簽體里面的內容,如果沒有權限則跳過標簽體。以績效考核系統為例,管理界面有一個展示當然用戶管理權限的頁面,如下:
教務處管理員擁有管理教學工作量、服務工作量的權限,當URL通過標簽訪問接口并匹配數據庫成功后,經過渲染看到的界面是:
科研處管理員擁有管理科研工作量的權限,當URL通過標簽訪問接口并匹配數據庫成功后,經過渲染看到的界面是:
<@jx_perm url="/sciWork.do">
<li class="normal" ><a href="/sciWork.do">科研工作量管理</a></li>
</@jx_perm>
這樣,就這做到了一個總的管理頁面通過自定義全局標簽的形式做到權限分離。
在分析傳統的權限管理方法的基礎上,給出了一個行之有效的權限管理設計模式,該設計模式可以直接應用在常用的管理系統中,能夠明顯縮短權限管理的開發(fā)周期,降低開發(fā)費用,并且該設計模式能夠在較大的限度內滿足用戶在權限管理方面的靈活需求。
[1]上超望,趙呈領,劉清堂,等.組合Web服務訪問控制技術研究綜述[J].計算機科學,2011(10):13-15.
[2]李鳳華,王巍,馬建峰,等.基于行為的訪問控制模型及其行為管理[J].電子學報,2008(10):1881-1884.
[3]李蘭瑛,李曉蕓.基于腳本和URL傳遞參數的Web部份訪問控制技術[J].信息與技術工程,2010(03):349-351.
[4]李鳳華,蘇铓,史國振,等.訪問控制模型研究進展及發(fā)展趨勢[J].電子學報,2012(04):805-808.
[5]胡敏.基于Freemarker的企業(yè)網站內容管理平臺研究[J].信息通信,2011(02):62-63.
[6]鞠鳳娟,侯茜慧,肖守柏.FREEMARKER結合STRUTS2框架開發(fā)WEB插件研究[J].科技經濟市場,2010(11):23-25.
[7]趙衛(wèi)東,畢曉清,盧新明.基于角色的細粒度訪問控制模型的設計與實現[J].計算機工程與設計,2013(02):474-479.
[8]屈建明,陳潔.FreeMarker模板引擎動態(tài)生成網頁的應用研究[J].計算機與現代化,2011(03):121-123.
[9]周春容,肖祥林,楊樺.Java Web通用用戶權限管理框架設計與實現[J].計算機與現代化,2014(03):177-179.