Estoy creando un sitio web que contendrá tanto páginas ASP.NET como un applet Flash. Quiero encapsular mi lógica comercial en un servicio WCF que se expondrá a través de dos puntos finales: uno accesible a través de Internet a través de HTTP (S), para uso del cliente Flash, y uno accesible dentro del centro de datos para uso de los servidores de aplicaciones . Si esto no parece un buen enfoque, entonces detenme aquí; de lo contrario, continuaré ...Autenticación basada en tokens en WCF
La pregunta es cómo autenticar las solicitudes provenientes del cliente Flash. Como no quiero almacenar la contraseña del usuario en una cookie del navegador, no quiero enviar la contraseña con cada solicitud, y no quiero tener que usar HTTPS después del inicio de sesión inicial, planeo usar un token- sistema de autenticación basado Tampoco quiero que el usuario tenga que iniciar sesión en el cliente Flash después de iniciar sesión en el sitio, así que planeo usar Javascript para pasar el token al cliente Flash cuando se inicie.
Sé que WCF admite el uso del marco de seguridad integrado de .NET Framework (System.Security) para hacer cumplir el control de acceso, y me gustaría aprovechar esto.
La pregunta, entonces, es: ¿Cómo paso el token al servicio WCF cuando Flash lo llama y cómo se procesa el token en el servidor?
- WCF tiene un modo de autenticación "emitido token", pero parece que esto está destinado a ser utilizado en un escenario de federación en toda regla con un servicio de token de seguridad de SAML y fichas - un poco más de complejidad que realmente querer. ¿Es posible usar este modo con mis propios tokens de "cadena aleatoria simple"? ¿Si es así, cómo? Tenga en cuenta que esto debe ser compatible con Flash.
- Podría pasar el token en un encabezado (ya sea un encabezado SOAP o un encabezado HTTP). En este caso, una vez que haya determinado qué usuario está realizando la solicitud, ¿cómo informo al marco para que las comprobaciones de System.Security funcionen?
- ¿Hay un enfoque diferente en conjunto que deba considerar? Cualquier cosa que evite enviar contraseñas en cada solicitud, me permite usar System.Security, y funciona con Flash es una posibilidad.
Aaron, ¿alguna vez descubrió una manera simple de hacer esto? Estoy intentando hacer una autenticación simple basada en token en WCF y parece mucho más difícil de lo que debería. – technophile
Terminé básicamente haciendo mi propio trabajo.Tengo un punto final WCF que emite tokens: toma un nombre de usuario y una contraseña, los verifica y responde con el token, que en mi caso es simplemente una cadena aleatoria. Los métodos de lógica de negocios reales están en un punto final diferente, que tiene un inspector de mensajes personalizado que lee un encabezado personalizado que contiene el token. En el cliente, otro inspector de mensajes agrega el encabezado a los mensajes salientes. Es más trabajo del que me hubiera gustado hacer, pero parece estar funcionando bien. – Aaron