HOW TO:使用 WCF 用戶端來存取 WSE 3.0 服務

當 WCF 用戶端設定為使用 WS-Addressing August 2004 版本規格時,Windows Communication Foundation (WCF) 用戶端的連線層級與 Microsoft .NET 服務的 Web Services Enhancements (WSE) 3.0 相容。不過,WSE 3.0 服務不支援中繼資料交換 (MEX) 通訊協定,當您使用Service Metadata Utility Tool (SvcUtil.exe) 來建立 WCF 用戶端類別時,安全性設定不會套用至所產生的 WCF 用戶端。因此,在產生 WCF 用戶端之後,您必須指定 WSE 3.0 服務所需的安全性設定。

您可以使用自訂繫結來套用這些安全性設定,將 WSE 3.0 服務的需求,以及 WSE 3.0 服務和 WCF 用戶端之間的互通需求納入考量。這些互通性需求包含上述的 WS-Addressing August 2004 規格使用和 WSE 3.0 預設訊息保護 SignBeforeEncrypt。WCF 的預設訊息保護為 SignBeforeEncryptAndEncryptSignature。本主題會詳細說明如何建立可與 WSE 3.0 服務交互操作的 WCF 繫結。此外,WCF 也提供加入此繫結的範例。如需 如需這個範例的詳細資訊,請參閱Interoperating with WSE

若要使用 WCF 用戶端來存取 WSE 3.0 Web 服務

  1. 執行Service Metadata Utility Tool (SvcUtil.exe),以建立 WSE 3.0 Web 服務的 WCF 用戶端。

    隨即建立 WSE 3.0 Web 服務的 WCF 用戶端。因為 WSE 3.0 不支援 MEX 通訊協定,所以您無法使用此工具擷取 Web 服務的安全性需求。應用程式開發人員必須為用戶端加入安全性設定。

    如需 如需建立 WCF 用戶端的詳細資訊,請參閱 HOW TO:建立 Windows Communication Foundation 用戶端

  2. 建立類別,表示可與 WSE 3.0 Web 服務通訊的繫結。

    下列類別是Interoperating with WSE範例的一部分:

    1. 建立從 Binding 類別衍生的類別。
      下列程式碼範例會建立一個名為 WseHttpBinding 的類別,此類別衍生自 Binding 類別。
    2. 將屬性加入至類別,這些屬性會指定 WSE 服務所使用的 WSE 通行判斷提示 (Turnkey Assertion)、是否需要衍生金鑰、是否使用安全工作階段、是否需要簽章確認,以及訊息保護設定。在 WSE 3.0 中,通行判斷提示會指定用戶端或 Web 服務的安全性需求,這與 WCF 中的繫結驗證模式類似。
      下列程式碼範例會定義 SecurityAssertionRequireDerivedKeysEstablishSecurityContextMessageProtectionOrder 屬性,這些屬性會分別指定 WSE 通行判斷提示、是否需要衍生金鑰、是否使用安全工作階段、是否需要簽章確認,以及訊息保護設定。
    3. 覆寫 CreateBindingElements 方法來設定繫結屬性。
      下列程式碼範例會藉由取得 SecurityAssertionMessageProtectionOrder 屬性的值,指定傳輸、訊息編碼和訊息保護設定。
  3. 在用戶端應用程式程式碼中,加入程式碼以設定繫結屬性。

    下列程式碼範例會指定 WCF 用戶端必須依照 WSE 3.0 AnonymousForCertificate 通行安全性判斷提示所定義,使用訊息保護和驗證。此外,也需要安全工作階段和衍生金鑰。

範例

下列程式碼範例會定義自訂的繫結,此繫結會公開 WSE 3.0 通行安全性判斷提示屬性的對應屬性。此自訂繫結 (名為 WseHttpBinding) 接著會用來指定可與 WSSecurityAnonymous WSE 3.0 快速入門範例通訊的 WCF 用戶端的繫結屬性。

請參閱

參考

Binding

其他資源

Interoperating with WSE