2009-07-23 7 views
5

Estoy trabajando en una aplicación que tiene varios clientes: computadora de escritorio, dispositivo móvil, portal web. Nos estamos moviendo a un tipo de arquitectura SOA y utilizaremos WCF.¿La mejor manera de usar y asegurar WCF en el Compact Framework?

La historia de WCF es genial cuando se trata de usar netTcp + seguridad de transporte/mensaje + autenticación de Windows (o incluso UsernameToken y un proveedor personalizado UsernameValidator) en el lado del Escritorio y del Portal Web.

Donde se descompone por completo está en el lado del marco compacto ... el subconjunto de WCF que soporta es tan limitante. Me resigné a simplemente usar basicHttp + nombre de usuario/contraseña en los encabezados en todo SSL, pero parece que no se pueden agregar encabezados en la pila de frameworks compactos (sin OperationContextScope), así que me deja incluir nombre de usuario/contraseña como parámetros para CADA SINGLE método de operación en el servicio.

Por favor, dime que estoy equivocado y que hay una manera mejor.

+0

No he intentado esto, pero ¿puedes usar la autenticación básica a través de HTTPS? –

+0

No he encontrado una manera de hacerlo a través de la pila WCF en CF: creo que esta es la razón por la que algunas personas optan por tratar el servicio WCF como un servicio web tradicional (Agregar referencia web ...) en el marco compacto. –

Respuesta

1

Su mejor apuesta será exponer un punto final WCF que cumpla con los estándares WS-Security.

Debería ser capaz de utilizar esos estándares para la seguridad basada en mensajes (lo más probable es que use X.509). Aquí está el enlace de MSDN para empezar:

Messaging in the .NET Compact Framework

1

Una solución alternativa es pasar un billete (leer: GUID).

El cliente inicia sesión (envía nombre de usuario y contraseña). Se genera un ticket generado aleatoriamente (guid nuevamente), almacenado en caché en el servidor y devuelto al cliente. Este boleto se pasa de ida y vuelta en lugar del nombre de usuario y la contraseña.

Por supuesto, todo eso es asumiendo que no solo desea utilizar el estado de la sesión.

Pero en otras palabras: he tenido el mismo problema que ha tenido. Apesta. Así es como lo solucioné un poco, así que era utilizable.

De todos modos, otra buena referencia es el WCF Guidance for Mobile.

+0

Estaba pensando en recurrir a algo así también, tal vez ir con algo que se puede calcular a partir de la contraseña (o el hash NT de la contraseña) para que pueda ser apátrida. Todo seguro a través de SSL, por supuesto. –

Cuestiones relacionadas