摘要:本文通過對Web Service安全機制的分析,提出了Web Service安全模型,在模型中將Web訪問控制和XML加密、XML簽名三者結(jié)合起來,而從而能夠在更大范圍內(nèi)加強Web Service的安全。然后對Web Service安全模型進行了功能設(shè)計,并結(jié)合EJB技術(shù)介紹了其實現(xiàn)方法。
關(guān)鍵詞:Web Service;安全模型;設(shè)計
1 引言
如今Web Service技術(shù)在許多領(lǐng)域獲得了飛速的發(fā)展,并展示了巨大的應(yīng)用前景。本文通過對Web Service安全機制的分析,提出了Web Service安全模型,在模型中將訪問控制和XML加密、XML簽名放在同等重要的地位,使這三者相互配合及相互支撐,并對Web Service安全模型進行了功能設(shè)計,最后結(jié)合EJB技術(shù)介紹了其實現(xiàn)方法。
2 Web Service安全模型的基本理論
要使Web Service達到機密性、完整性、不可否認性、身份驗證和授權(quán)這五項安全性要求,除了通信鏈路的安全性外,最重要的是要保證SOAP消息和服務(wù)本身的安全。對于SOAP消息的安全,主要有XML加密、XML簽名等。但XML數(shù)字簽名和XML加密技術(shù),只能較好地解決SOAP消息的表示和傳輸?shù)陌踩珕栴},卻無法保證服務(wù)本身的安全。因此本文不但考慮了消息級別的安全需要,而且還考慮了服務(wù)本身的安全。對于服務(wù)本身的安全,本文采用了Web Service訪問控制技術(shù)。即對用戶訪問施加限制,使其滿足特定要求后才允許訪問服務(wù)。因此本文將XML加密、XML簽名以及Web Service訪問控制三者結(jié)合在一起,使它們在保護Web Service時相互支撐、相互配合,達到在更大程度上保護Web Service的安全。
在實際應(yīng)用時,XML加密實現(xiàn)交換信息的機密性,防止未經(jīng)授權(quán)的用戶、實體或進程竊取信息;XML簽名保證信息的完整性和統(tǒng)一性,使得未經(jīng)授權(quán)的用戶不能改變或者刪除信息,實現(xiàn)信息在傳送的過程中不會被偶然或故意破壞,并且可以提供信息的原始性證明;Web Service訪問控制通過給不同的用戶分配不同的權(quán)限,限定用戶可見范圍,從而保證服務(wù)不被非法訪問。Web Service訪問控制為XML加密提供了密鑰分發(fā)和有效期控制機制,解決了密鑰交換問題。XML簽名使經(jīng)過加密處理后的消息在傳輸過程不被非法的惡意篡改,保證消息可以被接收方成功的解密。XML加密為訪問控制提供了進一步驗證用戶身份的機會,而訪問控制通過將用戶標識及公鑰的綁定,使得XML簽名的驗證更加方便。

