楊 薇 劉 陽
(1.91550部隊 大連 116023)(2.大連東軟信息學院 大連 116023)
基于CAS的統一權限平臺的設計與實現*
楊 薇1劉 陽2
(1.91550部隊 大連 116023)(2.大連東軟信息學院 大連 116023)
針對多個信息系統之間因采用的技術和平臺不同而無法進行資源共享的問題,采用單點登錄技術,以基于MVC模式的多層體系作為權限系統的系統架構,EJB作為中間件服務技術,設計并實現了統一權限管理的信息化平臺,為信息化業務系統提供統一的用戶管理和權限控制功能,對其它類似系統具有較高參考價值。
CAS; 統一權限平臺; 權限管理; 業務應用系統
Class Number TP393
目前,隨著計算機技術的發展,各行各業的信息化建設取得非常大的進展。在信息化建設中,經常存在的一個問題就是,各信息系統內部存在著多個信息子系統,這些子系統各自實現不同的功能[1]。隨著這些子系統的建立,一些問題也暴露出來,如建設與應用嚴重脫節,各系統重復建設,系統之間因采用了不同的技術平臺和信息標準而形成信息孤島等。
為解決以上問題,需要建立一個“資源共享平臺”,其目的是搭建一個高層次的應用平臺,根據用戶的不同身份,統一分配權限[2],為各子信息系統提供自身數據的維護入口,以及對局域網內其它子信息系統的共享數據的查詢入口,實現各種資源與信息數據共享,消除信息孤島。
統一權限平臺主要由權限管理系統、權限服務接口系統及CAS單點登錄系統組成。

圖1 系統部署圖
統一權限平臺服務器由權限系統服務器、權限接口服務器、CAS服務器,數據庫服務器組成。出于安全考慮,數據庫服務器未與CAS服務器、權限系統等服務器位于同一網段。信息化業務應用客戶端可以通過PC、手機、平板等方式訪問業務系統,信息化業務系統直接接入主干網。圖1為系統的部署圖。
3.1 平臺架構設計
統一權限平臺采用CAS框架作為單點登錄的實現技術[3],以基于MVC模式的多層體系作為權限系統的系統架構,并采用Enterprise JavaBean作為中間件服務技術。
從權限認證的角度出發,統一資源平臺可分為統一權限平臺與核心業務應用的集合兩部分。而統一權限平臺由權限系統、單點登錄系統、權限服務接口應用三部分組成。
CAS是針對Web應用的單點登錄框架,其主要的任務就是安全地完成用戶的身份驗證工作[4]。權限管理系統是統一權限平臺的主要組成部分,負責用戶、角色、授權等方面的管理。權限管理系統采用Java三層經典模式進行開發[5]。表示層采用了Spring MVC技術,邏輯層采用了Spring IoC技術、持久層采用了Hibernate技術。
3.2 權限管理系統架構設計
權限管理系統從層次結構上分為表示層、邏輯層和持久層,系統架構如圖2所示。

