WCF傳輸安全機制相關(guān)內(nèi)容詳解
WCF是一個由微軟開發(fā)的功能強大的開發(fā)插件,我們可以利用它來實現(xiàn)一個安全性極高的企業(yè)級解決方案。其中,WCF傳輸安全機制取決于使用的綁定和后續(xù)傳輸。例如,當使用WSHttpBinding類時,傳輸為HTTP,保證傳輸安全的主要機制為HTTP上的安全套接字層(SSL)(通常稱為 HTTPS)。本主題討論WCF系統(tǒng)提供的綁定中使用的主要傳輸安全機制。#t#
將SSL安全與 .NET Framework 3.5 和更高版本一起使用時,WCF 客戶端將使用其證書存儲區(qū)中的中間證書和 SSL 協(xié)商期間收到的中間證書,對服務(wù)的證書執(zhí)行證書鏈驗證。.NET Framework 3.0 僅使用本地證書存儲區(qū)中安裝的中間證書。
BasicHttpBinding
默認情況下,BasicHttpBinding 類不提供安全。此綁定旨在提供與不實現(xiàn)安全機制的 Web 服務(wù)提供程序的互操作性。但可以通過將 Mode 屬性設(shè)置為 None 以外的值來啟用安全。若要啟用傳輸安全,請將該屬性設(shè)置為 Transport。
BasicHttpBinding 類主要用于與現(xiàn)有的 Web 服務(wù)和由 Internet 信息服務(wù) (IIS) 承載的許多服務(wù)進行互操作。因此,此綁定的傳輸安全旨在實現(xiàn)與 IIS 站點的無縫互操作。通過將安全模式設(shè)置為 Transport,然后設(shè)置客戶端憑據(jù)類型可以實現(xiàn)這一目的。憑據(jù)類型值對應(yīng)于 IIS 目錄安全機制。下面的代碼演示如何設(shè)置模式以及如何將憑據(jù)類型設(shè)置為 Windows。當客戶端和服務(wù)器在同一個 Windows 域中時,您可以使用此配置。
或在配置中:
- < bindings> < basicHttpBinding>
- < binding name="SecurityByTransport">
- < security mode="Transport">
- < transport clientCredentialType="Windows" />
- < /security> < /binding> < /basicHttpBinding>< /bindings>
基本
這對應(yīng)于 IIS 中的基本身份驗證方法。使用此模式時,必須為 IIS 服務(wù)器配置 Windows 用戶帳戶和適當?shù)?NTFS 文件系統(tǒng)權(quán)限。有關(guān) IIS 6.0 的更多信息,請參見啟用基本身份驗證和配置領(lǐng)域名(可能為英文網(wǎng)頁)。有關(guān) IIS 7.0 的更多信息,請參見 IIS 7.0 測試版本:配置基本身份驗證(可能為英文網(wǎng)頁)。
證書
IIS有一個要求客戶端使用證書進行登錄的選項。此功能還可以使 IIS 將客戶端證書映射到 Windows 帳戶。有關(guān) IIS 6.0 的更多信息,請參見在 IIS 6.0 中啟用客戶端證書(可能為英文網(wǎng)頁)。有關(guān) IIS 7.0 的更多信息,請參見 IIS 7.0 測試版本:在 IIS 7.0 中配置服務(wù)器證書(可能為英文網(wǎng)頁)。
摘要式
WCF傳輸安全機制中的摘要式身份驗證類似于基本身份驗證,但其具有以哈希形式而不是明文形式發(fā)送憑據(jù)的優(yōu)點。有關(guān) IIS 6.0 的更多信息,請參見 IIS 6.0 中的摘要式身份驗證(可能為英文網(wǎng)頁)。有關(guān) IIS 7.0 的更多信息,請參見 IIS 7.0 測試版本:配置摘要式身份驗證(可能為英文網(wǎng)頁)。
Windows
這對應(yīng)于 IIS 中的集成 Windows 身份驗證。設(shè)置為此值時,還需要服務(wù)器位于使用 Kerberos 協(xié)議作為其域控制器的 Windows 域中。如果服務(wù)器不在支持 Kerberos 的域中,或者如果 Kerberos 系統(tǒng)失敗,您可以使用下一節(jié)中說明的 NT LAN Manager (NTLM) 值。有關(guān) IIS 6.0 的更多信息,請參見 IIS 6.0 中的集成 Windows 身份驗證(可能為英文網(wǎng)頁)。
NTLM
這可使服務(wù)器在 Kerberos 協(xié)議失敗時使用 NTLM 進行身份驗證。
WSHttpBinding
WSHttpBinding 類專用于與實現(xiàn) WS* 規(guī)范的服務(wù)進行互操作。此綁定的WCF傳輸安全機制安全為 HTTP 上的安全套接字層 (SSL),即 HTTPS。若要創(chuàng)建使用 SSL 的 WCF 應(yīng)用程序,請使用 IIS 承載該應(yīng)用程序?;蛘?,如果您要創(chuàng)建自承載的應(yīng)用程序,請使用 HttpCfg.exe 工具將 X.509 證書綁定到計算機上的特定端口。端口號作為 WCF 應(yīng)用程序的一部分以終結(jié)點地址的形式進行指定。使用傳輸模式時,終結(jié)點地址必須包括 HTTPS 協(xié)議,否則運行時將引發(fā)異常。有關(guān)更多信息,請參見 HTTP 傳輸安全。
對于客戶端身份驗證,請將 HttpTransportSecurity 類的 ClientCredentialType 屬性設(shè)置為 HttpClientCredentialType 枚舉值之一。枚舉值與 BasicHttpBinding 的客戶端憑據(jù)類型等同,并由 IIS 服務(wù)承載。
WSDualHttpBinding
此綁定只提供消息級別的安全,不提供傳輸級別的安全。
NetTcpBinding
NetTcpBinding 類使用 TCP 進行消息傳輸。通過實現(xiàn) TCP 上的傳輸層安全性 (TLS) 為傳輸模式提供安全。由操作系統(tǒng)提供 TLS 實現(xiàn)。
也可以通過將 TcpTransportSecurity 類的 ClientCredentialType 屬性設(shè)置為 TcpClientCredentialType 值之一來指定客戶端的憑據(jù)類型。
客戶端
在客戶端,必須使用 X509CertificateInitiatorClientCredential 類的 SetCertificate 方法指定證書。
WCF傳輸安全機制 - Welcome - 思路注意: 如果您要使用 Windows 安全性,則不需要證書。
下面的代碼使用***標識證書的證書指紋。
或者,在客戶端配置中的 behaviors 部分使用 clientCredentials element 指定證書。
- < behaviors> < behavior> < clientCredentials>
- < clientCertificate findValue= "101010101010101010101010101010000000000"
storeLocation="LocalMachine" storeName="My"
X509FindType="FindByThumbPrint"/> < /clientCertificate>- < /clientCredentials> < /behavior>< /behaviors>
NetNamedPipeBinding
NetNamedPipeBinding 類用于進行有效的計算機內(nèi)通信;也就是說,雖然可以在同一網(wǎng)絡(luò)上的兩臺計算機之間創(chuàng)建命名管道通道,但進程是在同一臺計算機上運行的。此綁定只提供傳輸級別的安全。在創(chuàng)建使用此綁定的應(yīng)用程序時,終結(jié)點地址必須包括“net.pipe”作為終結(jié)點地址的協(xié)議。
WSFederationHttpBinding
使用傳輸安全時,此綁定與已頒發(fā)的令牌 (TransportWithMessageCredential) 一起使用 HTTP 上的 SSL(稱為 HTTPS)。有關(guān) 聯(lián)合身份驗證應(yīng)用程序的更多信息,請參見聯(lián)合令牌與頒發(fā)的令牌。
NetPeerTcpBinding
NetPeerTcpBinding類是旨在使用對等網(wǎng)絡(luò)功能進行有效通信的一種安全傳輸。TCP 是協(xié)議,這與類和綁定的名稱相一致。當WCF傳輸安全機制設(shè)置為“傳輸”時,綁定將實現(xiàn) TCP 上的 TLS。