2008-10-27 11 views
13

Para un servicio WCF de tipo empresarial, donde potencialmente 10K de miles de clientes se autenticarán y enviarán datos a servidores centrales, ¿cuál es la "mejor" práctica cuando se trata de sesiones o autenticación?WCF sessions or pass username/password per call?

  1. WCF admite una sesión, si es así, ¿debo usarla? o debería simplemente pasar el nombre de usuario/contraseña llamada por llamada?
+1

Hice una reflexión larga y dura sobre esta cuestión: http://stackoverflow.com/questions/345414/aspnet-web-site-windows-forms-app-wcf-service-client-credentials. Tu podrias encontrar esto útil. –

Respuesta

1

WCF does support sessions yes; pero son no como las sesiones de ASP.NET. Las sesiones están ahí para entregar mensajes en orden (y otros bits y bobs), no están ahí para agregar almacenamiento compartido entre llamadas.

Para las llamadas al servicio autenticado, debe enviar sus detalles de autenticación en todo momento; la seguridad se aplica por mensaje.

12

Como se mencionó blowdart, las sesiones WCF no son lo mismo que las sesiones ASP.NET. Puede leer sobre ellos aquí: http://msdn.microsoft.com/en-us/library/ms733040.aspx. Antes de implementar su propia seguridad, querrá familiarizarse con lo que WCF le brinda de inmediato: http://msdn.microsoft.com/en-us/library/ms734736.aspx. Pueden acercarlo a su objetivo sin escribir mucho código. Específicamente, mira How to: Create a Secure Session. Con sesiones seguras, las credenciales de caché del Cliente y del Servidor para que no tenga que autenticarse completamente con cada solicitud. De forma predeterminada, perderá una sesión segura si el servidor web se recicla. Si desea una sesión segura que dure hasta un reciclaje, le recomendamos que consulte el número How to: Create a Stateful Security Context Token for a Secure Session.

-1

Si aloja el servicio dentro de IIS, puede seguir utilizando la sesión que es de ASP.NET habilitando aspnetcompatibility para el comportamiento del servicio.