configurar wcf security .net-2.0

wcf - configurar - endpoint web config



Cómo configurar la seguridad al llamar al Servicio WCF desde.Net 2.0 Client (5)

Tengo un servicio WCF en funcionamiento y puedo comunicarme entre el servicio y un cliente .Net 2.0 utilizando basicHttpBinding.

Ahora necesito bloquear el servicio WCF para que solo pueda ser llamado por clientes autenticados.

Tengo control sobre los clientes que llamarán a mi servicio. Los clientes son parte de un producto que se instalará en la naturaleza y "llamando a casa" para enviar y extraer datos. La aplicación cliente está escrita para el framework .Net 2.0 y no se puede actualizar a 3.0 o 3.5 en este momento. No puedo agregar cuentas de usuario de Windows a las máquinas del cliente.

¿Cuáles son mis opciones para asegurar el Servicio WCF y poder autenticar desde mis clientes .Net 2.0? Además, los datos deben pasarse a través de https.

He estado buscando en la web y siento que estoy en una loca búsqueda.


De acuerdo, entonces, con SSL tiene seguridad de nivel de transporte; lo cual está bien, eso protege el mensaje de husmear y cambiar.

Entonces ahora tienes opciones; ¿necesita la validación para guardar silencio o puede solicitar al usuario un nombre de usuario / contraseña cuando se inicia el programa? Si debe ser silencioso, puede ir al certificado del lado del cliente como se mencionó (aunque eso es doloroso, tendrá que generar los certificados usted mismo y validarlos, por lo que debe considerar ejecutar su propia autoridad de certificación). O puede incrustar un encabezado personalizado en el mensaje que contiene una ID de cliente y hacerlo de la manera más barata.

Sin embargo, si puede solicitar un nombre de usuario y contraseña, entonces se autentica de esa manera y lo conecta fácilmente a una búsqueda de base de datos utilizando un autenticador personalizado o incluso utilizando la base de datos de miembros de ASP.NET .



Tu seguridad estará cubierta por el ssl.

Para la autenticación, tiene dos opciones: básica (nombre de usuario y contraseña) o certificado.

Aquí hay un video que demuestra cómo configurar la autenticación de certificados.

En eso está configurando los elementos de seguridad del basicHttpBinding que se muestra a continuación:

<basicHttpBinding>
<binding name = "basicHttp">
<modo de seguridad = "TransportWithMessageCredential">
<message clientCredentialType = "Certificado" />
</ security>
</ binding>
</ basicHttpBinding>

También hay una buena página sobre esto aquí . Google en clientCredentialType y debe encontrarse en el camino correcto lo suficientemente pronto.

Para configurar los certificados de cliente está buscando el archivo de política wse *.

Tendrá que averiguar cómo va a proporcionar el certificado del cliente a los diversos sitios. Eso depende de las preocupaciones de seguridad del proyecto. Hay varias maneras (ninguna de las cuales puedo recordar, lo siento, la última vez que hice esto para wse * wse * hace dos años, por lo que los detalles se olvidan, pero es ciertamente posible, tomó unos días de investigación sólida para encontrar un buen método )


Esto es lo que terminé haciendo, que parecía ser la solución más simple en nuestra situación, que es de muy pequeña escala con solo un puñado de servicios web expuestos:

  1. Asegurado el transporte con SSL
  2. Los clientes primero inician sesión en el servicio web llamando a un método de inicio de sesión en el servicio web. Si el inicio de sesión tiene éxito, devuelve un FormsAuthenticationTicket encriptado al cliente.
  3. Los clientes deben proporcionar el ticket de autenticación de formularios con cada llamada de servicio web. Cada método verifica si el ticket es válido y, si es así, hace su trabajo. Si el ticket ha expirado o no es válido, los clientes deben volver a autenticarse.

Espero que ayude a alguien ...


Puede configurar un punto final WCF para utilizar la autenticación SSL bidireccional . Esto significa que puede solicitar a los clientes que presenten un certificado X.509 que confirme su identidad cada vez que realicen una solicitud al servicio.

Por el lado del servidor, puede usar uno de los esquemas de validación incorporados en WCF o proporcionar su propia lógica de validación para verificar el certificado X.509.
Si estuviera alojando su servicio en IIS, sería trivial configurar SSL para requerir certificados de cliente en el nivel de transporte . Sin embargo, aquí puede encontrar una buena guía sobre cómo implementar este comportamiento en un servicio WCF autohospedado.

http://leastprivilege.com/2007/08/25/certificate-based-authentication-and-wcf-message-security/

No lo he intentado yo mismo, pero dado que esto crea un requisito de seguridad a nivel de mensaje , creo que tendrá que usar wsHttpBinding para aplicarlo en su contrato WSDL, ya que la imposición de requisitos de seguridad para acceder a un servicio web es parte de la WS- * estándares.

Si tiene que usar basicHttpBinding , puede probar esta solución que mueve las cosas en el nivel de transporte:

http://leastprivilege.com/2007/08/26/certificate-based-authentication-and-wcf-mode-independent/

Espero que esto ayude