XML Web Service 安全
發(fā)表時(shí)間:2024-06-08 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]當(dāng)我們談及 XML Web Service 時(shí),人們最關(guān)心的問題就是其安全性。 XML Web Service 安全嗎? 鑒于安全性涉及諸多方面(例如身份驗(yàn)證和授權(quán)、數(shù)據(jù)隱私和完整性等),以及 SOAP 規(guī)范中根本沒有提及安全性這一事實(shí),我們不難理解人們?yōu)槭裁凑J(rèn)為答案是否定的。但是,請不要低...
當(dāng)我們談及 XML Web Service 時(shí),人們最關(guān)心的問題就是其安全性。
XML Web Service 安全嗎?
鑒于安全性涉及諸多方面(例如身份驗(yàn)證和授權(quán)、數(shù)據(jù)隱私和完整性等),以及 SOAP 規(guī)范中根本沒有提及安全性這一事實(shí),我們不難理解人們?yōu)槭裁凑J(rèn)為答案是否定的。但是,請不要低估了 Microsoft? XML Web Service。如今,您可以采取許多措施來創(chuàng)建安全的 XML Web Service。
要解決 XML Web Service 的安全性問題,我們需要考慮以下問題:
要達(dá)到什么樣的目的?- 僅允許授權(quán)用戶訪問 XML Web Service;禁止他人未經(jīng)授權(quán)擅自查看消息等。
如何達(dá)到預(yù)期效果?- 網(wǎng)絡(luò)、傳輸層、OS、服務(wù)或應(yīng)用。
解決方案中需要什么級別的互操作性?- 局部或全局。
那么,我們?nèi)绾未_保當(dāng)今 XML Web Service 的安全呢?答案就是:先回答上述問題,然后應(yīng)用保護(hù)任何其他 Web 應(yīng)用程序時(shí)所使用的相同技術(shù),即:
保護(hù)連接安全
對交互操作進(jìn)行身份驗(yàn)證和授權(quán)
正如您下面將要了解到的,這些技術(shù)提供了多種選擇,您可以將這些選擇結(jié)合起來以獲得額外的效果。例如,可以將防火墻與 XML Web Service 一起使用,從而根據(jù)客戶端的身份以及為他們所建立的相應(yīng)規(guī)則來限制對某些功能(方法)的訪問。
讓我們先來回顧一下保護(hù)現(xiàn)有基礎(chǔ)結(jié)構(gòu)的各種選擇,了解它們的功能。
保護(hù)基礎(chǔ)結(jié)構(gòu)的安全
一個(gè)安全的 XML Web Service 的核心是安全基礎(chǔ)結(jié)構(gòu)。Microsoft 提供了廣泛的技術(shù),如果把這些技術(shù)與總體安全保護(hù)計(jì)劃結(jié)合起來,企業(yè)就可以有效地保護(hù)其 IT 結(jié)構(gòu)的安全。正確實(shí)施的規(guī)劃過程包括:
詳細(xì)了解潛在的環(huán)境危險(xiǎn)(例如病毒、黑客和自然災(zāi)害)。
對與危險(xiǎn)有關(guān)的安全漏洞的后果進(jìn)行預(yù)先分析并制定對策。
在這種理解和分析的基礎(chǔ)上,創(chuàng)建一個(gè)精心規(guī)劃的實(shí)現(xiàn)策略,將安全保護(hù)措施應(yīng)用到企業(yè)網(wǎng)絡(luò)的各個(gè)方面。
保護(hù)連接安全
保護(hù) XML Web Service 安全的最簡單的一種方法就是確保 XML Web Service 客戶端與服務(wù)器之間的連接安全。根據(jù)網(wǎng)絡(luò)的范圍和交互操作的活動(dòng)配置文件,我們可以通過多種技術(shù)來達(dá)到這一目的。最流行也最廣泛使用的三種技術(shù)為:基于防火墻的規(guī)則、安全套接字層 (SSL) 和虛擬專用網(wǎng)絡(luò) (VPN)。
如果您確切知道哪些計(jì)算機(jī)需要訪問您的 XML Web Service,則可以使用防火墻規(guī)則將訪問限制在已知 IP 地址的計(jì)算機(jī)范圍內(nèi)。如果需要限制對專用網(wǎng)絡(luò)(例如公司的 LAN/WAN)中的計(jì)算機(jī)的訪問,并且不用擔(dān)心將消息內(nèi)容保留為秘密(加密),那么這種技術(shù)非常有用。防火墻(例如 Microsoft Internet Security and Acceleration [ISA] Server)可以提供先進(jìn)的基于策略的規(guī)則,這些規(guī)則可以根據(jù)客戶端的原始位置或標(biāo)識(shí),對不同的客戶端提供不同的限制。當(dāng)不同的客戶端訪問相同 XML Web Service 上的不同功能(方法)時(shí),這種技術(shù)很有用。
安全套接字層可用于在非托管網(wǎng)絡(luò)(例如 Internet)上建立安全連接。SSL 可以對客戶端和服務(wù)器之間發(fā)送的消息進(jìn)行加密和解密。通過加密數(shù)據(jù),您可以防止消息在傳送過程中被讀取。SSL 先對客戶端的消息進(jìn)行加密,然后將其傳送到服務(wù)器。服務(wù)器接收到消息后,SSL 將對其進(jìn)行解密并驗(yàn)證消息是否來自正確的發(fā)送者(此過程稱為身份驗(yàn)證)。服務(wù)器或者客戶端和服務(wù)器可能具有證書,這些證書用作身份驗(yàn)證過程的一部分在連接加密的頂層提供身份驗(yàn)證功能。雖然 SSL 是創(chuàng)建安全通信的一種非常有效的方法,但應(yīng)當(dāng)考慮其性能成本。Microsoft XML Web Service 既支持客戶端中的集成 SSL,也支持服務(wù)器中的集成 SSL。
虛擬專用網(wǎng)絡(luò)是專用網(wǎng)絡(luò)的擴(kuò)展,它可以連接共享網(wǎng)絡(luò)或公共網(wǎng)絡(luò)(如 Internet)。VPN 使您可以在兩臺(tái)安全連接的計(jì)算機(jī)之間發(fā)送數(shù)據(jù)。VPN 與 SSL 相似,但 VPN 是一個(gè)長期的點(diǎn)對點(diǎn)連接。這使 VPN 可以高效安全地應(yīng)用于 XML Web Service,但要求建立長期的連接并保持運(yùn)行才能達(dá)到這種效果。
身份驗(yàn)證和授權(quán)
身份驗(yàn)證:身份驗(yàn)證就是驗(yàn)證標(biāo)識(shí)的過程,即驗(yàn)證某人(或某物)與其聲稱的人(或物)是否一致。該人或物稱為“當(dāng)事者”。身份驗(yàn)證要求證據(jù),稱為“憑據(jù)”。例如,客戶端應(yīng)用程序可以將密碼用作憑據(jù)。如果客戶端應(yīng)用程序提供正確的憑據(jù),則認(rèn)為它與所聲稱的人或物一致。
授權(quán):完成對當(dāng)事者標(biāo)識(shí)的身份驗(yàn)證后,便可以進(jìn)行授權(quán)了。服務(wù)器通過檢查有關(guān)當(dāng)事者的某些訪問控制信息(例如訪問控制列表 [ACL])來確定訪問權(quán)限?蛻舳丝赡芫哂胁煌脑L問級別。例如,某些客戶端可以完全訪問 XML Web Service;而其他客戶端則只能訪問某些操作。某些客戶端可以完全訪問所有數(shù)據(jù),某些客戶端只能訪問數(shù)據(jù)的子集,而某些客戶端只能進(jìn)行只讀訪問。
在 XML Web Service 中實(shí)現(xiàn)身份驗(yàn)證的一個(gè)簡單而直接的方法是,利用信息交換所使用的協(xié)議的身份驗(yàn)證功能。對于大多數(shù) XML Web Service 來說,這意味著利用 HTTP 的身份驗(yàn)證功能。將 Microsoft Internet Information Server (IIS) 和 ISA 服務(wù)器與 Windows 2000 服務(wù)器配合使用,能為 HTTP 提供多種身份驗(yàn)證機(jī)制的集成支持。
基本身份驗(yàn)證 - 使用客戶端的非安全或半安全標(biāo)識(shí),因?yàn)橛脩裘兔艽a是以 base64 編碼文本發(fā)送的,而該文本易于解碼。如果憑據(jù)能與有效的用戶帳戶匹配,IIS 將授予客戶端訪問 XML Web Service 的權(quán)限。
SSL 上的基本身份驗(yàn)證 - 與基本身份驗(yàn)證相同,唯一區(qū)別在于通信通道被加密,從而保護(hù)了用戶名和密碼。對 Internet 方案而言,這是一個(gè)很好的選擇,但使用 SSL 會(huì)對性能產(chǎn)生很大影響。
簡要身份驗(yàn)證 - 使用散列以安全方式傳送客戶端憑據(jù)。但是,這種方法可能不會(huì)受到用于構(gòu)建 XML Web Service 客戶端的開發(fā)人員工具的廣泛支持。如果憑據(jù)能與有效的用戶帳戶匹配,IIS 將授予客戶端訪問 XML Web Service 的權(quán)限。
集成 Windows 身份驗(yàn)證 - 主要用于 Intranet 方案。使用 NTLM 或 Kerberos。客戶端必須屬于服務(wù)器所在的域,或者屬于服務(wù)器域的托管域。如果憑據(jù)能與有效的用戶帳戶匹配,IIS 將授予客戶端訪問 XML Web Service 的權(quán)限。
SSL 上的客戶端證書 - 要求每個(gè)客戶端獲取一個(gè)證書。證書被映射至用戶帳戶,IIS 將使用這些證書來授權(quán)對 XML Web Service 的訪問。盡管目前數(shù)字證書尚未廣泛使用,但這仍然不失為 Internet 方案的一種可行選擇。這種方法可能不會(huì)受到用于構(gòu)建 XML Web Service 客戶端的開發(fā)人員工具的廣泛支持。只能通過 SSL 連接使用這種方法,因此性能可能是一個(gè)需要考慮的問題。
從 XML Web Service 實(shí)施者的角度來看,使用上述任何一種身份驗(yàn)證機(jī)制都有一個(gè)好處,即,無需在 XML Web Service 中進(jìn)行代碼更改,因?yàn)樵谡{(diào)用 XML Web Service 之前,IIS/ISA 服務(wù)器將執(zhí)行所有的身份驗(yàn)證和 ACL 授權(quán)檢查。但是,在執(zhí)行客戶端時(shí),還需要完成其他一些工作。客戶端應(yīng)用程序需要響應(yīng)服務(wù)器的身份驗(yàn)證憑據(jù)請求。
在 XML Web Service 中進(jìn)行身份驗(yàn)證的其他方法包括:使用第三方服務(wù)(例如 Microsoft? .NET Passport 中的服務(wù)),使用 Microsoft ASP.NET 的會(huì)話功能,或者創(chuàng)建自定義身份驗(yàn)證方法。
下一步:互操作性
您可能會(huì)發(fā)現(xiàn),如今,用于 Web 應(yīng)用程序安全保護(hù)的標(biāo)準(zhǔn)技術(shù)可以單獨(dú)使用或組合使用,以建立安全的 XML Web Service。這些技術(shù)建立在豐富的經(jīng)驗(yàn)基礎(chǔ)之上,并且非常有效。不過,它們并沒有在 XML Web Service 體系結(jié)構(gòu)中提供集成解決方案。隨著 XML Web Service 方案日益復(fù)雜(例如跨托管邊界以及分布于多個(gè)系統(tǒng)或企業(yè)中),XML Web Service 實(shí)施者需要?jiǎng)?chuàng)建有效但并不提供普遍互操作性的自定義解決方案。
為滿足這些需要并增強(qiáng) XML Web Service 的互操作性,Microsoft 及其合作伙伴正在制定一套安全規(guī)范。該規(guī)范建立于 SOAP 規(guī)范的擴(kuò)展性機(jī)制之上,提供集成至 XML Web Service 結(jié)構(gòu)中的增強(qiáng)型安全保護(hù)功能。
這套安全規(guī)范的核心是 XML Web Service 安全語言 (WS-Security),它為 SOAP 消息提供了三種增強(qiáng)功能:憑據(jù)傳送、消息集成和消息保密。這些功能自身不能提供完整的安全保護(hù)解決方案;但 WS-Security 是一個(gè)構(gòu)建塊,它可以與基礎(chǔ)結(jié)構(gòu)和其他 XML Web Service 協(xié)議結(jié)合使用,以滿足各種應(yīng)用程序的安全保護(hù)要求。Microsoft Global XML Web Service 體系結(jié)構(gòu)是 WS-Security 和相關(guān)規(guī)范的主要內(nèi)容,它為 XML Web Service 基礎(chǔ)結(jié)構(gòu)的發(fā)展提供框架。