2011-04-15 25 views
43

que estaba leyendo acerca de las implementaciones de seguridad WCF y descubrió que hay 2 tipos de seguridad: Transport Mode and Message Mode (or both)WCF Transporte vs mensaje

Si usara HTTPS para el modo de transporte, está más asegurado si usara la seguridad de mensajes también? Estoy preguntando esto porque lo que entiendo es el siguiente:

https usa el protocolo SSL que encripta los mensajes ... entonces, ¿por qué debería agregar Message Security y encriptar el mensaje SSL encriptado? o estoy malentendiendo cosas?

Respuesta

80

Seguridad en WCF realidad consists of several features. La diferencia entre esos dos es cómo se firman y cifran los mensajes.

La seguridad de transporte proporciona solo seguridad de canal punto a punto. Significa que HTTPS establece un canal seguro solo entre el cliente y el servidor expuestos al cliente. Pero si este servidor es solo un equilibrador de carga o un servidor proxy inverso, tiene acceso directo al contenido del mensaje.

La seguridad de los mensajes proporciona seguridad de canal de extremo a extremo. Significa que la seguridad es parte de los datos transferidos y que solo el destino previsto puede descifrar los datos (el equilibrador de carga o el proxy solo ve el mensaje encriptado). La seguridad de mensajes en la mayoría de los casos también usa certificados para proporcionar cifrado y firma, pero generalmente es más lenta porque la seguridad del transporte puede usar la aceleración HW.

En los escenarios avanzados, estos métodos se pueden combinar. Por ejemplo, puede tener comunicación con su equilibrador de carga protegido por HTTPS porque confía en su red interna después del equilibrador de carga, pero al mismo tiempo puede tener el mensaje firmado (seguridad del mensaje) para que pueda probar que no se modificó.

Otra diferencia entre esos dos es que la seguridad del transporte está relacionada con el protocolo de transporte único mientras que la seguridad del mensaje es independiente del protocolo de transporte.

La seguridad de los mensajes se basa en protocolos interoperables (pero tenga en cuenta que no todas las configuraciones en WCF son interoperables). WCF apoya al menos parcialmente estos protocolos:

  • WS-Security 1.0 y 1.1 - reglas básicas para el cifrado, la firma, el transporte de contadores, marcas de tiempo, etc.
  • NombreUsuario perfil de contadores 1,0 - definición de símbolo usado para el transporte de usuario nombre y contraseña Esta especificación se implementa solo parcialmente porque WCF de fábrica no admite la contraseña digerida y requiere el uso de este token con cifrado de transporte o mensaje.
  • X509 token perfil 1.1 - definición de token utilizado para el transporte de certificados.
  • Kerberos token profile 1.1 - definición de token utilizado para transportar tickets de Kerberos.
  • SAML 1.1 token perfil 1.0 y 1.1 - definición de token utilizado para seguridad federada. SAML 2.0 es proporcionado por WIF.
  • WS-SecurityPolicy 1.1 y 1.2: proporciona soporte para definir la aserción de seguridad en WSDL.
  • WS-SecureConversation 1.3 y febrero de 2005: proporciona soporte para la sesión de seguridad donde las credenciales se intercambian solo durante la primera llamada y el resto de la comunicación usa un token de seguridad único.
  • WS-Trust 1.3 y febrero de 2005: proporciona soporte para escenarios federados y servicios de token de seguridad (STS).

WCF también es compatible con WS-I Basic Security Profile 1.0, que es solo un subconjunto de los protocolos anteriores con la configuración prescrita.

Para funciones no interoperables, WCF ofrece características como seguridad de Windows o TLSNego y SPNego (ambos deben ser generalmente interoperables pero no están disponibles en muchas pilas SOAP) para el intercambio de credenciales de servicio.

+4

+1 Buen resumen. – razlebe

+0

Parece que conoces una gran cantidad de WCF y tal vez puedas ayudarme con [esto] (http://stackoverflow.com/q/8273698/90424) pregunta, y tal vez esté relacionado con el perfil de token X509 que mencionaste, y No tengo cheque. – DkAngelito

+0

Lo siento, soy lento pero todavía tengo problemas para entender la seguridad de salto a salto, si usa seguridad de transporte ¿significa que el mensaje solo está seguro en el cliente y el servidor? es decir, ¿el mensaje puede ser manipulado durante la transmisión? – TheWommies

0

También hay casos en los que es posible que no pueda cifrar el nivel de transporte y, por lo tanto, retroceder al cifrado del nivel de mensajes, que es un poco menos seguro que la seguridad del nivel de transporte.

Hacer ambas cosas será más seguro, claro. Pero es un poco exagerado cuando tienes una buena seguridad de nivel de transporte.

0

Yo diría que en la mayoría de los casos debería ser suficiente con una u otra. Si puede usar la seguridad del nivel de transporte, esto es preferible ya que encripta toda la comunicación, no solo el contenido del mensaje.

5

Este link describe las razones para utilizar o no la seguridad de mensajes.

Básicamente, se prefiere la seguridad del transporte a menos que no se pueda usar.

Un extracto lado a otro el enlace:

pros y contras de Transporte de nivel Seguridad

La seguridad del transporte tiene las siguientes ventajas:

no requiere que los partes que se comunican comprender conceptos de seguridad de nivel XML. Esto puede mejorar la interoperabilidad, para el ejemplo , cuando se usa HTTPS para asegurar la comunicación.

Rendimiento en general mejorado.

aceleradores de hardware están disponibles.

Streaming is possible.

La seguridad del transporte tiene las siguientes desventajas :

Hop-a-Hop solamente.

Conjunto limitado e inextensible de credenciales.

Depende del transporte.

desventajas de mensaje de nivel Seguridad

seguridad mensaje tiene las siguientes desventajas :

Rendimiento

No se puede utilizar el mensaje de streaming.

Requiere la implementación de mecanismos de seguridad de nivel XML y compatibilidad con especificación WS-Security. Esto podría afectar la interoperabilidad.

+2

¡Hola! Hay algo que no entiendo: dices "Básicamente, la seguridad del transporte es preferible a menos que no se pueda usar". - ¿En qué se basa esa declaración? El enlace proporcionado no dice nada ni cerca de eso. – Yogster