摘要:PDM系統客戶端用戶身份的識別與驗證是PDM系統安全的門戶,合法用戶的權限分配與管理是PDM系統信息安全的關鍵。從PDM系統權限管理的方面給出了一個設計實現方案:首先借助UML對系統進行分析和建模;然后給出了基于J2EE和Web結構的系統實現案例。
關鍵詞:J2EE;Web結構;PDM系統;權限管理
中圖法分類號:TP309.2文獻標識碼:A
文章編號:1001-3695(2006)09-0111-02
產品數據管理(ProductDataManagement,PDM)的內涵是將計算機在產品設計、分析、制造、工藝規劃和質量管理等方面的“信息孤島”集成在一起,對涉及產品生命周期內的某些相關數據進行統一管理。這為企業提供了產品設計與制造的并行化協同工作的環境,提升了企業在全球市場的競爭力[1]。
為了保證PDM系統資源不被非法使用和消除來自網絡系統的威脅,必須對訪問PDM系統資源的請求進行管理。本文在分析了J2EE體系架構的基礎上,給出了一個基于J2EE技術和Web結構的PDM系統權限管理的設計案例。
1J2EE體系架構分析
J2EE(Java2PlatformEnterpriseEdition)是一種利用Java2平臺來簡化諸多與多級企業解決方案的開發、部署和管理相關的復雜問題的體系結構。它集成了先進的軟件體系架構思想,提供中間層集成框架來滿足無需太多費用而又需要高可用性、高可靠性及可擴展性的應用需求。通過提供統一的開發平臺來降低開發多層應用的費用和復雜性,同時提供對現有應用程序集成的強有力支持,完全支持EJB,有良好的向導支持打包和部署應用,添加目錄支持,增強了安全機制,提高了性能。
J2EE在系統邏輯上為典型的四層結構,即客戶層、表示層、業務邏輯層和信息資源層。客戶層,J2EE應用程序支持的客戶端,可以是基于Web方式的(如Web頁面、Applet),可以是基于傳統方式的(如Java應用程序),也可以是移動設備(如手機、掌上電腦);表示層,運行在J2EE服務器上,提供通過Web訪問本系統客戶端的業務層邏輯;業務邏輯層,運行在J2EE服務器上,主要封裝了業務邏輯和業務數據,集中系統業務處理,完成復雜計算,提供事務處理、負載均衡、安全和資源連接等基本服務;信息資源層,主要負責數據的存儲、組織和管理,包括企業基礎建設系統、數據庫系統和其他遺留信息系統[2,3]。
隨著Internet日益成為主流信息平臺,可伸縮性、靈活性和易于維護的信息系統是人們關注的焦點,而J2EE恰好滿足了這一要求。基于上述對J2EE的理解,結合實際開發,我們設計的PDM系統的權限管理就是采用了這些體系架構技術。
2PDM系統的權限管理設計與實現
客戶端用戶身份的識別與驗證是信息系統安全的門戶,合法用戶的操作權限分配與管理是PDM系統信息安全的關鍵,所以權限管理子系統是PDM系統安全工作的一個最基本、最重要的部分。
2.1權限管理系統分析
我們設計的權限管理子系統由四部分組成,這里借助UML的用例圖對整個子系統的邏輯數據處理流程進行描述,如圖1所示。
(1)用戶注冊登錄。用戶在訪問應用服務器之前,首先要證實自己的身份和所屬角色。用戶身份認證之后,根據用戶提出請求的具體內容,從中提取有關訪問控制的信息,參照訪問權限,決定接收或拒絕用戶的訪問請求。如果接收,就將用戶的請求定位到具體的應用服務器,并向該服務器提交用戶請求,最后將處理結果返回給用戶。(2)用戶管理。普通用戶可以修改密碼等基本操作,管理員可以根據工作需要將用戶分配給相應的角色等管理操作。
(3)角色管理。管理角色定義、約束和角色分配等功能。角色信息庫存儲管理員定義的角色集,用戶信息庫管理用戶所屬的角色,在角色訪問權限庫中存儲每個角色對可訪問資源的權限。
(4)權限管理。系統管理員通過管理界面方便地進行權限定義、分配等各種管理。
2.2權限管理子系統在J2EE各層的設計與實現
本權限管理系統結構采用基于J2EE和Web的體系架構。結構示意圖如圖2所示。
(1)客戶層。使用綜合HTML/動態HTML(DynamicHTML,DHTML)/JavaScript/的技術構建客戶層,用來與用戶交互。
(2)表示層。該層生成Web頁面和Web頁面內的動態內容。該動態內容通常是從數據庫獲得,并且在表示層能夠把客戶端傳來的Web頁面包含的請求打包。使用JavaServlet和JSP技術來構建該層。
該層主要反映了客戶層的需求,包括以下三部分:
①用戶登錄系統。用于檢查用戶的合法性,主要驗證用戶名和密碼的雙重有效性。當該系統運行時,調用logChecked()方法。
②運行時監控系統。采用觸發的監控方式,即用戶一旦選擇了對某項資源操作,該監控系統就立即激活,調用checkedRoleRight()方法進行系統檢查,決定是否有權執行該項操作。
③系統管理和維護。該部分由用戶管理和角色管理兩部分組成。用戶管理包括用戶修改密碼、刪除用戶等功能;角色管理包括增加角色、刪除角色、增加和修改角色約束條件、修改角色權限和角色所包含的用戶等功能。一般用戶只可以注冊新用戶和修改密碼,系統管理員擁有所有權限,包括審批新注冊用戶等行政管理職能。
(3)業務邏輯層。該層是開發中最重要的一部分。在本系統中,我們將很多復雜的業務邏輯采用EJB組件來實現,一些常用功能也借助EJB組件來實現(這樣既方便了開發,又增強了程序的重用性)。這些組件構建的合理性決定了整個系統的性能和運行效率。其中SessionBean是用來實現系統的商務邏輯,EntityBean是用來表示數據邏輯,并實現與數據庫的連接管理。如何識別、設計和實現這些邏輯是此層實現的重點與難點,主要關注以下幾點:
①針對表示層的需求,我們設計了以下的SessionBean來實現權限管理和維護。下面簡要介紹這些組件使用的一些方法[4]:
LogManagerBean用來管理用戶登錄,其中logChecked()方法用來檢查用戶登錄,聲明為publicintlogChecked(StringuserName,Stringpwd);另外還有一個方法privateStringencryptCode(Stringstr)用于加密用戶名和用戶密碼,結果返回給logChecked()方法來驗證合法性。
RunningRightBean用來管理檢查用戶的權限問題,其中checkedRoleRight()方法用來檢查用戶所屬角色的權限,聲明為publicintcheckedRoleRight(StringroleID,StringfunctionID);返回值為權限操作類型:0代表無權限,1代表可讀,2代表可寫,3代表完全控制。
RightManagerBean用來對權限系統進行管理和維護,這里不作詳細敘述。
②在用戶權限管理子系統中,權限的判斷是系統最重要的部分之一。在權限判斷設計中,我們采用權限字段(Pw)概念,即權限字段中的每一位對應著對某一具體資源的操作。
Pw(i)=0:用戶對第i位對應的資源沒有進行過訪問
1:用戶對第i位對應的資源有進行操作的權限
2:用戶對第i位對應的資源沒有進行操作的權限
當用戶通過身份驗證以后,就為該用戶建立了相應的Session。該Session的生存時間為用戶通過身份驗證以后一直保持到用戶退出系統。在為用戶建立Session的同時,系統將獲得他的一些基本角色的屬性值,并將這些基本屬性值寫入Session的權限字段,然后呈現給用戶相應的操作界面,或是否允許該用戶進行這次操作。系統采用觸發的監控方式,即用戶一旦選擇了對某項資源的操作,該監控系統就立即激活,去查找該用戶對這一資源的相應操作權限。這由Pw(i)的具體值來決定,具體含義如Pw(i)的定義所述。
在查找用戶所屬角色的權限時,需要對角色權限作出正確的判斷。我們給出判斷公式所用的一些定義:
文件夾屬性A(fo),針對文件夾的刪除、隱藏、改名等;
文件屬性A(f),針對文件的拷貝、刪除、修改、只讀、改名等;
初始權限P(f),用戶所屬角色的全部權限;
不可繼承的權限P(nh),角色繼承過程中不可以被繼承的權限;
有效權限P(a),初始權限P(f)除去用戶所屬角色在繼承過程中不可以被繼承的權限;
可行使的權限P(e),對某一資源進行操作的權限,即有效權限與文件夾屬性的交集或有效權限與文件屬性的交集。
我們得到的可行使權限就是用戶對某一資源是否有權進行操作的權限,同時對相應的權限字段進行相應的修改。這種方案只在需要權限時進行一次權限查找和判斷,以后若有對該資源的相同操作,就可以直接從Session的權限字段中讀取、判斷。這樣就很好地解決了用戶權限管理執行效率的問題,是完全可行的。
③為了提高資源的利用效率,我們使用了數據庫連接池技術[5]。
數據庫連接池的好處主要有以下幾點:
使數據庫的操作很快,需要時從連接池中取來,不用時歸還。
避免反復地建立新的數據庫連接,可提高系統性能和該程序的伸縮性。
即使連接數超過了連接池所提供的連接數時,它會等待某一個釋放的連接。
(4)信息資源層。本系統采用了Oracle數據庫。在設計中,盡量提供一致的列名,不使用過分生僻的數據類型,提供均衡數據分布的唯一索引,創建提高完整性和簡化“完整語句”信息連接的主關鍵字和外關鍵字。同時盡量將動作和業務邏輯與數據資源層分開。為了確保數據完整性和一致性,在數據庫中還包含了一定的約束關系,如NOTNULL約束、主關鍵字約束和外關鍵字約束等。
3結束語
本文首先分析J2EE技術特點,然后在此基礎上,給出了一個基于Web結構的應用實例。實踐證明這個解決方案是可行的,該系統具有規范性、安全性和可靠性,使用J2EE技術顯著縮短了具有可伸縮性和高度復雜的企業級應用的開發周期。本系統能夠很好地滿足系統安全的要求,實現了權限動態管理的目標,給系統管理和用戶使用帶來很大方便,值得推廣。
參考文獻:
[1]童秉樞,李建明.產品數據管理(PDM)技術[M].北京:清華大學出版社,2000.
[2]趙強,喬新良.J2EE應用開發(WebLogic+JBuilder)[M].北京:電子工業出版社,2004.
[3]SUNMicrosystems.Javatm2PlatformEnterpriseEditionSpecification,v1.4[EB/OL].http://java.sun.com/j2ee/j2ee1_4frspec.pdf,2003.
[4][美]CayS,HorstmannGaryCornell.CoreJava2volumeIFundamentals(第6版)[M].程峰,等.北京:機械工業出版社,2003.
[5][美]JohnHunt,ChrisLoftus.GuidetoJ2EEEnterpriseJava[M].周立斌,楊飛,等.北京:清華大學出版社,2004.
作者簡介:
張曉諾,男,碩士研究生,主要研究方向為管理信息系統、數據庫技術;
曹寶香,男,教授,碩士生導師,主要研究方向為圖形圖像、數據庫技術、管理信息系統;
王廷蔚,男,碩士研究生,主要研究方向為管理信息系統;
夏曉娜,女,碩士研究生,主要研究方向為管理信息系統。