整個安全模型系統(tǒng)的處理流程如下:(Web服務的安全研究與模型實現(xiàn)) (1)服務請求者和服務提供者各自向XKMS 服務器注冊認證書. (2)服務請求者登錄SAML 認證服務器,驗證后,,從數(shù)據(jù)庫或權限列表取出與登錄者身份相應的訪問權限,,生成SAML 斷言. (3)將SOAP 請求消息經(jīng)安全處理后發(fā)出. (4)服務提供者收到SOAP 請求消息后,做相應的安全處理,,根據(jù)處理結果判斷是否滿足服務請求者的請求. 下面詳細分析SOAP 消息安全處理的相關問題.SOAP 消息安全處理包括對SOAP 消息的簽名,、加密和添加SAML 斷言. 服務請求者對SOAP 消息的安全處理過程如下: (1)服務請求者從XKMS 服務器取得服務提供者的認證書. (2)服務請求者將生成的SAML 斷言加入SOAP消息中. (3)服務請求者用自己的認證書中的私鑰對SOAP 消息簽名. (4)用服務提供者認證書中的公鑰對SOAP 消息加密,利用XML 加密的部分加密特性,,僅加密SOAP 消息的機密信息,,而不加密SOAP 消息的Header 部分. (5)將服務請求者的認證書加入SOAP 消息,發(fā)送給服務提供者. 服務提供者對SOAP 消息的安全處理過程如下: (1)服務提供者接收到消息后,,定位消息中的認證書,,向XKMS 確定該證書的有效性. (2)取出其中的公鑰驗證簽名. (3)服務提供者利用自己的認證書中的私鑰解密. (4)根據(jù)SAML 斷言中的權限信息決定服務請求者是否有權限訪問請求資源.若有權訪問,則滿足服務請求者的請求,,并發(fā)送SOAP 響應消息,;否則拒絕服務請求者的請求. 服務提供者響應服務請求者的過程與SOAP請求過程類似,不再贅述. (Web服務安全技術的研究與實現(xiàn)) (基于Web服務的安全模型研究) 消息安全模型中有四個角色:服務請求者,、服務提供者,、SAML 管理機構及XKMS 服務器。服務請求者是申請?zhí)峁┓辗?,可以是一個基于瀏覽器的應用程序,、組件甚至是一個Web服務。服務提供者是服務所有者,,它經(jīng)過認證,,授權向合格的請求者提供資源。SAML 管理機構是權限管理機構,,它處理系統(tǒng)的訪問控制和授權,,用來生成SAML 斷言,其中包含了用戶驗證證件和其他授權信息,。SAML 管理機構有時就是Web 服務提供者,,它可以位于Internet 的任何位置上。XKMS 服務器為Web 服務提供基于XML 的公用密鑰基礎結構,。主要用來管理密鑰和證書信息,??刂泼荑€注冊、恢復與取消,。服務請求者和服務提供者都可以通過XKMS 服務來認證對方,,可以說XKMS 服務器也提供了一種Web 服務。 消息安全模型具有三個操作:取得SAML 斷言,、取得認證信息,、對傳輸?shù)?/span>SOAP[4]消息進行安全處理。其核心是消息的安全處理,,它包括對SOAP 消息加密、數(shù)字簽名和添加SAML 斷言,,其它兩個操作是為該操作服務,。消息安全模型中用到的SAML、XKMS 以及SOAP 加密等都是基于XML 的,,都具有互操作性,,可以跨平臺,同時能滿足Web 服務的安全需求,。 整個安全模型系統(tǒng)的處理流程如下: 1) 服務請求者和服務提供者各自向XKMS 服務器注冊認證證書,。 2) 服務請求者登錄SAML 認證服務器,驗證后,,從數(shù)據(jù)庫或權限列表取出與登錄者身份相應的訪問權限,,生成SAML 斷言。 3) 將SOAP 請求消息經(jīng)安全處理后發(fā)出,。 4) 服務提供者收到SOAP 請求消息后,,做相應的安全處理,根據(jù)處理結果判斷是否滿足服務請求者的請求,。下面詳細分析SOAP 消息安全處理的相關問題,。SOAP 消息安全處理包括對SOAP 消息的簽名、加密和添加SAML 斷言,。 服務請求者對SOAP 消息的安全處理過程如下: 1) 服務請求者從XKMS 服務器取得服務提供者的認證證書,。 2) 服務請求者將生成的SAML 斷言加入SOAP 消息中。 3) 服務請求者用自己的認證證書中的私鑰對SOAP 消息簽名,。 4) 用服務提供者認證證書中的公鑰對SOAP 消息加密,,利用XML 加密的部分加密特性,僅加密SOAP 消息的機密信息,,而不加密SOAP 消息的Header 部分,。 5) 將服務請求者的認證證書加入SOAP 消息,發(fā)送給服務提供者,。 服務提供者對SOAP 消息的安全處理過程如下: 1) 服務提供者接收到消息后,,定位消息中的認證證書,,向XKMS 確定該證書的有效性。 2) 取出其中的公鑰驗證簽名,。 3) 服務提供者利用自己的認證證書中的私鑰解密,。 4) 根據(jù)SAML 斷言中的權限信息決定服務請求者是否有權限訪問請求資源。若有權訪問,,則滿足服務請求者的請求,,并發(fā)送SOAP 響應消息;否則拒絕服務請求者的請求,。 服務提供者響應服務請求者的過程與SOAP 請求過程類似,,不再贅述。 (基于SOAP的Web服務安全通信機制的研究與實現(xiàn)) (基于XKMS和SAML的Web服務安全模型) 安全模型包含了4 個主要角色:服務請求者(客戶端),、服務提供者(服務器端),、斷言服務器和XKMS 服務器。 XKMS 服務器提供密鑰注冊,、定位,、驗證等服務,用于處理和管理基于PKI的加密簽名密鑰,;通過這些服務,,向服務請求者和服務提供者屏蔽了使用PKI 的復雜性,保證請求者和提供者之間相互認證,,建立彼此的信任關系,。客戶端(Client)與服務提供者(Service)通過經(jīng)安全處理的SOAP 消息進行通信。為實現(xiàn)客戶端跨域訪問,,本模型引入一個第三方信任服務——斷言服務器,。客戶端在訪問Web服務之前向斷言服務器發(fā)出一個RST(Request Security Token),這是主要指SAML Token,,主要進行身份,、屬性驗證和授權。斷言服務器收到RST,,首先生成該用戶的認證信息和相關屬性,,然后產(chǎn)生一個Client與Service之間安全的共享對稱密鑰,利用這個密鑰證明Client是SAML Token的擁有者,,從而建立Client與Service之間的一種信任關系,。為了讓該密鑰只被Service和Client接收到,我們使用Service和Client的公鑰分別對其加密,,并加入到SAML Token中,。最后由斷言服務器使用自己的私鑰對以上內(nèi)容加以簽名,保證該Token確實是由斷言服務器簽發(fā)的,,并保證它不會被篡改,。Client根據(jù)請求的Web服務創(chuàng)建出相應的SOAP安全工具包,,然后將從斷言服務器中獲得的SAML Token原封不動地添加到SOAP安全工具包的Head中,并將帶有Token的SOAP發(fā)往Service,。服務提供者對SOAP工具包作安全處理后,,為合法的請求提供服務資源和訪問控制。 ⑴ SOAP安全工具包的客戶端功能 Client 將斷言服務器對用戶做出的SAML斷言(包括身份驗證,、屬性,、授權斷言)加入SOAP 頭中作為用戶安全令牌,并在SOAP 頭中加入安全屬性,,包括時間戳,、序列號、發(fā)送者,、接收者四項缺省安全屬性,,可進行擴展,添加其他安全屬性,。Client 可利用自己的私鑰解密SAML Token中的會話密鑰,,并利用此會話密鑰對請求消息加密,;利用私鑰對SAML 令牌,、安全屬性和需要保證完整性的元素進行簽名處理;最后Client 將經(jīng)過安全處理的SOAP安全信息包發(fā)給服務提供者,。 ⑵ SOAP安全工具包的服務器端功能 服務器收到安全消息以后,,首先檢查安全屬性,判斷是否重放,,是否為相應的接收者和發(fā)送者等,。然后服務器端用自己的私鑰從SAML Token 中解密會話密鑰,用會話密鑰解密請求消息,,根據(jù)請求消息中客戶端傳遞的密鑰信息,,利用XKMS 信任服務實現(xiàn)的定位服務,獲取客戶端的公鑰,,進而驗證簽名的有效性,。隨后Service 從Client 的請求消息的Head 中取出SAML Token 進行處理。其具體步驟是:先判斷該Token 是否在有效期內(nèi),;其次驗證該Token 的簽名,,判斷該Token 是否由自己所信任的斷言服務器簽發(fā);然后根據(jù)Token 中的主體驗證方法判斷Token 所斷言的主體是否就是消息的發(fā)送方(此處采用的是Hold-of-Key 的方法),;最后根據(jù)斷言調(diào)用相應的資源和進行授權,,并對響應消息加密、簽名,,附加時間戳,,發(fā)送給客戶端,。 圖3 客戶端生成安全SOAP請求流程圖 (一種Web服務安全體系結構模型的研究) 圖4 服務端安全模型 (一種Web服務安全體系結構模型的研究) 首先由服務器為自身及客戶端生成用于數(shù)字簽名的非對稱密鑰和數(shù)字證書, 分別存儲在客戶端和服務器上??蛻舳伺c服務器正式通訊前需要得到服務器端非對稱加密密鑰的公鑰,。客戶端首先根據(jù)用戶,、密碼和客戶端生成的客戶端加密用公鑰等信息生成原始的SOAP消息, 并用自己的私鑰對SOAP消息進行簽名,。 然后, 客戶端用生成的對稱密鑰加密SOAP消息正文, 用得到的服務器端加密用公鑰加密對稱密鑰, 然后把加密后的SOAP消息連同加密后的對稱密鑰一起傳輸?shù)椒斩恕A鞒倘鐖D3所示,。 如圖4所示,,服務器端首先從XKMS( XML Key Management Specification)中提取出自身私鑰以及從證書庫中提取客戶端數(shù)字證書, 用服務器端私鑰對SOAP消息正文解密, 從SOAP 消息中提取出用戶名稱和密碼, 服務器利用附在消息中的客戶端簽名公鑰以及從證書文件中提取出的客戶端數(shù)字證書來驗證簽名。這樣可保證SOAP 消息的機密性和完整性,。然后從SOAP消息中提取X. 509數(shù)字證書, 從證書庫里查詢對應的X. 509證書, 比較兩個證書, 如果相等那么客戶端就能通過身份驗證,。用戶通過授權和訪問控制接口, 被分配到相應的權限后, 就可以訪問W eb服務以及資源了。目標Web服務端處理后返回的SOAP 消息同樣使用服務器端的數(shù)字證書進行數(shù)字簽名, 用生成的對稱密鑰對SOAP消息正文進行加密后, 再用得到的客戶端加密用公鑰加密對稱密鑰, 然后把加密后的SOAP 消息連同加密后的對稱密鑰一起再傳輸回客戶端,。到客戶端后, 客戶端對服務器返回的SOAP消息進行數(shù)字認證,、解密。 (基于屬性的Web服務安全訪問控制方案) (基于屬性的Web服務安全訪問控制方案) |
|