圖2 權限管理系統架構圖
1) 表示層設計
權限管理系統的表示層設計為三部分:DispatcherServer負責接收用戶的Web請求、調用Web請求控制器組件和將數據分析、整理、轉換、打包至數據模型組件;數據格式校驗組件用于完成數據模型組件的數據格式校驗,通用消息組件負責在頁面進行消息展示;Web請求控制組件主要負責調用業務邏輯處理組件并將結果返回客戶端。Web請求控制器組件和數據模型組件采用了普通的POJO進行設計,降低了與Java EE Web處理組件的耦合度[6]。
2) 邏輯層設計
權限管理系統選擇Spring IoC作為業務層的技術框架,權限管理系統的通用組件大都是在其基礎上進行設計的。
權限管理系統的邏輯層設計為三部分:Spring Core是業務邏輯組件的運行基礎、Spring AOP是業務邏輯組件的事務處理基礎;異常處理組件使得權限管理系統可以專注處理自身的功能,日志組件則無侵入地對權限管理系統的操作進行記錄;業務處理組件完成基于RBAC的功能調用。業務處理組件和領域數據模型組件采用了普通的POJO進行設計,不依賴于Spring Framework。
3) 持久層設計
RBAC的功能模型比較簡潔,其用戶、角色、權限的對應關系清楚,故采用ORM持久化模型非常合適[7]。Hibernate是ORM框架的事實標準,所以權限管理系統選擇Hibernate作為其持久層框架。
權限管理系統的持久層框架雖然選用了Hibernate,但也是運行在Spring Context的基礎上。權限管理系統的持久層分為兩部分:通用查詢組件以Hibernate HQL為基礎進行設計,降低了查詢語句的復雜度;分頁組件基于Hibernate ORM思想進行設計,可以方便的進行數據庫移植;日志組件對用戶、角色、授權等寫入操作進行記錄,方便對權限管理系統進行安全審計。
3.3 單點登錄設計
單點登錄(Single Sign On,SSO),是目前比較流行的企業業務整合的解決方案之一[8]。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統[9]。統一權限平臺的單點登錄分為單點登錄客戶端、單點登錄服務器。
平臺采用CAS實現單點登錄。CAS具備開源、獨立部署、支持多種Web應用客戶端等優點,能夠滿足統一權限平臺關于單點登錄的要求[10]。從安全性和穩定性角度出發,CAS被部署在一臺單獨Linux服務器上面,應用服務器選擇了Jboss,還需要對服務器的DNS以及業務應用系統單獨設置。通過訪問接口服務,CAS可以讀取權限系統的用戶認證信息。
4.1 權限管理系統包結構
權限管理系統均以模塊為開發單位,每個模塊分為表示層(action)、業務層(service)、持久層(dao)。其中org.ly.apps.auth.bs包主要用于存放權限系統的功能模塊。包括系統用戶信息管理、角色管理、授權管理以及系統的實體組件等,是權限系統的核心業務組件包,包結構如表1所示。

表1 org.ly.apps.auth.common包
4.2 數據庫設計
權限管理系統的數據庫邏輯設計完全遵守數據庫設計要求及其規范而進行,詳細的權限管理系統的邏輯模型如圖3所示。

圖3 權限系統概念模型
4.3 權限管理系統表現層控制器代碼
控制層的主要作用是響應來自視圖的請求,定位業務組件處理該請求并返回響應視圖。以授權控制器代碼為例進行說明:
@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 權限管理系統持久層代碼
持久層位于三層操作的底層,一般是對數據進行操作。以用戶信息數據對象代碼為例進行說明:
@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是類級別上的注解,用以說明這是一個數據訪問組件。 “@Resource private SessionFactory sf”則表明對底層Hibernate會話工廠進行引用,Hibernate會話工廠使用前需要完成對數據源的初始化配置。
本文所設計與實現的統一權限平臺為信息化應用提供了統一的登錄入口、身份認證、用戶管理與權限控制,有效地實現了統一權限平臺訪問的安全控制。平臺目前已經得到應用,不足之處在于權限和操作類型之間的關系定義還不夠清晰,阻礙了系統的擴展,還需進一步的研究才能更有效地實現。隨著信息化建設的不斷深入,用戶對系統安全控制要求的不斷提高和細化,權限的管理和控制還有待進一步的研究和探討。
[1] 方義秋,王桂丹.面向方面的動態軟件架構研究[J].微電子學與計算機,2011(3):32-33.
[2] 隋宏偉,王化雨,劉宏,等.可復用的用戶權限管理構件系統的設計與實現[J].計算機應用,2005,25(5):1166-1169.
[3] 袁占亭,張秋余,楊潔.基于Web Services的企業應用集成解決方案研究[J].計算機集成制造系統,2004(4):12-15.
[4] 杜宏偉,盛豐,于劍.一個通用權限管理工具的設計與實現[J].鐵路計算機應用,2003,12(1):23-24.
[5] 丁仲,左春.用于RBAC權限管理的面向對象框架閉[J].計算機工程與應用,2005(17):43-45.
[6] 毛碧波,孫玉芳.角色訪問控制[J].計算機科學,2003,30(1):17-18.
[7] 曾明,陳立定.基于樹型角色的訪問控制策略及其實現[J].華南理工大學學報,2004,32(9):21-22.
[8] 嚴悍,張宏,許滿武.基于角色訪問控制對象建模及實現[J],計算機學報,2000,23(10):164-171.
[9] ISO/IEC7492-2.信息處理系統開放系統互連基本參考模型.第2部分:安全體系結構,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日
楊薇,女,碩士,高級工程師,研究方向:測控軟件研制。劉陽,男,碩士,高級工程師,研究方向:軟件架構。
TP393
10.3969/j.issn1672-9730.2014.01.032