Kirill Gavrylyuk
測試組長,Web 數據 SOAP 組
Microsoft Corporation
2001年7月
摘要: Microsoft SOAP Toolkit 2.0 提供壹個靈活的框架,可以為各種 Intranet 和 Internet 解決方案構建可伸縮的 Web 服務。在這兩種方案中,安全性都是建立可靠服務的重要因素。SOAP Toolkit 2.0 支持基於 IIS 安全基礎結構的 Internet 安全性。本文介紹了如何使用 Microsoft SOAP Toolkit 2.0 建立安全解決方案。
目錄
簡介
重要規則
身份驗證
代理支持和身份驗證
SSL 和客戶端證書
身份驗證問題
疑難解答
其它信息
簡介
與任何分布式協議相同,成功的 SOAP 應用程序的關鍵在於獲得安全性權限。SOAP 標準不指定任何安全性機制,而是將安全處理委派給傳輸層。對 SOAP Toolkit 2.0 而言,傳輸層是 HTTP。在 HTTP 上運行的 SOAP 基本上是壹個 Web 應用程序,與其它在 IIS 上運行的 ASP 或 ISAPI 應用程序很相似。SOAP 的身份驗證、授權和加密機制與您通常使用的 Web 應用程序完全相同。如果熟悉 Web 安全性,也就了解了 SOAP 安全性。如果對 Web 應用程序不夠熟悉,本文將為您提供充分的入門知識背景。每個主題都介紹的非常詳細。如果需要更詳細的信息,請參見 MSDN Library 或由 Michael Howard、Marc Levy 和 Richard Waymire 編著的《設計 Microsoft Windows 2000 基於 Web 的安全應用程序》。
重要規則
根據《設計 Microsoft Windows 2000 基於 Web 的安全應用程序》中闡述的觀點,我們首先從概述建立安全 Web 服務應遵守的重要規則開始。安全 Web 服務可歸納為以下七類:
身份驗證
授權
審核
保密
完整性
可用性
認可
身份驗證是壹個實體(也稱為主題)驗證另壹個實體是否符合它所聲稱的身份的過程。SOAP Toolkit 2.0 支持以下身份驗證方法:
基本
摘要式
Kerberos
Windows NTLM
SSL 客戶端證書
基於 SOAP 頭的身份驗證
代理身份驗證
本文檔介紹如何配置服務器端和客戶端使用上述身份驗證方法。
授權是為經過身份驗證的用戶提供資源訪問權限的機制。只要使用 SOAP Toolkit 建立的 Web 服務基於 IIS,這些服務就可以利用 IIS 支持的授權機制。本文檔也將講述用戶應註意的壹些問題。
審核的目的是為了收集有關對 Web 服務的成功和失敗請求的信息。可以使用 IIS 審核功能和 SOAP Toolkit 跟蹤功能實現這壹目的。本文檔沒有介紹這方面的內容,您可以參考 IIS 文檔、netmon 日誌和 SoapServer 對象的 SOAP Toolkit 幫助。
保密是指確保攻擊者看不到客戶端與服務器之間的通信信息。完整性是指保護數據不被刪除或更改(不管是惡意還是不慎)的能力。為了實現保密和完整性,SOAP Toolkit 允許使用安全套接字層 (SSL) 加密數據。本文檔將介紹如何啟用 IIS 上的 SSL 支持以及如何將其用於客戶端。
可用性確保不會拒絕合法用戶對請求的資源的訪問。可用性技術的示例包括負載平衡以及硬件和軟件的故障轉移。SOAP Toolkit 已成功通過了 Microsoft Application Center 負載平衡軟件的測試。
認可是壹種技術,為發生的操作提供證據以防止客戶端在事務處理中欺詐或否認。SOAP Toolkit 采用 IIS 提供的認可功能。本文檔不對認可進行介紹。
身份驗證
本節介紹了 SOAP Toolkit 支持的身份驗證方法,包括其優點和缺點,以及如何對其進行設置。還介紹了 SOAP Toolkit 在支持平臺上的已知局限性,以及服務器具有多個可用身份驗證方案時 SOAP Toolkit HTTP 連接器的行為。
身份驗證握手是如何進行的?每個身份驗證握手都是如下開始:
客戶端發出頁面請求。
服務器返回狀態 401“拒絕訪問”和壹組 HTTP 頭。
WWW 驗證它支持的每壹個身份驗證方法。
如何使用 SoapClient 驗證自身?如果 Web 服務要求身份驗證(基本、摘要式、NTLM 或 Kerberos),需要為 SoapClient 提供用戶名和密碼,以將其傳遞到 Web 服務。也可以使用 SoapClient.ConnectorProperty 包完成此操作:
dim SoapClient
set SoapClient = createobject("MSSoap.SoapClient")
SoapClient.mssoapinit("pany.com”繞過名稱中含有 .soap-company.com 的所有服務器。
需要代理服務器來允許繞過本地 Intranet 之外的任何服務器。請註意,用於 HTTP 和用於通過 SSL (HTTPS) 連接的代理服務器不同。代理應允許使用任壹協議,以便 SSL 正常工作。
局限性:使用默認代理時,在 Windows 2000 和 Windows NT4 上使用 Microsoft SOAP Toolkit 2.0 HttpConnector 有壹個已知問題:它不理解默認 IE 代理設置的“繞過代理”列表。如果選中了“對於本地地址不使用代理服務器”並且在 URL 中指定的主機名不包含“.”,它將繞過代理服務器。但它不理解在 IE 代理設置“高級”菜單中的“例外”文本框中指定的復雜模板。
通過指定代理連接
可以指定哪個代理使用 ProxyServer 和 ProxyPort 連接器屬性:
set SoapClient = createobject("MSSoap.SoapClient")
SoapClient.mssoapinit("。在啟動 SSL 連接之前,客戶端將檢查站點名稱是否與證書的公用名稱相同。單擊“下壹步”。
輸入國家(地區)、省/自治區、市/縣所在地。證書頒發機構可能檢查這些信息是否壹致,以確保輸入的信息有效。輸入省時,請輸入完整的省名稱。
輸入管理服務器的人員的姓名、電子郵件地址和電話號碼。這些信息不包含在證書中,但證書頒發機構需要這些信息。
包含您的請求的文件已經創建。該文件為 Base64 編碼格式。在此過程中,IIS 還將為該證書請求創建壹個私有密鑰和壹個公用密鑰。私有密鑰將保存在您的計算機上,而公用密鑰將隨請求壹起發往 Verisign,並用以加密證書數據。
轉至 www.verisign.com(英文),並單擊“Get Trial SSL ID”。註冊證書時,會要求您提供 CSR(證書簽名請求)。復制並粘貼您的請求文件中自行“BEGIN NEW CERTIFICATE REQUEST;”之後的內容,否則,將會出錯。Verisign 以郵件形式將測試服務器端證書發送給您。該過程同樣適用於商業證書,不同之處在於它收費並仔細驗證提交的信息。
確保從證書頒發機構獲得的證書是 Base64 編碼的。如果證書頒發機構是 Verisign,則您可以通過電子郵件獲得證書。創建壹個擴展名為 .cer 的空文件,復制行“BEGIN CERTIFICATE”和“END CERTIFICATE”之間(包含這兩行)的所有內容並粘貼到該文件。
轉至要啟用 SSL 的站點的“屬性”/“目錄安全性”選項卡。單擊“編輯安全通信”,然後單擊“密鑰管理器”。
在對話框中,展開樹狀視圖中的“本地計算機”節點,再展開 WWW 葉,將顯示您的證書請求的密鑰。由於該證書尚未安裝,它標記為紅色。用鼠標右鍵單擊該證書,並選擇“安裝密鑰證書”。選擇具有要安裝的證書的文件。將提示您提供以前設置的密碼。輸入密碼。現在,您的證書已安裝。
使用 IIS 5.0 啟用服務器上的 SSL
用鼠標右鍵單擊要啟用 SSL 的網站,並選擇“屬性”。
在“目錄安全性”選項卡上,單擊“編輯安全通信”。
單擊“服務器證書”打開服務器證書向導。該向導將記憶網站的當前狀態,例如您是否已擁有服務器證書。(現在假設您沒有證書。)
在證書向導中,單擊“下壹步”,選擇“創建壹個新證書”,然後單擊“下壹步”。
選擇“現在準備請求,但稍後發送”,並單擊“下壹步”。
輸入證書的友好名稱。該名稱不會在證書結構中使用,但作為區分請求和證書的壹種方法。選擇公用密鑰長度。推薦密鑰長度不小於 1024 字節。單擊“下壹步”。
輸入可以由頒發機構驗證的組織名稱和部門名稱,如果您請求用於商業目的的真實證書,請輸入有效名稱。輸入要被認證的計算機的名稱。註意:它必須等同於您的完整站點名稱,例如 www.yoursite.com。單擊“下壹步”。
輸入國家(地區)、省/自治區、市/縣所在地。請輸入有效信息,證書頒發機構將檢查這些信息是否壹致。輸入省時,請輸入完整的省名稱。單擊“下壹步”。
輸入用於保存請求的請求文件名稱。單擊“下壹步”。
將摘要顯示您輸入的內容。確認內容正確,並單擊“下壹步”完成向導。包含請求的文件將以 Base 64 格式保存。
包含您的請求的文件已經創建。該文件為 Base64 編碼格式。在此過程中,IIS 還將為該證書請求創建壹個私有密鑰和壹個公用密鑰。私有密鑰將保存在您的計算機上,而公用密鑰將隨請求壹起發往 Verisign,並用以加密證書數據。
轉至 www.verisign.com(英文),並單擊“Get Trial SSL ID”。註冊證書時,會要求您提供 CSR(證書簽名請求)。復制並粘貼您的請求文件中自行“BEGIN NEW CERTIFICATE REQUEST;”之後的內容,否則,將會出錯。Verisign 以郵件形式將測試服務器端證書發送給您。該過程同樣適用於商業證書,不同之處在於它收費並仔細驗證提交的信息。
確保從證書頒發機構獲得的證書是 Base64 編碼的。如果證