共用方式為


繫結和安全性

包含在 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, BasicHttpMessageCredentialTypeBasicHttpSecurityMode.

WSHttpBinding

在程式碼內使用 WSHttpBinding 類別,在組態中使用 <wsHttpBinding>

根據預設,這個繫結會實作 WS-Security 規格,並提供與實作 WS-* 規格之服務的互通性。 它支援下列各項:

  • HTTPS 傳輸安全性。

  • WS-Security。

  • 用於驗證呼叫者的 HTTPS 傳輸保護 (具 SOAP 訊息認證安全性)。

如需詳細資訊,請參閱 WSHttpSecurityMessageSecurityOverHttpMessageCredentialTypeSecurityModeHttpTransportSecurityHttpClientCredentialTypeHttpProxyCredentialType

WSDualHttpBinding

在程式碼內使用 WSDualHttpBinding 類別,在組態中使用 <wsDualHttpBinding>

這個繫結設計的目的,是為了要提供雙工服務應用程式。 這個繫結實作了 WS-Security 規格,以提供訊息傳輸安全性。 傳輸安全性在此無法使用。 根據預設,這個繫結提供了下列功能:

  • 實作 WS-Reliable 訊息以提供可靠性。

  • 實作 WS-Security 以提供傳輸安全性和驗證。

  • 使用 HTTP 傳遞訊息。

  • 使用 text/XML 訊息編碼。

使用 WS-Security (訊息層安全性) 時,繫結可讓您設定下列參數:

  • 安全性演算法組合,用於判斷密碼編譯演算法。

  • 可供下列項目運用的繫結選項:

    • 經由超出範圍的方式,提供可在用戶端使用的服務認證。

    • 提供通道設定期間之服務交涉的服務認證。

如需詳細資訊,請參閱 WSDualHttpSecurityWSDualHttpSecurityMode

NetTcpBinding

在程式碼內使用 NetTcpBinding 類別,在組態中使用 <netTcpBinding>

這個繫結已針對跨電腦通訊進行最佳化。 根據預設,這個繫結具有下列特性:

  • 實作傳輸層安全性。

  • 以 Windows 安全性提供傳輸安全性和驗證。

  • 使用 TCP 進行傳輸。

  • 實作二進位訊息編碼。

  • 實作 WS-Reliable 訊息。

包括下列選項:

  • 訊息層安全性 (使用 WS-Security)。

  • 使用訊息認證的傳輸安全性,其機密性和完整性是由透過 TCP 之上的傳輸層安全性 (TLS) 所提供,而授權的認證則是由 WS-Security 提供。

如需詳細資訊,請參閱 NetTcpSecurityTcpTransportSecurity, TcpClientCredentialTypeMessageSecurityOverTcpMessageCredentialType

NetNamedPipeBinding

在程式碼內使用 NetNamedPipeBinding 類別,在組態中使用 <netNamedPipeBinding>

這個繫結已針對跨處理序通訊進行最佳化 (通常是在同一部電腦上)。 根據預設,這個繫結具有下列特性:

  • 使用傳輸安全性進行訊息傳輸和驗證。

  • 使用具名管道 (Named Pipe) 傳遞訊息。

  • 實作二進位訊息編碼。

  • 加密和訊息簽署。

包括下列選項:

  • 使用 Windows 安全性進行驗證。

如需詳細資訊,請參閱NetNamedPipeSecurityNetNamedPipeSecurityModeNamedPipeTransportSecurity

MsmqIntegrationBinding

在程式碼內使用 MsmqIntegrationBinding 類別,在組態中使用 <msmqIntegrationBinding>

這個繫結已針對建立與非 WCF Microsoft Message Queuing (MSMQ) 端點相互操作的 WCF 用戶端和服務進行最佳化。

根據預設,這個繫結會使用傳輸安全性,並提供下列安全性特性:

  • 可以停用安全性 (無)。

  • MSMQ 傳輸安全性 (傳輸)。

如需詳細資訊,請參閱 NetMsmqSecurityNetMsmqSecurityMode

NetMsmqBinding

在程式碼內使用 NetMsmqBinding 類別,在組態中使用 <netMsmqBinding>

在建立需要支援 MSMQ 佇列訊息的 WCF 服務時,會使用這個繫結。

根據預設,這個繫結會使用傳輸安全性,並提供下列安全性特性:

  • 可以停用安全性 (無)。

  • MSMQ 傳輸安全性 (傳輸)。

  • SOAP 訊息安全性 (訊息)。

  • 同時具有傳輸和訊息安全性 (兩者並存)。

  • 支援的用戶端認證類型:無、Windows、UserName、憑證、IssuedToken。

只有在將安全性模式設定為 CertificateBoth 時,才會支援 Message 認證。

如需詳細資訊,請參閱 MessageSecurityOverMsmqMsmqTransportSecurity

WSFederationHttpBinding

在程式碼內使用 WSFederationHttpBinding 類別,在組態中使用 <wsFederationHttpBinding>

根據預設,這個繫結會使用 WS-Security (訊息層安全性)。

如需詳細資訊,請參閱同盟WSFederationHttpSecurityWSFederationHttpSecurityMode

自訂繫結

如果系統提供的繫結程序都不符合您的需求,您可以以自訂的安全性繫結程序項目建立自訂繫結程序。 如需詳細資訊,請參閱具有自訂繫結的安全性功能

繫結選擇

下表摘要說明了安全性模式設定中提供的功能,也就是說,列出了當安全性模式設定為 TransportMessageTransportWithMessageCredential 時可以使用的功能。 此表可協助您找出應用程式所需的安全性功能。

設定 功能
傳輸 伺服器驗證

用戶端驗證

點對點安全性

互通性

硬體加速

高輸送量

安全的防火牆

高延遲的應用程式

多個躍點間重新加密
訊息 伺服器驗證

用戶端驗證

端對端安全性

互通性

豐富的宣告

同盟

多重要素驗證

自訂權杖

公證/時間戳記服務

高延遲的應用程式

訊息簽章的持續性
TransportWithMessageCredential 伺服器驗證

用戶端驗證

點對點安全性

互通性

硬體加速

高輸送量

豐富的用戶端宣告

同盟

多重要素驗證

自訂權杖

安全的防火牆

高延遲的應用程式

多個躍點間重新加密

下表列出支援各種模式設定的繫結。 您可以從表格中選取一種繫結,以便用來建立您的服務端點。

繫結 傳輸模式支援 訊息模式支援 TransportWithMessageCredential 支援
BasicHttpBinding Yes .是 .是
WSHttpBinding .是 .是 .是
WSDualHttpBinding .是
NetTcpBinding .是 .是 .是
NetNamedPipeBinding .是
NetMsmqBinding .是 .是
MsmqIntegrationBinding .是
wsFederationHttpBinding .是 Yes

繫結中的傳輸認證

下表列出在傳輸安全性模式中使用 BasicHttpBindingWSHttpBinding 時,可以使用的用戶端認證類型。

類型 描述
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 允許服務使用安全性權杖服務提供自訂權杖。

另請參閱