共用方式為


WCF 中的訊息安全性

Windows Communication Foundation (WCF) 有兩種主要模式,可提供安全性 (TransportMessage) 和第三種模式 ,TransportWithMessageCredential結合這兩種模式。 本主題討論訊息安全性及其使用原因。

什麼是訊息安全性?

訊息安全性會使用 WS-Security 規格來保護訊息。 WS-Security 規格描述 SOAP 傳訊的增強功能,以確保 SOAP 訊息層級的機密性、完整性和驗證(而不是傳輸層級)。

簡言之,訊息安全性與傳輸安全性不同,其方式是封裝安全性認證和宣告,以及任何訊息保護(簽署或加密)。 藉由修改安全性內容,將安全性直接套用至訊息,可讓安全訊息在安全性方面自我包含。 這可以實現一些使用傳輸安全性時無法達到的情況。

使用訊息安全性的原因

在訊息層級安全性中,所有安全性信息都會封裝在訊息中。 使用訊息層級安全性而非傳輸層級安全性來保護訊息具有下列優點:

  • 端對端安全性。 傳輸安全性,例如安全套接字層 (SSL) 只有在通訊是點對點時,才會保護訊息。 如果在到達最終接收者之前,訊息會路由傳送至一或多個SOAP媒介(例如路由器),一旦中繼從網路讀取訊息,訊息本身就不會受到保護。 此外,客戶端驗證資訊僅適用於第一個媒介,而且必須在必要時以頻外方式重新傳送至最終接收者。 即使整個路由的每個跳點都使用了 SSL 安全協議,情況也是如此。 由於訊息安全性會直接與訊息搭配運作,並保護其中的 XML,因此不論訊息到達最終接收者之前,訊息中涉及的中繼數目為何,安全性都會維持在訊息中。 這可啟用真正的端對端安全性情境。

  • 提高彈性。 訊息的元件,而不是整個訊息,都可以簽署或加密。 這表示媒介可以檢視那些專門為他們設計的訊息部分。 如果寄件者需要讓媒介看到訊息中資訊的一部分,但想要確保訊息不會遭到竄改,則只能簽署該資訊,但將它保持未加密。 由於簽章是訊息的一部分,因此最終接收者可以驗證訊息中的資訊是否完好無損。 其中一個案例可能會有SOAP中繼服務,可根據動作標頭值路由訊息。 根據預設,WCF 不會加密 Action 值,但如果使用訊息安全性,則會簽署它。 因此,此資訊可供所有媒介使用,但沒有人可以加以變更。

  • 支援多個傳輸。 您可以透過許多不同的傳輸傳送安全訊息,例如命名管道和 TCP,而不需要依賴通訊協定的安全性。 使用傳輸層級安全性時,所有安全性信息都會限定為單一特定的傳輸連線,而且無法從訊息內容本身取得。 不論您用來傳輸訊息的傳輸為何,訊息安全性都會讓訊息安全,而且安全性內容會直接內嵌在訊息內。

  • 支援廣泛的認證和宣告。 訊息安全性是以 WS-Security 規格為基礎,其提供可延伸架構,能夠在SOAP訊息內傳輸任何類型的宣告。 不同於傳輸安全性,您可以使用的一組驗證機制或宣告不受傳輸功能限制。 WCF 訊息安全性包含多種驗證和宣告傳輸類型,並可視需要擴充以支援其他類型。 例如,基於這些原因,若沒有訊息安全性,就無法使用同盟認證案例。 如需 WCF 支援的同盟案例詳細資訊,請參閱 同盟和發行令牌

訊息和傳輸安全性的比較方式

Transport-Level 安全性的優缺點

运输安全性具有以下優點:

  • 不需要通訊方瞭解 XML 層級安全性概念。 這可以改善互作性,例如,當 HTTPS 用來保護通訊時。

  • 效能整體提升

  • 硬體加速器可供使用。

  • 串流是可能的。

傳輸安全性有以下缺點:

  • 僅限節點對節點。

  • 有限且無法延展的憑證集。

  • 交通依賴。

Message-Level 安全性的缺點

訊息安全性有下列缺點:

  • 績效

  • 無法使用訊息串流。

  • 需要實作 XML 層級安全性機制和支援 WS-Security 規格。 這可能會影響互作性。

另請參閱