Compartir a través de


Vinculaciones y seguridad

Los enlaces proporcionados por el sistema incluidos con Windows Communication Foundation (WCF) ofrecen una manera rápida de programar aplicaciones WCF. Con una excepción, todos los enlaces tienen habilitado un esquema de seguridad predeterminado. Este tema le ayuda a seleccionar la vinculación adecuada según sus necesidades de seguridad.

Para obtener información general sobre la seguridad de WCF, consulte Introducción a la seguridad. Para obtener más información sobre cómo programar WCF mediante enlaces, vea Programación de la seguridad de WCF.

Si ya ha seleccionado un enlace, puede obtener más información sobre los comportamientos en tiempo de ejecución asociados a la seguridad en Comportamientos de seguridad.

Algunas funciones de seguridad no se pueden programar mediante los enlaces proporcionados por el sistema. Para obtener más control mediante un enlace personalizado, consulte Funcionalidades de seguridad con enlaces personalizados.

Funciones de seguridad de los enlaces

WCF incluye una serie de enlaces proporcionados por el sistema que satisfacen la mayoría de las necesidades. Si un enlace determinado no es suficiente, también puede crear un enlace personalizado. Para obtener una lista de enlaces proporcionados por el sistema, consulte System-Provided Enlaces. Para obtener más información sobre los enlaces personalizados, consulte Enlaces personalizados.

Cada enlace de WCF tiene dos formas: como API y como elemento XML usado en un archivo de configuración. Por ejemplo, el WSHttpBinding(API) tiene un homólogo en el <wsHttpBinding>.

En la sección siguiente se enumeran ambos formularios para cada enlace y se resumen las características de seguridad.

BasicHttp

En el código, use la clase BasicHttpBinding; en la configuración, use <basicHttpBinding>.

