降 磊,張文凌
(1.山西金洋煅燒高嶺土有限公司,山西 忻州 034001;2.聯動優勢科技有限公司,北京 100033)
基于Acegi和CAS的企業級認證授權管理系統的設計
降 磊1,張文凌2
(1.山西金洋煅燒高嶺土有限公司,山西 忻州 034001;2.聯動優勢科技有限公司,北京 100033)
文章介紹了企業級認證授權管理系統建設的必要性和重要性,對Acegi和CAS技術進行了簡單描述,重點說明了基于以上兩種技術建設權限系統的方案。
Acegi;RBAC;CAS;SSO
近年來,隨著計算機技術的迅猛發展,特別是因特網的普及,基于B/S(Brower/Server)的WEB應用已經深入到了人們的學習和工作當中。尤其是隨著大多數企業信息化進程的推進和企業IT戰略的制定,一般企業中的WEB應用系統呈幾何倍數逐步激增,而作為一個完整、安全的應用系統,完善的認證和授權機制是不可缺少的,在這樣的背景下就凸顯出建立企業級認證授權管理系統的重要性和必要性。
企業級認證授權管理系統的建設目標主要有:①提供統一的身份認證和授權服務,以滿足其他系統的安全控制需求(主要包含URL資源、業務類方法和領域對象的訪問控制);②統一管理企業中所有的用戶信息和權限配置信息;③保證其他系統能快速地集成和接入;④實現單點登錄(SSO:Single Sign On),即用戶只需要登錄一次就可以訪問所有相互信任的應用系統。[1]
Acegi Security(以下簡稱Acegi),基于Spring IOC和AOP技術實現,是Spring框架體系中最流行、最成熟的系統訪問安全解決方案,并且已經成為Spring官方的子項目。[2]它提供了強大的企業級安全服務,能夠與絕大多數WEB應用無縫集成,并且能夠靈活地適應于各個系統復雜的安全訪問控制需求。
CAS(Central Authentication Service)中央認證服務時耶魯大學開發的開源單點登錄解決方案。CAS的整個處理流程都是圍繞著憑證展開的,共有 TGC,ST,PGT,PGTIOU,PT 5 種憑證,其中TGC與ST較為常用。TGC(Ticket-Granting Cookie):存放用戶身份認證憑證的cookie,在瀏覽器與CAS間通訊時使用,用來明確用戶身份的憑證。ST(Service Ticket):服務的唯一標識碼,由CAS發出通過客戶端瀏覽器到達業務服務端,一個特定服務職能有唯一的ST。[3]
本系統主要結合了Acegi和CAS實現了相關的權限認證授權和SSO功能。
企業級認證授權管理系統主要由權限控制客戶端、權限認證授權系統、權限管理系統組成。權限控制客戶端主要集成于接入的子應用當中,負責攔截各種訪問URL和調用方法的請求,并向服務端進行認證和授權。權限認證授權系統是整個系統的核心,主要處理客戶端的認證、授權等請求,并提供用戶登錄、登出等功能。權限管理系統是核心數據的配置管理系統,對整個系統起數據支撐作用。
整個系統的數據模型參考RBAC模型進行設計。RBAC模型的核心思想是:引入角色作為用戶和訪問權限之間的代理,打破了傳統的用戶和權限直接關聯的模型,目的是為了將用戶和訪問的權限進行了一定程度的解耦,從而減少管理權限的復雜度,并增加了系統的可擴展性和靈活度。[4]RBAC模型中是將資源的訪問權限分配給一定的角色,而不是用戶,用戶則通過分配不同的角色而獲得角色所擁有的各種權限。RBAC具有兩大顯著的特征:①由于角色/權限之間的變化比角色/用戶關系之間的變化相對要慢得多,減小了授權管理的復雜性,降低管理開銷;②靈活地支持企業的安全策略,并對企業的變化有很大的伸縮性。[5]

