降 磊,張文凌
(1.山西金洋煅燒高嶺土有限公司,山西 忻州 034001;2.聯(lián)動(dòng)優(yōu)勢科技有限公司,北京 100033)
基于Acegi和CAS的企業(yè)級認(rèn)證授權(quán)管理系統(tǒng)的設(shè)計(jì)
降 磊1,張文凌2
(1.山西金洋煅燒高嶺土有限公司,山西 忻州 034001;2.聯(lián)動(dòng)優(yōu)勢科技有限公司,北京 100033)
文章介紹了企業(yè)級認(rèn)證授權(quán)管理系統(tǒng)建設(shè)的必要性和重要性,對Acegi和CAS技術(shù)進(jìn)行了簡單描述,重點(diǎn)說明了基于以上兩種技術(shù)建設(shè)權(quán)限系統(tǒng)的方案。
Acegi;RBAC;CAS;SSO
近年來,隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展,特別是因特網(wǎng)的普及,基于B/S(Brower/Server)的WEB應(yīng)用已經(jīng)深入到了人們的學(xué)習(xí)和工作當(dāng)中。尤其是隨著大多數(shù)企業(yè)信息化進(jìn)程的推進(jìn)和企業(yè)IT戰(zhàn)略的制定,一般企業(yè)中的WEB應(yīng)用系統(tǒng)呈幾何倍數(shù)逐步激增,而作為一個(gè)完整、安全的應(yīng)用系統(tǒng),完善的認(rèn)證和授權(quán)機(jī)制是不可缺少的,在這樣的背景下就凸顯出建立企業(yè)級認(rèn)證授權(quán)管理系統(tǒng)的重要性和必要性。
企業(yè)級認(rèn)證授權(quán)管理系統(tǒng)的建設(shè)目標(biāo)主要有:①提供統(tǒng)一的身份認(rèn)證和授權(quán)服務(wù),以滿足其他系統(tǒng)的安全控制需求(主要包含URL資源、業(yè)務(wù)類方法和領(lǐng)域?qū)ο蟮脑L問控制);②統(tǒng)一管理企業(yè)中所有的用戶信息和權(quán)限配置信息;③保證其他系統(tǒng)能快速地集成和接入;④實(shí)現(xiàn)單點(diǎn)登錄(SSO:Single Sign On),即用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。[1]
Acegi Security(以下簡稱Acegi),基于Spring IOC和AOP技術(shù)實(shí)現(xiàn),是Spring框架體系中最流行、最成熟的系統(tǒng)訪問安全解決方案,并且已經(jīng)成為Spring官方的子項(xiàng)目。[2]它提供了強(qiáng)大的企業(yè)級安全服務(wù),能夠與絕大多數(shù)WEB應(yīng)用無縫集成,并且能夠靈活地適應(yīng)于各個(gè)系統(tǒng)復(fù)雜的安全訪問控制需求。
CAS(Central Authentication Service)中央認(rèn)證服務(wù)時(shí)耶魯大學(xué)開發(fā)的開源單點(diǎn)登錄解決方案。CAS的整個(gè)處理流程都是圍繞著憑證展開的,共有 TGC,ST,PGT,PGTIOU,PT 5 種憑證,其中TGC與ST較為常用。TGC(Ticket-Granting Cookie):存放用戶身份認(rèn)證憑證的cookie,在瀏覽器與CAS間通訊時(shí)使用,用來明確用戶身份的憑證。ST(Service Ticket):服務(wù)的唯一標(biāo)識碼,由CAS發(fā)出通過客戶端瀏覽器到達(dá)業(yè)務(wù)服務(wù)端,一個(gè)特定服務(wù)職能有唯一的ST。[3]
本系統(tǒng)主要結(jié)合了Acegi和CAS實(shí)現(xiàn)了相關(guān)的權(quán)限認(rèn)證授權(quán)和SSO功能。
企業(yè)級認(rèn)證授權(quán)管理系統(tǒng)主要由權(quán)限控制客戶端、權(quán)限認(rèn)證授權(quán)系統(tǒng)、權(quán)限管理系統(tǒng)組成。權(quán)限控制客戶端主要集成于接入的子應(yīng)用當(dāng)中,負(fù)責(zé)攔截各種訪問URL和調(diào)用方法的請求,并向服務(wù)端進(jìn)行認(rèn)證和授權(quán)。權(quán)限認(rèn)證授權(quán)系統(tǒng)是整個(gè)系統(tǒng)的核心,主要處理客戶端的認(rèn)證、授權(quán)等請求,并提供用戶登錄、登出等功能。權(quán)限管理系統(tǒng)是核心數(shù)據(jù)的配置管理系統(tǒng),對整個(gè)系統(tǒng)起數(shù)據(jù)支撐作用。
整個(gè)系統(tǒng)的數(shù)據(jù)模型參考RBAC模型進(jìn)行設(shè)計(jì)。RBAC模型的核心思想是:引入角色作為用戶和訪問權(quán)限之間的代理,打破了傳統(tǒng)的用戶和權(quán)限直接關(guān)聯(lián)的模型,目的是為了將用戶和訪問的權(quán)限進(jìn)行了一定程度的解耦,從而減少管理權(quán)限的復(fù)雜度,并增加了系統(tǒng)的可擴(kuò)展性和靈活度。[4]RBAC模型中是將資源的訪問權(quán)限分配給一定的角色,而不是用戶,用戶則通過分配不同的角色而獲得角色所擁有的各種權(quán)限。RBAC具有兩大顯著的特征:①由于角色/權(quán)限之間的變化比角色/用戶關(guān)系之間的變化相對要慢得多,減小了授權(quán)管理的復(fù)雜性,降低管理開銷;②靈活地支持企業(yè)的安全策略,并對企業(yè)的變化有很大的伸縮性。[5]
圖1 整個(gè)認(rèn)證授權(quán)管理系統(tǒng)
見圖1,整個(gè)認(rèn)證授權(quán)管理系統(tǒng)包含的主要實(shí)體有:系統(tǒng)、用戶、角色、菜單,主要的實(shí)體間關(guān)系有:系統(tǒng)用戶關(guān)系、用戶角色關(guān)系、角色菜單關(guān)系、菜單URL關(guān)系。系統(tǒng)代表接入權(quán)限系統(tǒng)的子系統(tǒng)實(shí)體,如:權(quán)限管理系統(tǒng)、OA系統(tǒng)、財(cái)務(wù)系統(tǒng)等。用戶為使用某個(gè)子系統(tǒng)的自然人實(shí)體。角色是所有權(quán)限的載體,權(quán)限分配給角色,角色再分配給用戶,如:財(cái)務(wù)系統(tǒng)管理員、出納等。菜單是各個(gè)子系統(tǒng)的導(dǎo)航欄或者工具欄,用于顯示用戶所擁有的權(quán)限。用戶系統(tǒng)的關(guān)系(用戶可分配給多系統(tǒng),系統(tǒng)也可擁有多用戶,但每個(gè)系統(tǒng)僅有一名管理員)、用戶角色的關(guān)系(用戶可以飾演多個(gè)角色,角色可以分配給多個(gè)用戶)、角色菜單的關(guān)系(角色可擁有多個(gè)菜單,菜單可以分配給多個(gè)角色)都是多對多的關(guān)系。值得注意的是,將菜單和URL進(jìn)行了分離(即顯示和控制的隔離),菜單主要用于在頁面上給用戶進(jìn)行顯示的權(quán)限,而真正進(jìn)行權(quán)限控制和驗(yàn)證的實(shí)體是URL,目的是增加系統(tǒng)的靈活性和可操作性。
權(quán)限控制客戶端集成于各個(gè)子應(yīng)用當(dāng)中,主要通過配置Acegi Servlet過濾器鏈來實(shí)現(xiàn)權(quán)限控制的相關(guān)功能,其中主要的過濾器如下:
(1)HttpSessionContextIntegrationFilter:位于過濾器鏈頂端,主要處理session中SecurityContext,包括新建、保持和銷毀。
(2)CasProcessingFilter:處理登錄返回結(jié)果過濾器,主要負(fù)責(zé)到服務(wù)端驗(yàn)證TGC和ST的正確性。
(3)LogoutFilter:將用戶發(fā)送的注銷請求發(fā)送到服務(wù)端,并銷毀Session。
(3)Exception Translation Filter:處理 Filter Security Interceptor拋出的異常,重定向到服務(wù)端的登錄頁面或返回異常信息。
(4)Filter Security Interceptor:主要進(jìn)行權(quán)限驗(yàn)證,若用戶尚未登錄則拋出“尚未登錄異?!保ˋuthentication Credentials Not Found Exception);如果用戶已登錄,但沒有訪問當(dāng)前資源的權(quán)限,則拋出“拒絕訪問異常”(Access Denied Exception)。其中object Definition Source和access Decision Manager屬性的配置分別需要調(diào)用服務(wù)器端的“查詢訪問受限資源”和“驗(yàn)證授權(quán)”接口。
整個(gè)客戶端的集成過程僅包括修改應(yīng)用的配置文件和添加新jar包,不需要寫一行代碼,大大地減少了各子應(yīng)用的開發(fā)量和維護(hù)成本。
權(quán)限認(rèn)證授權(quán)系統(tǒng)在CAS-Server的基礎(chǔ)上,依據(jù)整個(gè)系統(tǒng)的數(shù)據(jù)模型,提供了認(rèn)證、授權(quán)等服務(wù),系統(tǒng)的相關(guān)接口如下:
認(rèn)證(登錄):用戶使用用戶名和密碼進(jìn)行認(rèn)證,若成功則生成TGC和ST,并根據(jù)請求參數(shù)判斷直接跳轉(zhuǎn)到子應(yīng)用頁面或顯示用戶可登錄系統(tǒng)列表頁面。
驗(yàn)證憑證:驗(yàn)證ST是否合法。
查詢用戶可見菜單:根據(jù)用戶ID和系統(tǒng)ID關(guān)聯(lián)查詢用戶有效的菜單。
查詢訪問受限資源:根據(jù)系統(tǒng)ID查詢系統(tǒng)所有受訪問限制的URL。
登出:用戶退出登錄狀態(tài)。
權(quán)限管理系統(tǒng)主要被用于為權(quán)限認(rèn)證授權(quán)系統(tǒng)提供數(shù)據(jù)支撐和數(shù)據(jù)維護(hù)作用,包含了數(shù)據(jù)模型中主要數(shù)據(jù)表的CRUD操作,為整個(gè)權(quán)限控制提供可視化的管理方式。
建立企業(yè)級認(rèn)證授權(quán)系統(tǒng),統(tǒng)一了企業(yè)內(nèi)部權(quán)限控制方法,避免了每做一個(gè)新的子系統(tǒng)就重新開發(fā)和維護(hù)安全控制系統(tǒng),節(jié)約了企業(yè)IT資源,加速了企業(yè)信息化的進(jìn)程,同時(shí)提高了系統(tǒng)使用者的效率,減少了權(quán)限管理人員的工作負(fù)擔(dān)。
[1] 吳志強(qiáng)、余金山,Acegi安全框架下實(shí)現(xiàn)的通用權(quán)限管理系統(tǒng),華僑大學(xué)學(xué)報(bào),2010.1,p27-31
[2] 馬林、黃培文等,RBAC的權(quán)限擴(kuò)展和其在Acegi下的實(shí)現(xiàn),微計(jì)算機(jī)信息,2008.1,p34-36
[3] 景民昌、唐弟官,開放源碼的CAS單點(diǎn)登錄系統(tǒng)研究,現(xiàn)代情報(bào),2009.3,p125~127
[4] 沈杰、朱程榮等,基于Yale_CAS的單點(diǎn)登錄的設(shè)計(jì)與實(shí)現(xiàn),計(jì)算機(jī)技術(shù)與發(fā)展,2007.2,p144-146
[5] 黃永生、張祖平、龍軍,開源單點(diǎn)登錄與角色權(quán)限管理的融合研究應(yīng)用,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