Este enlace está diseñado para su uso con una gama de tecnologías existentes, incluidas las siguientes:

  • ASP.NET servicios web (ASMX), versión 1.

  • Aplicaciones de mejoras de servicio web (WSE).

  • Perfil básico tal como se define en la especificación interoperabilidad de servicios web (WS-I) (https://go.microsoft.com/fwlink/?LinkId=38955).

  • Perfil de seguridad básico tal como se define en WS-I.

De forma predeterminada, este enlace no es seguro. Está diseñado para interoperar con servicios ASMX. Cuando se habilita la seguridad, el enlace está diseñado para una interoperación sin problemas con mecanismos de seguridad de Internet Information Services (IIS), como la autenticación básica, la síntesis y la seguridad integrada de Windows. Para obtener más información, consulte Introducción a la seguridad de transporte. Esta vinculación admite lo siguiente:

  • Seguridad de transporte HTTPS.

  • Autenticación básica HTTP.

  • WS-Security.

Para obtener más información, veaBasicHttpSecurity, BasicHttpMessageSecurity, BasicHttpMessageCredentialTypey BasicHttpSecurityMode.

WSHttpBinding

En el código, use la clase WSHttpBinding; en la configuración, use <wsHttpBinding>.

De forma predeterminada, este enlace implementa la especificación WS-Security y proporciona interoperabilidad con los servicios que implementan las especificaciones WS-*. Admite lo siguiente:

  • Seguridad de transporte HTTPS.

  • WS-Security.

  • Protección de transporte HTTPS con seguridad de credenciales de mensaje SOAP para autenticar al autor de la llamada.

Para más información, consulte WSHttpSecurity, MessageSecurityOverHttp, MessageCredentialType, SecurityMode, HttpTransportSecurity, HttpClientCredentialType y HttpProxyCredentialType.

WSDualHttpBinding

En el código, use la clase WSDualHttpBinding; en configuración, use <wsDualHttpBinding>.

Esta vinculación está diseñada para habilitar aplicaciones de servicios dúplex. Este enlace implementa la especificación de WS-Security para la seguridad de transferencia basada en mensajes. La seguridad de transporte no está disponible. De forma predeterminada, proporciona las siguientes características:

  • Implementa mensajería con WS-Reliable para proporcionar fiabilidad.

  • Implementa WS-Security para la seguridad y autenticación en la transferencia.

  • Usa HTTP para la entrega de mensajes.

  • Usa codificación de mensajes text/XML.

Mediante el uso de WS-Security (seguridad de capa del mensaje), el enlace le permite configurar los parámetros siguientes:

  • Conjunto de algoritmos de seguridad para determinar el algoritmo criptográfico.

  • Opciones de enlaces para lo siguiente:

    • Proporcionar credenciales de servicio disponibles fuera de banda en el cliente.

    • Proporcionar credenciales de servicio negociadas desde el servicio como parte de la configuración del canal.

Para obtener más información, vea WSDualHttpSecurity y WSDualHttpSecurityMode.

NetTcpBinding

En el código, use la clase NetTcpBinding; en la configuración, use <netTcpBinding>.

Este enlace está optimizado para la comunicación entre máquinas. De forma predeterminada, tiene las siguientes características:

  • Implementa la seguridad de nivel de transporte.

  • Utiliza la seguridad de Windows para la seguridad en la transferencia y la autenticación.

  • Usa TCP para el transporte.

  • Implementa la codificación de mensajes binarios.

  • Implementa mensajería WS-Reliable.

Entre las opciones se incluyen las siguientes:

  • Capa de seguridad de mensajes (mediante WS-Security).

  • Seguridad de transporte con credenciales de mensaje: confidencialidad e integridad proporcionadas por seguridad de la capa de transporte (TLS) a través de TCP y credenciales para la autorización proporcionada por WS-Security.

Para más información, consulte NetTcpSecurity, TcpTransportSecurity, TcpClientCredentialType, MessageSecurityOverTcp y MessageCredentialType.

NetNamedPipeBinding

En el código, use la clase NetNamedPipeBinding; en la configuración, use <netNamedPipeBinding>.

Este enlace está optimizado para la comunicación entre procesos (normalmente en la misma máquina). De forma predeterminada, este enlace tiene las siguientes características:

  • Usa la seguridad de transporte para la transferencia de mensajes y la autenticación.

  • Usa tuberías con nombre para la entrega de mensajes.

  • Implementa la codificación de mensajes binarios.

  • Cifrado y firma de mensajes.

Entre las opciones se incluyen las siguientes:

  • Autenticación mediante seguridad de Windows.

Para obtener más información, vea NetNamedPipeSecurity, NetNamedPipeSecurityMode y NamedPipeTransportSecurity.

MsmqIntegrationBinding

En el código, use la clase MsmqIntegrationBinding; en la configuración, use <msmqIntegrationBinding>.

Este enlace está optimizado para crear clientes y servicios WCF que interoperan con puntos de conexión de Microsoft Message Queuing (MSMQ) que no son WCF.

De forma predeterminada, este enlace usa la seguridad de transporte y proporciona las siguientes características de seguridad:

  • La seguridad se puede deshabilitar (None).

  • Seguridad de transporte de MSMQ (Transporte).

Para obtener más información, vea NetMsmqSecurity y NetMsmqSecurityMode.

NetMsmqBinding

En el código, use la clase NetMsmqBinding; en la configuración, use <netMsmqBinding>.

Esta vinculación está destinada para su uso al crear servicios WCF que requieren soporte de mensajes en cola de MSMQ.

De forma predeterminada, este enlace usa la seguridad de transporte y proporciona las siguientes características de seguridad:

  • La seguridad se puede deshabilitar (None).

  • Seguridad de transporte de MSMQ (Transporte).

  • Seguridad de mensajes basada en SOAP (mensaje).

  • Transporte simultáneo y seguridad de mensajes (ambos).

  • Tipos de credenciales de cliente admitidos: None, Windows, UserName, Certificate, IssuedToken.

La Certificate credencial solo se admite cuando el modo de seguridad está establecido en Both o Message.

Para obtener más información, vea MessageSecurityOverMsmq y MsmqTransportSecurity.

WSFederationHttpBinding

En el código, use la clase WSFederationHttpBinding; en la configuración, use <wsFederationHttpBinding>.

De forma predeterminada, este enlace usa WS-Security (seguridad de capa de mensaje).

Para obtener más información, vea Federación, WSFederationHttpSecurityy WSFederationHttpSecurityMode.

Enlaces personalizados

Si ninguno de los enlaces proporcionados por el sistema cumple los requisitos, puede crear un enlace personalizado con un elemento de enlace de seguridad personalizado. Para más información, consulte Funcionalidades de seguridad con enlaces personalizados.

Opciones de enlaces

En la tabla siguiente se resumen las características que se ofrecen en la configuración del modo de seguridad, es decir, enumera las características disponibles cuando el modo de seguridad está establecido Transporten , Messageo TransportWithMessageCredential. Use esta tabla para ayudarle a encontrar las características de seguridad que requiere la aplicación.

Configuración Características
Transporte Autenticación de servidor

Autenticación de cliente

Seguridad de punto a punto

Interoperabilidad

Aceleración de hardware

Capacidad de proceso elevada

Protección del firewall

Aplicaciones de alta latencia

Recifrado en múltiples saltos
Mensaje Autenticación de servidor

Autenticación de cliente

Seguridad de un extremo a otro

Interoperabilidad

Demandas altas

Federación

Autenticación multifactor

Tokens personalizados

Servicio de notario/marca de tiempo

Aplicaciones de alta latencia

Persistencia de firmas del mensaje
TransportWithMessageCredential Autenticación de servidor

Autenticación de cliente

Seguridad de punto a punto

Interoperabilidad

Aceleración de hardware

Capacidad de proceso elevada

Reclamaciones de cliente rico

Federación

Autenticación multifactor

Tokens personalizados

Protección del firewall

Aplicaciones de alta latencia

Recifrado en múltiples saltos

En la tabla siguiente se enumeran los enlaces que admiten la configuración de varios modos. Seleccione un enlace en la tabla que va a utilizar para crear su punto de conexión de servicio.

Enlace Compatibilidad del modo de transporte Soporte para el modo de mensaje Compatibilidad con TransportWithMessageCredential
BasicHttpBinding
WSHttpBinding
WSDualHttpBinding No No
NetTcpBinding
NetNamedPipeBinding No No
NetMsmqBinding No
MsmqIntegrationBinding No No
wsFederationHttpBinding No

Credenciales de transporte en los enlaces

En la tabla siguiente se enumeran los tipos de credenciales de cliente disponibles al usar BasicHttpBinding o WSHttpBinding en modo de seguridad de transporte.

Tipo Descripción
Ninguno Especifica que el cliente no necesita presentar ninguna credencial. Esto se traduce en un cliente anónimo.
Básico Autenticación básica. Para obtener más información, consulte RFC 2617 – Autenticación HTTP: Autenticación básica y implícita, disponible en https://go.microsoft.com/fwlink/?LinkId=84023.
Resumen Autenticación implícita. Para obtener más información, consulte RFC 2617 – Autenticación HTTP: Autenticación básica y implícita, disponible en https://go.microsoft.com/fwlink/?LinkId=84023.
NTLM Autenticación del Administrador de Redes NT (NTLM).
Windows Autenticación de Windows.
Certificado Autenticación realizada mediante un certificado.
IssuedToken Permite al servicio requerir que el cliente se autentique mediante un token emitido por un servicio de token de seguridad o por CardSpace. Para más información, consulte Federación y tokens emitidos.

Credenciales de cliente de mensaje en enlaces

En la tabla siguiente se enumeran los tipos de credenciales de cliente disponibles al usar un enlace en modo de seguridad de mensajes.

Tipo Descripción
Ninguno Permite que el servicio interactúe con clientes anónimos.
Windows Permite realizar intercambios de mensajes SOAP en el contexto autenticado de una credencial de Windows.
Nombre de usuario Permite al servicio requerir que el cliente se autentique mediante una credencial de nombre de usuario. Tenga en cuenta que cuando el modo de seguridad está establecido en TransportWithMessageCredential, WCF no admite el envío de una síntesis de contraseña ni derivar claves usando una contraseña, ni tampoco el uso de dichas claves para la seguridad en el modo de mensaje. Por lo tanto, WCF exige que el transporte esté protegido al usar credenciales de nombre de usuario.
Certificado Permite al servicio requerir que el cliente se autentique mediante un certificado.
IssuedToken Permite al servicio usar un servicio de token de seguridad para proporcionar un token personalizado.

Consulte también