Поделиться через


Практическое руководство. Настройка служб WCF для взаимодействия с клиентами WSE 3.0

Службы Windows Communication Foundation (WCF) совместимы с усовершенствованиями веб-служб 3.0 для клиентов Microsoft .NET (WSE), когда службы WCF настроены на использование спецификации WS-Адресации в августе 2004 года.

Включение службы WCF для взаимодействия с клиентами WSE 3.0

  1. Определите настраиваемую привязку для службы WCF.

    Чтобы указать, что для кодирования сообщений используется версия спецификации WS-Addressing от августа 2004 г., необходимо создать пользовательскую привязку.

    1. Добавьте дочерний <пользовательскийbinding> в <привязки> файла конфигурации службы.

    2. Укажите имя привязки, добавив <привязку> в< customBinding> и задав name атрибут.

    3. Укажите режим проверки подлинности и версию спецификаций WS-Security, которые используются для защиты сообщений, совместимых с WSE 3.0, путем добавления дочерней <безопасности> в привязку<>.

      Чтобы задать режим проверки подлинности, задайте authenticationMode атрибут <безопасности>. Режим проверки подлинности примерно соответствует готовому к использованию утверждению безопасности в WSE 3.0. В следующей таблице приведены режимы проверки подлинности в WCF для проверочные утверждения безопасности в WSE 3.0.

      Режим проверки подлинности WCF Готовое к использованию утверждение безопасности WSE 3.0
      AnonymousForCertificate anonymousForCertificateSecurity
      Kerberos kerberosSecurity
      MutualCertificate mutualCertificate10Security*
      MutualCertificate mutualCertificate11Security*
      UserNameOverTransport usernameOverTransportSecurity
      UserNameForCertificate usernameForCertificateSecurity

      * Одним из основных различий между mutualCertificate10Security утверждениями безопасности и mutualCertificate11Security готовыми утверждениями безопасности является версия спецификации WS-Security, которую WSE использует для защиты сообщений SOAP. Для mutualCertificate10Security используется версия WS-Security 1.0, а для mutualCertificate11Security - версия WS-Security 1.1. Для WCF версия спецификации WS-Security указывается в messageSecurityVersion атрибуте <безопасности>.

      Чтобы задать версию спецификации WS-Security, которая используется для защиты сообщений SOAP, задайте messageSecurityVersion атрибут <безопасности>. Для взаимодействия с WSE 3.0 установите для атрибута messageSecurityVersion значение WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10.

    4. Укажите, что версия спецификации WS-Addressing за август 2004 года используется WCF, добавив текстMessageEncoding> и присвоив messageVersion ей значениеSoap11WSAddressingAugust2004.<

      Примечание.

      При использовании протокола SOAP 1.2 задайте для атрибута messageVersion значение Soap12WSAddressingAugust2004.

  2. Укажите, что служба использует пользовательскую привязку.

    1. binding Задайте для атрибута элемента конечной <точки> значение customBinding.

    2. bindingConfiguration Задайте атрибут элемента конечной <точки> значением, указанным в name атрибуте привязки для пользовательской <привязки>.

Пример

Следующий пример кода задает, что служба Service.HelloWorldService использует для взаимодействия с клиентами WSE 3.0 пользовательскую привязку. Пользовательская привязка задает, что для кодирования пересылаемых сообщений используется версия спецификация WS-Addressing от августа 2004 г. и набор спецификаций WS-Security 1.1. Защита сообщений обеспечивается с помощью режима проверки подлинности AnonymousForCertificate.

<configuration>
  <system.serviceModel>
    <services>
      <service
        behaviorConfiguration="ServiceBehavior"
        name="Service.HelloWorldService">
        <endpoint binding="customBinding" address=""
          bindingConfiguration="ServiceBinding"
          contract="Service.IHelloWorld"></endpoint>
      </service>
    </services>

    <bindings>
      <customBinding>
        <binding name="ServiceBinding">
          <security authenticationMode="AnonymousForCertificate"
                  messageProtectionOrder="SignBeforeEncrypt"
                  messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
                  requireDerivedKeys="false">
          </security>
          <textMessageEncoding messageVersion ="Soap11WSAddressingAugust2004"></textMessageEncoding>
          <httpTransport/>
        </binding>
      </customBinding>
    </bindings>
    <behaviors>
      <behavior name="ServiceBehavior" returnUnknownExceptionsAsFaults="true">
        <serviceCredentials>
          <serviceCertificate findValue="CN=WCFQuickstartServer" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectDistinguishedName"/>
        </serviceCredentials>
      </behavior>
    </behaviors>
  </system.serviceModel>
</configuration>

См. также