郭偉光
(合肥學院 管理系,安徽 合肥 230601)
一種基于角色的跨域訪問授權方法
郭偉光
(合肥學院 管理系,安徽 合肥 230601)
針對用戶訪問企業(yè)部署在不同服務器或不同網域的各種Web應用系統(tǒng)的權限控制問題,提出了一種基于角色的訪問控制(RBAC)機制的跨域訪問授權方法.該方法通過RBAC授權中心取得用戶的權限信息,存儲于Session內,由訪問對象判斷使用者權限.當用戶跨域訪問時,由跨網域機制重新獲取XML格式的用戶權限信息,并重建在Session內.應用實踐表明,該方法在解決同類型Web應用系統(tǒng)的授權管理問題時簡單、有效.
Web應用;基于角色的訪問控制;跨域訪問;授權方法;Session
隨著企業(yè)不斷的引入各種不同的Web應用系統(tǒng)及其他一些業(yè)務支撐平臺,并將這些Web應用系統(tǒng)分散部署在不同網域的不同的服務器上以方便將開發(fā)維護工作分派給不同的開發(fā)團隊處理,降低原本單一服務器的承載量.這時如何防止未授權用戶訪問和使用受保護的資源或服務,實現跨域授權管理,便成了要解決的關鍵問題之一.
要實現跨域授權,就需要在不同網域的不同服務器間傳遞授權信息,現常見的方法有Cookie[1]、Agent[2]等.利用Cookie傳遞授權信息時,容易被他人非法獲取和利用.Agent是基于兩種不同系統(tǒng)進行異質傳輸而設計的代理程序,在運用上是將相關信息傳送給Agent,經由Agent與其它Agent溝通將信息輸出.利用Agent的方式,WEB應用程序存取信息時須指向到一特定位置上進行存取.這種方法需修改原程序對于信息存取的方式.本文擬使用Session作為儲存和獲取使用者權限的方法,不需要重新指向到某一特定位置上進行信息存取.
網絡環(huán)境中的授權操作需要解決的問題包括鑒別訪問者的身份,確定訪問者的權限.授權管理系統(tǒng)建立和維護訪問控制策略,為業(yè)務系統(tǒng)提供訪問控制決策服務,防止對各類信息資源的非授權訪問.在功能上應該包括權限的管理,權限的分配以及訪問控制幾大方面.基于角色的訪問控制(RBAC, Role-Based Access Control)是目前最熱門的訪問控制策略.它將用戶和具體權限分離開來,管理員可將權限的劃分和發(fā)放分別進行處理,通過給用戶授予角色來實現對用戶的授權操作.文獻[3]描述了一個基于RBAC的WEB應用系統(tǒng)授權管理機制模型,為授權管理系統(tǒng)的開發(fā)提供了一個思路,模型包括授權定義和授權執(zhí)行模塊,運行在身份驗證和Web應用系統(tǒng)之間.
3.1 授權系統(tǒng)的基礎架構
本文在以下定義的基礎上,提出一個基于角色的Web應用跨域訪問授權方法的系統(tǒng)基礎架構,如圖1所示.
定義1RBAC授權中心是基于RBAC機制開發(fā)的授權管理系統(tǒng),能完成對象、用戶、角色、權限的定義和用戶分配、權限分配等操作,并能生成指定格式的授權信息.其中:對象(Object)指系統(tǒng)中的各種功能模塊、數據、界面元素、Web頁面等,是用戶能訪問的客體;用戶(U s e r)指一個可以獨立訪問計算機系統(tǒng)中的數據或者用數據表示的其他資源的主體;角色(Role)指一個組織或任務中的工作或者位置,反映用戶的權限;權限(Permission)指在受系統(tǒng)保護的客體上執(zhí)行某一操作的許可,可用三元組符號表示P(o,t,p),o表示訪問對象、t表示訪問類型、p表示謂詞.p為真時,對o可進行t類型的訪問;用戶分配指為用戶分配一定的角色,即建立用戶與角色之間的多對多關系;權限分配指為角色分配一組權限,即建立角色與權限的多對多關系.這樣通過角色將用戶與訪問權限聯(lián)系起來,用戶具有其所屬諸角色的訪問權限的總和.
定義2Session_Plist是由RBAC授權中心提供的儲存于用戶與Web應用系統(tǒng)會話(Session)中的訪問授權信息,一個Session_Plist由一個結構體來表示,有以下幾個域:Session_Plist標識,用戶標識,該用戶在核定時間與地點內擁有的角色,該用戶在核定時間與地點內擁有的授權對象.
定義3Session_Ticke t是由RBAC授權中心提供并遞送給已登錄用戶的一個票據,是一組唯一的隨機碼,實際應用中可以附加其它信息.
定義4Session_XML是Web應用系統(tǒng)通過提交Session_Ticket向RBAC授權中心獲取的XML格式的Session_Plist.
3.2 將授權對象簡化為WEB頁面
B/S模式的Web應用系統(tǒng)與用戶的交互總是通過瀏覽器端頁面請求和服務器端應用響應來實現,用戶的所有操作都是通過對Web頁面的訪問來完成.此外,Web頁面的創(chuàng)建時可以將多個業(yè)務邏輯可以放置在一個頁面中;一個業(yè)務邏輯可以由一組的多個頁面來實現.因此,如果把一個用戶角色授予的權限所能進行的操作對應到WEB應用中某一個或者某一組頁面所能夠完成的功能上面去,則可以通過控制這個或者這組頁面來實現對用戶權限的管理.
由于上述特點,可以作出如下限制:對于一個頁面要實現的功能,應該有盡量細粒度的劃分,確保在某一頁面上實現的一個或者多個功能只對應某一權限所允許的訪問.在此限制下,將模型中的對象限定為Web應用的頁面,將Web頁面Title名稱作為權判讀對象,用戶權限中有Title名稱時即表示有權存取此Web頁面.將這些頁面的Title全部導入RBAC授權中心,并運用RBAC的運作原理配置角色,最后再將角色指向給用戶.
3.3 RBAC授權中心的處理流程
一個合法的用戶,在登入之后,必須通過RBAC授權中心取得自己的Session_Plist,并儲存于使用者與Web應用的Session中.其處理流程是:
(1)用戶登錄驗證成功后獲取用戶ID;
(2)由用戶ID獲取用戶在核定時間與地址內分配的角色;
(3)由(2)獲取的角色獲取用戶在核定時間與地址內的授權對象(Web頁面Title);
(4)輸出Session_Plist和Session_Ticket.
3.4 跨域獲取用戶授權信息的處理流程
用戶與Web應用的Session信息,無法直接轉交或授予其它的Web應用進行存取.跨域獲取用戶授權信息的處理流程,如圖2.
本方法在應用時,各種WEB應用系統(tǒng)并不要求統(tǒng)一的開發(fā)平臺,對原有系統(tǒng)的修改量也較少.在安全性方面,權限信息Session_Plist僅存儲在Session內,即使被用特殊方法讀出,也無法在用戶端直接植入Session內.Session_Ticket可設置較長碼元,限定有效時間,在用戶限出登錄或超過有效時間即被置為0并失效.在應用開發(fā)時,可以將Session_XML內容優(yōu)化為僅包含被訪對象的授權信息以減輕服務器間的傳輸負擔.
〔1〕劉潤達,諸云強,宋佳,等.一種簡單跨域單點登錄系統(tǒng)的實現 [J].計算機應用,2007,27(2):288-291.
〔2〕王琦.基于反向代理的網站群單點登錄[J].計算機工程,2008,34(14):138-139.
〔3〕王朝陽,戴靜敏.Web應用系統(tǒng)的授權管理機制[J].兵工自動化,2006,25(11):40-41.
TP 393.08
A
1673-260X(2010)04-0016-02