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