劉建爽 孫文磊 何 麗 黨亞洲
(新疆大學機械工程學院,新疆 烏魯木齊830047)
隨著網絡和信息化的高速發展,網絡協同化已成為產品快速制造技術[1]的一種發展趨勢?;贐/S結構的WEB零件庫的建立實現了對企業外部海量的零部件資源相關知識及工程數據的直接調用和信息共享,極大方便了企業和用戶對現有的設計資源進行優化、重組,大大縮短了研發周期。然而,在提供方便的同時,由于面對開放式的網絡,WEB零件庫面臨著嚴重的安全問題,WEB零件庫包含大量CAD產品模型以及重要的技術參數,這些都是廠家以及設計者智慧和心血的結晶,它們有著重大的經濟價值,并且也是有價值的知識產權。解決安全問題是WEB資源庫進行實用化的前提,因此如何才能保證和加強系統的安全性和保密性,是三維零件資源系統亟需解決的關鍵問題[2]。
安全對任何一個系統來說都十分重要,尤其對于WEB系統來說,其面臨的安全威脅更是來自方方面面。國際標準化組織定義為安全體系設計標準(1507498-2)的5大安全服務[3]包括:身份認證、訪問控制、數據保密、數據完整性和不可否認性服務。對于WEB零件庫而言,其功能復雜,訪問用戶也比較多,由于面對的是開放式網絡,網上的用戶行為是不可控的,除了必要的網絡一級的安全控制外,還必須采用適合的訪問控制機制對用戶的權限進行有效管理。
訪問控制有3個基本要素[4]:主體、客體和訪問策略。訪問控制的實現首先要對合法的訪問客戶進行驗證,然后選取合理的訪問策略,進而對非法用戶或者說越權的用戶進行管理。
目前最為常用的訪問控制策略主要有3種:自主訪問控制(discretionary access control,DAC)、強制訪問控制(mandatory access control,MAC)和基于角色的訪問控制(role-based access control,RBAC)。通過比較分析,3種訪問控制模型的優缺點如表1。

表1 訪問控制模型
RBAC模型中主要定義了:用戶、角色、權限及會話4個主要的實體[5],其模型圖如圖1所示。在RBAC模型中用戶與權限之間卻沒有直接的關系,用戶通過被賦予角色,然后擁有權限。用戶與角色是多對多的關系,1個用戶可以從屬于1個或者多個角色。權限與角色之間的關系也是多對多,1個角色可以擁有多個權限。會話可以理解為:當用戶以某個角色身份去訪問資源時,這種交互即稱為會話。
RBCA的核心思想是:分配給每一個用戶合適的角色,每一個角色都具有對應的若干操作權限,角色是安全控制的核心。將角色作為用戶和資源訪問權限的橋梁,根據角色直接與訪問權限相聯系[6],從而實現用戶與訪問權限的邏輯分離。與其他兩種相比較,RBAC模型使用靈活并且便于維護,在工程應用中使用廣泛。

