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