系統(tǒng)講解WCF傳輸安全知識
WCF框架是目前功能比較強大的一個由微軟開發(fā)的開發(fā)工具,可以幫助開發(fā)人員實現(xiàn)許多功能。WCF傳輸安全取決于使用的綁定和后續(xù)傳輸。#t#
例如,當使用 WSHttpBinding 類時,傳輸為 HTTP,保證傳輸安全的主要機制為 HTTP 上的安全套接字層 (SSL)(通常稱為 HTTPS)。本主題討論 WCF 系統(tǒng)提供的綁定中使用的主要傳輸安全機制。
注意:
將 SSL 安全與 .NET Framework 3.5 和更高版本一起使用時,WCF 客戶端將使用其證書存儲區(qū)中的中間證書和 SSL 協(xié)商期間收到的中間證書,對服務的證書執(zhí)行證書鏈驗證。.NET Framework 3.0 僅使用本地證書存儲區(qū)中安裝的中間證書。
BasicHttpBinding
默認情況下,BasicHttpBinding 類不提供安全。此綁定旨在提供與不實現(xiàn)安全機制的 Web 服務提供程序的互操作性。但可以通過將 Mode 屬性設(shè)置為 None 以外的值來啟用安全。若要啟用WCF傳輸安全,請將該屬性設(shè)置為 Transport。
BasicHttpBinding 類主要用于與現(xiàn)有的 Web 服務和由 Internet 信息服務 (IIS) 承載的許多服務進行互操作。因此,此綁定的傳輸安全旨在實現(xiàn)與 IIS 站點的無縫互操作。通過將安全模式設(shè)置為 Transport,然后設(shè)置客戶端憑據(jù)類型可以實現(xiàn)這一目的。憑據(jù)類型值對應于 IIS 目錄安全機制。下面的代碼演示如何設(shè)置模式以及如何將憑據(jù)類型設(shè)置為 Windows。當客戶端和服務器在同一個 Windows 域中時,您可以使用此配置。
或在配置中:
- < bindings>
- < basicHttpBinding>
- < binding name="SecurityByTransport">
- < security mode="Transport">
- < transport clientCredentialType=
"Windows" /> < /security>- < /binding>
- < /basicHttpBinding>
- < /bindings>
下面的WCF傳輸安全代碼使用***標識證書的證書指紋。有關(guān) 證書的更多信息,請參見使用證書。
或者,在客戶端配置中的 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)絡上的兩臺計算機之間創(chuàng)建命名管道通道,但進程是在同一臺計算機上運行的。此綁定只提供傳輸級別的安全。在創(chuàng)建使用此綁定的應用程序時,終結(jié)點地址必須包括“net.pipe”作為終結(jié)點地址的協(xié)議。
WSFederationHttpBinding
使用傳輸安全時,此綁定與已頒發(fā)的令牌 (TransportWithMessageCredential) 一起使用 HTTP 上的 SSL(稱為 HTTPS)。有關(guān) 聯(lián)合身份驗證應用程序的更多信息,請參見聯(lián)合令牌與頒發(fā)的令牌。
NetPeerTcpBinding
NetPeerTcpBinding類是旨在使用對等網(wǎng)絡功能進行有效通信的一種安全傳輸。TCP 是協(xié)議,這與類和綁定的名稱相一致。當安全模式設(shè)置為“傳輸”時,綁定將實現(xiàn) TCP 上的 TLS。有關(guān) 對等功能的更多信息,請參見對等網(wǎng)絡。
MsmqIntegrationBinding 和 NetMsmqBinding
有關(guān)消息隊列(以前稱為 MSMQ)的傳輸安全的完整討論,請參見使用WCF傳輸安全保護消息。