基于B/S結構的WEB系統是基于HTTP協議的請求/響應模型實現的,通??梢酝ㄟ^使用請求攔截技術來實現用戶的訪問控制功能。因此分析ASP.NET平臺的請求處理機制,在關鍵處注入驗證和授權代碼,也是實現訪問控制的一項關鍵技術。
AJAX(異步JavaScript和XML)是一種網頁開發技術,可以創建交互式網頁應用。它是幾種技術的組合,我們常用的有:HTML+css、javascript、XML和XSLT等[7]。本文主要通過應用XSLT方法實現細粒度訪問控制。
XML文檔具有層次結構性,其中的元素是由屬性及其子元素組成。因此在不同元素之間、不同屬性之間、及其元素與屬性之間所運用的訪問控制策略也不盡相同。
在WEB零件庫中,資源的參數信息都是以XML文檔的形式傳送到客戶端,XML文檔每個層次都包含著零件資源的不同技術參數細節,例如零件名稱/標識、零件特性及特征、參數化驅動接口、供應商、參數化列表、CAD模型等信息。XML便成為了信息傳輸和交換的載體。我們通過XSLT向XML文檔添加需要顯示的資源信息,便可以實現數據的局部顯示以及隱藏某些數據的目的。它可以實現數據存儲和顯示分離,進而可以根據用戶的權限或者需求顯示不同的內容。
WEB零件庫采用的是3層B/S結構,分別為界面層、業務邏輯層和數據層[8]。系統由大量的頁面組成,系統用戶使用時,首先通過網頁瀏覽器登錄到系統主頁,然后經由頁面中的菜單欄便可到達各功能頁面,接下來就可以根據自己的需求在頁面上進行相應的功能操作,這一系列行為都是經過用戶向服務器發送請求,服務器進行響應完成的。所以總的來說對WEB零件庫進行用戶訪問控制,可以理解為哪些頁面允許用戶訪問或者功能頁面上哪些功能允許操作。
在WEB零件庫系統中,頁面內容主要包含下拉菜單、模型瀏覽區、模型參數表以及一些功能按鈕(可進行參數化驅動和下載),用戶進行訪問時,我們可以根據用戶的權限控制頁面中的數據,對其可見或者隱藏,從而實現為不同的用戶提供不同的訪問頁面,進而實現資源的細粒度訪問控制。
倪晚成等人在根據WEB的特點提出的基于“角色-頁面模型”的用戶訪問控制方法中,對WEB應用的功能進行了詳細的劃分,使每個頁面元素或者說包含的功能都有1個用戶權限與之相對應,將RBAC模型中用戶-角色-權限的關系轉換成用戶-角色-頁面的關系。這種方法雖然容易實現,但是由于對頁面劃分得太細,就會導致頁面過多,加重服務器負載。為了解決這些問題,本文在“角色-頁面模型”的基礎上,提出了“角色-XSLT模板-頁面控制”的用戶訪問控制方法,通過配置他們之間的關系來控制用戶對頁面的訪問以及對頁面中相應功能的操作。
當用戶訪問系統時,首先要對用戶進行訪問權限的驗證,判斷是否擁有訪問權限,沒有則為非法用戶,拒絕訪問;如果有,則可以進入系統,然后讀取其模塊訪問權限信息,根據這些信息自動生成相應的系統菜單,進而進行相應權限的操作。當合法用戶在所需的功能頁面進行操作時,用戶請求會通過Internet發送到WEB服務器端;WEB服務器接收到后,通過調用業務邏輯層中的相應功能模塊與數據層中的相關數據,對用戶的請求進行處理,最后以HTML的形式將結果反饋至瀏覽器。權限管理模型圖如圖2。

WEB零件庫系統包含大量的頁面,每個頁面中又有不同的頁面元素和功能操作。在“角色-模塊-頁面模型”中,模塊由多個頁面組成,這些頁面可以共同完成該模塊的功能。通過XML-XSLT方法對頁面進行頁面顯示及操作功能的配置,首先預定義XSLT模板,當用戶訪問時,根據其權限從XSLT模板庫中選擇相對應的模板,然后再調用XML-XSLT解析器生成XML文檔,最后顯示在客戶端。
基于角色的訪問控制最重要的就是處理好用戶、角色、權限之間的關系。在WEB零件資源庫中,使合法的用戶能夠正常訪問,并能實現在線參數化、下載相關模型,是本系統最重要的內容。
4.1.1 用戶分析
用戶即系統的使用者,他可以是擁有合法賬號的使用者也可以是游客。在基于WEB的零件資源集成庫系統中,所有參與系統的用戶可分為系統管理員用戶、系統授權用戶、供應商用戶和游客用戶4大類。
4.1.2 角色及權限分析
為了保證系統內數據的安全性,尤其是三維CAD模型及其重要技術參數的保護,需要對用戶劃分角色,為每一類用戶設定嚴格的用戶角色,在基于WEB的零件資源集成庫系統中,所有參與系統的用戶可分為系統管理員用戶、系統授權用戶、供應商用戶和游客用戶4大類。
(1)系統管理員主要負責WEB零件資源系統的正常運行,為用戶配置相應的權限,保證各方利益。不僅要使滿足合法用戶的正常需求,同時也要保證資源不能被越權訪問。
(2)合法用戶即系統的授權用戶,他們是系統的主要使用者,能正常獲得與之授權相對應的權限,保證應享受到的服務,滿足不同的用戶根據自身需要按照靈活的訪問控制策略對不同層次的資源進行訪問。
(3)供應商用戶是系統中一些零件的提供者,他們可以對自己的零件進行操作(增加、刪除、修改、分類等)。
(4)游客就是指未注冊的系統用戶,對他們可以開放簡單的功能,例如瀏覽模型和樹形查詢。
由5張數據庫表組成,它們分別是:存放用戶帳號信息的Users表、存放角色信息的Roles表、存放權限項信息的Permissions表、存放用戶和角色對應關系的User-Role表以及存放角色權限對應關系的Role-Permissions表。
Users表用于定義用戶及其屬性,如表2所示。

