Compartir a través de


Seguridad distribuida de aplicaciones

La seguridad Windows Communication Foundation (WCF) se divide en tres áreas funcionales principales: seguridad de transferencia, control de acceso y auditoría. La seguridad de transferencia proporciona integridad, confidencialidad y autenticación. La seguridad de transferencia la proporciona uno de los siguientes elementos: seguridad de transporte, seguridad de mensajes o TransportWithMessageCredential.

Para obtener información general sobre la seguridad de mensajes WCF, consulte Información general sobre seguridad. Para obtener más información sobre las otras dos partes de la seguridad WCF, consulte Autorización y Auditoría.

Escenarios de seguridad de transferencia

Entre los escenarios comunes que emplean la seguridad de transferencia WCF se incluyen los siguientes:

  • Transferencia segura mediante Windows. Un cliente y un servicio WCF se implementan en un dominio de Windows (o un bosque de Windows). Los mensajes contienen datos personales, por lo que entre los requisitos se incluye la autenticación mutua de cliente y servicio, la integridad y la confidencialidad de los mensajes. Además, se requiere la prueba de que una transacción determinada se produjo, por ejemplo, el receptor del mensaje debería registrar la información de la firma.

  • Transferencia segura mediante UserName y HTTPS. Es necesario desarrollar un cliente y un servicio WCF para que funcionen a través de Internet. Las credenciales de clientes se autentican frente a una base de datos de pares de nombres de usuario y contraseñas. El servicio se implementa en una dirección HTTPS utilizando un certificado Secure Sockets Layer (SSL) de confianza. Dado que los mensajes viajan a través de Internet, el cliente y servicio deben autenticarse mutuamente y se debe preservar la confidencialidad e integridad de los mensajes durante la transferencia.

  • Transferencia segura mediante el uso de certificados. Es necesario desarrollar un cliente y un servicio WCF para que funcionen a través de la red pública de Internet. El cliente y el servicio tienen certificados que se pueden utilizar para proteger los mensajes. El cliente y el servicio utilizan Internet para comunicarse entre sí y realizar transacciones de valor alto que requieren integridad del mensaje, confidencialidad y autenticación mutua.

Integridad, confidencialidad y autenticación

Tres funciones se llaman conjuntamente seguridad de transferencia: integridad, confidencialidad y autenticación. La seguridad de transferencia proporciona funciones que ayudan a mitigar las amenazas para una aplicación distribuida. La siguiente tabla describe brevemente las tres funciones que constituyen la seguridad de transferencia.

Función Descripción
Integridad La integridad es la garantía de que los datos son completos y precisos, sobre todo después de que hayan pasado desde un punto a otro y posiblemente los hayan leído muchos actores. La integridad debe mantenerse para evitar la modificación de los datos y normalmente se logra mediante la firma digital de un mensaje.
Confidencialidad La confidencialidad es la garantía de que un mensaje no lo ha leído nadie más que el lector para el que estaba destinado. Por ejemplo, un número de tarjeta de crédito se debe mantener de manera confidencial al enviarse a través de Internet. La confidencialidad es a menudo proporcionada por el cifrado de datos utilizando un esquema de clave pública/privada.
Authentication La autenticación es la comprobación de una identidad reclamada. Por ejemplo, al utilizar una cuenta bancaria, es imperativo que solo el propietario real de la cuenta pueda retirar los fondos. Diversos recursos pueden proporcionar la autenticación. Un método común es el sistema de usuario/contraseña. Otro método consiste en el uso de un certificado X.509 proporcionado por un tercero.

Modos de seguridad

WCF tiene varios modos de seguridad de transferencia, que se describen en la siguiente tabla.

Mode Descripción
None No se proporciona ninguna seguridad en el nivel de transporte o en el nivel del mensaje. Ninguno de los enlaces predefinidos usa este modo de forma predeterminada, excepto el elemento <basicHttpBinding> o, si se usa código, la clase BasicHttpBinding.
Transporte Utiliza un transporte seguro como HTTPS para la integridad, confidencialidad y autenticación mutua.
Message Utiliza seguridad del mensaje SOAP para la integridad, confidencialidad y autenticación mutua. Los mensajes SOAP se protegen según los estándares de WS-Security.
Modo mixto Utiliza la seguridad de transporte para la integridad, confidencialidad y autenticación de servidor. Utiliza la seguridad de mensajes (WS-Security y otros estándares) para la autenticación del cliente.

(Esta enumeración para este modo es TransportWithMessageCredential.)
Ambos Lleva a cabo la protección y autenticación en ambos niveles. Este modo solo está disponible en el elemento <netMsmqBinding>.

Seguridad de transferencia y credenciales

Una credencial son datos que se presentan para establecer una identidad reclamada o funcionalidades. La presentación de una credencial implica la presentación de los datos y de la prueba de posesión de los datos. WCF admite varios tipos de credenciales en los niveles de seguridad de transporte y de mensajes. Puede especificar un tipo de credencial para un enlace WCF.

