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 |
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 |
No |
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 |
---|---|
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