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
, Message
o 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 |
Sí | Sí | Sí |
WSHttpBinding |
Sí | Sí | Sí |
WSDualHttpBinding |
No | Sí | No |
NetTcpBinding |
Sí | Sí | Sí |
NetNamedPipeBinding |
Sí | No | No |
NetMsmqBinding |
Sí | Sí | No |
MsmqIntegrationBinding |
Sí | No | N.º |
wsFederationHttpBinding |
No | Sí | Sí |
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. |