Compartir a través de


Cómo: Configurar los servicios WCF para interoperar con clientes de WSE 3.0

Los servicios de Windows Communication Foundation (WCF) son compatibles en el nivel de conexión con Web Services Enhancements 3.0 para clientes de Microsoft .NET (WSE) cuando los servicios de WCF se configuran para utilizar la versión de agosto de 2004 de la especificación WS-Addressing.

Para permitir a un servicio de WCF interoperar con clientes de WSE 3.0

  1. Defina un enlace personalizado para el servicio de WCF.

    Para especificar que la versión de agosto de 2004 de la especificación WS-Addressing se utiliza para la codificación de mensajes, se deberá crear un enlace personalizado.

    1. Agregue un customBinding Element secundario a <Bindings> del archivo de configuración del servicio.

    2. Especifique un nombre para el enlace, agregando binding element a customBinding Element y estableciendo el atributo name.

    3. Especifique un modo de autenticación y la versión de las especificaciones de WS-Security que se utilizan para proteger mensajes que son compatibles con WSE 3.0, agregando un Security element secundario a binding element.

      Para establecer el modo de autenticación, establezca el atributo authenicationMode de Security element. Un modo de autenticación es aproximadamente el equivalente a una aserción de seguridad lista para ser usada en WSE 3.0. La tabla siguiente asigna los modos de autenticación en WCF a las aserciones de seguridad listas para ser usadas en WSE 3.0.

      Modo de autenticación WCF Aserción de seguridad lista para ser usada de WSE 3.0

      AnonymousForCertificate

      anonymousForCertificateSecurity

      Kerberos

      kerberosSecurity

      MutualCertificate

      mutualCertificate10Security*

      MutualCertificate

      mutualCertificate11Security*

      UserNameOverTransport

      usernameOverTransportSecurity

      UserNameForCertificate

      usernameForCertificateSecurity

      * Una de las diferencias principales entre las aserciones de seguridad listas para ser usadas mutualCertificate10Security y mutualCertificate11Security es la versión de la especificación WS-Security que WSE utiliza para proteger los mensajes SOAP. Para mutualCertificate10Security, se utiliza WS-Security 1.0, mientras que WS-Security 1.1 se usa para mutualCertificate11Security. Para WCF, la versión de la especificación WS-Security se especifica en el atributo messageSecurityVersion de Security element.

      Para establecer la versión de la especificación WS-Security que se utiliza para proteger los mensajes SOAP, establezca el atributo messageSecurityVersion de Security element. Para interoperar con WSE 3.0, defina el valor del atributo messageSecurityVersion en WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10.

    4. Especifique que la versión de agosto de 2004 de la especificación WS-Addressing se utiliza por WCF agregando textMessageEncoding element y defina messageVersion en su valor de Soap11WSAddressingAugust2004.

      ms730049.note(es-es,VS.100).gifNota:
      Cuando utilice SOAP 1.2, establezca el atributo messageVersion en Soap12WSAddressingAugust2004.

  2. Especifique que el servicio utiliza el enlace personalizado.

    1. Establezca el atributo binding del elemento Service Endpoint en customBinding:

    2. Defina el atributo bindingConfiguration del elemento Service Endpoint en el valor especificado en al atributo name de binding element para el enlace personalizado.

Ejemplo

El ejemplo de código siguiente especifica que Service.HelloWorldService utiliza un enlace personalizado para interoperar con clientes de WSE 3.0. El enlace personalizado especifica que se utiliza la versión de agosto de 2004 del conjunto de especificaciones WS-Addressing y WS-Security 1.1 para codificar los mensajes intercambiados. Los mensajes se protegen utilizando el modo de autenticación 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>

Vea también

Tareas

Personalización de un enlace proporcionado por el sistema