陳紅梅
(商丘師范學院 計算機科學系,商丘 476000)
基于kasai的安全管理系統
陳紅梅
(商丘師范學院 計算機科學系,商丘 476000)
企業的網絡正逐漸地覆蓋全國,甚至全世界。并行利用和訪問企業綜合數據的人員身份越來越多樣化,有自己的員工、供貨商、承包商、用戶等。怎樣安全有效地利用企業資源,怎樣認證不同的人員身份,怎樣進行授權和審計跟蹤,怎樣在安全地認證身份的基礎上開展其它的應用。這一切是我們企業所共同面對的嚴峻現實。根據這個現實的需求、設計并開發了本系統。
1.1.1 線程模式
Struts1 Action是單例模式并且必須是線程安全的,因為僅有Action的一個實例來處理所有的請求。單例策略限制了Struts1 Action能作的事[1],并且要在開發時特別小心。Action
資源必須是線程安全的或同步的。 Struts1 Action對象為每一個請求產生一個實例,因此沒
有線程安全問題。(實際上,servlet容器給每個請求產生許多可丟棄的對象,并且不會導致性能和垃圾回收問題)
1.1.2 可測性
測試Struts1 Action的一個主要問題是execute方法暴露了servlet API(這使得測試要依賴于容器)。一個第三方擴展——Struts TestCase——提供了一套Struts1的模擬對象(來進行測試)。 Struts Action可以通過初始化、設置屬性、調用方法來測試,“依賴注入”支持也使測試更容易。
Hibernate是一個開放源代碼的對象關系映射框架[2],它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。Hibernate的核心接口一共有5個,分別為:Session、SessionFactory、Transaction、Query 和Con fi guration。這5個核心接口在任何開發中都會用到[3]。通過這些接口,不僅可以對持久化對象進行存取,還能夠進行事務控制。
該功能模塊完全是通過Kasai提供的功能來完成的,此模塊不提供界面而是提供了可用的驗證接口供企業系統使用。
2.1.1 用戶驗證
1)身份驗證
功能輸入:用戶名、密碼。功能處理:調用Kasai系統的功能,在Kasai數據庫中核對用戶名和密碼。
功能輸出:驗證結果
例如:當用戶登錄企業應用程序時,驗證該用戶是否為合法用戶,并向系統返回驗證結果,因此只有合法用戶才登入系統。
2)組驗證
功能輸入:用戶名、組名。
功能處理:調用Kasai系統的功能,在Kasai數據庫中查找組人員列表核對該用戶是否為組成員。功能輸出:驗證結果
例如:通過用戶名、組名,驗證一個用戶是否屬于一個已定義的工作組并返回結果。
3)角色驗證
功能輸入:用戶名、角色名。
功能處理:調用Kasai系統的功能,該用戶是否為該角色成員。
功能輸出:驗證結果
例如:公司內部有一些管理層的界面只有經理級別的人才能夠觀看,我們關心的是經理級別而不是哪個部門的經理,所以可以使用這個功能來驗證其身份。
2.1.2 權限驗證
1)用戶權限驗證
(1)用戶對某些事物的權限驗證
功能輸入:用戶、操作對象、操作行為。
功能處理;系統調用Kasai的功能,在Kasai數據庫中查找用戶的角色從而確定該用戶是否具有對該操作對象執行這種操作的權限。
功能輸出:驗證結果
例如:驗證一個客戶是否有瀏覽公司網站業務內容的權力,或是部門經理在調配人員時也需要驗證他是否對這些所有的人員都擁有調配的權力,此功能實現這個驗證過程。
(2)用戶角色權限驗證
功能輸入:用戶、操作對象、角色(一組操作)
功能處理:系統調用Kasai的功能,在Kasai數據庫中查找該用戶的角色,來核對該用戶是否擁有對這個操作對象的這種角色。
功能輸出:驗證結果
例如:驗證一名員工是否是一個部門的經理,或是主管等等。
2)組權限驗證
組對某些事物的權限驗證
功能輸入:組、操作對象、操作行為。
功能處理;系統調用Kasai的功能,在Kasai數據庫中查找該組的角色從而確定該用戶是否
有對該操作對象執行這種操作的權限。
功能輸出:驗證結果
例如:我們想要判斷銷售部下的一個工作組是否能夠更改某一個商品的價格,本功能提供這樣的驗證。
2.2.1 授予(取消)人員特殊的權限
功能輸入:被授權人員的信息、授予的權力信息、行使權力的對象信息和授權(或取消權限)信號。
功能處理:把授權信息存儲到Kasai數據庫,同時再加入一些擴展功能信息然后存入本地系統數據庫,以供日后擴展功能使用
功能輸出:返回授權結果。
例如:某個員工在完成一項特殊任務的時候可能會需要某一個特殊的權限,此權限與他的職位不相關,那么我們就可以通過這個方法給該員工一個特殊的權力去處理某件事,任務完成后再將這個權限取消。
2.2.2 禁用(啟用)人員
功能輸入:需要被禁用的人員信息和禁用(或啟用)信號。
功能處理:把禁用(或啟用)信息存儲到Kasai數據庫,同時再加入一些擴展功能信息然后存入本地系統數據庫,以供日后擴展功能使用。
功能輸出:返回操作結果。
例如:公司想要把某個員工暫時停職,以及日后的復職工作由本功能實現。
2.2.3 授予(取消)人員角色
功能輸入:被授予人員的信息、授予的角色信息、行使權力的對象信息和授予(或取消)角色信號。
功能輸出:返回授予角色結果。
例如:有新的員工加入了公司,那么我們只需要輸入該員工的id和他的職位和其他一些輔助信息,該員工就可以馬上擁有該職位的所有權限,而不用我們把每一條具體的權限授給這個員工。
2.2.4 權限提升(降級)
功能輸入:權限被改變的人員(或組)信息、新的角色(或權限)信息和新的可操作對象信息。
功能處理:系統把人員以前擁有的所有的權限全部清除,再賦予新的角色或權限,在Kasai和本地數據庫中保存。
功能輸出:返回改變后結果。
例如:當一個員工得到提升或者被降職的時候,我們需要把他原來的所有權限全部取消然后賦予他新的權限和操作對象,本功能實現的就是這個過程。
2.2.5 權限轉移
功能輸入:原人員信息、新人員信息。
功能處理:把新人員的舊權限清除,再把原人員的所有角色賦給新人員,在Kasai和本地數據庫保存。
功能輸出:返回改變后結果。
例如:公司要開除一名員工,同時讓另一名員工頂替舊員工的位置,這樣的情況可以用此功能來實現。
2.2.6 權限共享
功能輸入:需要共享的權限。
功能處理:把目標權限賦予每一個人員和組,在Kasai和本地數據庫保存。
功能輸出:返回共享后結果。
例如:公司內可能會有一些非常低級的權限,需要所有人都擁有,我們可以通過這個功能將其共享,而不用手動把該功能加入到每一個人的身上。
2.2.7 用戶維護
1)新建用戶
功能輸入:新用戶的信息。
功能處理:在Kasai和本地數據庫中添加新用戶信息。
功能輸出:返回添加后結果。
例如:公司有新員工加入時,員工信息的錄入是必須的,本功能負責將其實現。
2)修改用戶信息
功能輸入:需要修改的用戶信息。
功能處理:在Kasai和本地數據庫中更新用戶信息。
功能輸出:返回修改后結果。
例如:公司在進行人事變動或者人員數據更新時需要此功能來實現對員工信息的維護。
3)刪除用戶
功能輸入:將要刪除的用戶信息(一個或多個)。
功能處理:在Kasai和本地數據庫中刪除所選用戶的全部信息。
功能輸出:返回刪除后結果。
例如:有人被公司開除或離開工作崗位時,需要在數據庫中刪除與其相關的信息以保證系統長久的安全性。
2.2.8 組維護
1)新建組
功能輸入:新組信息、新組人員。
功能處理:在Kasai和本地數據庫中添加組信息。
功能輸出:返回添加后結果。
例如:成立新的工作組或者新的經銷商類型,必須在系統中創建新的用戶組來進行維護,這樣的工作由本功能完成。
2)更新組信息
功能輸入:需要修改的組信息。
功能處理:在Kasai和本地數據庫中更新組信息
功能輸出:返回修改后結果。
例如:需要更新該組的信息或說明時,由本功能完成。
3)取消組功能輸入:將要刪除的組信息(一個或多個)。功能處理:在Kasai和本地數據庫中刪除所選組的全部信息。
功能輸出:返回刪除后結果。
例如:工作組解散時在系統中清除相關信息時使用本功能。
4)向組中添加用戶
功能輸入:新用戶信息。
功能處理:在Kasai和本地數據庫中新建組的用戶信息。
功能輸出:返回添加后結果。
例如:工作組有新成員加入時需要更新該組的信息,由本功能完成。
5)從組中刪除用戶
功能輸入:將要刪除的用戶信息(一個或多個)。
功能處理:在Kasai和本地數據庫中刪除所選用戶的全部信息。
功能輸出:返回刪除后結果。
例如:工作組成員有所變動時需要刪除該組的個別用戶信息,由本功能完成。)修改組中的用戶。
6)修改組中的用戶
功能輸入:將要修改的用戶信息。
功能處理:在Kasai和本地數據庫中修改用戶的信息。
功能輸出:返回修改后結果。
例如:工作組成員有所變動時需要更新該組的信息,由本功能完成。
7)組組之間的人員調動
功能輸入:要調動的人員信息。
功能處理:在Kasai和本地數據庫中一個組中刪除所選用戶的全部信息,在另一組中添加所有的人員信息。
功能輸出:返回更新后結果。
例如:工作組之間人員相互調動,由本功能完成。
此系統具有非常廣泛的兼容性、易用性及強大的安全性。因此無論在什么情況下,本系統都能提供客戶所要求的靈活可靠、節約開支并在企業范圍內的用戶身份認證服務,同時本系統還能夠便捷的實現對角色的授權、人員分組以及對系統中操作對象的維護,使企業應用的效率更高,安全性更強,更加適應未來的發展。
[1]周智仁, 等. Java網絡應用編程[M]. 高等教育出版社.2004: 61-33.
[2]李俊民. Oracle數據開發實例解析第一版[M]. 北京: 機械工業出版社, 2006: 20-50.
[3]魏善沛. Web數據庫基礎教程[M]. 北京: 中國鐵道出版社, 2007: 87-89.
The general authority management system based on kasai
CHEN Hong-mei
Kasai是一個開源100%基于Java的認證與授權框架。它提供一個完善的,易于管理的許可方案來與你應用程序相結合的。這個框架的目的是為多用戶應用程序提供一個使用簡單但強大的安全環境。Kasai具有較高級別的安全抽象,接口更加通用;它的目標在于特定的安全需求。本系統是基于Kasai的安全管理系統,采用J2EE架構,使用struts2+hibernate開源框架來實現的。
J2EE;Struts2框架;Hibernate框架;Oracle數據庫;Kasai
陳紅梅(1973-),女,碩士研究生,研究方向為計算數學。
TP315
A
1009-0134(2011)1(上)-0187-03
10.3969/j.issn.1009-0134.2011.1(上).59
2010-11-09
國家自然科學基金項目(50323001);河南省基礎與前沿研究項目(102300410244)。