seguridad remarks implementar example autenticacion c# wcf wcf-security

c# - remarks - WCF Transporte vs Mensaje



params comments c# (4)

Este link describe las razones para usar o no usar Seguridad de mensajes.

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

Un extracto del enlace:

Pros y contras de la seguridad de nivel de transporte

La seguridad del transporte tiene las siguientes ventajas:

No requiere que las partes que se comunican comprendan los conceptos de seguridad de nivel XML. Esto puede mejorar la interoperabilidad, por ejemplo, cuando se usa HTTPS para asegurar la comunicación.

Rendimiento generalmente mejorado.

Aceleradores de hardware están disponibles.

Streaming es posible.

La seguridad del transporte tiene las siguientes desventajas:

Hop-to-hop solamente.

Conjunto limitado y inextensible de credenciales.

Dependiente del transporte

Desventajas de la seguridad de nivel de mensaje

La seguridad del mensaje tiene las siguientes desventajas:

Actuación

No se puede usar la transmisión de mensajes.

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

Estaba leyendo acerca de las implementaciones de seguridad de WCF y descubrí que hay 2 tipos de seguridad: Transport Mode and Message Mode (or both)

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

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


La seguridad en WCF en realidad consiste en varias características . La diferencia entre esos dos es cómo se firman y cifran los mensajes.

La seguridad del 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 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 admite al menos parcialmente estos protocolos:

  • WS-Security 1.0 y 1.1: reglas básicas para cifrado, firma, transporte de tokens, marcas de tiempo, etc.
  • UserName token profile 1.0 - definición de token utilizado para transportar nombre de usuario 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 profile 1.1 - definición de token utilizado para transportar certificados.
  • Kerberos token profile 1.1 - definición de token utilizado para transportar tickets de Kerberos.
  • Perfil token SAML 1.1 1.0 y 1.1: definición del token utilizado para la 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 características 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 de SOAP) para el intercambio de credenciales de servicio.


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

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


Yo diría que en la mayoría de los casos debería ser suficiente con uno o el otro. 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.