Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los clientes de Windows Communication Foundation (WCF) son compatibles en cuanto a conexión con Web Service Enhancements (WSE) para los servicios de Microsoft .NET (3.0) cuando los clientes de WCF se configuran para utilizar la versión de agosto de 2004 de la especificación WS-Addressing. Sin embargo, los servicios WSE 3.0 no admiten el protocolo de intercambio de metadatos (MEX), de modo que al utilizar Service Metadata Utility Tool (SvcUtil.exe) para crear una clase de cliente WCF, la configuración de seguridad no se aplica al cliente WCF generado. Por consiguiente, debe especificar la configuración de seguridad que el servicio del WSE 3.0 requiere una vez generado el cliente WCF.
Puede aplicar esta configuración de seguridad utilizando un enlace personalizado para tener en cuenta los requisitos de servicio de WSE 3.0 y los requisitos interoperables entre un servicio del WSE 3.0 y un cliente WCF. Estos requisitos de interoperabilidad incluyen el uso mencionado anteriormente de agosto de 2004 de la especificación WS-Addressing y la protección predeterminada de mensajes de WSE 3.0 de SignBeforeEncrypt. La protección predeterminada de mensajes de WCF es SignBeforeEncryptAndEncryptSignature. En este tema se detalla cómo crear un enlace WCF que interopere con un servicio de WSE 3.0. WCF también proporciona un ejemplo que incorpora este enlace. Para obtener más información acerca de este ejemplo, vea Interoperating with WSE.
Obtener acceso al servicio Web WSE 3.0 con un cliente WCF
Ejecute Service Metadata Utility Tool (SvcUtil.exe) para crear un cliente WCF para el servicio Web de WSE 3.0.
Para un servicio Web de WSE 3.0, se crea un cliente WCF. Dado que WSE 3.0 no admite el protocolo MEX, no se puede utilizar la herramienta para recuperar los requisitos de seguridad del Servicio Web. El desarrollador de aplicaciones debe agregar la configuración de seguridad del cliente.
Para obtener más información acerca de creación de un cliente WCF, vea Creación de un cliente de Windows Communication Foundation.
Cree una clase que represente un enlace que puede comunicarse con los servicios Web WSE 3.0.
La clase siguiente forma parte del ejemplo Interoperating with WSE:
- Cree una clase que se derive de la clase Binding.
En el siguiente ejemplo de código se crea una clase denominadaWseHttpBinding, que se deriva de la clase Binding. - Agregue propiedades a la clase que especifiquen la aserción de llave en mano usada por el servicio WSE, si se requieren las claves derivadas, si se utilizan sesiones seguras, si se requieren confirmaciones de firmas, y la configuración de protección de mensajes. En WSE 3.0, una aserción de llave en mano especifica los requisitos de seguridad para un cliente o servicio Web, similar al modo de autenticación de un enlace en WCF.
El ejemplo de código siguiente define las propiedadesSecurityAssertion,RequireDerivedKeys,EstablishSecurityContextyMessageProtectionOrderque especifican la aserción de llave en mano de WSE, si se requieren claves derivadas, si se utilizan sesiones seguras, si se requieren confirmaciones de firmas, y la configuración de protección de mensajes, respectivamente. - Anule el método CreateBindingElements para definir las propiedades de enlace.
El ejemplo de código siguiente especifica el transporte, codificación de mensajes y configuración de protección de mensajes obteniendo los valores de las propiedadesSecurityAssertionyMessageProtectionOrder.
- Cree una clase que se derive de la clase Binding.
En el código de la aplicación cliente, agregue el código para definir las propiedades de enlace.
El ejemplo de código siguiente especifica que el cliente WCF debe utilizar protección de mensajes y autenticación tal y como define la aserción de seguridad de llave en mano AnonymousForCertificate de WSE 3.0. Además, se requieren sesiones seguras y claves derivadas.
Ejemplo
El ejemplo de código siguiente define un enlace personalizado que expone propiedades que corresponden a las propiedades de una aserción de seguridad de llave en mano WSE 3.0. Ese enlace personalizado, que se denomina WseHttpBinding, se utiliza a continuación para especificar las propiedades de enlace de un cliente WCF que se comunica con el ejemplo de Tutorial rápido de WSE 3.0 de WSSecurityAnonymous.