日期 | |
作者 | |
類(lèi)型 | 安全認證 |
內容 | 電子平臺的安全模式設計 |
電子平臺的安全模式設計
1. 前言
由于電子平臺的辦公信息的敏感性以及網(wǎng)絡(luò )的虛擬性和開(kāi)放性,決定了電子平臺系統需要有強有力的用戶(hù)訪(fǎng)問(wèn)安全、網(wǎng)絡(luò )安全、系統安全、應用程序安全、數據庫和事務(wù)管理器安全來(lái)保證電子平臺系統的安全。而系統采用J2EE框架正是滿(mǎn)足以上需要,它不但將安全任務(wù)的一些內容轉移給容器,且能夠提供應用程序員完成安全任務(wù)的功能。
2. 方案的整體設計
在電子平臺系統的安全體系中我們主要應用到了集中認證、系統密碼加密、Web模塊的角色配置和EJB模塊的角色配置。下面就是系統的整個(gè)安全體系的設計示意圖:
電子平臺安全體系示意圖
2.1 集中認證:
集中認證就是采用CA機構的認證服務(wù)器和Web應用程序,對客戶(hù)端數字證書(shū)的驗證過(guò)程與普通的認證相同都是采用的Https傳輸信息。在驗證完成以后CA機構的Web應用程序會(huì )根據配置文件轉發(fā)到指定位置,這里我們可以設定電子平臺系統的首頁(yè)面,同時(shí)將認證的一些信息放到客戶(hù)端的Cookie中,這樣我們只需要在自己的電子平臺系統的用戶(hù)進(jìn)行業(yè)務(wù)登入的時(shí)候調用CA機構提供的認證接口進(jìn)行驗證,這個(gè)過(guò)程是采用Http方式,速度上將會(huì )有很大的提高,同時(shí)保證的安全性,且對電子平臺系統的影響較小,有利于系統的開(kāi)發(fā)、集成和更新。為了更好的說(shuō)明集中認證與普通認證的區別,我做了以下比較:如圖
集中認證VS普通認證
下面我們集中討論集中認證在電子平臺系統的應用,下面是電子平臺系統應用集 中認證的一個(gè)網(wǎng)絡(luò )流程示意圖和集中認證的程序流程圖:
電子平臺應用集中認證的流程圖
系統應用集中認證登陸注冊的程序流程:
上面提到的一些關(guān)于集中認證的一些概念可以參考《關(guān)于CA的一些基本概念》和《公鑰基礎設施PKI技術(shù)》。具體服務(wù)證書(shū)和CA認證機構auth.war包怎么部署以及如何應用參考《集中認證在電子平臺中應用》文檔。關(guān)于調用CA機構提供的驗證接口在LoginAction/RegAcion內進(jìn)行。具體如何實(shí)施在下面的“系統開(kāi)發(fā)過(guò)程中注意的事項”中會(huì )具體討論。
2.2 J2EE安全體系:
電子平臺采用采用先進(jìn)的、流行的MVC三(多)層技術(shù)體系架構,分別為:View、Controller、Model,如下圖所示:
這樣將業(yè)務(wù)邏輯層與視圖分開(kāi)不但有利于開(kāi)發(fā)而且保證了數據的安全性,下面主要談一下J2EE應用程序的安全性。
J2EE應用程序安全使用基于角色的安全機制,在開(kāi)發(fā)期間,我們應當通過(guò)為特定的安全角色分配安全資源和方法來(lái)確定應用程序的安全策略。在應用程序裝配期間,安全角色被影射為真實(shí)的用戶(hù)和組。這種兩段式安全管理方法給予應用程序很大的靈活性和可移植性,在運行時(shí),J2EE容器負責強迫執行訪(fǎng)問(wèn)控制安全的資源和方法。J2EE容器支持兩類(lèi)安全:
·說(shuō)明性的安全性:
·可編程的安全性:
說(shuō)明性的安全性,根據名稱(chēng)可以看出說(shuō)明性安全主要是將安全策略在部署的描述文件中定義,可編程的安全性要求程序員通過(guò)編碼來(lái)保證J2EE的安全性。而不需編碼實(shí)現,它主要借助J2EE的容器根據定義對安全策略??删幊痰陌踩?,我們在本系統中采用說(shuō)明性的安全性。兩者之間都有各自的優(yōu)缺點(diǎn):
名稱(chēng) | 優(yōu)點(diǎn) | 缺點(diǎn) |
說(shuō)明性的安全性 | 不需要編碼,減輕了程序員的編碼工作量;更改角色方便。 | 靈活性差;部署的時(shí)候比較麻煩 |
可編程的安全性 | 靈活性好,能夠根據業(yè)務(wù)的需要定制安全;部署方便 | 需要編碼實(shí)現,增加了程序員的工作量;更改角色不方便,需要修改代碼 |
在電子平臺項目中我們是盡量采用說(shuō)明性的安全性,若在說(shuō)明性的安全性無(wú)法滿(mǎn)足業(yè)務(wù) 需求的情況下采用可編程的安全性。下面我們分為Web模塊和EJB模塊來(lái)討論:
2.21:Web模塊:
在Web模塊里面用的角色現擬如下:
大眾用戶(hù) everyone
企業(yè)用戶(hù) enterprise
質(zhì)檢用戶(hù) organ
市監督局 city_ surveillance
省監督局 province_ surveillance
國家監督局 country_ surveillance
平臺管理員 plat _manager
具體到開(kāi)發(fā)部署的時(shí)候可以根據需要變通的進(jìn)行更改和增刪。
(A)定義驗證方法:
驗證機制定義客戶(hù)如何被Web應用程序驗證。在應用任何驗證約束之前,用戶(hù)需要使用一個(gè)已經(jīng)設置的機制來(lái)通過(guò)驗證過(guò)程。Servlet規范定義了4種驗證用戶(hù)的機制?;A驗證、摘要驗證、客戶(hù)證書(shū)驗證、基于表單的驗證。電子平臺系統主要采用了客戶(hù)端證書(shū)驗證和基于表單的驗證。其中關(guān)于證書(shū)的驗證采用的集中認證的模式。
(B)定義安全角色:
在Web部署描述文件web.xml中,所用在Web模塊中使用的安全角色和一個(gè)可選的描述文字都必須被命名。一個(gè)角色時(shí)一個(gè)占位符,在應用程序的部署期間占位符最后被映射為真實(shí)的用戶(hù)和用戶(hù)組。
(C)定義安全約束:
在Web模塊中可以定義多個(gè)安全約束。安全約束聲明了應用程序的內容是如何被保護的。對于一個(gè)給定的安全約束,我們定義2個(gè)特征:
·Web資源集合:一個(gè)Web資源集合是一組URL模式和該模式代表的資源中的HTTP方法。一個(gè)安全約束可以有多個(gè)Web資源集合。
·授權約束:一個(gè)授權約束定義了在安全約束下授權哪些角色存取Web資源集合。
(D)為單個(gè)的servlet/jsp定義安全角色引用(可選):
這部分內容可以根據需要,將一些比較特殊而且安全級別比較高的頁(yè)面定義安全角色引用。
(E)口令加密:
口令加密采用最為常用的MD5, MD5的全稱(chēng)是Message-Digest Algorithm 5,在90年代初由MIT的計算機科學(xué)實(shí)驗室和RSA Data Security Inc發(fā)明,經(jīng)MD2、MD3和MD4發(fā)展而來(lái)。
Message-Digest泛指字節串(Message)的Hash變換,就是把一個(gè)任意長(cháng)度的字節串變換成一定長(cháng)的大整數。請注意我使用了“字節串”而不是“字符串”這個(gè)詞,是因為這種變換只與字節的值有關(guān),與字符集或編碼方式無(wú)關(guān)。
MD5將任意長(cháng)度的“字節串”變換成一個(gè)128bit的大整數,并且它是一個(gè)不可逆的字符串變換算法,換句話(huà)說(shuō)就是,即使你看到源程序和算法描述,也無(wú)法將一個(gè)MD5的值變換回原始的字符串,從數學(xué)原理上說(shuō),是因為原始的字符串有無(wú)窮多個(gè),這有點(diǎn)象不存在反函數的數學(xué)函數。
MD5的典型應用是對一段Message(字節串)產(chǎn)生fingerprint(指紋),以防止被“篡改”。舉個(gè)例子,你將一段話(huà)寫(xiě)在一個(gè)叫readme.txt文件中,并對這個(gè)readme.txt產(chǎn)生一個(gè)MD5的值并記錄在案,然后你可以傳播這個(gè)文件給別人,別人如果修改了文件中的任何內容,你對這個(gè)文件重新計算MD5時(shí)就會(huì )發(fā)現。如果再有一個(gè)第三方的認證機構,用MD5還可以防止文件作者的“抵賴(lài)”,這就是所謂的數字簽名應用。
2.22:Web Service模塊
這部分內容還有待完善。
2.23:EJB模塊:
EJB是執行應用程序的業(yè)務(wù)邏輯的J2EE組件。它是一般用于訪(fǎng)問(wèn)敏感的數據。這樣,為EJB指派恰當的策略是非常重要的。
訪(fǎng)問(wèn)控制應用于單獨的會(huì )話(huà)和實(shí)體bean方法,所以只有屬于特定安全角色的調用這些方法。會(huì )話(huà)、實(shí)體和消息驅動(dòng)bean方法在調用者(EJB服務(wù)器)的身份下或者一個(gè)特定的安全角色下被委托執行。這稱(chēng)為委托策略(Delegation Policy)或者成為以他人身份運行模式映射(Run-As Mode Mapping)。下面主要就我們電子平臺的Ejb模塊在WSAD上設置安全性的過(guò)程。
(1)說(shuō)明性的安全性:J2EE 部署描述文件ejb-jar.xml 包含了EJB 的安全視圖,也包含了Bean 類(lèi)的結構化和參考的信息。一個(gè)安全視圖包含一個(gè)邏輯安全角色的集合。執行聲明方式的授權一般分兩步,首先聲明Bean 的安全策略,即聲明受保護的Bean 方法的許可,然后為部署員聲明安全角色。
(2)可編程的安全性:因為并非所有的安全策略都可以用聲明的方式表達,EJB體系結構允許通過(guò)使用javax.ejb.EntityContext接口的isCallerInRole (String roleName) 和getCaller-Principal()方法提供了一種對一個(gè)調用者安全上下文的可編程訪(fǎng)問(wèn)的方式。安全上下文的作用使得所有的安全檢查成為可能,安全上下文環(huán)境將當前調用者的安全狀態(tài)封裝起來(lái),在應用程序代碼中看不到安全上下文環(huán)境,由EJB容器在后臺直接使用它們,通過(guò)隱含的方式在Stub 和Skeleton 程序中傳遞安全上下文環(huán)境,將安全信息傳播出去。
(A)定義安全角色
所用在EJB中使用的安全角色都必須在EJB模塊的部署描述文件ejb-jar.xml 中命名。每個(gè)名字可以有可選的描述文字。一個(gè)角色就是一個(gè)占位符,在部署應用 程序時(shí),角色映射為真正的用戶(hù)和用戶(hù)組。
(B)指派方法許可
會(huì )話(huà)和實(shí)體bean的方法可以通過(guò)給特定角色指派適當的許可來(lái)保證安全。方 法許可在EJB部署描述文件ejb-jar.xml中定義
(C)為未保護的方法指派角色
在應用程序安裝期間,對于那些沒(méi)有在部署描述文件中顯式保護的會(huì )話(huà)和實(shí)體EJB 方法可以使用IBM Websphere 應用服務(wù)器管理控制太指定其方法許可。這些未保護的 方法能用下列許可中的一種:
·不選(Uncheck):本許可是默認選項。這表明任何人都可以調用這些方法。
·排斥(Exclude):沒(méi)有人可以調用這些未保護的方法。
·角色(Role):只有指定的安全角色的成員才可以調用這些未保護的方法。
(D)管理委托策略
當一個(gè)EJB調用另一個(gè)EJB的方法時(shí),默認情況下,第一個(gè)EJB調用者的身份傳 播到第二個(gè)EJB。在這個(gè)方式下,在調用鏈上的所有EJB方法都可以看到同樣的基本信 息。然而,在一些情況下,一個(gè)EJB需要用到一個(gè)預先定義好的身份,例如一個(gè)給定角 色成員,來(lái)調用另一個(gè)EJB方法。一個(gè)例子就是一個(gè)消息驅動(dòng)bean的onMessage() 方法,該方法調用會(huì )話(huà)bean的protected方法。消息驅動(dòng)bean的onMessage()方 法被沒(méi)有調用者角色的容器調用,這樣,該方法就不能調用會(huì )話(huà)bean的protected方 法。通過(guò)委托onMessage()方法作為一個(gè)特定角色來(lái)運行,然后把該角色加入到受保 護的會(huì )話(huà)bean方法的訪(fǎng)問(wèn)許可中,這樣onMessage()方法將能訪(fǎng)問(wèn)到被保護的方法。
(E)bean級委托
EJB2.0規范中定義了使用<run-as>元素可以在EJB bean級委托,這將允許應 用程序裝配者委托一個(gè)給定bean的所有方法作為一個(gè)指定安全角色的成員運行。在部 署時(shí),作為指定安全角色的一個(gè)真實(shí)用戶(hù)必須通過(guò)一個(gè)稱(chēng)為run-as的角色映射進(jìn)程映 射到這個(gè)角色。被委托的bean將使用被映射的用戶(hù)身份調用其它EJB。
(F)方法級委托
除了EJB2.0規范中定義的bean級的委托策略之外,IBM Websphere應用服務(wù) 器還提供了執行方法級的EJB委托能力。這與bean級委托是一樣的,不過(guò)他可以應用 于指定的EJB方法,而不是作為一個(gè)整體的bean。這個(gè)委托的粒度更細,它允許應用 程序裝配者(集成者)為同一個(gè)EJB的不同方法委托不同的安全角色。
另外,方法級的委托提供一個(gè)額外的委托選項:作為服務(wù)器運行。這個(gè)選項表明該 方法使用應用服務(wù)器的身份來(lái)調用其它的EJB。
(G)定義安全角色引用(可選)
安全角色引用提供在EJB的Java代碼中命名的安全角色和在應用程序裝配期間定 義的安全角色之間的間接層。該間接層允許更改安全角色名稱(chēng),而無(wú)須改變任何應用程 序的代碼。
3. 系統開(kāi)發(fā)過(guò)程中注意的事項
3.1 如何調用信誠通提供的驗證接口
由于在配置認證服務(wù)器的時(shí)候,還有些問(wèn)題沒(méi)有解決,于是我們采用了一種變通的方式,還是應用信誠通提供的Web應用程序,但是在此基礎上修改了一下,由原來(lái)的要通過(guò)認證服務(wù)器來(lái)驗證證書(shū)的合法性,改為利用代碼來(lái)驗證。利用編碼來(lái)驗證證書(shū)是否由信誠通簽署,有效期是否失效等,這個(gè)方法僅僅在我們測試階段應用,具體到交付項目并進(jìn)行正式發(fā)布的時(shí)候在采用信誠通的集中認證,利用他們的認證服務(wù)器來(lái)對證書(shū)驗證。在電子平臺系統應用到信誠通提供的接口的地方主要有2個(gè)地方:
3.11登錄的Action中
具體實(shí)現代碼參考QiYeLoginAction和JiGouLoginAction。
3.12注冊的Action中
具體實(shí)現代碼參考QiYeRegAction。
3.2 如何開(kāi)發(fā)Web模塊說(shuō)明性的安全
安全角色映射圖
3.21 基于表單驗證的開(kāi)發(fā)方法
這部分在用struts的前臺validator驗證和后臺action對用戶(hù)的合法性進(jìn)行驗證。Validator對用戶(hù)名和密碼是否完整輸入,長(cháng)度是否合法等等進(jìn)行簡(jiǎn)單的判定,在通過(guò)validator的驗證后才將數據提交給action做后臺的處理。不但防止了客戶(hù)端惡意的提交,且保證了數據的合法性,有利于提高服務(wù)器的性能。這部分開(kāi)發(fā)方式同我們經(jīng)常做的客戶(hù)登錄驗證方法一樣,但是要注意的是,在action里面對用戶(hù)名和密碼驗證的同時(shí)要對客戶(hù)端的tokenID進(jìn)行驗證,也就是要調用CA機構為我們提供的集中認證的接口。我們在開(kāi)發(fā)的時(shí)候采用如下驗證邏輯:首先從request中得到cookie數組對象,通過(guò)循環(huán)得到tokenID的值,然后調用authzPrn.authzPrnPrivilege(tokenid, "", request.getRemoteAddr())得到PrnProperty對象。其中要對cookie、tokenID、PrnProperty是否為null,做判斷只有在PrnProperty不為null的時(shí)候,也就是認證通過(guò)的時(shí)候再對用戶(hù)名和密碼進(jìn)行驗證。這部分代碼可以參考標簽二的QiYeLoginAction()和JiGouLoginAction()。在具體開(kāi)發(fā)的時(shí)候我可以負責登錄和注冊部分。其它地方均不要調用這個(gè)接口。
3.32 為Web組件定義安全角色的開(kāi)發(fā)
在2.21部分我們已經(jīng)初步為Web組件定義了幾個(gè)角色,這就要求我們要將對應的web組件放到對應的文件夾里面。用戶(hù)在訪(fǎng)問(wèn)的時(shí)候會(huì )根據角色的不同來(lái)確定是否具有訪(fǎng)問(wèn)某個(gè)文件夾里面的頁(yè)面的權限。所以這就要求我們在做前臺開(kāi)發(fā)的時(shí)候要根據頁(yè)面服務(wù)的對象放到各自的文件內,而不能夠隨意放置。同時(shí)最好將web組件模塊化,沒(méi)有特別的需要不要跨模塊訪(fǎng)問(wèn)頁(yè)面。下面主要介紹如何在wasd和was中設置web的安全角色:
(A) 安全角色的定義
打開(kāi)web的部署描述符:如圖
點(diǎn)擊“安全性”單擊“添加”新增一個(gè)安全角色。命名這個(gè)角色的名稱(chēng),不妨我們命名為“manager”,在描述的筐內增加一些說(shuō)明性的文字。同樣方法可以按照業(yè)務(wù)的需要新增其他的角色。
(B) 設置安全約束
在“安全角色”定義好以后,保存。進(jìn)入“安全約束”的設定,點(diǎn)擊“安全約束”選項,進(jìn)入“安全約束”界面,如圖:
點(diǎn)擊“添加”輸入現實(shí)名稱(chēng),在“web資源集合”部分,單擊新增
出現如上一個(gè)窗口,輸入相應的文字,選擇http方法,可以選擇get和post
點(diǎn)擊添加,URL模式可以有如下通配符“/*”、“/*.jsp”、“/”等等。確定。一個(gè)安全約束可以有多個(gè)web資源集合。點(diǎn)擊“授權角色”的編輯,
選中要授權的用戶(hù)的角色,出現的角色就是我們剛才定義的角色。確定。同樣的方法可以新增其他的約束。
完成后,保存!
Web的安全角色的定義和配置已經(jīng)完成,下面的工作是我們在部署的時(shí)候,將這些角色映射到系統的實(shí)際用戶(hù)。
倒入項目為XX.ear形式,下面就討論如何在was上部署項目,并經(jīng)web的安全角色映射到實(shí)際的用戶(hù):
1、 啟動(dòng)was服務(wù)器
2、 登陸管理控制臺
3、 安裝企業(yè)應用程序
上面上個(gè)步驟不再一一贅述,按照相關(guān)的提示進(jìn)行即可。需要注意的幾個(gè)地方,要將web表述文件中定義的安全角色映射為實(shí)際的用戶(hù),如圖:
可以通過(guò)查找用戶(hù)或者用戶(hù)組進(jìn)行添加和修改。如下圖:
下面我們主要討論設置web的安全性
4、 啟動(dòng)全局安性
在進(jìn)行全局安全性設置之前,我們先認識幾個(gè)術(shù)語(yǔ)以及他們的意義:
(1)用戶(hù)注冊表
·LocalOS: Websphere 認證機制可以使用本地操作系統的用戶(hù)帳戶(hù)數據庫。WebSphere Application Server 提供 Windows NT 和 Windows 2000 的本地帳戶(hù)注冊表和域注冊表的實(shí)現,以及 Linux、Solaris 和 AIX 用戶(hù)帳戶(hù)注冊表的實(shí)現。要求:
· 對于單機機器,用戶(hù)應該:
o 是管理組的成員。
o 應該擁有作為操作系統的部件操作特權。
o 應該擁有登錄為服務(wù)特權(如果服務(wù)器作為服務(wù)運行的話(huà))。
· 對于是域成員的機器,僅域用戶(hù)可以啟動(dòng)服務(wù)器進(jìn)程且必須是:
o 域控制器中域管理組的成員。
o 應該在域控制器上的域安全策略中擁有作為操作系統的部件操作特權。
o 應該在本地機器上的本地安全策略中擁有作為操作系統的部件操作特權。
o 應該在本地機器上擁有登錄為服務(wù)特權(如果服務(wù)器作為服務(wù)運行的話(huà))。
注: 用戶(hù)是域用戶(hù)而不是本地用戶(hù),這暗示著(zhù)當機器是域的一部分時(shí),僅域用戶(hù)可以啟動(dòng)該服務(wù)器。
· 對于域控制器機器,用戶(hù)應該是:
o 域控制器中域管理組的成員。
o 應該在域控制器上的域安全策略中擁有作為操作系統的部件操作特權。
o 應該在域控制器上擁有登錄為服務(wù)特權(如果服務(wù)器作為服務(wù)運行的話(huà))。
由于我們做開(kāi)發(fā)的機器均不是域用戶(hù),故做開(kāi)發(fā)的時(shí)候我們采用單機的本地OS
·LDAP:
輕量級目錄訪(fǎng)問(wèn)協(xié)議(LDAP)是一個(gè)用戶(hù)注冊表,它使用 LDAP 綁定執行認證。
WebSphere Application Server 安全性提供和支持多數主 LDAP 目錄服務(wù)器的實(shí)現,其可以用作用戶(hù)和組信息的庫。產(chǎn)品進(jìn)程(服務(wù)器)調用的這些 LDAP 服務(wù)器是用于認證用戶(hù)和其它相關(guān)任務(wù)(例如,獲取用戶(hù)或組信息)的安全性。此支持通過(guò)使用不同的用戶(hù)和組過(guò)濾器提供以獲取用戶(hù)和組信息。這些過(guò)濾器具有一些缺省值,您可以修改這些缺省值來(lái)適應您的需要。另外,定制 LDAP 功能部件允許您通過(guò)使用適當的過(guò)濾器為他們的用戶(hù)注冊表使用任何其它的 LDAP 服務(wù)器(它不在 LDAP 服務(wù)器的產(chǎn)品支持列表中)。
要將 LDAP 用作用戶(hù)注冊表,您需要知道有效的用戶(hù)名(標識)、用戶(hù)密碼、服務(wù)器主機和端口、基本專(zhuān)有名稱(chēng)(DN)并且若有必要綁定 DN 和綁定密碼。您可以選擇可搜索注冊表中任何有效用戶(hù)。在某些 LDAP 服務(wù)器中,管理用戶(hù)是不可搜索并無(wú)法被使用的(例如,SecureWay 中的cn=root)。此用戶(hù)指的是文檔中的 WebSphere Application Server 安全性服務(wù)器標識、服務(wù)器標識或服務(wù)器用戶(hù)標識。作為服務(wù)器標識意味著(zhù)用戶(hù)在調用某些受保護的內部方法時(shí)具有特殊特權。通常,一旦打開(kāi)安全性后,此標識和密碼用于登錄管理控制臺。如果那些用戶(hù)是管理角色的一部分,則您可使用其它用戶(hù)。
當在產(chǎn)品中啟用安全性時(shí),產(chǎn)品啟動(dòng)期間此服務(wù)器標識和密碼由注冊表認證。如果認證失敗,服務(wù)器無(wú)法啟動(dòng)。重要的是選擇未到期或者經(jīng)常更改的標識和密碼。如果需要在注冊表中更改產(chǎn)品服務(wù)器用戶(hù)標識或密碼,確保在所有產(chǎn)品服務(wù)器啟動(dòng)并正在運行時(shí)執行更改。一旦在注冊表中完成更改后,使用配置 LDAP 用戶(hù)注冊表中描述的步驟。更改標識、密碼和其它配置信息,保存、停止并重新啟動(dòng)所有服務(wù)器,這樣供產(chǎn)品使用新的標識或密碼。如果在啟用了安全性的情況下啟動(dòng)產(chǎn)品時(shí)遇到任何問(wèn)題,在服務(wù)器可以啟動(dòng)之前禁用安全性(要避免這種情況的發(fā)生,確保此面板中的任何更改在“全局安全性”面板中得到確認)。一旦服務(wù)器啟動(dòng),您就可以更改標識、密碼和其它配置信息然后啟用安全性。
·定制:本系統不采用這種方案
(2)認證機制
·SWAM:
簡(jiǎn)單 WebSphere 認證機制(SWAM)用于簡(jiǎn)單的、非分布式、單應用程序服務(wù)器運行時(shí)環(huán)境。單應用程序服務(wù)器限制是由于 SWAM 不支持 forwardable 憑證所致。如果應用程序服務(wù)器進(jìn)程 1 中的 servlet 或企業(yè) bean 調用另一個(gè)應用程序服務(wù)器進(jìn)程 2 中的企業(yè) bean 上的遠程方法,則進(jìn)程 1 中的調用者身份不發(fā)送到服務(wù)器進(jìn)程 2。發(fā)送的是未認證的憑證,根據 EJB 方法上配置的安全性許可權,可能會(huì )導致授權失敗。
由于 SWAM 用于單應用程序服務(wù)器進(jìn)程,因此不支持單次注冊(SSO)。
SWAM 認證機制適合于簡(jiǎn)單環(huán)境、軟件開(kāi)發(fā)環(huán)境或其它不需要分布式安全性解決方案的環(huán)境。我們在做開(kāi)發(fā)的時(shí)候采用這種方案。
·LTPA:
輕量級第三方認證(LTPA)用于分布式、多應用程序服務(wù)器和機器環(huán)境。它支持可轉發(fā)的憑證和單次注冊(SSO)。LTPA 通過(guò)密碼術(shù)可支持分布式環(huán)境中的安全性。此支持允許 LTPA 進(jìn)行加密、數字簽署和安全地發(fā)送認證相關(guān)的數據,并在以后解密和驗證該簽名。
輕量級第三方認證(LTPA)協(xié)議允許 WebSphere Application Server 提供使用密碼術(shù)的分布式環(huán)境中的安全性。多個(gè)節點(diǎn)和單元中分布的應用程序服務(wù)器可以使用此協(xié)議安全地通信。它也提供單次注冊(SSO)功能部件,在那里僅需要在域名系統(DNS)域中認證用戶(hù)一次,并且用戶(hù)可以訪(fǎng)問(wèn)其它 WebSphere 單元中的資源而不必獲取提示。此協(xié)議使用加密密鑰(LTPA 密鑰)加密和解密在服務(wù)器間傳遞的用戶(hù)數據。這些密鑰需要在不同的單元間共享,這是為了一個(gè)單元中的資源能夠訪(fǎng)問(wèn)其它單元中的資源(這假設涉及的所有單元都使用相同的 LDAP 或定制注冊表)。
當使用 LTPA 時(shí),用用戶(hù)信息和它到達的到期時(shí)間創(chuàng )建令牌,并由密鑰簽署。LTPA 令牌是對時(shí)間敏感的。所有參與保護域的產(chǎn)品服務(wù)器都必須有它們的時(shí)間、日期和同步的時(shí)區。如果沒(méi)有,那么 LTPA 令牌過(guò)早出現到期并導致認證或確認失敗。然后此令牌傳遞給其它服務(wù)器(在同一個(gè)單元或不同的單元中),通過(guò) cookie(對于啟用 SSO 時(shí)的 Web 資源)或通過(guò)認證層(企業(yè) bean 的安全性認證服務(wù)(SAS)或公共安全互操作性 V2(CSIv2))。如果單個(gè)或多個(gè)接收服務(wù)器正在與源始服務(wù)器共享相同的密鑰,那么可以解密令牌以獲取用戶(hù)信息,然后驗證這些用戶(hù)信息以確保它沒(méi)有到期并且令牌中的用戶(hù)信息在它的注冊表中是有效的。成功驗證后,在授權檢查后可訪(fǎng)問(wèn)接收服務(wù)器中的資源。
所有單元(單元、節點(diǎn)、應用程序服務(wù)器)中的 WebSphere Application Server 進(jìn)程共享相同的密鑰集。如果不同的單元間需要密鑰共享,則從一個(gè)單元導出它們并將其導入另一個(gè)單元。出于安全性考慮,導出的密鑰使用用戶(hù)定義的密碼加密。在將密鑰導入另一個(gè)單元時(shí),需要這個(gè)相同的密碼。
LTPA 是在 WebSphere Application Server 的 Network Deployment 版本中唯一受支持的機制。在 WebSphere Application Server 的 Base 版本中,LTPA 和簡(jiǎn)單 WebSphere 認證機制(SWAM)都受支持。當在帶有 LTPA 的 WebSphere Application Server Network Deployment 或 Base 產(chǎn)品中首次啟用安全性時(shí),配置 LTPA 通常是執行的初始化步驟。
LTPA 要求配置的用戶(hù)注冊表是中央共享的庫,如同 LDAP 或 Windows 域類(lèi)型注冊表,以致于用戶(hù)和組是相同的而不考慮機制問(wèn)題。
下表概述認證機制能力和 LTPA 可以使用的用戶(hù)注冊表。
| 可轉發(fā)的憑證 | SSO | LocalOS 用戶(hù)注冊表 | LDAP 用戶(hù)注冊表 | 定制用戶(hù)注冊表 |
SWAM | No | No | Yes | Yes | Yes |
LTPA | Yes | Yes | Yes | Yes | Yes |
以后實(shí)際部署的時(shí)候采用LTPA。
下面是就上面談?wù)摰降挠脩?hù)注冊表和認證的機制如何在websphere中如何設置進(jìn)行討論:
(1) 用戶(hù)注冊表
·LocalOS:
此任務(wù)的步驟
1. 在管理控制臺左側導航面板中單擊安全性 > 用戶(hù)注冊表 > 本地OS。
2. 在服務(wù)器用戶(hù)標識字段中輸入有效用戶(hù)名。
3. 在服務(wù)器用戶(hù)密碼字段中輸入用戶(hù)密碼。
4. 單擊確定。重新啟動(dòng)服務(wù)器。
用戶(hù)和密碼的驗證在此面板中未發(fā)生。僅當您在“全局安全性”面板中單擊確定或應用時(shí)才進(jìn)行驗證。如果您處于第一次啟用安全性的進(jìn)程中,完成其它步驟,并轉至“全局安全性”面板,以確保本地 OS 是“活動(dòng)用戶(hù)注冊表”。如果安全性已啟用,而您已在此面板中更改用戶(hù)或密碼信息,則確保轉至“全局安全性”面板,并單擊確定或應用以驗證更改。如果您的更改未驗證,則服務(wù)器可能無(wú)法啟動(dòng)。
·LDAP:
此任務(wù)的步驟
1. 在管理控制臺中,在左側導航面板單擊安全性 > 用戶(hù)注冊表 > LDAP。
2. 在服務(wù)器用戶(hù)標識字段中輸入有效用戶(hù)名。根據高級 LDAP 設置面板中的用戶(hù)過(guò)濾器定義,您可以輸入用戶(hù)的完整專(zhuān)有名稱(chēng)(DN)或用戶(hù)的縮寫(xiě)名。例如,對于 Netscape 輸入用戶(hù)標識。
3. 在服務(wù)器用戶(hù)密碼字段中輸入用戶(hù)的密碼。
4. 從類(lèi)型列表中選擇使用的 LDAP 服務(wù)器類(lèi)型。LDAP 服務(wù)器的類(lèi)型確定 WebSphere Application Server 所使用的缺省過(guò)濾器。當這些缺省過(guò)濾器更改時(shí),類(lèi)型字段更改為定制,其表明使用定制過(guò)濾器。一旦您單擊高級 LDAP 設置面板中的確定或應用后,此操作發(fā)生。從列表選擇定制,如果需要,修改用戶(hù)和組過(guò)濾器,以使用其它 LDAP 服務(wù)器。如果選擇 IBM Directory Server 或 iPlanet Directory Server,則還選擇忽略大小寫(xiě)字段。
5. 在主機字段中輸入 LDAP 服務(wù)器的全限定主機名。
6. 在端口字段中輸入 LDAP 服務(wù)器端口號。主機名以及端口號表示 WebSphere Application Server 單元中此 LDAP 服務(wù)器的域。因此,如果不同單元中的服務(wù)器使用輕量級第三方認證(LTPA)令牌互相通信,則這些域必須在所有單元中完全匹配。
7. 在基本專(zhuān)有名稱(chēng)字段中輸入基本專(zhuān)有名稱(chēng)(DN)?;?/span> DN 表明在此 LDAP 目錄服務(wù)器中用于搜索的開(kāi)始點(diǎn)。例如,對于 DN 為 cn=John Doe, ou=Rochester, o=IBM, c=US 的用戶(hù),指定基本 DN 為下列任何一種(假設后綴為 c=us):ou=Rochester, o=IBM, c=us 或 o=IBM c=us 或 c=us。此字段可區分大小寫(xiě),而且建議它們在目錄服務(wù)器中匹配大小寫(xiě)。此字段是除 Domino Directory 外所有 LDAP 目錄所必需的。“基本 DN”字段對于 Domino 服務(wù)器來(lái)說(shuō)是可選的。 8. 如果需要,在綁定專(zhuān)有名稱(chēng)字段中輸入綁定 DN 名。如果在 LDAP服務(wù)器上不可能執行匿名綁定,則需要綁定 DN 來(lái)獲取用戶(hù)和組信息。如果 LDAP 服務(wù)器設置為使用匿名綁定,則保留此字段為空白。 9. 如果需要,在綁定密碼字段中輸入相應于綁定 DN 的密碼。 10. 如果需要,修改搜索超時(shí)值。此超時(shí)值是 LDAP 服務(wù)器在放棄請求前等待發(fā)送響應到產(chǎn)品客戶(hù)機的最大時(shí)間數。缺省值是 120 秒。 11. 僅當您使用路由器將請求散布到多臺 LDAP 服務(wù)器,并且路由器不支持親緣關(guān)系時(shí),才禁用重用連接字段。為所有其它請求,保留此字段為啟用。 12. 如果需要,啟用忽略大小寫(xiě)標志。當啟用時(shí),授權檢查不區分大小寫(xiě)。通常,授權檢測涉及檢查用戶(hù)的完整 DN(其在 LDAP 服務(wù)器中是唯一的),并區分大小寫(xiě)。然而,當使用 IBM Directory Server 或 iPlanet Directory Server LDAP 服務(wù)器時(shí),此標志需要啟用,這是因為從 LDAP 服務(wù)器獲取的組信息在大小寫(xiě)方面不一致。此不一致僅影響授權檢查。 13. 如果與 LDAP 服務(wù)器的通信是通過(guò) SSL 的,則啟用單個(gè)套接字層(SSL)。要獲得有關(guān)為 SSL 設置 LDAP 的更多信息,請參閱為 LDAP 客戶(hù)機配置 SSL。 14. 如果啟用 SSL,從 SSL 配置字段中的列表選擇適當的 SSL 別名配置。 15. 單擊確定。 此面板中不發(fā)生用戶(hù)、密碼和設置的驗證。僅當您在全局安全性面板中單擊確定或應用時(shí)才進(jìn)行驗證。如果您是第一次啟用安全性,完成剩余的步驟,并轉至全局安全性面板。選擇 LDAP 作為活動(dòng)用戶(hù)注冊表。如果安全性已啟用,但是此面板上的信息已更改,則轉至全局安全性面板,并單擊確定或應用驗證您的更改。如果您的更改未驗證,服務(wù)器可能無(wú)法啟動(dòng)。 (2) 認證機制 ·SWAM: 正如前面所講的,SWAM是針對簡(jiǎn)單的非分布式的單個(gè)應用服務(wù)器運行時(shí)環(huán)境設計的。之所以只能是單個(gè)應用服務(wù)器,主要是因為SWAM不能傳遞憑證。 在IBM Websphere應用服務(wù)器上使用SWAM不需要特別的配置。只需要在全局安全性頁(yè)面上選擇SWAM作為驗證機制即可。 ·LTPA: 在第一次設置安全性時(shí),初始執行此任務(wù)需要下列步驟。 此任務(wù)的步驟 1. 在左側的導航面板中單擊安全性 > 認證機制 > LTPA。 2. 在密碼字段中輸入密碼,并確認它。此密碼用于在導出和導入密鑰期間,加密 和解密 LTPA 密鑰。記住此密碼,因為將密鑰從此單元導出到另一個(gè)單元時(shí),您需要再次輸入它。 3. 在超時(shí)字段中輸入正整數值。此超時(shí)值是指 LTPA 令牌有效的時(shí)間(以分鐘計)。令牌包含此到期時(shí)間,以便接收此令牌的任何服務(wù)器可在進(jìn)一步處理前,確保此令牌有效。當令牌到期時(shí),提示用戶(hù)登錄。此字段的理想值取決于您的配置。缺省值為 30 分鐘。 4. 單擊應用或確定?,F在,已設置 LTPA 配置。此步驟中您不應該生成 LTPA 密鑰,因為它們會(huì )在以后自動(dòng)生成。剩余步驟的處理需要啟用安全性,從 SSO 開(kāi)始(如果需要 SSO)。 本系統不需要! 5. 完成“全局安全性”面板中的信息,并按“確定”。當在“全局安全性”面板中單擊確定或應用時(shí),LTPA 密鑰第一次自動(dòng)生成,因此,您不應該手工生成密鑰。 3.3 如何開(kāi)發(fā)Web模塊編程性的安全 這部分實(shí)在說(shuō)明性的安全模式無(wú)法滿(mǎn)足需求的情況下采用,先暫時(shí)不管! 3.4 如何開(kāi)發(fā)EJB模塊說(shuō)明性的安全 這部分內容有待增加! 3.5 如何開(kāi)發(fā)EJB模塊編程性的安全 這部分實(shí)在說(shuō)明性的安全模式無(wú)法滿(mǎn)足需求的情況下采用,先暫時(shí)不管! 4. 總結 以上是我的初步設計方案,還有部分內容有待補充完善。由于以前沒(méi)有參與過(guò)J2EE安全體系的設計工作,且電子平臺對安全系統這塊的要求比較高等原因,在本設計方案中肯定有很多不足和錯誤之處,敬請同仁們批評指正,以更加完善整個(gè)系統的安全體系,為我們的后期開(kāi)發(fā)工作打下良好的鋪墊。 5. 參考文獻 主要參考文獻如下: 《IBM WebSphere Studio J2EE 應用開(kāi)發(fā)》 Howard Kushner 主編 《WebSphere V5.0 安全手冊》(IBM 紅皮書(shū)) 《WebSphere Application Server V5.0 系統管理和配置》 (IBM 紅皮書(shū)) 《WebSphere V6.0 安全手冊》(IBM 紅皮書(shū)) IBM Websphere 信息中心 IBM 中國技術(shù)論壇
聯(lián)系客服