劉曉天,顧大明,,宋 巍,朱耀琴
(1.鹽城工業(yè)職業(yè)技術(shù)學(xué)院機電工程學(xué)院,江蘇 鹽城 224005;2.南京理工大學(xué)計算機科學(xué)與技術(shù)學(xué)院,江蘇 南京 210094)
基于SSME模型和J2EE平臺的權(quán)限管理系統(tǒng)設(shè)計與實現(xiàn)
劉曉天1,顧大明1,2,宋 巍2,朱耀琴2
(1.鹽城工業(yè)職業(yè)技術(shù)學(xué)院機電工程學(xué)院,江蘇 鹽城 224005;2.南京理工大學(xué)計算機科學(xué)與技術(shù)學(xué)院,江蘇 南京 210094)
針對在大型企業(yè)應(yīng)用系統(tǒng)中權(quán)限控制由于通過存取控制列表(ACL)機制實現(xiàn)而導(dǎo)致用戶操作權(quán)限維護(hù)復(fù)雜的問題,設(shè)計了一個權(quán)限管理系統(tǒng).以角色存取控制(RBAC)機制為基礎(chǔ),以服務(wù)科學(xué)、管理與工程(SSME)理論做指導(dǎo),采用J2EE領(lǐng)域Struts2-Guice-JPA集成框架實現(xiàn)權(quán)限管理系統(tǒng)設(shè)計及功能模塊.系統(tǒng)測試與應(yīng)用效果表明:該權(quán)限管理系統(tǒng)較好地實現(xiàn)以角色為基礎(chǔ)完成權(quán)限控制,大幅度降低了維護(hù)成本.
權(quán)限管理;服務(wù)科學(xué)、管理與工程;J2EE;Struts2-Guice-JPA;角色存取控制
在一般企業(yè)應(yīng)用系統(tǒng)中,權(quán)限控制往往是通過存取控制列表(ACL)機制實現(xiàn)的.由于大型企業(yè)中人員經(jīng)常變動,需要將其可操作的資源或功能逐一取消或變更,用戶和操作權(quán)限的維護(hù)顯得紊亂且復(fù)雜,而以角色為基礎(chǔ)的存取控制(RBAC)機制是以角色來分配權(quán)限,并指定使用者為一種或多種角色,當(dāng)員工變動時,只需修改用戶-角色或角色-權(quán)限之間的關(guān)系.[1-5]本文以J2EE[6-9]平臺內(nèi)Struts2-Guice-JPA[10]集成框架為技術(shù)基礎(chǔ),以服務(wù)科學(xué)、管理與工程(SSME)[11]理論為指導(dǎo),實現(xiàn)權(quán)限管理系統(tǒng),并取得了較好的應(yīng)用效果.
1.1 從RBAC角度理解系統(tǒng)功能要求
根據(jù)RBAC機制,權(quán)限管理系統(tǒng)一般包括用戶(User)、角色(Role)、模塊(Module)以及功能(Function)等4個權(quán)限元素.用戶可分為管理員和普通用戶,管理員經(jīng)過登錄驗證后可以管理用戶信息、角色信息、功能信息、模塊信息以及角色和功能連接信息、用戶和角色連接信息,管理員可以為普通用戶分配、回收角色,并可以維護(hù)角色可執(zhí)行的功能,普通用戶經(jīng)過登錄驗證后可以在授權(quán)范圍內(nèi)操作;模塊屬于企業(yè)應(yīng)用系統(tǒng)組成部分,是由一系列功能構(gòu)成;功能是指在系統(tǒng)中執(zhí)行的動作,例如,對業(yè)務(wù)數(shù)據(jù)的修改或查詢,屬于權(quán)限元素中最基本單位.這里模塊與通常所說的企業(yè)應(yīng)用系統(tǒng)中模塊是同一含義,在實際應(yīng)用中,權(quán)限管理系統(tǒng)作為企業(yè)應(yīng)用系統(tǒng)一部分,需結(jié)合具體的企業(yè)應(yīng)用系統(tǒng)中模塊及模塊中功能進(jìn)行權(quán)限管理.
1.2 從SSME角度理解系統(tǒng)生命周期
在權(quán)限管理系統(tǒng)開發(fā)與運行過程中,運用SSME理論進(jìn)行指導(dǎo),從服務(wù)整個生命周期的角度開展權(quán)限管理系統(tǒng)構(gòu)建活動,進(jìn)行系統(tǒng)測試與系統(tǒng)維護(hù).
SSME由服務(wù)科學(xué)、服務(wù)管理、服務(wù)工程3個部分組成.服務(wù)管理的任務(wù)是應(yīng)用計算機相關(guān)理論、模型和方法來提高權(quán)限管理服務(wù)質(zhì)量;服務(wù)工程的任務(wù)是應(yīng)用軟件技術(shù)構(gòu)建權(quán)限管理系統(tǒng),以解決企業(yè)應(yīng)用中權(quán)限管理問題.從權(quán)限管理服務(wù)需求到一個可實際運行的權(quán)限管理系統(tǒng),經(jīng)過需求調(diào)研、系統(tǒng)分析、系統(tǒng)設(shè)計、運用技術(shù)框架實現(xiàn)4個環(huán)節(jié).
2.1 權(quán)限管理過程中SSME模型設(shè)計
2.1.1 SSME模型服務(wù)管理與服務(wù)工程的關(guān)系
根據(jù)SSME理論及權(quán)限管理需求分析,設(shè)計了權(quán)限管理系統(tǒng)SSME模型服務(wù)管理與服務(wù)工程關(guān)系(如圖1所示).
圖1 SSME模型服務(wù)管理與服務(wù)工程的關(guān)系
2.1.2 權(quán)限管理服務(wù)工程開發(fā)
(1) 工程的技術(shù)基礎(chǔ)
權(quán)限管理服務(wù)工程的技術(shù)基礎(chǔ)是服務(wù)計算.本文采用J2EE領(lǐng)域Struts2-Guice-JPA集成框架技術(shù)將“服務(wù)”與“計算”2個部分有機結(jié)合,將權(quán)限管理服務(wù)作為解決問題的出發(fā)點,構(gòu)建權(quán)限管理系統(tǒng),在JAVA虛擬機以及應(yīng)用服務(wù)器中執(zhí)行,以驅(qū)動權(quán)限管理系統(tǒng)高層業(yè)務(wù)邏輯的協(xié)同運行.
(2) 工程開發(fā)方法
權(quán)限管理服務(wù)工程開發(fā)方法包括權(quán)限管理系統(tǒng)需求分析、系統(tǒng)設(shè)計、運用J2EE技術(shù)構(gòu)建權(quán)限管理系統(tǒng)、系統(tǒng)測試與驗證等內(nèi)容.
(a) 權(quán)限管理系統(tǒng)分析與設(shè)計階段任務(wù)包括權(quán)限管理需求分析、權(quán)限管理過程中SSME模型設(shè)計、系統(tǒng)技術(shù)架構(gòu)、系統(tǒng)數(shù)據(jù)表設(shè)計以及領(lǐng)域模型層設(shè)計.
(b) 運用J2EE技術(shù)構(gòu)建權(quán)限管理系統(tǒng)主要包括模塊管理、功能管理、角色管理、用戶管理等系統(tǒng)核心模塊實現(xiàn)和關(guān)鍵技術(shù)應(yīng)用.
(c) 權(quán)限管理系統(tǒng)測試與驗證主要包括權(quán)限管理系統(tǒng)測試和系統(tǒng)應(yīng)用效果兩部分內(nèi)容.系統(tǒng)測試包括單元測試、集成測試以及驗收測試,驗收測試和系統(tǒng)應(yīng)用效果檢驗在系統(tǒng)運行前期及運行期間需要加強,以便對系統(tǒng)分析與設(shè)計、系統(tǒng)實現(xiàn)工作進(jìn)行改進(jìn).
2.2 系統(tǒng)總體設(shè)計
2.2.1 系統(tǒng)技術(shù)架構(gòu)
權(quán)限管理系統(tǒng)技術(shù)架構(gòu)見圖2.權(quán)限管理系統(tǒng)分為表現(xiàn)層、業(yè)務(wù)層、持久層,采用Struts2-Guice-JPA集成框架設(shè)計.其中,表現(xiàn)層是JSP頁面,負(fù)責(zé)界面顯示,Struts2充當(dāng)控制器,表現(xiàn)層中數(shù)據(jù)經(jīng)過Struts2處理后,傳遞給業(yè)務(wù)層;業(yè)務(wù)層對控制器傳來的數(shù)據(jù)經(jīng)過處理后,交給持久層執(zhí)行持久化,或者將持久層從數(shù)據(jù)庫中提取的數(shù)據(jù)經(jīng)控制器傳遞給表現(xiàn)層,這里業(yè)務(wù)層使用Guice框架進(jìn)行業(yè)務(wù)組件的組裝關(guān)聯(lián);持久層提供數(shù)據(jù)訪問方法,對數(shù)據(jù)庫進(jìn)行查詢、插入、刪除和更新等操作,該層使用JPA框架.領(lǐng)域模型層將權(quán)限管理系統(tǒng)所有實體類劃分在同一層面,這部分實體對象與權(quán)限管理系統(tǒng)所有層都有交互.
圖2 權(quán)限管理系統(tǒng)技術(shù)架構(gòu)
2.2.2 數(shù)據(jù)表設(shè)計
權(quán)限管理系統(tǒng)數(shù)據(jù)庫包括模塊信息表module、功能信息表function、角色信息表role、用戶信息表User以及角色信息表與功能信息表之間連接表role_function、用戶信息表與角色信息表之間連接表user_role.
2.2.3 權(quán)限領(lǐng)域模型層設(shè)計
針對權(quán)限管理系統(tǒng)數(shù)據(jù)表設(shè)計Module、Function、Role、User、RoleFuns、UserRole等實體類,在這部分實體類中,利用JPA標(biāo)注方法將變量映射到對應(yīng)數(shù)據(jù)表,設(shè)置數(shù)據(jù)表之間關(guān)聯(lián)屬性.在JPA配置文件中,定義這部分領(lǐng)域模型.
3.1 系統(tǒng)功能模塊實現(xiàn)
3.1.1 模塊管理實現(xiàn)
企業(yè)應(yīng)用系統(tǒng)是由一系列模塊組成,權(quán)限管理系統(tǒng)中模塊管理是指對模塊(已開發(fā)或正在開發(fā)的企業(yè)應(yīng)用系統(tǒng)功能模塊)的創(chuàng)建、更新、刪除、查詢等操作.普通用戶可以查看自己所能操作的模塊,管理員可以對模塊增刪改查.模塊管理實現(xiàn)過程分為持久層、業(yè)務(wù)層、表現(xiàn)層、業(yè)務(wù)控制器等4個部分.
(1) 持久層
模塊管理的持久層接口類聲明新增模塊信息、刪除模塊信息、修改模塊信息、通過模塊id查詢模塊信息、查詢所有模塊信息等,對應(yīng)的實現(xiàn)類實現(xiàn)了這些方法.
在對模塊信息表操作過程中,利用JPA實現(xiàn)持久層,通過注解方法描述模塊Module類對象與模塊信息表module之間映射關(guān)系,并將模塊類對象持久化到模塊信息表中.JPA使用配置文件定義需要的數(shù)據(jù)庫內(nèi)容,通過實體管理器對模塊信息表中數(shù)據(jù)進(jìn)行增刪改查,并進(jìn)行事務(wù)管理.
(2) 業(yè)務(wù)層
模塊管理的業(yè)務(wù)層接口類聲明瀏覽指定角色所能操作的模塊、瀏覽全部模塊信息、新增模塊信息、根據(jù)模塊id查詢模塊信息、修改模塊信息、刪除模塊信息等,在對應(yīng)的實現(xiàn)類中完成這些方法.
(3) 表現(xiàn)層
模塊管理的表現(xiàn)層主要包括顯示當(dāng)前登錄用戶所處角色的模塊頁面、查看全部模塊信息頁面、新增模塊信息頁面、修改模塊信息頁面等.
(4) 業(yè)務(wù)控制器
對于模塊的所有操作請求都通過Struts2的核心控制器FilterDispatcher轉(zhuǎn)交給業(yè)務(wù)控制器ModuleAction類處理,該業(yè)務(wù)控制器根據(jù)傳過來的操作參數(shù)處理模塊管理請求.
3.1.2 功能管理實現(xiàn)
功能管理包括對功能的查詢、創(chuàng)建、更新、刪除,普通用戶可以查看自己所能操作的功能,管理員可以對功能增刪改查.功能管理實現(xiàn)過程與模塊管理實現(xiàn)過程類似,其中刪除功能的方法需要強調(diào)一下,在刪除功能的同時需要將角色和功能連接表中與該功能相關(guān)的信息一并刪除.
3.1.3 角色管理實現(xiàn)
角色管理是指管理員對角色的查詢、創(chuàng)建、更新、刪除等操作,并對角色進(jìn)行功能分配,也就是維護(hù)角色與功能之間的映射.
(1) 持久層
實現(xiàn)角色管理的持久層對角色信息表、角色和功能連接表進(jìn)行操作.操作角色信息表的持久層接口類聲明對角色信息的增刪改查方法,對應(yīng)的實現(xiàn)類實現(xiàn)了這些方法.由于角色和功能之間存在關(guān)聯(lián)關(guān)系,因此需對角色和功能連接表進(jìn)行管理,操作該連接表的接口類聲明對角色和功能映射信息的增刪改查方法,并在對應(yīng)實現(xiàn)類中完成這些方法.
(2) 業(yè)務(wù)層
用于管理角色的業(yè)務(wù)層接口類聲明包括對角色信息業(yè)務(wù)處理方法、分配功能方法及對應(yīng)的實現(xiàn)類完成接口類中方法,這里側(cè)重對角色分配可執(zhí)行功能和刪除角色實現(xiàn)過程做出說明.
對角色分配或回收可執(zhí)行功能的方法:判斷是否設(shè)置角色可執(zhí)行功能為空,如果值為“真”,也就是在管理員將該角色可執(zhí)行功能的復(fù)選框全部取消時,將當(dāng)前角色的所有功能權(quán)限刪除.如果值為“假”,通過角色id在角色和功能連接表中查找功能id,并對其依次判斷,如果在角色分配功能頁面上該角色可執(zhí)行功能未被管理員選定,則在角色和功能連接表中將查出的這條記錄刪除;否則,將管理員在角色分配功能頁面上針對該角色選定的可執(zhí)行功能,增加到角色和功能連接表中.
刪除角色的方法:在角色信息表中刪除角色信息時,需將角色和功能連接表中roleId列的值等于該角色id的記錄數(shù)據(jù)刪除,同時將用戶和角色連接表中roleId列的值等于該角色id的記錄數(shù)據(jù)刪除.
3.1.4 用戶管理實現(xiàn)
用戶管理包括用戶創(chuàng)建、更新、刪除、改變用戶角色以及用戶的登錄和注冊.限于篇幅,這里僅針對業(yè)務(wù)層進(jìn)行闡述.
用戶管理的業(yè)務(wù)層接口類聲明包括用戶信息處理、用戶登錄驗證、查看用戶所屬角色、對用戶分配角色等一系列方法,并由對應(yīng)實現(xiàn)類完成.對用戶分配或回收角色的方法:如果用戶可分配角色被管理員取消,則從用戶和角色連接表中刪除.通過用戶id在用戶和角色連接表中查找角色id,并對其依次判斷,如果查找出來的角色id不在業(yè)務(wù)控制器UserAction類傳遞過來的角色id列表中,說明在用戶分配角色頁面上用戶當(dāng)前角色的權(quán)限被管理員取消,則在該連接表中將查出的用戶和角色映射記錄刪除.如果用戶可分配角色被管理員選定,則在用戶和角色連接表中增加用戶當(dāng)前角色.對業(yè)務(wù)控制器UserAction類傳遞過來的角色id依次判斷,如果該id和用戶id組成的數(shù)據(jù)在用戶和角色連接表中不存在,就將該角色id和用戶id組成的數(shù)據(jù)存儲到該連接表中.
3.1.5 關(guān)鍵技術(shù)應(yīng)用
(1) JPA技術(shù)應(yīng)用
在權(quán)限管理系統(tǒng)DAO實現(xiàn)類中,JPA的實體管理器EntityManager是應(yīng)用程序訪問User、Role、Function、Module、UserRole、RoleFuns等實體的接口,用來查詢、創(chuàng)建、刪除、修改這部分實體Bean.JPA操作的是實體對象,不關(guān)注系統(tǒng)數(shù)據(jù)庫類型,這樣簡化了系統(tǒng)開發(fā)的難度,增加了系統(tǒng)的可移植性.
(2) Guice框架應(yīng)用
在權(quán)限管理系統(tǒng)中,Guice作為控制層和持久層的中間紐帶,并負(fù)責(zé)將接口類和實現(xiàn)類綁定.由于Guice內(nèi)部已經(jīng)提供一個與Struts2框架配置的文件,Guice框架和Struts2框架集成,不再另外編寫配置文件,這一點是其他IoC(控制反轉(zhuǎn))容器不具備的.
權(quán)限管理系統(tǒng)業(yè)務(wù)組件接口類與其實現(xiàn)類之間關(guān)系,通過Bound類綁定,不需要編寫配置文件,其他框架(譬如Spring)在裝載配置文件時,需要解析XML文件,運行效率降低,而Guice則沒有這方面缺陷.權(quán)限管理系統(tǒng)綁定類部分代碼為:
binder.bind(RoleDao.class).toProvider(RoleDaoImpl.class);
binder.bind(RoleService.class).toProvider(RoleServiceImpl.class).
利用這部分代碼,將權(quán)限管理系統(tǒng)角色管理接口類與其實現(xiàn)類進(jìn)行綁定.如果需增加或減少其綁定,只需在綁定類中修改相應(yīng)代碼,而其他類不需改變,增加了系統(tǒng)的可維護(hù)性.
3.2 系統(tǒng)測試
根據(jù)SSME理論,權(quán)限管理服務(wù)工程開發(fā)過程包括一系列測試.在權(quán)限管理系統(tǒng)服務(wù)管理階段,服務(wù)創(chuàng)新管理內(nèi)容包括權(quán)限管理方式的改進(jìn)、Struts2-Guice-JPA集成框架的應(yīng)用及測試服務(wù).權(quán)限管理系統(tǒng)測試過程包括單元測試、集成測試以及驗收測試,測試人員構(gòu)成包括設(shè)計人員、開發(fā)人員、用戶以及第三方專業(yè)機構(gòu)測試人員.
測試結(jié)果顯示,管理員可以對模塊及其功能進(jìn)行查詢、創(chuàng)建、修改、刪除等操作,可以對角色進(jìn)行查詢與維護(hù),并可對角色進(jìn)行功能分配,可以對用戶進(jìn)行創(chuàng)建、更新、刪除等操作,改變用戶角色;普通用戶可以查看自己所能操作的模塊以及所能操作的功能,可以在分配的權(quán)限內(nèi)操作,但不能越權(quán)操作.
經(jīng)過結(jié)合具體的企業(yè)應(yīng)用系統(tǒng)運行驗證,該權(quán)限管理系統(tǒng)功能實用,管理員可以進(jìn)行模塊管理、功能管理,可以方便地定義角色,設(shè)置角色的權(quán)限,為普通用戶分配角色,普通用戶可以根據(jù)分配的權(quán)限進(jìn)行操作,系統(tǒng)運行性能良好,較好地實現(xiàn)以角色為基礎(chǔ)完成權(quán)限分離.當(dāng)人員變動時,只需調(diào)整使用者的角色,避免了管理混亂,有效降低了管理成本.而且,該權(quán)限管理系統(tǒng)采用的J2EE機制內(nèi)Struts2-Guice-JPA集成框架,提高了系統(tǒng)的可擴(kuò)展性和可維護(hù)性.根據(jù)權(quán)限管理過程中SSME模型設(shè)計,該系統(tǒng)功能在運行期需要進(jìn)一步完善,可引入角色繼承機制,加強權(quán)限校驗,將作為以后研究的方向.
[1] 熊厚仁,陳性元,張斌,等.基于RBAC的授權(quán)管理安全準(zhǔn)則分析與研究[J].計算機科學(xué),2015,42(3):117-123.
[2] 盧淹平,蘇守寶,郁書好.一種層次信任的RBAC擴(kuò)展模型[J].東北師大學(xué)報(自然科學(xué)版),2014,46(1):60-65.
[3] 王桂超,王彥,李永珍.基于RBAC的RFID安全認(rèn)證協(xié)議[J].計算機工程與科學(xué),2014,36(5):874-878.
[4] 劉慶云,沙泓州,李世明,等.一種基于量化用戶和服務(wù)的大規(guī)模網(wǎng)絡(luò)訪問控制方法[J].計算機學(xué)報,2014,37(5):1195-1205.
[5] 蘇铓,李鳳華,史國振.基于行為的多級訪問控制模型[J].計算機研究與發(fā)展,2014,51(7):1604-1613.
[6] 杜長霄,李曉紅,石紅,等.J2EE應(yīng)用軟件的架構(gòu)安全評估方法[J].計算機科學(xué)與探索,2014,8(5):572-581.
[7] 曾祥飛,郭帆,涂風(fēng)濤.基于對象跟蹤的J2EE程序動態(tài)污點分析方法[J].計算機應(yīng)用,2015,35(8):2386-2391.
[8] 呂雪,凌捷.基于J2EE架構(gòu)的信息安全應(yīng)急預(yù)案管理系統(tǒng)研究與實現(xiàn)[J].計算機工程與設(shè)計,2013,34(4):1197-1201.
[9] 王延翔,楊金民.基于分層分類的J2EE應(yīng)用系統(tǒng)異常處理方法[J].計算機應(yīng)用研究,2015,32(3):776-780.
[10] 甘文麗,劉為超.基于Struts2和Ajax的企業(yè)級Web應(yīng)用開發(fā)[J].工礦自動化,2013,39(2):23-26.
[11] 劉尚亮,沈惠璋,李峰,等.服務(wù)科學(xué)研究綜述[J].科學(xué)學(xué)與科學(xué)技術(shù)管理,2010,31(6):85-89.
(責(zé)任編輯:石紹慶)
Design and implementation of authority management system based on SSME model and J2EE platform
LIU Xiao-tian1,GU Da-ming1,2,SONG Wei2,ZHU Yao-qin2
(1.Department of Mechanical and Electrical Engineering,Yancheng Institute of Industry Technology,Yancheng 224005,China;2.College of Computer Science and Technology,Nanjing University of Science and Technology,Nanjing 210094,China)
In large enterprise application systems,access control is often achieved by access control list (ACL) mechanism,causing user operation authority maintenance complex.Aiming at this problem,an authority management system is designed.Under the guide of SSME (Service Science,Management and Engineering) theory,design and functional modules of the authority management system is realized adopting Struts2-Guice-JPA integration framework of J2EE field,on the basis of role-based access control (RBAC) mechanisms.System testing and application results show that access control is completed preferably based on the role by this authority management system,and the cost of maintenance is reduced greatly.
authority management;SSME;J2EE;Struts2-Guice-JPA;RBAC
1000-1832(2016)04-0068-05
10.16163/j.cnki.22-1123/n.2016.04.015
2016-02-28
國家自然科學(xué)基金資助項目(61202003).
劉曉天(1981—),女,碩士,講師,主要從事計算機應(yīng)用、模糊識別等研究;通信作者:顧大明(1979—),男,碩士,副教授,主要從事計算機應(yīng)用、云計算研究.
TP 315 [學(xué)科代碼] 520·4070
A