共用方式為


系結和安全性

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, BasicHttpMessageCredentialTypeBasicHttpSecurityMode.

WSHttpBinding

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

根據預設,此系結會實作 WS-Security 規格,並提供實作WS-* 規格的服務互作性。 它支援下列專案:

  • HTTPS 傳輸安全性。

  • WS-Security。

  • 使用SOAP訊息認證安全性進行 HTTPS 傳輸保護,以驗證呼叫端。

如需詳細資訊,請參閱 WSHttpSecurityMessageSecurityOverHttpMessageCredentialTypeSecurityModeHttpTransportSecurityHttpClientCredentialTypeHttpProxyCredentialType

WSDualHttpBinding

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

此綁定的設計目的是要啟用雙向服務應用程式。 此系結會實作訊息型傳輸安全性的 WS-Security 規格。 傳輸安全性無法使用。 根據預設,它提供下列功能:

  • 實作 WS-Reliable 傳訊以提高其可靠性。

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

  • 使用 HTTP 傳遞訊息。

  • 使用文字/XML 訊息編碼。

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

  • 用來判斷密碼編譯演算法的安全演算法套件。

  • 以下項目的綁定選項:

    • 在用戶端提供可透過非同步渠道獲得的服務認證。

    • 在通道設置期間,提供從服務協商得到的服務憑證。

如需詳細資訊,請參閱 WSDualHttpSecurityWSDualHttpSecurityMode

NetTcpBinding

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

此系結已針對跨計算機通訊進行優化。 根據預設,它具有下列特性:

  • 實作傳輸層安全性。

  • 利用 Windows 安全性來確保傳輸過程的安全性和驗證。

  • 使用 TCP 進行傳輸。

  • 實作二進位訊息編碼。

  • 實作 WS-Reliable 訊息處理。

選項包括下列選項:

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

  • 使用訊息認證的傳輸安全性-傳輸層安全性 (TLS) 透過 TCP 提供的機密性和完整性,以及 WS-Security 所提供的授權認證。

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

NetNamedPipeBinding

在程序代碼中,使用類別 NetNamedPipeBinding ;在組態中,使用 <netNamedPipeBinding>

此系結已針對跨進程通訊進行優化(通常是在同一部計算機上)。 根據預設,此系結具有下列特性:

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

  • 使用命名管道傳遞訊息。

  • 實作二進位訊息編碼。

  • 加密和訊息簽署。

選項包括下列選項:

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

如需詳細資訊,請參閱NetNamedPipeSecurityNetNamedPipeSecurityModeNamedPipeTransportSecurity

MsmqIntegrationBinding(MSMQ整合綁定)

在程序代碼中,使用類別 MsmqIntegrationBinding ;在組態中,使用 <msmqIntegrationBinding>

此系結已針對建立與非 WCF Microsoft消息佇列 (MSMQ) 端點互通的 WCF 用戶端和服務進行優化。

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

  • 安全功能可以停用(無)。

  • MSMQ 傳輸安全性(運輸)

如需詳細資訊,請參閱 NetMsmqSecurityNetMsmqSecurityMode

NetMsmqBinding

在程序代碼中,使用類別 NetMsmqBinding;在組態中,使用 <netMsmqBinding>

此系結適用於建立需要 MSMQ 佇列訊息支援的 WCF 服務時使用。

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

  • 安全功能可以停用(無)。

  • MSMQ 傳輸安全性(運輸)

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

  • 同時傳輸和訊息安全性(兩者皆)。

  • 支援的客戶端認證類型:None、Windows、UserName、Certificate、IssuedToken。

Certificate只有在安全性模式設定為 BothMessage時,才支持認證。

如需詳細資訊,請參閱 MessageSecurityOverMsmqMsmqTransportSecurity

WSFederationHttpBinding

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

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

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

自定義系結

如果系統提供的系結都不符合您的需求,您可以使用自定義安全性綁定項建立自定義系結。 如需詳細資訊,請參閱 使用自定義系結的安全性功能

系結選項

下表摘要說明安全性模式設定中提供的功能,也就是說,它會列出安全性模式設定 Transport為、 MessageTransportWithMessageCredential時可用的功能。 使用此表格可協助您尋找應用程式所需的安全性功能。

設定 特徵
運輸 伺服器驗證

客戶端驗證

點對點安全性

互操作性

硬體加速

高輸送量

安全防火牆

高延遲應用程式

跨多個跳點重新加密
訊息 伺服器驗證

客戶端驗證

端對端安全性

互操作性

豐富宣告

同盟

多重因素驗證

自訂代幣

公證/時間戳服務

高延遲應用程式

訊息簽章的持續性
使用訊息憑證的傳輸方式 伺服器驗證

客戶端驗證

點對點安全性

互操作性

硬體加速

高輸送量

豐富的用戶端宣告

同盟

多重因素驗證

自訂代幣

安全防火牆

高延遲應用程式

跨多個跳點重新加密

下表列出支援各種模式設定的系結。 從數據表中選取要用來建立服務端點的系結。

捆綁 傳輸模式支援 訊息模式支援 支援 TransportWithMessageCredential
BasicHttpBinding 是的 是的 是的
WSHttpBinding 是的 是的 是的
WSDualHttpBinding 是的
NetTcpBinding 是的 是的 是的
NetNamedPipeBinding 是的
NetMsmqBinding 是的 是的
MsmqIntegrationBinding 是的
wsFederationHttpBinding 是的 是的

系結中的傳輸認證

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

類型 說明
沒有 指定用戶端不需要出示任何認證。 這會轉譯為匿名用戶端。
基本 基本身份驗證。 如需詳細資訊,請參閱 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 會強制在使用使用者名稱認證時保護傳輸。
證書 允許服務要求用戶端使用憑證進行驗證。
簽發的憑證 允許服務使用安全性令牌服務來提供自定義令牌。

另請參閱