¿Qué seguridad se usa por defecto en WSHttpBinding (lado del servicio) o el cliente de prueba WCF (lado del cliente)?

8

Recientemente moví un servicio de BasicHttpBinding a WSHttpBinding (es decir, SOAP 1.1 -> SOAP 1.2). En WCF , el uso de WSHttpBinding () hace que comience a usar algunas configuraciones de seguridad predeterminadas. Supongo que WCF Test Client también usa la misma configuración de seguridad predeterminada, ya que el cliente y el servidor pueden continuar hablando después de cambiar al WSHttpBinding 'seguro'. En Fiddler, he confirmado esta configuración de seguridad, ya que puedo presenciar apretones de manos de seguridad más complejos de la solicitud-respuesta previamente simple, es decir

Antes: (BasicHttpBinding)

  1. [HttpRequest] (solicitud SOAP en claro)

    [HttpResponse] (respuesta SOAP en claro)

Después: (WSHttpBinding)

  1. [HttpRequest] RequestSecurityToken

    [HttpResponse] RequestSecurityTokenResponse

  2. [HttpRequest] RequestSecurityToken

    [HttpResponse] RequestSecurityTokenResponse

  3. [HttpRequest] RequestSecurityTokenResponse

    [HttpResponse] RequestSecurityTokenResponseCollection

  4. [HttpRequest] EncryptedData

    [HttpResponse] EncryptedData

  5. [HttpRequest] EncryptedData (solicitud de nivel de aplicación real)

    [HttpResponse] EncryptedData (respuesta de nivel de aplicación real)

Así que puedo asumir con seguridad que se está aplicando la seguridad. Ahora a las preguntas:

Pregunta 1: ¿Cuáles son las configuraciones de seguridad? Nunca le dije a WCF de ningún proveedor de membresía. De hecho, no tengo ninguna tabla (SQL o XML) de nombres de usuario <-> contraseñas. Entonces, ¿qué tipo de autenticación está sucediendo? Aunque WCF Test Client puede autenticarse como anteriormente, SoapUI no detecta estos valores predeterminados de Microsoft .NET y tiene problemas. SoapUI intenta comunicaciones de texto claro y luego el servidor responde con un error de token de seguridad incorrecto.

Pregunta 2: ¿Cuál es el modelo de seguridad más utilizado para SOAP 1.2? ¿Es a través de certificados o contraseñas de nombre de usuario o resumen o _____? ¿Cómo se almacenan esas credenciales (SQL / XML) y se configuran en el lado del servidor WCF?

DeepSpace101
fuente

Respuestas:

7

Bueno, el famoso WSHTTPBinding. Causa mucho dolor para las plataformas que no son .NET.

En primer lugar, incluso si SOAP 1.2 es un estándar, WSHTTPBinding es una implementación de Microsoft sobre SOAP 1.2 y, por experiencia, no es tan fácil como "Nuestro producto admite SOAP 1.2, por lo que funcionará con los servicios WCF y WSHTTPBinding, ¡no hay problema!" .

respuesta 1

Hay dos configuraciones de seguridad principales:

  • Seguridad del mensaje: el mensaje está parcialmente encriptado, predeterminado
  • Seguridad de transporte : utiliza SSL para proteger el canal

Acerca de la autenticación, WSHTTPBinding utiliza las credenciales de Windows (NTLM o Kerberos) de forma predeterminada.

Respuesta 2

Depende, pero una respuesta corta es:

  • Debe redirigir los mensajes o inspeccionarlos: use Message Security
  • Necesita canales punto a punto y puede protegerlos con certificados: use Transport Security
  • Sus clientes y servidores comparten la misma plataforma de autenticación, usan la autenticación de Windows
  • Necesita una autenticación abierta para clientes externos, o multiplataforma, use la autenticación de nombre de usuario

Acerca de la autenticación de nombre de usuario, hay diferentes configuraciones. Puede almacenar las credenciales en una base de datos SQL, sí (hacemos esto en nuestra empresa para algunos servicios).

Algunos casos simples: Mejora de la seguridad de los servicios web: escenarios y guía de implementación para WCF

JoeBilly
fuente
¡Gracias! Ese enlace también es MUY útil. Así que estoy pensando en utilizar SOAP 1.2 + SSL + Basic Auth ya que necesitamos admitir clientes externos / de terceros. ¿Algún consejo / advertencia específica en esa configuración? ¿Se recomienda WS2007HttpBinding sobre WSHttpBinding?
DeepSpace101
1
No sepa mucho sobre WS2007HttpBinding, pero puede encontrar una descripción de los protocolos compatibles aquí: msdn.microsoft.com/en-us/library/ms730294.aspx . Acerca de la configuración, debe realizar algunos análisis para configurar correctamente el modo de instancia de servicios y los tamaños de los mensajes y los tiempos de espera de los enlaces.
JoeBilly