繫結和安全性
包含在 Windows Communication Foundation (WCF) 內之系統提供的繫結,提供了一種快速設計 WCF 應用程式的方法。 除了一個例外狀況以外,所有繫結預設都會啟用安全性配置。 本主題將根據您的安全性需求,協助您選取正確的繫結。
如需 WCF 安全性的概觀,請參閱安全性概觀。如需詳細資訊使用繫結進行 WCF 程式設計的詳細資訊,請參閱 WCF 安全性程式設計。
如果已選取繫結,則可以找到更多與 WCF 中的安全性行為內之安全性相關的執行階段行為。
某些安全性功能無法使用系統提供的繫結進行程式設計。 如需使用自訂繫結進行控制的詳細資訊,請參閱自訂繫結的安全性功能。
繫結的安全性功能
WCF 包含一些系統提供的繫結,可滿足大部分的需求。 如果特定繫結不敷使用,您也可以建立自訂繫結。 如需系統提供之繫結的清單,請參閱系統提供的繫結。如需詳細資訊自訂繫結的詳細資訊,請參閱自訂繫結。
WCF 內的每一個繫結都有兩種型式:在組態檔內當做 API 使用,以及當做 XML 項目使用。 例如,WSHttpBinding (API) 在 wsHttpBinding Element內有一個對應項目。
下列章節將列出每個繫結的兩種型式,並摘要說明其安全功能。
BasicHttp
在程式碼內使用 BasicHttpBinding 類別,在組態中使用 basicHttpBinding Element。
這個繫結是設計用來與一系列現有技術搭配使用的,包括下列各項:
ASP.NET Web 服務 (ASMX) 第 1 版。
Web Service Enhancements (WSE) 應用程式。
Basic Profile,如 Web 服務互通性 (WS-I) 規格中所定義 (https://go.microsoft.com/fwlink/?LinkId=38955,本頁面可能為英文)。
如 WS-I 中定義的 Basic Security Profile。
根據預設,這個繫結是不安全的。 它是針對與 ASMX 服務相互操作所設計的。 啟用安全性時,繫結是設計成可用來與 Internet Information Services (IIS) 安全性機制進行順暢互通的,例如:基本的驗證、摘要和整合式 Windows 安全性。 如需詳細資訊,請參閱 傳輸安全性概觀. 這個繫結支援下列各項:
HTTPS 傳輸安全性。
HTTP 基本驗證。
WS-Security。
如需詳細資訊,請參閱 BasicHttpSecurity、BasicHttpMessageSecurity、BasicHttpMessageCredentialType 和 BasicHttpSecurityMode。
WSHttpBinding
在程式碼內使用 WSHttpBinding 類別,在組態中使用 wsHttpBinding Element。
根據預設,這個繫結會實作 WS-Security 規格,並提供與實作 WS-* 規格之服務的互通性。 它支援下列各項:
HTTPS 傳輸安全性。
WS-Security。
用於驗證呼叫者的 HTTPS 傳輸保護 (具 SOAP 訊息認證安全性)。
如需詳細資訊,請參閱 WSHttpSecurity、MessageSecurityOverHttp、MessageCredentialType、SecurityMode、HttpTransportSecurity、HttpClientCredentialType 和 HttpProxyCredentialType。
WSDualHttpBinding
在程式碼內使用 WSDualHttpBinding 類別,在組態中使用 wsDualHttpBinding Element。
這個繫結設計的目的,是為了要提供雙工服務應用程式。 這個繫結實作了 WS-Security 規格,以提供訊息傳輸安全性。 傳輸安全性在此無法使用。 根據預設,這個繫結提供了下列功能:
實作 WS-Reliable 訊息以提供可靠性。
實作 WS-Security 以提供傳輸安全性和驗證。
使用 HTTP 傳遞訊息。
使用 text/XML 訊息編碼。
使用 WS-Security (訊息層安全性) 時,繫結可讓您設定下列參數:
安全性演算法組合,用於判斷密碼編譯演算法。
可供下列項目運用的繫結選項:
經由超出範圍的方式,提供可在用戶端使用的服務認證。
提供通道設定期間之服務交涉的服務認證。
如需詳細資訊,請參閱 WSDualHttpSecurity 和 WSDualHttpSecurityMode。
NetTcpBinding
在程式碼內使用 NetTcpBinding 類別,在組態中使用 netTcpBinding Element。
這個繫結已針對跨電腦通訊進行最佳化。 根據預設,這個繫結具有下列特性:
實作傳輸層安全性。
以 Windows 安全性提供傳輸安全性和驗證。
使用 TCP 進行傳輸。
實作二進位訊息編碼。
實作 WS-Reliable 訊息。
包括下列選項:
訊息層安全性 (使用 WS-Security)。
使用訊息認證的傳輸安全性,其機密性和完整性是由透過 TCP 之上的傳輸層安全性 (TLS) 所提供,而授權的認證則是由 WS-Security 提供。
如需詳細資訊,請參閱 NetTcpSecurity、TcpTransportSecurity、TcpClientCredentialType、MessageSecurityOverTcp 和 MessageCredentialType。
NetNamedPipeBinding
在程式碼內使用 NetNamedPipeBinding 類別,在組態中使用 netNamedPipeBinding Element。
這個繫結已針對跨處理序通訊進行最佳化 (通常是在同一部電腦上)。 根據預設,這個繫結具有下列特性:
使用傳輸安全性進行訊息傳輸和驗證。
使用具名管道 (Named Pipe) 傳遞訊息。
實作二進位訊息編碼。
加密和訊息簽署。
包括下列選項:
- 使用 Windows 安全性進行驗證。
如需詳細資訊,請參閱 NetNamedPipeSecurity、NetNamedPipeSecurityMode 和 NamedPipeTransportSecurity。
MsmqIntegrationBinding
在程式碼內使用 MsmqIntegrationBinding 類別,在組態中使用 msmqIntegrationBinding element。
這個繫結已針對建立與非 WCF Microsoft Message Queuing (MSMQ) 端點相互操作的 WCF 用戶端和服務進行最佳化。
根據預設,這個繫結會使用傳輸安全性,並提供下列安全性特性:
可以停用安全性 (無)。
MSMQ 傳輸安全性 (傳輸)。
如需詳細資訊,請參閱 NetMsmqSecurity 和 NetMsmqSecurityMode。
NetMsmqBinding
在程式碼內使用 NetMsmqBinding 類別,在組態中使用 netMsmqBinding Element。
在建立需要支援 MSMQ 佇列訊息的 WCF 服務時,會使用這個繫結。
根據預設,這個繫結會使用傳輸安全性,並提供下列安全性特性:
可以停用安全性 (無)。
MSMQ 傳輸安全性 (傳輸)。
SOAP 訊息安全性 (訊息)。
同時具有傳輸和訊息安全性 (兩者並存)。
支援的用戶端認證類型:無、Windows、UserName、憑證、IssuedToken。
只有在將安全性模式設定為 Both 或 Message 時,才會支援 Certificate 認證。
如需詳細資訊,請參閱 MessageSecurityOverMsmq 和 MsmqTransportSecurity。
WSFederationHttpBinding
在程式碼內使用 WSFederationHttpBinding 類別,在組態中使用 WSFederationHttpBinding element。
根據預設,這個繫結會使用 WS-Security (訊息層安全性)。
如需詳細資訊,請參閱 聯合、WSFederationHttpSecurity 和 WSFederationHttpSecurityMode。
自訂繫結
如果系統提供的繫結都不符合您的需求,您可以以自訂的安全性繫結項目建立自訂繫結。 如需詳細資訊,請參閱 自訂繫結的安全性功能.
繫結選擇
下表摘要說明了安全性模式設定中提供的功能,也就是說,列出了當安全性模式設定為 Transport、Message 或 TransportWithMessageCredential 時可以使用的功能。 此表可協助您找出應用程式所需的安全性功能。
設定 | 功能 |
---|---|
傳輸 |
伺服器驗證 用戶端驗證 點對點安全性 互通性 硬體加速 高輸送量 安全的防火牆 高延遲的應用程式 多個躍點間重新加密 |
訊息 |
伺服器驗證 用戶端驗證 端對端安全性 互通性 豐富的宣告 聯合 多重要素驗證 自訂權杖 公證/時間戳記服務 高延遲的應用程式 訊息簽章的持續性 |
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 |
Windows 驗證。 |
憑證 |
使用憑證執行的驗證。 |
IssuedToken |
允許服務要求用戶端必須以安全性權杖服務或 CardSpace 所發出的權杖進行驗證。 如需詳細資訊,請參閱 聯合與發行的權杖. |
繫結中的訊息用戶端認證
下表列出在訊息安全性模式中使用繫結時,可以使用的用戶端認證類型。
型別 | 描述 |
---|---|
無 |
允許服務與匿名用戶端互動。 |
Windows |
允許在 Windows 認證的已驗證內容中進行 SOAP 訊息交換。 |
UserName |
允許服務要求用戶端必須以使用者名稱認證進行驗證。 請注意,當安全性模式設定為 TransportWithMessageCredential 時,WCF 不支援傳送密碼摘要或使用密碼衍生金鑰,甚至針對訊息模式安全性使用該金鑰。 基於這個理由,WCF 會在利用使用者名稱認證時,強制保護傳輸安全。 |
憑證 |
允許服務要求用戶端使用憑證進行驗證。 |
IssuedToken |
允許服務使用安全性權杖服務提供自訂權杖。 |