表2 Users表
Role表用做記錄角色名稱和標識號,其設計如表3所示。

表3 Role表
Permissions表用做存儲系統中的權限,其設計如表4所示。

表4 Permissions表
User-Role表用做定義用戶與角色之間的關系,如表5所示。

表5 User-Role表
Role-Permission主要定義角色對每個模塊的訪問權限,如表6所示。

表6 Role-Permission表
其數據關系圖如圖3。

本系統是在Windows環境下使用微軟的Visual Studio 2008作為開發工具開發的。采用了傳統的3層架構,即界面層、業務邏輯層和數據訪問層。界面層使用ASP.NET技術實現,數據訪問層使用ADO.NET技術實現,數據庫管理系統選用SQL Server作為默認實現。系統運行在IIS6.0服務器中。
當用戶登錄成功進入系統首頁進行訪問時,會獲取1個用戶ID,然后也會獲得其角色ID,系統通過查詢角色-權限的關系表賦予用戶權限,之后系統就會讀取用戶可訪問的模塊列表,模塊包含的頁面由從XSLT模板庫中預選的XMLT模板構成,通過XML-XSLT解析器變成生成新的XML文檔,客戶端的瀏覽器上顯示。具體訪問實例如圖4所示。

XML-XSLT方法可以實現視圖頁面層的訪問控制以及多樣性的表達,零件資源模型中包含零件資源所有數據信息,在WEB零件資源庫中,欲傳送給客戶端的各種零件資源的數據信息存儲在XML文檔中的,它是一種有邏輯且具有層次的樹結構。如果用戶的訪問權限改變時,只需要更新權限所對應XSLT模板即可,不需要對零件庫系統的內容和結構進行改變。其中具有細粒度控制的XSLT模板的代碼如下:
<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"exclude-result-prefixes="msxsl">
……
<xsl:for-each select="root/part/Model_VRML"><!--三維CAD模型預覽-->
<div class="style1">
<object align="middle"classid="clsid:4B6E3013-6E45-11D0-9309-0020AFE05CC8">
<param name="src">
<xsl:attribute name="value"><xsl:value-of select="wrl_Path"/> </xsl:attribute>
</param>
</object>
</div> </xsl:for-each>
<table class="style2"> <!--參數列表顯示-->
<xsl:for-each select="root/part/parameter_list/parameter">
<tr class="style3">
<td> <xsl:value-of select="param_name"/> = </td>
<td><xsl:value-of select="param_value"/> </td>
<td><xsl:value-of select="param_unit"/> </td>
</tr> </xsl:for-each>
</table>
……
</xsl:stylesheet>
本文通過分析比較常用的3種訪問控制技術,以“角色-頁面模型”為基礎,提出了基于“角色-模塊-頁面模型”的訪問控制方法,并運用XML-XSLT方法實現視圖頁面層的訪問控制以及多樣性的表達,有效地解決了系統權限授予以及管理過程存在的一些問題,減少了編程實現中繁瑣的權限邏輯判斷代碼,提高了效率。通過在WEB零件庫系統中的應用,該訪問控制極好地滿足了WEB零件庫系統對用戶權限控制的要求,實現了數據模型與訪問控制模型的分離,細化了訪問粒度,提高了權限配置靈活度以及安全性等目標,有效地防止用戶的非法訪問。
[1]何麗.支持復雜產品快速設計的網絡化零件資源庫系統研究[D].烏魯木齊:新疆大學,2013.
[2]倪晚成,劉連臣,劉偉.基于角色-頁面模型的Web用戶訪問控制方法[J].計算機工程與應用,2006,42(21):124-126.
[3]黃純國,劉福順.Web系統訪問控制模型研究[J].小型微型計算機系統,2007,28(10):1827-1831.
[4]陸庭輝,文貴華.B/S結構下的用戶訪問控制方法[J].計算機工程與設計,2010,31(7):1433-1436.
[5]霍遠國,馬殿富,劉健,等.面向Web服務資源的兩層訪問控制方法[J].計算機科學,2010,37(7):125-129.
[6]李章玉,羅軍.基于RBAC的XML訪問控制研究[J].計算機工程與設計,2007,28(1):53-55.
[7]王宏偉,孫文磊,何麗.AJAX技術在Web零件庫系統中的應用研究[J].制造業自動化,2011,33(6):106-110.
[8]陳學龍,鄭洪源,丁秋林.一種基于TRBAC的動態多級WEB服務訪問控制模型[J].計算機科學,2014,41(3):181-184.