Seguridad de los mensajes en WCF
Windows Communication Foundation (WCF) tiene dos modos principales para proporcionar seguridad (Transport y Message) y un tercer modo (TransportWithMessageCredential) que combina los dos. Este tema trata la seguridad del mensaje y las razones para utilizarla.
¿Qué es Seguridad de mensaje?
Seguridad de mensaje utiliza la especificación de WS-Security para proteger los mensajes. La especificación describe las mejoras en mensajería SOAP para asegurar confidencialidad, integridad y autenticación en el nivel del mensaje SOAP (en lugar del nivel de transporte).
En resumen, la seguridad de mensaje difiere de la seguridad de transporte encapsulando las credenciales de seguridad y notificaciones con cada mensaje junto con cualquier protección del mensaje (firma o cifrado). La aplicación directa de seguridad al mensaje modificando su contenido permite que el mensaje seguro sea autónomo con respecto a los aspectos de seguridad. Esto habilita algunos escenarios que no son posibles cuando se utiliza la seguridad de transporte.
Razones para utilizar Seguridad del mensaje
En seguridad de nivel de mensaje, toda la información de seguridad se encapsula en el mensaje. Proteger el mensaje con seguridad de nivel de mensaje en lugar de seguridad de nivel de transporte tiene las siguientes ventajas:
- Seguridad global. Un transporte seguro, como Capa de sockets seguros (SSL) sólo funciona cuando la comunicación es de punto a punto. Si el mensaje se dirige a uno o más intermediarios de SOAP antes de alcanzar el receptor final, el propio mensaje no está protegido cuando un intermediario lo lee desde la conexión. Además, la información de autenticación del cliente está disponible solamente para el primer intermediario y debe ser transmitida al último recibido en modo fuera de banda, si es necesario. Esto se aplica incluso en el caso de que la ruta completa utilice la seguridad de SSL entre los saltos individuales. Dado que el modo de seguridad funciona directamente con el mensaje y protege el XML en él, la seguridad permanece con el mensaje sin tener en cuenta cuántos intermediarios están implicados con el mensaje antes de alcanzar el receptor final. Esto habilita el verdadero escenario de seguridad global.
- Más flexibilidad. Se pueden firmar o cifrar las partes del mensaje, en lugar del mensaje completo. Esto significa que los intermediarios pueden ver las partes del mensaje diseñadas para ellos. Si el remitente necesita que parte de la información en el mensaje sea visible a los intermediarios, pero desea asegurarse que no se manipula, simplemente puede firmarlo sin cifrarlo. Puesto que la firma forma parte del mensaje, el receptor final puede comprobar que ha recibido la información del mensaje intacta. Un escenario podría tener un servicio intermediario de SOAP que dirige el mensaje que otorga el valor de encabezado de Acción. De forma predeterminada, WCF no cifra el valor de la acción sino que lo firma si se utiliza el modo de seguridad. Por consiguiente, todos los intermediarios pueden tener acceso a esta información, pero nadie puede cambiarla.
- Compatibilidad con varios transportes. Puede enviar mensajes seguros sobre muchos transportes diferentes, como canalizaciones con nombre y TCP, sin tener que confiar en el protocolo para la seguridad. Con seguridad de nivel de transporte, toda la información de seguridad es delimitada a una conexión de transporte determinada única y no está disponible desde el propio contenido del mensaje. La seguridad de mensaje protege el mensaje sin tener en cuenta el transporte que usted utiliza para transmitir el mensaje y el contexto de seguridad se incrusta directamente dentro del mensaje.
- Compatibilidad con un amplio conjunto de credenciales y notificaciones. La seguridad del mensaje está basada en la especificación WS-Security, que proporciona un marco extensible capaz de transmitir cualquier tipo de notificación dentro del mensaje SOAP. A diferencia de la seguridad de transporte, el conjunto de mecanismos de autenticación, o las notificaciones, que puede utilizar no están limitados por las funciones del transporte. La seguridad del mensaje WCF incluye varios tipos de autenticación y transmisión de notificación y se puede extender para admitir tipos adicionales, si es necesario. Por esas razones, por ejemplo, no es posible un escenario de credenciales asociado sin seguridad de mensaje. Para obtener más información acerca de los escenarios de federación que WCF admite, consulte Federación y tokens emitidos.
Cómo comparan el mensaje y seguridad de transporte
Ventajas y desventajas de Seguridad de nivel de transporte
La seguridad de transporte tiene las ventajas siguientes:
- No requiere que las partes en comunicación entiendan los conceptos de seguridad del nivel de XML. Por ejemplo, esto puede mejorar la interoperabilidad cuando HTTPS se utiliza para proteger la comunicación.
- Rendimiento generalmente mejorado.
- Los aceleradores del hardware están disponibles.
- La transmisión es posible.
La seguridad de transporte tiene los siguientes inconvenientes:
- Sólo salto a salto.
- Conjunto de credenciales limitado e improrrogable.
- Dependiente de transporte.
Desventajas de Seguridad del nivel de mensaje
La seguridad de mensaje tiene las siguientes desventajas:
- Rendimiento
- No puede utilizar transmisión de mensaje.
- Requiere implementación de mecanismos de seguridad de nivel XML y admite especificación WS-Security. Esto podría afectar a la interoperabilidad.
Consulte también
Tareas
Cómo utilizar seguridad de transporte y credenciales de mensajes
Otros recursos
Protección de servicios y clientes
Seguridad de transporte
Microsoft Patterns and Practices, Chapter 3: Implementing Transport and Message Layer Security