2009-12-23 15 views
5

Estoy implementando un servicio en WCF y necesito tener una autenticación de usuario personalizada, por medio de un nombre de usuario/contraseña. Este servicio está configurado como un servicio WebScript (JSON).¿Cómo autenticar y realizar un seguimiento de los usuarios con WCF/JSON?

Me gustaría saber si es posible obtener un contexto de seguridad para que no tenga que incluir un hash o un usuario/pase en cada llamada. Sé que puedo usar un certificado para esto, pero necesito tener el mecanismo de autenticación de usos/pasos.

Voy a estar hablando con este servicio usando AJAX (jQuery), y debería ser posible usar autenticación HTTP básica.

Este servicio posteriormente también expondrá otros puntos finales, por ejemplo, a través de TCP, y esto admite la autenticación "adecuada".

Hay tantas maneras de ir por la seguridad en WCF, me siento un poco perdido, y parece que cuanto más leo sobre él, menos sé.

Respuesta

3

Dado que utilizará jQuery para esto (que supone un transporte HTTP), lo primero que debe hacer es asegurarse de que el esquema para este punto final sea HTTPS. Si no es así, entonces estarás en un montón de problemas, ya que estás sujeto a ataques de hombre en el medio.

entrada

Este blog muestra cómo hacer para crear un validador nombre de usuario personalizada/contraseña:

http://blogs.msdn.com/pedram/archive/2007/10/05/wcf-authentication-custom-username-and-password-validator.aspx

Si está utilizando HTTPS, entonces usted debería ser capaz de establecer el modo de seguridad para el transporte en lugar del mensaje de y es si funciona.

Dicho esto, para este servicio, si no desea pasar el usuario y la contraseña cada vez, entonces necesitará un servicio basado en la sesión en el back-end, que requerirá el uso de una cookie (pero eso se manejará para ti en el enlace).

3

Además de usar HTTPS, recomendaría echar un vistazo a this article en la construcción de servicios REST con WCF. Hay una sección sobre el uso de HMAC que tiene algunas buenas ideas. Dependiendo de su escenario, también puede considerar descargar la autenticación a otro proveedor (implementador de OpenId) y simplemente mantener un perfil en su lado sin contraseña.

Cuestiones relacionadas