Enlaces y seguridad

Los enlaces proporcionados por el sistema incluidos en Windows Communication Foundation (WCF) proporcionan una manera rápida de programar aplicaciones de WCF. Con una excepción, todos los enlaces tienen un esquema de seguridad predeterminado habilitó. Este tema le ayuda a seleccionar el enlace adecuado a sus necesidades de seguridad.

Para ver una introducción a la seguridad de WCF, consulte Introducción a la seguridad. Para más información sobre cómo programar WCF mediante enlaces, consulte Programación de la seguridad de WCF.

Si ya ha seleccionado un enlace, puede averiguar más sobre los comportamientos en tiempo de ejecución que se asocian a la seguridad en Comportamientos de seguridad.

Algunas funciones de seguridad no son programables mediante los enlaces proporcionados por el sistema. Para tener más control en el uso de un enlace personalizado, consulte Funcionalidades de seguridad con enlaces personalizados.

Funciones de seguridad de los enlaces

WCF incluye un número de enlaces proporcionados por el sistema que satisfacen la mayoría de las necesidades. Si a un enlace determinado no le basta, también puede crear un enlace personalizado. Para ver una lista de enlaces proporcionados por el sistema, consulte Enlaces proporcionados por el sistema. Para más información sobre los enlaces personalizados, consulte Enlaces personalizados.

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

La siguiente sección hace una lista de ambas formas para cada enlace y resume 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 un rango de tecnologías existentes, incluyendo las siguientes:

  • Servicios Web ASP.NET (ASMX), versión 1.

  • Aplicaciones de mejoras de servicios Web (WSE).

  • Perfil básico tal y como se define en la especificación Web Services Interoperability (WS-I) (https://go.microsoft.com/fwlink/?LinkId=38955).

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

De forma predeterminada, este enlace no es seguro. Está diseñado para interoperar con servicios ASMX. Cuando la seguridad está habilitada, el enlace está diseñado para ofrecer una interoperación perfecta con los mecanismos de seguridad de Internet Information Services (IIS), como la autenticación básica, el resumen y la seguridad integrada de Windows. Para más información, consulte Introducción a la seguridad de transporte. Este enlace admite lo siguiente:

  • Seguridad de transporte de 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 servicios que implementan las especificaciones WS - *. Admite lo siguiente:

  • Seguridad de transporte de HTTPS.

  • WS-Security.

  • Protección de transportes HTTPS con seguridad de credenciales de mensajes SOAP para autenticar al llamador.

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

WSDualHttpBinding

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

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

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

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

  • Utiliza HTTP para la entrega de mensajes.

  • Utiliza codificación de mensajes de texto/XML.

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

  • El 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 se optimiza para la comunicación entre equipos. De manera predeterminada, tiene las siguientes características:

  • Implementa la seguridad de nivel de transporte.

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

  • Utiliza TCP para el transporte.

  • Implementa la codificación de mensajes binarios.

  • Implementa mensajería WS-Reliable.

Entre las opciones posibles se encuentran las siguientes:

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

  • Seguridad de transporte con credencial de mensaje; confidencialidad e integridad proporcionadas por la seguridad del nivel de transporte (TLS) sobre 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 se optimiza para la comunicación entre procesos (normalmente en el mismo equipo). De forma predeterminada, este enlace tiene las características siguientes:

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

  • Utiliza canalizaciones con nombre para la entrega de mensajes.

  • Implementa la codificación de mensajes binarios.

  • Cifrado y firmado de mensajes.

Entre las opciones posibles se encuentran las siguientes:

  • Autenticación utilizando la 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 de WCF.

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

  • La seguridad se puede deshabilitar (Ninguno).

  • 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>.

Este enlace está pensado para usarse al crear servicios WCF que requieran compatibilidad con mensajes en cola de MSMQ.

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

  • La seguridad se puede deshabilitar (Ninguno).

  • Seguridad de transporte de MSMQ (Transporte).

  • Seguridad de mensajes basados en SOAP (Mensaje)

  • Transporte y seguridad de mensajes simultáneos (Ambos).

  • Tipos de credenciales de cliente admitidos: None (ninguno), Windows, UserName (nombre de usuario), Certificate (certificado), IssuedToken (token emitido).

Se admite la credencial Certificate solo 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 utiliza WS-Security (seguridad de nivel de mensaje).

Para más información, consulte Federación, WSFederationHttpSecurity y WSFederationHttpSecurityMode.

Enlaces personalizados

Si ninguno de los enlaces proporcionados por el sistema cumple sus 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

La tabla siguiente resume las características proporcionadas en la configuración del modo de seguridad, es decir, hace una lista de las características disponibles cuando el modo de seguridad se establece en Transport, Messageo TransportWithMessageCredential. Utilice esta tabla para encontrar las características de seguridad que requiere su 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

Firewall seguro

Aplicaciones de la latencia alta

Recifrado en múltiples saltos
Message 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 la latencia alta

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

Demandas altas de cliente

Federación

Autenticación multifactor

Tokens personalizados

Firewall seguro

Aplicaciones de la latencia alta

Recifrado en múltiples saltos

La tabla siguiente hace una lista de los enlaces que admiten los diversos ajustes de 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 Compatibilidad del modo de mensaje Compatibilidad con TransportWithMessageCredential
BasicHttpBinding
WSHttpBinding
WSDualHttpBinding No No
NetTcpBinding
NetNamedPipeBinding No No
NetMsmqBinding No
MsmqIntegrationBinding No N.º
wsFederationHttpBinding No

Credenciales de transporte en los enlaces

La tabla siguiente enumera los tipos de credenciales de cliente disponibles al utilizar BasicHttpBinding o WSHttpBinding en modo de seguridad de transporte.

Tipo Descripción
None Especifica que el cliente no necesita presentar ningún credencial. Realiza una conversión a un cliente anónimo.
Básico Autenticación básica. Para más información, consulte el documento de RFC 2617 Autenticación: autenticación básica y de resumen, disponible en https://go.microsoft.com/fwlink/?LinkId=84023.
Digest Autenticación implícita. Para más información, consulte el documento de RFC 2617 Autenticación: autenticación básica y de resumen, disponible en https://go.microsoft.com/fwlink/?LinkId=84023.
NTLM Autenticación NT LAN Manager (NTLM).
Windows Autenticación de Windows.
Certificado Autenticación realizada utilizando un certificado.
IssuedToken Permite al servicio exigir 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

La tabla siguiente enumera los tipos de credenciales de cliente disponibles al utilizar un enlace en el modo de seguridad de mensajes.

Tipo Descripción
None Permite al servicio interactuar con clientes anónimos.
Windows Permite a los intercambios de mensajes SOAP realizarse bajo el contexto autenticado de una credencial de Windows.
UserName Permite que el servicio requiera que el cliente se autentique con una credencial del nombre de usuario. Tenga en cuenta que, cuando el modo de seguridad está establecido en TransportWithMessageCredential, WCF no permite enviar un resumen de contraseña o derivar claves utilizando la contraseña y usar tales claves para la seguridad del modo de mensajes. Como tal, WCF exige que el transporte esté protegido cuando se usan credenciales de nombre de usuario.
Certificado Permite al servicio exigir la autenticación del cliente mediante un certificado.
IssuedToken Permite al servicio utilizar un servicio de token de seguridad para proporcionar un token personalizado.

Consulte también