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