楊 薇 劉 陽(yáng)
(1.91550部隊(duì) 大連 116023)(2.大連東軟信息學(xué)院 大連 116023)
基于CAS的統(tǒng)一權(quán)限平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)*
楊 薇1劉 陽(yáng)2
(1.91550部隊(duì) 大連 116023)(2.大連東軟信息學(xué)院 大連 116023)
針對(duì)多個(gè)信息系統(tǒng)之間因采用的技術(shù)和平臺(tái)不同而無(wú)法進(jìn)行資源共享的問(wèn)題,采用單點(diǎn)登錄技術(shù),以基于MVC模式的多層體系作為權(quán)限系統(tǒng)的系統(tǒng)架構(gòu),EJB作為中間件服務(wù)技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了統(tǒng)一權(quán)限管理的信息化平臺(tái),為信息化業(yè)務(wù)系統(tǒng)提供統(tǒng)一的用戶(hù)管理和權(quán)限控制功能,對(duì)其它類(lèi)似系統(tǒng)具有較高參考價(jià)值。
CAS; 統(tǒng)一權(quán)限平臺(tái); 權(quán)限管理; 業(yè)務(wù)應(yīng)用系統(tǒng)
Class Number TP393
目前,隨著計(jì)算機(jī)技術(shù)的發(fā)展,各行各業(yè)的信息化建設(shè)取得非常大的進(jìn)展。在信息化建設(shè)中,經(jīng)常存在的一個(gè)問(wèn)題就是,各信息系統(tǒng)內(nèi)部存在著多個(gè)信息子系統(tǒng),這些子系統(tǒng)各自實(shí)現(xiàn)不同的功能[1]。隨著這些子系統(tǒng)的建立,一些問(wèn)題也暴露出來(lái),如建設(shè)與應(yīng)用嚴(yán)重脫節(jié),各系統(tǒng)重復(fù)建設(shè),系統(tǒng)之間因采用了不同的技術(shù)平臺(tái)和信息標(biāo)準(zhǔn)而形成信息孤島等。
為解決以上問(wèn)題,需要建立一個(gè)“資源共享平臺(tái)”,其目的是搭建一個(gè)高層次的應(yīng)用平臺(tái),根據(jù)用戶(hù)的不同身份,統(tǒng)一分配權(quán)限[2],為各子信息系統(tǒng)提供自身數(shù)據(jù)的維護(hù)入口,以及對(duì)局域網(wǎng)內(nèi)其它子信息系統(tǒng)的共享數(shù)據(jù)的查詢(xún)?nèi)肟?實(shí)現(xiàn)各種資源與信息數(shù)據(jù)共享,消除信息孤島。
統(tǒng)一權(quán)限平臺(tái)主要由權(quán)限管理系統(tǒng)、權(quán)限服務(wù)接口系統(tǒng)及CAS單點(diǎn)登錄系統(tǒng)組成。
圖1 系統(tǒng)部署圖
統(tǒng)一權(quán)限平臺(tái)服務(wù)器由權(quán)限系統(tǒng)服務(wù)器、權(quán)限接口服務(wù)器、CAS服務(wù)器,數(shù)據(jù)庫(kù)服務(wù)器組成。出于安全考慮,數(shù)據(jù)庫(kù)服務(wù)器未與CAS服務(wù)器、權(quán)限系統(tǒng)等服務(wù)器位于同一網(wǎng)段。信息化業(yè)務(wù)應(yīng)用客戶(hù)端可以通過(guò)PC、手機(jī)、平板等方式訪(fǎng)問(wèn)業(yè)務(wù)系統(tǒng),信息化業(yè)務(wù)系統(tǒng)直接接入主干網(wǎng)。圖1為系統(tǒng)的部署圖。
3.1 平臺(tái)架構(gòu)設(shè)計(jì)
統(tǒng)一權(quán)限平臺(tái)采用CAS框架作為單點(diǎn)登錄的實(shí)現(xiàn)技術(shù)[3],以基于MVC模式的多層體系作為權(quán)限系統(tǒng)的系統(tǒng)架構(gòu),并采用Enterprise JavaBean作為中間件服務(wù)技術(shù)。
從權(quán)限認(rèn)證的角度出發(fā),統(tǒng)一資源平臺(tái)可分為統(tǒng)一權(quán)限平臺(tái)與核心業(yè)務(wù)應(yīng)用的集合兩部分。而統(tǒng)一權(quán)限平臺(tái)由權(quán)限系統(tǒng)、單點(diǎn)登錄系統(tǒng)、權(quán)限服務(wù)接口應(yīng)用三部分組成。
CAS是針對(duì)Web應(yīng)用的單點(diǎn)登錄框架,其主要的任務(wù)就是安全地完成用戶(hù)的身份驗(yàn)證工作[4]。權(quán)限管理系統(tǒng)是統(tǒng)一權(quán)限平臺(tái)的主要組成部分,負(fù)責(zé)用戶(hù)、角色、授權(quán)等方面的管理。權(quán)限管理系統(tǒng)采用Java三層經(jīng)典模式進(jìn)行開(kāi)發(fā)[5]。表示層采用了Spring MVC技術(shù),邏輯層采用了Spring IoC技術(shù)、持久層采用了Hibernate技術(shù)。
3.2 權(quán)限管理系統(tǒng)架構(gòu)設(shè)計(jì)
權(quán)限管理系統(tǒng)從層次結(jié)構(gòu)上分為表示層、邏輯層和持久層,系統(tǒng)架構(gòu)如圖2所示。
圖2 權(quán)限管理系統(tǒng)架構(gòu)圖
1) 表示層設(shè)計(jì)
權(quán)限管理系統(tǒng)的表示層設(shè)計(jì)為三部分:DispatcherServer負(fù)責(zé)接收用戶(hù)的Web請(qǐng)求、調(diào)用Web請(qǐng)求控制器組件和將數(shù)據(jù)分析、整理、轉(zhuǎn)換、打包至數(shù)據(jù)模型組件;數(shù)據(jù)格式校驗(yàn)組件用于完成數(shù)據(jù)模型組件的數(shù)據(jù)格式校驗(yàn),通用消息組件負(fù)責(zé)在頁(yè)面進(jìn)行消息展示;Web請(qǐng)求控制組件主要負(fù)責(zé)調(diào)用業(yè)務(wù)邏輯處理組件并將結(jié)果返回客戶(hù)端。Web請(qǐng)求控制器組件和數(shù)據(jù)模型組件采用了普通的POJO進(jìn)行設(shè)計(jì),降低了與Java EE Web處理組件的耦合度[6]。
2) 邏輯層設(shè)計(jì)
權(quán)限管理系統(tǒng)選擇Spring IoC作為業(yè)務(wù)層的技術(shù)框架,權(quán)限管理系統(tǒng)的通用組件大都是在其基礎(chǔ)上進(jìn)行設(shè)計(jì)的。
權(quán)限管理系統(tǒng)的邏輯層設(shè)計(jì)為三部分:Spring Core是業(yè)務(wù)邏輯組件的運(yùn)行基礎(chǔ)、Spring AOP是業(yè)務(wù)邏輯組件的事務(wù)處理基礎(chǔ);異常處理組件使得權(quán)限管理系統(tǒng)可以專(zhuān)注處理自身的功能,日志組件則無(wú)侵入地對(duì)權(quán)限管理系統(tǒng)的操作進(jìn)行記錄;業(yè)務(wù)處理組件完成基于RBAC的功能調(diào)用。業(yè)務(wù)處理組件和領(lǐng)域數(shù)據(jù)模型組件采用了普通的POJO進(jìn)行設(shè)計(jì),不依賴(lài)于Spring Framework。
3) 持久層設(shè)計(jì)
RBAC的功能模型比較簡(jiǎn)潔,其用戶(hù)、角色、權(quán)限的對(duì)應(yīng)關(guān)系清楚,故采用ORM持久化模型非常合適[7]。Hibernate是ORM框架的事實(shí)標(biāo)準(zhǔn),所以權(quán)限管理系統(tǒng)選擇Hibernate作為其持久層框架。
權(quán)限管理系統(tǒng)的持久層框架雖然選用了Hibernate,但也是運(yùn)行在Spring Context的基礎(chǔ)上。權(quán)限管理系統(tǒng)的持久層分為兩部分:通用查詢(xún)組件以Hibernate HQL為基礎(chǔ)進(jìn)行設(shè)計(jì),降低了查詢(xún)語(yǔ)句的復(fù)雜度;分頁(yè)組件基于Hibernate ORM思想進(jìn)行設(shè)計(jì),可以方便的進(jìn)行數(shù)據(jù)庫(kù)移植;日志組件對(duì)用戶(hù)、角色、授權(quán)等寫(xiě)入操作進(jìn)行記錄,方便對(duì)權(quán)限管理系統(tǒng)進(jìn)行安全審計(jì)。
3.3 單點(diǎn)登錄設(shè)計(jì)
單點(diǎn)登錄(Single Sign On,SSO),是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一[8]。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶(hù)只需要登錄一次就可以訪(fǎng)問(wèn)所有相互信任的應(yīng)用系統(tǒng)[9]。統(tǒng)一權(quán)限平臺(tái)的單點(diǎn)登錄分為單點(diǎn)登錄客戶(hù)端、單點(diǎn)登錄服務(wù)器。
平臺(tái)采用CAS實(shí)現(xiàn)單點(diǎn)登錄。CAS具備開(kāi)源、獨(dú)立部署、支持多種Web應(yīng)用客戶(hù)端等優(yōu)點(diǎn),能夠滿(mǎn)足統(tǒng)一權(quán)限平臺(tái)關(guān)于單點(diǎn)登錄的要求[10]。從安全性和穩(wěn)定性角度出發(fā),CAS被部署在一臺(tái)單獨(dú)Linux服務(wù)器上面,應(yīng)用服務(wù)器選擇了Jboss,還需要對(duì)服務(wù)器的DNS以及業(yè)務(wù)應(yīng)用系統(tǒng)單獨(dú)設(shè)置。通過(guò)訪(fǎng)問(wèn)接口服務(wù),CAS可以讀取權(quán)限系統(tǒng)的用戶(hù)認(rèn)證信息。
4.1 權(quán)限管理系統(tǒng)包結(jié)構(gòu)
權(quán)限管理系統(tǒng)均以模塊為開(kāi)發(fā)單位,每個(gè)模塊分為表示層(action)、業(yè)務(wù)層(service)、持久層(dao)。其中org.ly.apps.auth.bs包主要用于存放權(quán)限系統(tǒng)的功能模塊。包括系統(tǒng)用戶(hù)信息管理、角色管理、授權(quán)管理以及系統(tǒng)的實(shí)體組件等,是權(quán)限系統(tǒng)的核心業(yè)務(wù)組件包,包結(jié)構(gòu)如表1所示。
表1 org.ly.apps.auth.common包
4.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
權(quán)限管理系統(tǒng)的數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)完全遵守?cái)?shù)據(jù)庫(kù)設(shè)計(jì)要求及其規(guī)范而進(jìn)行,詳細(xì)的權(quán)限管理系統(tǒng)的邏輯模型如圖3所示。
圖3 權(quán)限系統(tǒng)概念模型
4.3 權(quán)限管理系統(tǒng)表現(xiàn)層控制器代碼
控制層的主要作用是響應(yīng)來(lái)自視圖的請(qǐng)求,定位業(yè)務(wù)組件處理該請(qǐng)求并返回響應(yīng)視圖。以授權(quán)控制器代碼為例進(jìn)行說(shuō)明:
@Controller
@RequestMapping("/grant")
public class GrantAction extends CommonAction {
/**
* 角色被授予功能
* @param model
*/
@RequestMapping("/save")
public String roleGrant(RoleModel model) {
model.setFuncids(f.getSfuncids().split(","));
BeanCopy.copyProperties(model, grantDto);
service.saveFuncOfRole(grantDto);
return “query”;
}
……
@Resource private GrantService service;
}
4.4 權(quán)限管理系統(tǒng)持久層代碼
持久層位于三層操作的底層,一般是對(duì)數(shù)據(jù)進(jìn)行操作。以用戶(hù)信息數(shù)據(jù)對(duì)象代碼為例進(jìn)行說(shuō)明:
@Repository
public class UserDaoImp implements UserDao {
public void updateUser(DTO dto) {
String keyName="userid";
Serializable key=(Serializable)getProperty(dto, keyName);
Session session=sf.getCurrentSession();
Object entity=session.load(Entitys.ENTITY_USER, key);
setProperty(dto, "userpwd", enc((String)getProperty(dto, "userpwd")));
copyProperties(dto, entity);
session.update(entity);
}
@Resource private SessionFactory sf;
...... }
@ Repository是類(lèi)級(jí)別上的注解,用以說(shuō)明這是一個(gè)數(shù)據(jù)訪(fǎng)問(wèn)組件。 “@Resource private SessionFactory sf”則表明對(duì)底層Hibernate會(huì)話(huà)工廠(chǎng)進(jìn)行引用,Hibernate會(huì)話(huà)工廠(chǎng)使用前需要完成對(duì)數(shù)據(jù)源的初始化配置。
本文所設(shè)計(jì)與實(shí)現(xiàn)的統(tǒng)一權(quán)限平臺(tái)為信息化應(yīng)用提供了統(tǒng)一的登錄入口、身份認(rèn)證、用戶(hù)管理與權(quán)限控制,有效地實(shí)現(xiàn)了統(tǒng)一權(quán)限平臺(tái)訪(fǎng)問(wèn)的安全控制。平臺(tái)目前已經(jīng)得到應(yīng)用,不足之處在于權(quán)限和操作類(lèi)型之間的關(guān)系定義還不夠清晰,阻礙了系統(tǒng)的擴(kuò)展,還需進(jìn)一步的研究才能更有效地實(shí)現(xiàn)。隨著信息化建設(shè)的不斷深入,用戶(hù)對(duì)系統(tǒng)安全控制要求的不斷提高和細(xì)化,權(quán)限的管理和控制還有待進(jìn)一步的研究和探討。
[1] 方義秋,王桂丹.面向方面的動(dòng)態(tài)軟件架構(gòu)研究[J].微電子學(xué)與計(jì)算機(jī),2011(3):32-33.
[2] 隋宏偉,王化雨,劉宏,等.可復(fù)用的用戶(hù)權(quán)限管理構(gòu)件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2005,25(5):1166-1169.
[3] 袁占亭,張秋余,楊潔.基于Web Services的企業(yè)應(yīng)用集成解決方案研究[J].計(jì)算機(jī)集成制造系統(tǒng),2004(4):12-15.
[4] 杜宏偉,盛豐,于劍.一個(gè)通用權(quán)限管理工具的設(shè)計(jì)與實(shí)現(xiàn)[J].鐵路計(jì)算機(jī)應(yīng)用,2003,12(1):23-24.
[5] 丁仲,左春.用于RBAC權(quán)限管理的面向?qū)ο罂蚣荛][J].計(jì)算機(jī)工程與應(yīng)用,2005(17):43-45.
[6] 毛碧波,孫玉芳.角色訪(fǎng)問(wèn)控制[J].計(jì)算機(jī)科學(xué),2003,30(1):17-18.
[7] 曾明,陳立定.基于樹(shù)型角色的訪(fǎng)問(wèn)控制策略及其實(shí)現(xiàn)[J].華南理工大學(xué)學(xué)報(bào),2004,32(9):21-22.
[8] 嚴(yán)悍,張宏,許滿(mǎn)武.基于角色訪(fǎng)問(wèn)控制對(duì)象建模及實(shí)現(xiàn)[J],計(jì)算機(jī)學(xué)報(bào),2000,23(10):164-171.
[9] ISO/IEC7492-2.信息處理系統(tǒng)開(kāi)放系統(tǒng)互連基本參考模型.第2部分:安全體系結(jié)構(gòu),1989:26-28.
[10] Ferraioio D, Kuhn R. RoleBased Access Controls, 15th NIST-NCSC National ComPuter Security Conference,2006:547-563.
Design and Implementation of Unite Authorization Platform Based on CAS
YANG Wei1LIU Yang2
(1. No. 91550 Troops of PLA, Dalian 116023)(2. Dalian Neusoft University of Information, Dalian 116023)
To resolve the problem that different information systems are usually unable to share resource for various techniques or platforms, the unite authorization platform is designed and implemented applying multilayer authorization system frame on the basis of MVC mode. This authorization platform, adopting the technique of single sign on(SSO) and enterprise javabean(EJB) for entry and mid-serving method respectively, can be employed to perform unified user management and authority control function for information-based operation system.
CAS, unite authorization platform, authority management, business application system
2013年7月5日,
2013年8月25日
楊薇,女,碩士,高級(jí)工程師,研究方向:測(cè)控軟件研制。劉陽(yáng),男,碩士,高級(jí)工程師,研究方向:軟件架構(gòu)。
TP393
10.3969/j.issn1672-9730.2014.01.032