Windows Communication Foundation (WCF) 隨附的系統提供的系結提供快速程式設計 WCF 應用程式的方式。 有一個例外狀況,所有系結都會啟用預設安全性配置。 本主題可協助您為安全性需求選取正確的系結。
如需 WCF 安全性的概觀,請參閱 安全性概觀。 如需使用系結進行 WCF 程式設計的詳細資訊,請參閱 程式設計 WCF 安全性。
如果你已經選擇了綁定,可以在 「安全行為」中了解更多與安全性相關的執行時行為。
某些安全性功能無法使用系統提供的系結進行程式化。 如需使用自定義系結進行更多控制,請參閱 具有自定義系結的安全性功能。
系結的安全性功能
WCF 包含多種由系統提供的繫結,可以滿足大部分的需求。 如果特定系結不夠,您也可以建立自定義系結。 如需系統提供的綁定清單,請參閱 System-Provided 綁定。 如需自定義系結的詳細資訊,請參閱 自定義系結。
WCF 中的每個系結都有兩種形式:作為 API 和組態檔中使用的 XML 元素。 例如,WSHttpBinding(API)在 <wsHttpBinding> 中具有對應專案。
下一節將列出每種綁定的兩種形式,並摘要說明其安全性功能。
BasicHttp
在程式代碼中,使用類別 BasicHttpBinding ;在組態中,使用 <basicHttpBinding>。
此系結的設計目的是要與一系列現有的技術搭配使用,包括下列各項:
ASP.NET Web 服務 (ASMX),第 1 版。
Web 服務增強功能 (WSE) 應用程式。
Web 服務互通性 (WS-I) 規格中定義的基本概要 (https://go.microsoft.com/fwlink/?LinkId=38955)。
WS-I 中所定義的基本安全性配置檔。
根據預設,此系結並不安全。 其設計目的是要與 ASMX 服務互通。 啟用安全性時,系結是針對與 Internet Information Services (IIS) 安全性機制的無縫互通而設計,例如基本身份驗證、摘要和整合式 Windows 安全性。 如需詳細資訊,請參閱 傳輸安全性概觀。 此綁定支援下列功能:
HTTPS 傳輸安全性。
HTTP 基本身份驗證。
WS-Security。
如需詳細資訊,請參閱BasicHttpSecurity, BasicHttpMessageSecurity, BasicHttpMessageCredentialType和BasicHttpSecurityMode.
WSHttpBinding
在程式代碼中,使用類別 WSHttpBinding ;在組態中,使用 <wsHttpBinding>。
根據預設,此系結會實作 WS-Security 規格,並提供實作WS-* 規格的服務互作性。 它支援下列專案:
HTTPS 傳輸安全性。
WS-Security。
使用SOAP訊息認證安全性進行 HTTPS 傳輸保護,以驗證呼叫端。
如需詳細資訊,請參閱 WSHttpSecurity、MessageSecurityOverHttp、MessageCredentialType、SecurityMode、HttpTransportSecurity、HttpClientCredentialType 和 HttpProxyCredentialType。
WSDualHttpBinding
在程式碼中,使用 WSDualHttpBinding 類別;在組態中,使用 <wsDualHttpBinding>。
此綁定的設計目的是要啟用雙向服務應用程式。 此系結會實作訊息型傳輸安全性的 WS-Security 規格。 傳輸安全性無法使用。 根據預設,它提供下列功能:
實作 WS-Reliable 傳訊以提高其可靠性。
實作 WS-Security 以增強傳輸安全性和驗證。
使用 HTTP 傳遞訊息。
使用文字/XML 訊息編碼。
使用 WS-Security(訊息層安全性),係結可讓您設定下列參數:
用來判斷密碼編譯演算法的安全演算法套件。
以下項目的綁定選項:
在用戶端提供可透過非同步渠道獲得的服務認證。
在通道設置期間,提供從服務協商得到的服務憑證。
如需詳細資訊,請參閱 WSDualHttpSecurity 和 WSDualHttpSecurityMode。
NetTcpBinding
在程式代碼中使用NetTcpBinding類別;在組態中,使用<netTcpBinding>。
此系結已針對跨計算機通訊進行優化。 根據預設,它具有下列特性:
實作傳輸層安全性。
利用 Windows 安全性來確保傳輸過程的安全性和驗證。
使用 TCP 進行傳輸。
實作二進位訊息編碼。
實作 WS-Reliable 訊息處理。
選項包括下列選項:
訊息層安全性 (使用 WS-Security)。
使用訊息認證的傳輸安全性-傳輸層安全性 (TLS) 透過 TCP 提供的機密性和完整性,以及 WS-Security 所提供的授權認證。
如需詳細資訊,請參閱 NetTcpSecurity、TcpTransportSecurity, TcpClientCredentialType、MessageSecurityOverTcp 和 MessageCredentialType。
NetNamedPipeBinding
在程序代碼中,使用類別 NetNamedPipeBinding ;在組態中,使用 <netNamedPipeBinding>。
此系結已針對跨進程通訊進行優化(通常是在同一部計算機上)。 根據預設,此系結具有下列特性:
使用傳輸安全性進行訊息傳輸和驗證。
使用命名管道傳遞訊息。
實作二進位訊息編碼。
加密和訊息簽署。
選項包括下列選項:
- 使用 Windows 安全性進行驗證。
如需詳細資訊,請參閱NetNamedPipeSecurity、NetNamedPipeSecurityMode及 NamedPipeTransportSecurity。
MsmqIntegrationBinding(MSMQ整合綁定)
在程序代碼中,使用類別 MsmqIntegrationBinding ;在組態中,使用 <msmqIntegrationBinding>。
此系結已針對建立與非 WCF Microsoft消息佇列 (MSMQ) 端點互通的 WCF 用戶端和服務進行優化。
根據預設,此系結會使用傳輸安全性,並提供下列安全性特性:
安全功能可以停用(無)。
MSMQ 傳輸安全性(運輸)
如需詳細資訊,請參閱 NetMsmqSecurity 和 NetMsmqSecurityMode。
NetMsmqBinding
在程序代碼中,使用類別 NetMsmqBinding;在組態中,使用 <netMsmqBinding>。
此系結適用於建立需要 MSMQ 佇列訊息支援的 WCF 服務時使用。
根據預設,此系結會使用傳輸安全性,並提供下列安全性特性:
安全功能可以停用(無)。
MSMQ 傳輸安全性(運輸)
SOAP 型訊息安全性(訊息安全)
同時傳輸和訊息安全性(兩者皆)。
支援的客戶端認證類型:None、Windows、UserName、Certificate、IssuedToken。
Certificate只有在安全性模式設定為 Both 或 Message時,才支持認證。
如需詳細資訊,請參閱 MessageSecurityOverMsmq 和 MsmqTransportSecurity。
WSFederationHttpBinding
在程式碼中使用 WSFederationHttpBinding 類別;在組態中,使用 <wsFederationHttpBinding>。
根據預設,此系結會使用 WS-Security(訊息層安全性)。
如需詳細資訊,請參閱 同盟、 WSFederationHttpSecurity和 WSFederationHttpSecurityMode。
自定義系結
如果系統提供的系結都不符合您的需求,您可以使用自定義安全性綁定項建立自定義系結。 如需詳細資訊,請參閱 使用自定義系結的安全性功能。
系結選項
下表摘要說明安全性模式設定中提供的功能,也就是說,它會列出安全性模式設定 Transport為、 Message或 TransportWithMessageCredential時可用的功能。 使用此表格可協助您尋找應用程式所需的安全性功能。
| 設定 | 特徵 |
|---|---|
| 運輸 | 伺服器驗證 客戶端驗證 點對點安全性 互操作性 硬體加速 高輸送量 安全防火牆 高延遲應用程式 跨多個跳點重新加密 |
| 訊息 | 伺服器驗證 客戶端驗證 端對端安全性 互操作性 豐富宣告 同盟 多重因素驗證 自訂代幣 公證/時間戳服務 高延遲應用程式 訊息簽章的持續性 |
| 使用訊息憑證的傳輸方式 | 伺服器驗證 客戶端驗證 點對點安全性 互操作性 硬體加速 高輸送量 豐富的用戶端宣告 同盟 多重因素驗證 自訂代幣 安全防火牆 高延遲應用程式 跨多個跳點重新加密 |
下表列出支援各種模式設定的系結。 從數據表中選取要用來建立服務端點的系結。
| 捆綁 | 傳輸模式支援 | 訊息模式支援 | 支援 TransportWithMessageCredential |
|---|---|---|---|
BasicHttpBinding |
是的 | 是的 | 是的 |
WSHttpBinding |
是的 | 是的 | 是的 |
WSDualHttpBinding |
否 | 是的 | 否 |
NetTcpBinding |
是的 | 是的 | 是的 |
NetNamedPipeBinding |
是的 | 否 | 否 |
NetMsmqBinding |
是的 | 是的 | 否 |
MsmqIntegrationBinding |
是的 | 否 | 否 |
wsFederationHttpBinding |
否 | 是的 | 是的 |
系結中的傳輸認證
下表列出在傳輸安全性模式中使用 BasicHttpBinding 或 WSHttpBinding 時可用的客戶端認證類型。
| 類型 | 說明 |
|---|---|
| 沒有 | 指定用戶端不需要出示任何認證。 這會轉譯為匿名用戶端。 |
| 基本 | 基本身份驗證。 如需詳細資訊,請參閱 RFC 2617 – HTTP 驗證:基本和摘要式驗證,可以在此取得 https://go.microsoft.com/fwlink/?LinkId=84023。 |
| 摘要 | 摘要式驗證。 如需詳細資訊,請參閱 RFC 2617 – HTTP 驗證:基本和摘要式驗證,可以在此取得 https://go.microsoft.com/fwlink/?LinkId=84023。 |
| NTLM | NT LAN Manager (NTLM) 驗證。 |
| 窗戶 | Windows 驗證。 |
| 證書 | 使用憑證執行的驗證。 |
| 簽發的憑證 | 允許服務要求用戶端使用安全性令牌服務或 CardSpace 所簽發的令牌進行驗證。 如需詳細資訊,請參閱 同盟和發行的令牌。 |
系結中的訊息客戶端認證
下表列出在訊息安全性模式中使用系結時可用的客戶端認證類型。
| 類型 | 說明 |
|---|---|
| 沒有 | 允許服務與匿名客戶端互動。 |
| 窗戶 | 允許在 Windows 憑證的驗證內容下進行 SOAP 訊息交換。 |
| UserName | 允許服務要求用戶端使用使用者名稱認證進行驗證。 請注意,當安全性模式設定為 TransportWithMessageCredential時,WCF 不支援使用密碼傳送密碼摘要或衍生密鑰,以及針對訊息模式安全性使用這類密鑰。 因此,WCF 會強制在使用使用者名稱認證時保護傳輸。 |
| 證書 | 允許服務要求用戶端使用憑證進行驗證。 |
| 簽發的憑證 | 允許服務使用安全性令牌服務來提供自定義令牌。 |