圖1 整個認證授權管理系統
見圖1,整個認證授權管理系統包含的主要實體有:系統、用戶、角色、菜單,主要的實體間關系有:系統用戶關系、用戶角色關系、角色菜單關系、菜單URL關系。系統代表接入權限系統的子系統實體,如:權限管理系統、OA系統、財務系統等。用戶為使用某個子系統的自然人實體。角色是所有權限的載體,權限分配給角色,角色再分配給用戶,如:財務系統管理員、出納等。菜單是各個子系統的導航欄或者工具欄,用于顯示用戶所擁有的權限。用戶系統的關系(用戶可分配給多系統,系統也可擁有多用戶,但每個系統僅有一名管理員)、用戶角色的關系(用戶可以飾演多個角色,角色可以分配給多個用戶)、角色菜單的關系(角色可擁有多個菜單,菜單可以分配給多個角色)都是多對多的關系。值得注意的是,將菜單和URL進行了分離(即顯示和控制的隔離),菜單主要用于在頁面上給用戶進行顯示的權限,而真正進行權限控制和驗證的實體是URL,目的是增加系統的靈活性和可操作性。
權限控制客戶端集成于各個子應用當中,主要通過配置Acegi Servlet過濾器鏈來實現權限控制的相關功能,其中主要的過濾器如下:
(1)HttpSessionContextIntegrationFilter:位于過濾器鏈頂端,主要處理session中SecurityContext,包括新建、保持和銷毀。
(2)CasProcessingFilter:處理登錄返回結果過濾器,主要負責到服務端驗證TGC和ST的正確性。
(3)LogoutFilter:將用戶發送的注銷請求發送到服務端,并銷毀Session。
(3)Exception Translation Filter:處理 Filter Security Interceptor拋出的異常,重定向到服務端的登錄頁面或返回異常信息。
(4)Filter Security Interceptor:主要進行權限驗證,若用戶尚未登錄則拋出“尚未登錄異常”(Authentication Credentials Not Found Exception);如果用戶已登錄,但沒有訪問當前資源的權限,則拋出“拒絕訪問異常”(Access Denied Exception)。其中object Definition Source和access Decision Manager屬性的配置分別需要調用服務器端的“查詢訪問受限資源”和“驗證授權”接口。
整個客戶端的集成過程僅包括修改應用的配置文件和添加新jar包,不需要寫一行代碼,大大地減少了各子應用的開發量和維護成本。
權限認證授權系統在CAS-Server的基礎上,依據整個系統的數據模型,提供了認證、授權等服務,系統的相關接口如下:
認證(登錄):用戶使用用戶名和密碼進行認證,若成功則生成TGC和ST,并根據請求參數判斷直接跳轉到子應用頁面或顯示用戶可登錄系統列表頁面。
驗證憑證:驗證ST是否合法。
查詢用戶可見菜單:根據用戶ID和系統ID關聯查詢用戶有效的菜單。
查詢訪問受限資源:根據系統ID查詢系統所有受訪問限制的URL。
登出:用戶退出登錄狀態。
權限管理系統主要被用于為權限認證授權系統提供數據支撐和數據維護作用,包含了數據模型中主要數據表的CRUD操作,為整個權限控制提供可視化的管理方式。
建立企業級認證授權系統,統一了企業內部權限控制方法,避免了每做一個新的子系統就重新開發和維護安全控制系統,節約了企業IT資源,加速了企業信息化的進程,同時提高了系統使用者的效率,減少了權限管理人員的工作負擔。
[1] 吳志強、余金山,Acegi安全框架下實現的通用權限管理系統,華僑大學學報,2010.1,p27-31
[2] 馬林、黃培文等,RBAC的權限擴展和其在Acegi下的實現,微計算機信息,2008.1,p34-36
[3] 景民昌、唐弟官,開放源碼的CAS單點登錄系統研究,現代情報,2009.3,p125~127
[4] 沈杰、朱程榮等,基于Yale_CAS的單點登錄的設計與實現,計算機技術與發展,2007.2,p144-146
[5] 黃永生、張祖平、龍軍,開源單點登錄與角色權限管理的融合研究應用,2010.3,p108-111
Based on Acegi and CAS Enterprise Certificate Authority Management System Management System's Design
Jiang Lei,Zhang Wenling
This article introduced the enterprise certificate authority management system management system construction’s necessity and the importance,have carried on the simple description to Acegi and the CAS technology,explained with emphasis based on the above two kind of technical construction jurisdiction system’s plan.
Acegi;RBAC;CAS;SSO
TP311.52
A
1000-8136(2011)02-0140-02