En muchos países o regiones, un permiso de conducción es un ejemplo de credencial. Un permiso contiene datos que representan la identidad y las capacidades de cada uno. Contiene prueba de posesión en forma de la imagen del poseedor. Una entidad emisora de confianza emite la licencia; normalmente, un departamento gubernamental de licencias. Se sella la licencia, que puede contener un holograma, que muestra que no se ha manipulado o falsificado.

Como ejemplo, considere dos tipos de credenciales compatibles con WC: el nombre de usuario y las credenciales deL certificado (X.509).

Para la credencial de nombre de usuario, el nombre de usuario representa la identidad reivindicada y la contraseña constituye la prueba de posesión. La autoridad de confianza en este caso es el sistema que valida el nombre de usuario y la contraseña.

En la credencial del certificado, el nombre del sujeto, el nombre alternativo del sujeto o los campos concretos dentro del certificado se puede utilizar para representar la identidad y/o funciones reivindicadas. La prueba de posesión de los datos en la credencial se establece mediante el uso de la clave privada asociada para generar una firma.

Para obtener más información sobre la programación de la seguridad de transferencia y la especificación de credenciales, consulte Enlaces y seguridad y Comportamientos de seguridad.

Tipos de credenciales de cliente de transporte

La siguiente tabla muestra los posibles valores utilizados al crear una aplicación que utiliza la seguridad de transferencia. Puede utilizar estos valores en código o ajustes de enlaces.

Configuración Descripción
None Especifica que el cliente no necesita presentar ningún credencial. Realiza una conversión a un cliente anónimo.
Básico Especifica la autenticación básica. Para obtener más información, consulte RFC2617, "Autenticación HTTP: autenticación básica e implícita".
Digest Especifica la autenticación implícita. Para obtener más información, consulte RFC2617, "Autenticación HTTP: autenticación básica e implícita".
Ntlm Especifica autenticación de Windows mediante negociación SSPI en un dominio de Windows.

La negociación SSPI resulta en el uso del protocolo Kerberos o NT LanMan (NTLM).
Windows Especifica autenticación de Windows utilizando SSPI en un dominio de Windows. SSPI escoge del protocolo Kerberos o NTLM como servicio de autenticación.

SSPI prueba primero el protocolo Kerberos; si eso falla, utiliza NTLM.
Certificado Realiza la autenticación de cliente utilizando un certificado, normalmente X.509.

Tipos de credencial de cliente de mensaje

La siguiente tabla muestra los posibles valores utilizados al crear una aplicación que utiliza la seguridad de mensajes. Puede utilizar estos valores en código o ajustes de enlaces.

Configuración Descripción
None Permite al servicio interactuar con clientes anónimos.
Windows Permite a los intercambios de mensajes SOAP ocurrir bajo el contexto autenticado de una credencial de Windows. Utiliza el mecanismo de negociación de SSPI para escoger entre el protocolo Kerberos o NTLM como servicio de autenticación.
Nombre de usuario Permite al servicio requerir que el cliente se autentique con una credencial de nombre de usuario. Tenga en cuenta que WCF no permite ninguna operación criptográfica con el nombre de usuario, como generar una firma o cifrar los datos. 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.
CardSpace Permite que el servicio necesite la autenticación del cliente mediante un CardSpace.

Programación de credenciales

Para cada uno de los tipos de credenciales de cliente, el modelo de programación WCF le permite especificar los valores de credenciales y los validadores de credenciales mediante comportamientos de servicio y de canal.

La seguridad WCF tiene dos tipos de credenciales: comportamientos de credenciales de servicio y comportamientos de credenciales de canal. Los comportamientos de credenciales en WCF especifican los datos reales, es decir, las credenciales que se usan para cumplir los requisitos de seguridad que se expresan a través de enlaces. En WCF, una clase de cliente es el componente en tiempo de ejecución que convierte entre la invocación de operaciones y los mensajes. Todos los clientes heredan de la clase ClientBase<TChannel>. La propiedad ClientCredentials en la clase base permite especificar varios valores de credenciales del cliente.

En WCF, los comportamientos de servicio son atributos que se aplican a la clase que implementa un contrato de servicios (interfaz) para controlar mediante programación el servicio. La clase ServiceCredentials le permite especificar certificados para la configuración de la validación de cliente y credenciales de servicio para varios tipos de credenciales de cliente.

Modelo de negociación para la seguridad de mensajes

El modo de seguridad de mensajes le permite realizar la seguridad de transferencia para que la credencial del servicio se configure en el cliente fuera de banda. Por ejemplo, si está utilizando un certificado almacenado en el almacén de certificados de Windows, debe utilizar una herramienta como el complemento Microsoft Management Console (MMC).

El modo de seguridad de mensajes también permite aplicar la seguridad de transferencia para que la credencial del servicio se intercambie con el cliente como parte de una negociación inicial. Para habilitar la negociación, establezca la propiedad NegotiateServiceCredential en true.

Consulte también