龐希愚,王 成,仝春玲
(山東交通學(xué)院信息科學(xué)與電氣工程學(xué)院,濟(jì)南 250357)
基于角色-功能的Web應(yīng)用系統(tǒng)訪問控制方法
龐希愚,王 成,仝春玲
(山東交通學(xué)院信息科學(xué)與電氣工程學(xué)院,濟(jì)南 250357)
分析現(xiàn)有基于角色的訪問控制模型在Web應(yīng)用系統(tǒng)中的不足,提出一種基于角色-功能模型的用戶訪問控制方法,并對(duì)其具體的實(shí)現(xiàn)進(jìn)行討論。以系統(tǒng)業(yè)務(wù)功能需求自然形成的Web頁面組織結(jié)構(gòu)和用戶訪問控制需求為基礎(chǔ),劃分最底層菜單中頁面實(shí)現(xiàn)的業(yè)務(wù)功能,以業(yè)務(wù)功能作為權(quán)限配置的基本單位,通過配置用戶、角色、頁面、菜單、功能之間的關(guān)系,控制用戶對(duì)頁面、頁面中所包含的html元素及其操作等Web系統(tǒng)資源的訪問。在山東交通學(xué)院科研管理系統(tǒng)中的實(shí)際應(yīng)用結(jié)果表明,該方法在菜單及頁面實(shí)現(xiàn)的業(yè)務(wù)功能上實(shí)施訪問控制,可使Web系統(tǒng)用戶訪問控制較好地滿足用戶要求,有效降低Web系統(tǒng)開發(fā)的工作量。
Web系統(tǒng);基于角色的訪問控制;訪問控制;業(yè)務(wù)功能;角色-功能模型;動(dòng)態(tài)系統(tǒng)菜單
基于“角色-頁面模型”[1]的Web用戶訪問控制方法,通過在角色和頁面之間建立直接的對(duì)應(yīng)關(guān)系并控制用戶是否可訪問頁面來實(shí)現(xiàn)用戶權(quán)限管理,該方法簡化了基于角色的訪問控制(Role-based Acc ess Control, R BAC)模型的實(shí)現(xiàn),同時(shí)減少了權(quán)限判斷的代碼,但是角色與頁面直接對(duì)應(yīng)的方法,使得權(quán)限控制的最小單位只能是頁面,則權(quán)限控制的粒度完全依賴于頁面所實(shí)現(xiàn)的功能?;诮巧?模塊-頁面模型[2]的訪問控制方法可以較好地解決在頁面功能劃分太細(xì)時(shí)造成頁面太多的問題,但一個(gè)頁面只屬于一個(gè)權(quán)限配置模塊,仍然無法徹底避免出現(xiàn)冗余頁面的現(xiàn)象?!癆SP.net中基于RBAC的通用權(quán)限管理系統(tǒng)”所提的權(quán)限控制方法中,把菜單、頁面、字段和操作抽象為統(tǒng)一的系統(tǒng)資源,訪問控制粒度可以細(xì)化到頁面字段[3],但用戶權(quán)限計(jì)算量較大,且對(duì)權(quán)限管理人員的要求較高。根據(jù)Web應(yīng)用系統(tǒng)的特點(diǎn),并結(jié)合山東交通學(xué)院科研管理系統(tǒng)中用戶權(quán)限管理的需要,本文在RBAC模型和Web應(yīng)用系統(tǒng)特點(diǎn)的研究基礎(chǔ)上,提出一種基于角色-功能模型的用戶訪問控制方法,通過考慮用戶、角色、功能、菜單、頁面的關(guān)系以實(shí)現(xiàn)通用性強(qiáng)、用戶使用方便、不額外增加Web系統(tǒng)開發(fā)工作量、粒度可控的用戶權(quán)限管理。
訪問控制是保證計(jì)算機(jī)信息系統(tǒng)保密性、完整性、可用性的重要手段之一,它的目的是保證系統(tǒng)資源受控、合法地使用,使用戶只能根據(jù)自己的權(quán)限大小來訪問系統(tǒng)資源,不得越權(quán)訪問。
傳統(tǒng)的強(qiáng)制訪問控制和自主訪問控制由于各自的缺點(diǎn)均不能滿足日益復(fù)雜的管理系統(tǒng)對(duì)訪問控制的需求,RBAC正是基于這種應(yīng)用需求的推動(dòng)下產(chǎn)生的。RBAC以組織視圖角度進(jìn)行權(quán)限管理,能靈活表達(dá)企業(yè)組織的安全政策,是目前最為廣泛接受的權(quán)限模型[4]。RBAC的主要思想是將授權(quán)和角色聯(lián)系在一起,可分配角色到用戶,使用戶通過角色間接地訪問資源。這種方式通過引入角色中介,實(shí)現(xiàn)了用戶與訪問許可的邏輯分離,極大地方便了權(quán)限管理[5]。其中具有代表性的模型RBAC96模型。圖l是該模型中的基本模型RBAC0。
圖1 RBAC0模型
在RBAC之中包含5個(gè)基本元素:用戶(USERS),角色(ROLES),目標(biāo)(OBS),操作(OPS),許可權(quán)(PRMS),權(quán)限被賦予角色,而不是直接被賦予用戶,當(dāng)一個(gè)用戶擁有某個(gè)角色時(shí),此用戶就擁有了該角色所包含的權(quán)限。會(huì)話表示的是用戶和角色之間的關(guān)系,用戶每次必須通過建立會(huì)話來激活角色,得到相應(yīng)的訪問權(quán)限。RBAC模型是針對(duì)傳統(tǒng)的信息系統(tǒng)提出的權(quán)限控制方法,但Web系統(tǒng)有著與傳統(tǒng)的信息系統(tǒng)不同的特點(diǎn),隨著Web應(yīng)用模式的廣泛使用,有必要對(duì)針對(duì)Web系統(tǒng)的特點(diǎn)對(duì)RBAC模型進(jìn)行適當(dāng)?shù)母淖儯蛊淠芨玫貪M足Web系統(tǒng)的要求。
通常對(duì)用戶來說,一個(gè)Web系統(tǒng)就是一些頁面的集合,用戶通過瀏覽器訪問頁面并按照頁面上設(shè)定的操作來完成某項(xiàng)任務(wù)或工作,用戶的所有操作都是通過對(duì)Web頁面的訪問來完成的。Web頁面不僅為用戶提供了所需的數(shù)據(jù),并為用戶提供了所需的操作。數(shù)據(jù)通過頁面的各種HTML標(biāo)簽(例如文本框、下拉列表框等)來顯示;操作指頁面提供的例如新增、修改、刪除、打印、審核等各種交互行為,一般通過HTML的按鈕、錨等標(biāo)簽實(shí)現(xiàn)。在Web應(yīng)用中,基于業(yè)務(wù)需求的多樣性,Web頁面的組織形式十分靈活,頁面、菜單與業(yè)務(wù)功能之間關(guān)系模型如圖2所示。
多個(gè)業(yè)務(wù)邏輯可以放置在一個(gè)頁面中,一個(gè)頁面包含了多個(gè)業(yè)務(wù)功能;同時(shí),一個(gè)業(yè)務(wù)邏輯也可以由多個(gè)頁面來實(shí)現(xiàn),多個(gè)頁面實(shí)現(xiàn)了一個(gè)業(yè)務(wù)功能。一個(gè)業(yè)務(wù)功能包含多個(gè)功能操作,例如新增、修改、刪除、審批、打印、用戶自定義的操作等。Web系統(tǒng)的最底層菜單可能對(duì)應(yīng)著一個(gè)頁面;也可能對(duì)應(yīng)著多個(gè)頁面,在此情況下,會(huì)選取其中的一個(gè)頁面作為菜單的入口頁面。Web系統(tǒng)的最底層菜單對(duì)應(yīng)著系統(tǒng)的最小業(yè)務(wù)功能模塊,由1個(gè)或多個(gè)業(yè)務(wù)功能組成。Web系統(tǒng)的上層菜單是由多個(gè)子菜單組成的,對(duì)應(yīng)著系統(tǒng)的較大業(yè)務(wù)功能模塊。
圖2 頁面、菜單、功能組織結(jié)構(gòu)模型
4.1 RB AC應(yīng)用于Web應(yīng)用系統(tǒng)的不足
NIST RBAC只是規(guī)范了RBAC系統(tǒng)的基本結(jié)構(gòu)組成和統(tǒng)一的屬于,并非致力于RBAC模型的具體實(shí)現(xiàn)。在實(shí)際Web應(yīng)用中使用RBAC模型應(yīng)充分考慮Web系統(tǒng)的特點(diǎn),使設(shè)計(jì)出的RBAC模型具有較高的通用性,權(quán)限控制的粒度調(diào)節(jié)方便,能滿足不同Web系統(tǒng)的需求;可以比較簡單的嵌入到未實(shí)現(xiàn)權(quán)限管理的Web系統(tǒng)中,并不破壞系統(tǒng)的體系結(jié)構(gòu)和業(yè)務(wù)邏輯,增加系統(tǒng)開發(fā)工作量;方便權(quán)限管理員的使用。
RBAC模型中權(quán)限就是允許對(duì)一個(gè)或多個(gè)客體執(zhí)行的操作,但RBAC模型中的客體、操作都是抽象的概念,由此導(dǎo)致了權(quán)限定義的多樣性。因此,在定義Web系統(tǒng)的客體、操作及權(quán)限時(shí),需以Web應(yīng)用系統(tǒng)自身的特點(diǎn)為基礎(chǔ),并充分研究Web應(yīng)用系統(tǒng)頁面、菜單及功能的構(gòu)成方式,才能設(shè)計(jì)出理想的Web應(yīng)用系統(tǒng)權(quán)限管理功能。在Web應(yīng)用系統(tǒng)中權(quán)限管理主要體現(xiàn)在不同的用戶通過瀏覽器能夠訪問到的頁面可能不同,以及對(duì)于同一個(gè)頁面而言,能夠看到的數(shù)據(jù)及進(jìn)行的操作也可能不同。用戶要完成某項(xiàng)任務(wù),必須通過訪問頁面才能實(shí)現(xiàn),因此根據(jù)圖2,RBAC中的客體對(duì)應(yīng)著頁面中的數(shù)據(jù),操作指的是對(duì)頁面及頁面中以數(shù)據(jù)形式表現(xiàn)的客體所進(jìn)行的動(dòng)作,由此可見,用戶對(duì)某個(gè)頁面的訪問權(quán)限是該頁面所實(shí)現(xiàn)的業(yè)務(wù)功能的子集。
首先對(duì)于一個(gè)Web應(yīng)用系統(tǒng),根據(jù)用戶的訪問權(quán)限,把頁面所實(shí)現(xiàn)的業(yè)務(wù)功能進(jìn)行拆分重新生成多個(gè)頁面,把用戶的訪問權(quán)限所能進(jìn)行的操作對(duì)應(yīng)到某一個(gè)新生成的頁面所能完成的功能上面去,則作為Web應(yīng)用客體的唯一表現(xiàn)形式——頁面客體,對(duì)它的操作就只有訪問這一項(xiàng),例如基于角色-頁面模型的Web用戶訪問控制方法提出的通過控制頁面對(duì)用戶是否可見來實(shí)現(xiàn)用戶權(quán)限的管理,但權(quán)限控制的粒度取決于以頁面為基本單位的業(yè)務(wù)功能的劃分,如果基于頁面的功能劃分太粗,則會(huì)導(dǎo)致權(quán)限控制的粒度太大,如果基于頁面的功能劃分太細(xì),則會(huì)造成頁面數(shù)量太大的問題。面向Web應(yīng)用系統(tǒng)的訪問控制設(shè)計(jì)及應(yīng)用通過模塊組織頁面,模塊作為權(quán)限配置的基本單位,根據(jù)權(quán)限配置需要,模塊所實(shí)現(xiàn)的業(yè)務(wù)功能可以靈活的分散到模塊所擁有的頁面中去,可以較好的解決在頁面功能劃分太細(xì)時(shí)造成頁面太多的問題[6];但在面向Web應(yīng)用系統(tǒng)的訪問控制設(shè)計(jì)及應(yīng)用所提的權(quán)限控制方法中,一個(gè)頁面只屬于一個(gè)權(quán)限配置模塊,即一個(gè)頁面只能實(shí)現(xiàn)一個(gè)業(yè)務(wù)功能或其中的一部分,仍然無法徹底避免冗余頁面存在,例如:通過頁面,不同的用戶看到的數(shù)據(jù)庫某張表中的字段可能是不同的,但操作可能是相同的,按照面向Web應(yīng)用系統(tǒng)的訪問控制設(shè)計(jì)及應(yīng)用的權(quán)限控制方法,需要根據(jù)用戶分類配置多個(gè)權(quán)限配置模塊,讓不同的用戶看到不同的數(shù)據(jù),勢必造成一定數(shù)量的冗余頁面。通過對(duì)基于角色-頁面模型的Web用戶訪問控制方法和面向Web應(yīng)用系統(tǒng)的訪問控制設(shè)計(jì)及應(yīng)用的分析可以得出:若把頁面所實(shí)現(xiàn)的業(yè)務(wù)功能拆分為若干個(gè)業(yè)務(wù)功能真子集,每個(gè)業(yè)務(wù)功能真子集對(duì)應(yīng)一個(gè)頁面或一組頁面;一個(gè)頁面或一組頁面所實(shí)現(xiàn)的業(yè)務(wù)功能真子集,對(duì)應(yīng)一個(gè)權(quán)限所能進(jìn)行的操作或一個(gè)權(quán)限配置模塊,則不同的頁面之間可能會(huì)存在著類似或相同的代碼,增加了系統(tǒng)開發(fā)的工作量和系統(tǒng)維護(hù)的難度。
其次角色與權(quán)限在抽象層次上的不同往往導(dǎo)致權(quán)限配置上的困難。角色在概念上指的是工作中的一個(gè)崗位,而權(quán)限則指的是對(duì)數(shù)據(jù)的操作,角色和權(quán)限是不同層次上概念。一個(gè)角色在工作中是否對(duì)某些數(shù)據(jù)進(jìn)行操作,怎樣配置訪問權(quán)限才最合適,既能滿足系統(tǒng)需求,又能方便非計(jì)算專業(yè)用戶使用,現(xiàn)有的RBAC研究對(duì)此沒有給出明確的標(biāo)準(zhǔn)和相應(yīng)的指導(dǎo)。ASP.net中基于RBAC的通用權(quán)限管理系統(tǒng)所提的權(quán)限控制方法中,把菜單、頁面、字段和操作抽象為統(tǒng)一的系統(tǒng)資源,訪問控制粒度可以細(xì)化到頁面字段,但為了區(qū)分不同頁面的字段和操作,需要存儲(chǔ)每個(gè)頁面的字段和操作,隨著頁面、角色、用戶數(shù)量的增加,用戶權(quán)限計(jì)算量成指數(shù)級(jí)增長。在Web應(yīng)用系統(tǒng)中的頁面,不同身份的人看到的數(shù)據(jù)字段不同可以通過讓同一個(gè)頁面支持多個(gè)權(quán)限配置模塊來實(shí)現(xiàn),也就是允許一個(gè)頁面可以繼續(xù)集成多個(gè)相近的業(yè)務(wù)功能。訪問不同字段的用戶種類一般要比頁面中字段本身的數(shù)量要少,并且可以把系統(tǒng)中所有的操作獨(dú)立出來以減少權(quán)限管理的運(yùn)算量;由于是通過在一個(gè)頁面中集成多個(gè)業(yè)務(wù)功能來支持多個(gè)權(quán)限配置模塊,權(quán)限管理模塊中的權(quán)限會(huì)更貼近實(shí)際業(yè)務(wù),方便權(quán)限管理員使用。
4.2 基于角色-功能模型的權(quán)限管理系統(tǒng)設(shè)計(jì)
目前RBAC缺陷的本質(zhì)是只給出了最抽象的模型,并未對(duì)現(xiàn)實(shí)的應(yīng)用進(jìn)行充分模擬。結(jié)合Web應(yīng)用系統(tǒng)自身的特點(diǎn)和RBAC應(yīng)用在Web系統(tǒng)中的不足,通過深入分析Web應(yīng)用系統(tǒng)中頁面與功能之間的邏輯關(guān)系,以及功能與權(quán)限配置模塊之間的關(guān)系,本文提出了基于角色-功能模型的用戶訪問控制方法,通過配置用戶、角色、頁面、菜單、功能之間的關(guān)系來控制用戶對(duì)頁面、頁面中所包含的html元素及操作等Web系統(tǒng)資源的訪問?;诮巧?功能模型的權(quán)限管理模型圖如圖3所示。
圖3 基于角色-功能模型的權(quán)限管理模型
在這個(gè)權(quán)限管理模型中,頁面、菜單與業(yè)務(wù)功能之間具有下面的關(guān)系:
(1)業(yè)務(wù)功能由一個(gè)或多個(gè)頁面實(shí)現(xiàn),每個(gè)頁面可以實(shí)現(xiàn)一個(gè)業(yè)務(wù)功能的一個(gè)或多個(gè)操作(如查看、新增、修改、刪除等),也可以實(shí)現(xiàn)多個(gè)業(yè)務(wù)功能的操作。
(2)每個(gè)最底層菜單是由一個(gè)或多個(gè)頁面組成的,并且有一個(gè)入口地址,即點(diǎn)擊菜單時(shí)應(yīng)顯示的頁面地址;每個(gè)功能頁面只屬于一個(gè)最底層菜單。底層菜單與上層菜單之間以樹形結(jié)構(gòu)方式組織。
(3)一個(gè)最底層菜單通過頁面實(shí)現(xiàn)了一個(gè)或多個(gè)業(yè)務(wù)功能,一個(gè)業(yè)務(wù)功能只通過一個(gè)最底層菜單中的相關(guān)頁面實(shí)現(xiàn)。
為了進(jìn)行訪問控制,在權(quán)限管理模型中需要對(duì)頁面和菜單進(jìn)行業(yè)務(wù)功能的配置,以指明頁面和菜單是負(fù)責(zé)完成哪些業(yè)務(wù)功能;并配置底層菜單的入口頁面,每個(gè)功能頁面屬于哪個(gè)底層菜單。系統(tǒng)中的每個(gè)用戶屬于一個(gè)或多個(gè)角色,每個(gè)角色對(duì)各種業(yè)務(wù)功能都有相應(yīng)的訪問權(quán)限,而屬于這些角色的用戶也將具備角色所擁有的訪問權(quán)限,特別地,對(duì)于一個(gè)用戶屬于多個(gè)角色的情況,用戶具有的權(quán)限是各個(gè)角色所有擁有權(quán)限的并集[7]?;诮巧?功能模型權(quán)限管理系統(tǒng)將會(huì)從以下的方面進(jìn)行用戶訪問控制。
(1)用戶身份驗(yàn)證:當(dāng)用戶通過賬號(hào)和密碼登錄Web系統(tǒng)時(shí),系統(tǒng)會(huì)對(duì)用戶的賬號(hào)和密碼進(jìn)行驗(yàn)證,檢查用戶是否為合法用戶。如果為非法的用戶,則拒絕進(jìn)入系統(tǒng);如果為合法的用戶,則允許進(jìn)入系統(tǒng),并讀取用戶的訪問權(quán)限信息存放于系統(tǒng)緩存中(Catch等)[8-9]。
(2)動(dòng)態(tài)系統(tǒng)菜單:由于不同的用戶擁有的角色不同,則對(duì)系統(tǒng)業(yè)務(wù)功能的訪問權(quán)限不同。在用戶進(jìn)入Web系統(tǒng)后,需要根據(jù)用戶的功能訪問權(quán)限信息,鑒別出用戶能夠訪問的業(yè)務(wù)功能。只要用戶具有權(quán)限訪問底層菜單所對(duì)應(yīng)的任意一個(gè)業(yè)務(wù)功能,則用戶具有權(quán)限訪問該底層菜單,否則用戶不具有訪問該菜單的權(quán)限。若用戶具有訪問底層菜單的權(quán)限,則用戶具有訪問相應(yīng)上層菜單的權(quán)限[10-11],否則用戶不具有訪問相應(yīng)上層菜單的權(quán)限。根據(jù)用戶對(duì)底層菜單的訪問權(quán)限和菜單權(quán)限的樹型結(jié)構(gòu)關(guān)系,從而動(dòng)態(tài)生成用戶所能訪問的系統(tǒng)菜單。當(dāng)用戶能夠訪問某頁面并進(jìn)行該頁面訪問時(shí),根據(jù)頁面中的菜單配置,加亮當(dāng)前頁面所對(duì)應(yīng)的底層菜單及上層菜單。
(3)頁面操作權(quán)限驗(yàn)證:當(dāng)用戶USER_A訪問一個(gè)頁面時(shí),系統(tǒng)將根據(jù)頁面所實(shí)現(xiàn)的業(yè)務(wù)功能和USER_A對(duì)相應(yīng)業(yè)務(wù)功能的訪問權(quán)限,判斷此用戶是否具有訪問該頁面的權(quán)限。如果USER_A沒有權(quán)限訪問頁面,則禁止進(jìn)入;如果USER_A有權(quán)限訪問頁面,則需要根據(jù)USER_A對(duì)業(yè)務(wù)功能的訪問權(quán)限進(jìn)一步判斷用戶能操作此頁面中相應(yīng)業(yè)務(wù)功能的哪些操作,對(duì)于用戶沒有權(quán)限進(jìn)行的操作,應(yīng)該把相應(yīng)的頁面元素隱藏或禁用。其中,判斷用戶能否進(jìn)入頁面的邏輯可以封裝在頁面的基類中,通過回調(diào)當(dāng)前功能頁面的業(yè)務(wù)功能配置,統(tǒng)一判斷用戶是否具有進(jìn)入頁面的許可;用戶能使用頁面中的哪些功能及相應(yīng)的操作這一步,可編寫一套內(nèi)置了權(quán)限判斷的公用用戶控件,簡化實(shí)現(xiàn)。
在山東交通學(xué)院科研管理系統(tǒng)中,基于asp.net 3.5和Microsoft SQL Server2500的開發(fā)平臺(tái),采用asp.net 3.5中基類頁面、母版及自定義控件[12],通過應(yīng)用上文提出的基于“角色-頁面模型”的權(quán)限管理模型有效地實(shí)現(xiàn)了Web系統(tǒng)的用戶訪問控制。
5.1 與角色管理相關(guān)的表
根據(jù)上文提出的Web應(yīng)用系統(tǒng)權(quán)限管理模型(見圖3),得出圖4的與權(quán)限管理相關(guān)的數(shù)據(jù)庫表(其中畫橫線的字段為主鍵,粗體字段不能為空):
(1)User、Role、RoleUser表用于定義用戶實(shí)體及其屬性、角色實(shí)體及其屬性、用戶到角色的指派。
(2)MenuItem表用于定義樹型結(jié)構(gòu)的菜單。在MenuItem表中,Url字段是指菜單(最小業(yè)務(wù)功能集合)的入口頁面的URL,當(dāng)記錄所代表的菜單不是最底層菜單時(shí),Url字段的值為NULL;ParentMenuItemId字段為自引用(MenuItemId)字段,是指該記錄所對(duì)應(yīng)的菜單的上層菜單,若該記錄所對(duì)應(yīng)的菜單為最頂層菜單,則ParentMenuItemId字段的值為NULL;DisplaySequence字段是指具有相同父菜單的子菜單的顯示順序;IsAlwaysEnabled字段是指該菜單所對(duì)應(yīng)的頁面是否需要進(jìn)行權(quán)限驗(yàn)證,如果IsAlwaysEnabled的值是False,表示該菜單的入口頁面對(duì)所有用戶可見,不需要進(jìn)行權(quán)限驗(yàn)證;否則,該菜單的入口頁面需要進(jìn)行權(quán)限驗(yàn)證。
(3)Funtion表用于定義菜單實(shí)現(xiàn)的業(yè)務(wù)功能,Access Type字段是指業(yè)務(wù)功能具備哪些業(yè)務(wù)操作(如添加、刪除、審核等)。RoleFunction表是指角色到權(quán)限的指派,該表中的AccessFlag字段是指角色對(duì)業(yè)務(wù)功能的訪問權(quán)限。
圖4 與權(quán)限管理相關(guān)的數(shù)據(jù)庫表
Funtion表和RoleFunction表中的兩種權(quán)限在系統(tǒng)中使用統(tǒng)一的名稱、編碼和解讀方式,以簡化管理。
權(quán)限的實(shí)現(xiàn)采用基于整數(shù)二進(jìn)制位的方法,整數(shù)的每一位代表一種操作,0代表不具備該操作,1代表具備該操作。將某角色對(duì)某功能的訪問權(quán)限值與操作掩碼進(jìn)行與運(yùn)算,結(jié)果與掩碼相等則具有該掩碼對(duì)應(yīng)的權(quán)限,反之則沒有。
5.2 頁面業(yè)務(wù)功能配置
在上文提出的Web系統(tǒng)權(quán)限管理模型中(見圖3),需要對(duì)頁面進(jìn)行一次業(yè)務(wù)功能及所屬菜單的配置,以指明這個(gè)頁面是負(fù)責(zé)完成哪些業(yè)務(wù)功能及其操作的,并指明該頁面屬于哪個(gè)最底層菜單。考慮到實(shí)現(xiàn)的容易性以及可操作性,在山東交通學(xué)院科研管理系統(tǒng)中,所有的頁面都繼承自BasePage抽象類,它包含了所有頁面都可以使用的通用邏輯,其中有2個(gè)方法用來指明頁面所屬的最底層菜單及實(shí)現(xiàn)的業(yè)務(wù)功能,這2個(gè)方法的定義如下:
繼承BasePage的頁面類必須實(shí)現(xiàn)這2個(gè)方法。
(1)MenuItemName抽象方法返回頁面所對(duì)應(yīng)的菜單項(xiàng)的名稱,返回的菜單項(xiàng)的名稱將決定要顯示哪些頂層菜單和左側(cè)菜單。
(2)FunctionNames抽象方法以字符串?dāng)?shù)組的形式返回與該頁面相關(guān)的功能。大多數(shù)情況下,一個(gè)頁面只有一個(gè)功能;但有時(shí)一個(gè)頁面同時(shí)實(shí)現(xiàn)了幾個(gè)功能,需要將頁面的安全設(shè)置分為幾個(gè)部分,因此需要一個(gè)數(shù)組。
5.3 權(quán)限驗(yàn)證方法
系統(tǒng)從用戶身份驗(yàn)證、動(dòng)態(tài)系統(tǒng)菜單生成和頁面操作權(quán)限驗(yàn)證三方面進(jìn)行用戶訪問的控制。在用戶登錄時(shí),檢驗(yàn)用戶是否為合法用戶,讀取用戶的功能權(quán)限集合,根據(jù)功能權(quán)限得到用戶能訪問的最底層菜單,再通過菜單的樹型組織結(jié)構(gòu)生成用戶能訪問的動(dòng)態(tài)菜單。而頁面操作權(quán)限驗(yàn)證,發(fā)生在訪問某個(gè)頁面及其頁面的數(shù)據(jù)和操作時(shí),是權(quán)限管理的重點(diǎn)和難點(diǎn)所在。由于在訪問每一個(gè)頁面或執(zhí)行每個(gè)操作前都需要進(jìn)行權(quán)限的驗(yàn)證,因此本文將采用BasePage基類中的OnInit方法進(jìn)行用戶對(duì)頁面訪問權(quán)限的驗(yàn)證,一個(gè)頁面的Oninit方法最先啟動(dòng)執(zhí)行[10],只要把權(quán)限驗(yàn)證放在OnInit方法中,將能保證在進(jìn)入每一個(gè)頁面前都進(jìn)行權(quán)限的校驗(yàn),同時(shí)也能夠有效減少編寫代碼的工作量。
具體的權(quán)限驗(yàn)證方法如下:
(1)從Function表中取出最底層菜單所實(shí)現(xiàn)的業(yè)務(wù)功能列表F及每個(gè)業(yè)務(wù)功能f實(shí)現(xiàn)的業(yè)務(wù)操作Operation-f。
(2)由當(dāng)前用戶所屬的角色(可能屬于多個(gè)角色)列表,從RoleFunciton表中取出用戶所屬的每個(gè)角色對(duì)于業(yè)務(wù)功能f的訪問權(quán)限值,把這些角色中對(duì)于f的訪問權(quán)限值相加即得到當(dāng)前用戶對(duì)于業(yè)務(wù)功能f的訪問權(quán)限值Permission-f。
(3)Operation-f和Permission-f進(jìn)行邏輯與運(yùn)算,如果結(jié)果不為0,則代表用戶有權(quán)限訪問該業(yè)務(wù)功能f;否則代表用戶沒有權(quán)限訪問該業(yè)務(wù)功能f。
(4)如果用戶有權(quán)訪問業(yè)務(wù)功能f,則用戶有權(quán)訪問實(shí)現(xiàn)該業(yè)務(wù)功能的最底層菜單及其上層菜單;若用戶無權(quán)訪問某菜單所實(shí)現(xiàn)的所有業(yè)務(wù)功能,則用戶不能訪問該菜單。
(5)當(dāng)用戶要進(jìn)入某頁面p時(shí),若該頁對(duì)用戶始終可見,則在頁面p的Oinint方法中取消對(duì)用戶的權(quán)限驗(yàn)證。否則,通過頁面p實(shí)現(xiàn)的FunctionNames返回頁面p實(shí)現(xiàn)的功能列表Fp。
(6)對(duì)于Fp中的每個(gè)功能fp,把方法(1)中得到的fp的業(yè)務(wù)操作Operation-fp和方法(2)中得到的當(dāng)前用戶對(duì)fp的訪問權(quán)限值Permission-fp進(jìn)行邏輯與運(yùn)算。若存在一個(gè)業(yè)務(wù)功能fp的邏輯運(yùn)算結(jié)果不為0,代表用戶有權(quán)訪問該頁面p;若Fp中的所有功能fp的邏輯運(yùn)算結(jié)果均為0,代表用戶無權(quán)訪問該頁面。
(7)如果用戶有進(jìn)入此頁面的權(quán)限,則需要進(jìn)一步驗(yàn)證用戶能操作此頁面中的哪些功能及操作,以控制頁面中各元素的可見性。通過對(duì)功能fp訪問權(quán)限值Permission-fp進(jìn)行解碼,即可判斷Permission-fp擁有哪些具體操作。
RBAC是目前較為流行的一種安全控制技術(shù),本文在分析Web應(yīng)用系統(tǒng)中的頁面、菜單與功能之間關(guān)系的基礎(chǔ)上,以業(yè)務(wù)功能作為權(quán)限配置管理的基本單位,可以避免因Web系統(tǒng)引進(jìn)權(quán)限管理模塊而導(dǎo)致的大量重復(fù)代碼,同時(shí)也減少了授權(quán)管理的復(fù)雜性,降低了對(duì)系統(tǒng)管理員的要求。通過將功能與菜單關(guān)聯(lián),可以實(shí)現(xiàn)權(quán)限管理的粗粒度訪問控制;將功能與頁面關(guān)聯(lián),可實(shí)現(xiàn)細(xì)粒度的訪問控制。通過在項(xiàng)目中的實(shí)際應(yīng)用,證明了本文所提的實(shí)現(xiàn)方案可靠方便,通用性強(qiáng),可移植性高,有利于提高系統(tǒng)開發(fā)效率?;诮巧?功能模型的權(quán)限管理系統(tǒng)其局限性表現(xiàn)在僅實(shí)現(xiàn)了RBAC96基本模型RBAC0。如果需要實(shí)現(xiàn)更復(fù)雜、功能更強(qiáng)的權(quán)限管理,則需要對(duì)該權(quán)限管理模型做進(jìn)一步的擴(kuò)展。
[1] 倪晚成, 劉連臣, 劉 偉. 基于角色一頁面模型的Web用戶訪問控制方法[J]. 計(jì)算機(jī)工程與應(yīng)用, 2006, 42(21): 125- 126.
[2] 陸庭輝, 文貴華. B/S結(jié)構(gòu)下的用戶訪問控制方法[J]. 計(jì)算工程與設(shè)計(jì), 2010, 31(7): 143-146.
[3] 范明虎, 英 紅, 伍孝金. ASP.net中基于RBAC的通用權(quán)限管理系統(tǒng)[J]. 計(jì)算機(jī)工程, 2010, 36(1): 143-145.
[4] 楊文波, 張 輝, 劉 瑞. 一種基于角色訪問控制的新模型[J]. 計(jì)算機(jī)工程, 2006, 32(21): 173-175.
[5] 夏榆濱, 宣明付. 基于RBAC的統(tǒng)一權(quán)限管理系統(tǒng)研究[J].微計(jì)算機(jī)信息, 2006, 22(9): 111-116.
[6] 李艷翠, 孔 芳, 朱巧明. 面向Web應(yīng)用系統(tǒng)的訪問控制設(shè)計(jì)及應(yīng)用[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2008, 29(5): 1076-1079.
[7] 邊小凡, 趙 峰. 基于REST風(fēng)格的RBAC模型研究[J].計(jì)算機(jī)應(yīng)用與軟件, 2009, 26(9): 126-163.
[8] 刁明光, 薛 濤, 潘文勇. 基于用戶組和客體抽象的權(quán)限控制模型[J]. 計(jì)算機(jī)應(yīng)用, 2009, 29(z1): 112-113.
[9] 董 斌, 陳進(jìn)哲, 劉秀玲. 基于Web的RBAC權(quán)限機(jī)制在電子病歷系統(tǒng)的研究[J]. 計(jì)算機(jī)工程與應(yīng)用, 20 08, 44(26): 223-225.
[10] 邢天揚(yáng), 曹 曼. 基于TP-RBAC權(quán)限樹算法研究及應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì), 2010, 31(5): 950-956.
[11] 張 興, 王 華, 施俊士. Web信息系統(tǒng)中基于樹型結(jié)構(gòu)的RBAC模型設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2009, 26(11): 157-159.
[12] 樸春慧, 曲玉森, 楊春燕. 高校教師管理系統(tǒng)開發(fā)中的若干關(guān)鍵技術(shù)研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2010, 31(14): 3323-3324.
編輯 索書志
Access Control Method for Web Application System Based on Role-function
PANG Xi-yu, WANG Cheng, TONG Chun-ling
(School of Information Science and Electrical Engineering, Shandong Jiaotong University, Jinan 250357, China)
The access control requirements of Web application system and the shortcomings in Web application system with Role-based Access Control(RBAC) mod el a re analyzed, a f undamental idea of access contr ol based on role-function model is proposed and its implementation details are discussed. Base d on naturally formed Web pag e orga nization structure according to th e business funct ion requirements of the system and access control requirements of users, business functions of pages are partitioned in bottom menu in order to form the basic unit of permissions configuration. Through configuring the relation between user, role, page, menu, function to control user access to system resources such as Web page, the html element and operation in the page. Through the practical application of scientific research management system in Shandong Jiaotong University, ap plication shows that implementation of access control in the page and menu to achieve business function, can well meet the enterprise requirements for user access co ntrol of Web system. It has the advantages of simple operation, strong versatility, and effectively reduces the workload of Web system development.
Web system; Role-based Access Control(RBAC); access control; business function; role-function model; dynamic system menu
10.3969/j.issn.1000-3428.2014.05.030
國家自然科學(xué)基金資助項(xiàng)目(61103022);濟(jì)南市科技發(fā)展計(jì)劃基金資助項(xiàng)目(201221140, 20122114);山東交通學(xué)院科研基金資助項(xiàng)目(Z201307, Z201230)。
龐希愚(1981-),男,碩士研究生,主研方向:信息安全;王 成,碩士研究生;仝春玲,教授、博士。
2013-03-21
2013-05-26E-mail:xiyupang@126.com
1000-3428(2014)05-0144-05
A
TP309