根據(jù)Web Service安全狀況以及XML加密、XML簽名和Web Service訪問控制之間的關(guān)聯(lián)關(guān)系,本文構(gòu)建了Web Service安全模型,如圖1所示。圖中實線部分為安全模型,整個安全模型由XML加密、XML簽名及Web Service訪問控制三部分組成。
3 Web service安全模型的功能設(shè)計
本文構(gòu)建的Web Service安全模型由XML加密、XML簽名及Web Service訪問控制等三部分組成,這三部分在實現(xiàn)Web Service安全方面是相互關(guān)聯(lián)、相互支撐的。在實際應(yīng)用中,如果用戶需要請求某一項服務(wù),首先需要登錄到服務(wù)提供商的系統(tǒng)中以獲取交換密鑰。服務(wù)提供商在收到登錄消息后,調(diào)用XML加密處理過程進行信息解密,調(diào)用XML簽名處理過程進行簽名驗證,然后根據(jù)用戶信息調(diào)用Web Service訪問控制處理過程驗證其身份的合法性。如果用戶身份合法,則根據(jù)用戶信息及環(huán)境狀況信息隨機生成一個對稱密鑰并將其登記到訪問控制信息中,最后將此密鑰連同用戶可承擔角色信息返回給用戶,當然此消息需要使用用戶的公鑰加密及簽名處理。
根據(jù)Web Service安全模型以及XML加密、XML簽名和WebS ervice訪問控制之間的關(guān)聯(lián)關(guān)系,本文對Web Service安全模型進行了功能設(shè)計,如圖2所示。圖中實線部分為安全控制模塊。整個安全模塊由四個子模塊和三個數(shù)據(jù)源組成。四個子模塊分別是:XML簽名處理模塊、XML加密處理模塊、Web Service訪問控制處理模塊和消息流控制模塊,其中XML簽名處理模塊負責處理有關(guān)消息的簽名及驗證;XML加密模塊負責處理消息的加密及解密;Web Service訪問控制模塊負責用戶訪問權(quán)限的控制;消息流控制模塊是與具體的部署有關(guān),它主要是負責消息的處理流程,并以適當?shù)捻樞蛘{(diào)用前三個模塊,完成請求消息和響應(yīng)消息處理。三個數(shù)據(jù)源分別為用戶信息、密鑰信息及授權(quán)信息。

4 Web service安全模型的功能實現(xiàn)
在開發(fā)安全模型時,可采用EJB組件技術(shù)來開發(fā)安全模型中的每一個模塊,這使得安全模型不但能夠適應(yīng)于不同應(yīng)用環(huán)境,而且還有利于單個模塊的更新。
4.1 XML加密組件
XML加密組件主要用于完成信息的加密、解密工作。在此將XML加密組件設(shè)計為無狀態(tài)的會話Bean。無狀態(tài)的會話Bean在方法調(diào)用之間不保留任何信息,所有的事物處理必須在一個方法內(nèi)結(jié)束,由于它的無狀態(tài)性,使之通常占用的資源非常的少,而且還可以在用戶之間進行共享,本地接口如下所示:
public interface XMLEncryption extends javax.ejb.EJBObject{
public String encryption(String template,String srcDoc,String nodeDoc,String UserID);//XML加密
public String decryption(String srcDoc, String UserID); //XML解密}
XML加密組件向外提供了二個接口,它們分別是encryption方法和decryption方法。其中encryption方法用于對消息進行加密處理,而decryption t1法用于對加密消息進行解密。
4.2 XML簽名組件
XML簽名組件主要用于消息的簽名及簽名認證工作。數(shù)字簽名在Web Service安全模型中作用是用于保證消息在傳輸過程中完整性,同時還可以用于驗證消息發(fā)送者的身份以實現(xiàn)不可抵賴性,從而保證交互雙方的利益。與XML加密組件類似,本文將XML簽名組件也設(shè)計為無狀態(tài)的會話Bean,本地接口如下所示:
public interface XML Signature extends javax.ejb.EJBObject{
public String signature(String srcDoc, String templetDoc, String UserID); //XML數(shù)字簽名
public boolean verify(String vrfDoc, String UserID); //XML簽名驗證}
XML簽名組件對外提供兩個方法,它們分別是signature方法和verify方法,其中signature方法用于消息的簽名,而verify方法進行消息簽名的驗證。
4. 3 Web Service訪問控制組件
Web Service訪問控制組件主要用于對用戶的權(quán)限進行判斷以決定用戶是否有權(quán)訪問所要求的服務(wù),從而達到對服務(wù)本身的保護,本地接口如下所示:
public interface AccessControl extends javax.ejb.EJBObject{
public boolean access(String SrcDoc); //訪問控制}
Web Service訪問控制組件的本地接口相對比較簡單,它只對外提供了一個接口access方法,此方法的參數(shù)列表只有兩個參數(shù),其中參數(shù)SrcDoc為要進行授權(quán)認證的消息;參數(shù)UserlD為消息請求者的用戶標識,這是進行授權(quán)驗證的基本要素。在進行訪問授權(quán)驗證時,優(yōu)先考慮針對于用戶的授權(quán),然后再考慮用戶所激活的角色的授權(quán),最后才去考慮用戶所屬的用戶組的授權(quán)。
4.4消息流控制組件
消息控制組件,它主要用于控制請求消息和響應(yīng)消息的處理,并以適當順序調(diào)用XML加密組件、XML簽名組件及Web Service訪問控制組件來實現(xiàn)Web Service的安全。消息流控制組件與消息請求者的狀態(tài)是相關(guān)的,因此在實現(xiàn)時將其設(shè)計為有狀態(tài)的會話Bean。本文在此只給出服務(wù)器端實現(xiàn)的遠程接口如下所示:
Public interface Message Stream Control ex tends javax.ejb.EJBObject{
public String request(String SrcDoc)throws RemoteException; //請求消息處理
public String response(String SrcDoc)throws Remote Exception; //響應(yīng)消息處理}
消息流控制組件對外提供了兩個方法: request和response,其參數(shù)列表中都只包含一個參數(shù)分別用于描述請求消息和響應(yīng)消息。在這兩個方法中,request方法用于控制請求消息處理流程,response方法用于處理響應(yīng)消息處理流程。
5 結(jié)論
本文通過對Web Service安全機制的分析,提出了Web Service安全模型,在模型中將Web訪問控制和XML加密、XML簽名三者結(jié)合起來,從而能夠在更大范圍內(nèi)加強Web Service的安全。
參考文獻
[1] 段智華. SOAP技術(shù)及其安全性研究. IBMD eveloper Works,2001.11.
[2] 胡迎松,彭利文,池楚兵. XML Web服務(wù)的安全問題及安全技術(shù)[J]. 計算機應(yīng)用研究,2003.10
[3] Bob Atkinson, Giovanni Della-Libera, Satoshi Hada. Web服務(wù)安全性(WS-Security). IBM developerWorks, 05 A pril 2002.
[4] Michael Ellis. Employ the IBM Websphere Web Services Gateway. IBM developer Works, 14D ec2004 .
(作者單位:浙江理工大學信息電子學院)