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 obtener información general sobre la seguridad de WCF, vea Información general sobre seguridad. Para obtener más información acerca de programación de WCF usando enlaces, vea 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 en WCF.

Algunas funciones de seguridad no son programables mediante los enlaces proporcionados por el sistema. Para obtener más control mediante un enlace personalizado, vea Capacidades 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 obtener una lista de enlaces proporcionados por el sistema, vea Enlaces proporcionados por el sistema. Para obtener más información acerca de enlaces personalizados, vea Enlaces personalizados.

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

La siguiente sección hace una lista de ambas formas para cada enlace y resume las funciones de seguridad.

BasicHttp

En código, utilice la clase BasicHttpBinding; en configuración, utilice basicHttpBinding Element.

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 obtener más información, consulte Información general de la seguridad del transporte. Este enlace admite lo siguiente:

  • Seguridad de transporte de HTTPS.
  • Autenticación básica HTTP
  • WS-Security.

Para obtener más información, consulte BasicHttpSecurity, BasicHttpMessageSecurity, BasicHttpMessageCredentialType, y BasicHttpSecurityMode.

WSHttpBinding

En código, utilice la clase WSHttpBinding; en configuración, utilice wsHttpBinding Element.

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 obtener más información, consulte WSHttpSecurity, MessageSecurityOverHttp, MessageCredentialType, SecurityMode, HttpTransportSecurity, HttpClientCredentialType, y HttpProxyCredentialType.

WSDualHttpBinding

En código, utilice la clase WSDualHttpBinding; en configuración, utilice wsDualHttpBinding Element.

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, consulte WSDualHttpSecurity y WSDualHttpSecurityMode.

NetTcpBinding

En código, utilice la clase NetTcpBinding; en configuración, utilice netTcpBinding Element.

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:

  • Seguridad de nivel de mensaje (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 obtener más información, consulte NetTcpSecurity, TcpTransportSecurity, TcpClientCredentialType, MessageSecurityOverTcp, y MessageCredentialType.

NetNamedPipeBinding

En código, utilice la clase NetNamedPipeBinding; en configuración, utilice netNamedPipeBinding Element.

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, consulte , NetNamedPipeSecurity, NetNamedPipeSecurityMode y NamedPipeTransportSecurity.

MsmqIntegrationBinding

En código, utilice la clase MsmqIntegrationBinding; en configuración, utilice msmqIntegrationBinding element.

Este enlace está optimizado para crear clientes y servicios de WCF que interoperan con extremos de Message Queue Server de Microsoft (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, consulte NetMsmqSecurity y NetMsmqSecurityMode.

NetMsmqBinding

En código, utilice la clase NetMsmqBinding; en configuración, utilice netMsmqBinding Element.

Este enlace está pensado para usarlo al crear servicios de WCF que requieran compatibilidad de 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 sólo cuando el modo de seguridad está establecido en Both o Message.

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

WSFederationHttpBinding

En código, utilice la clase WSFederationHttpBinding; en configuración, utilice WSFederationHttpBinding element.

De forma predeterminada, este enlace utiliza WS-Security (seguridad de nivel de mensaje).

Para obtener 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 obtener más información, consulte Capacidades 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 Funciones

Transporte

Autenticación de servidor

Autenticación de cliente

Seguridad de punto a punto

Interoperabilidad

Aceleración de hardware

Rendimiento alto

Firewall seguro

Aplicaciones de la latencia alta

Recifrado en múltiples saltos

Mensaje

Autenticación de servidor

Autenticación de cliente

Seguridad de extremo a extremo

Interoperabilidad

Demandas altas

Federación

Autenticación de 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

Rendimiento alto

Demandas altas de cliente

Federación

Autenticación de 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 extremo de servicio.

Enlace Compatibilidad del modo de transporte Compatibilidad del modo de mensaje Compatibilidad de TransportWithMessageCredential

BasicHttpBinding

WSHttpBinding

WSDualHttpBinding

No

No

NetTcpBinding

NetNamedPipeBinding

No

No

NetMsmqBinding

No

MsmqIntegrationBinding

No

No

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

Ninguno

Especifica que el cliente no necesita presentar ningún credencial. Realiza una conversión a un cliente anónimo.

Básica

Autenticación básica. Para obtener más información, consulte RFC 2617 – HTTP Authentication: Basic and Digest Authentication, disponible en https://go.microsoft.com/fwlink/?LinkId=84023.

Implícita

Autenticación implícita. Para obtener más información, consulte RFC 2617 – HTTP Authentication: Basic and Digest Authentication, 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 requerir que el cliente se autentique utilizando un token emitido por un servicio de tokens de seguridad o mediante CardSpace. Para obtener 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 utilizar tales claves para la seguridad del modo de mensajes. Como tal, WCF garantiza que el transporte se proteja al usar credenciales de nombres de usuario.

Certificate

Permite al servicio exigir la autenticación del cliente mediante un certificado.

IssuedToken

Permite al servicio utilizar un servicio de tokens de seguridad para proporcionar un token personalizado.

Consulte también

Conceptos

Información general sobre seguridad
Selección de tipos de credenciales
Comportamientos de seguridad en WCF

Otros recursos

Protección de servicios y clientes
Capacidades de seguridad con enlaces personalizados