Antecedentesaplicación web ASP.NET Autenticación con un servicio WCF
Tengo una aplicación web ASP.NET que interactúa con los servicios de WCF. La aplicación web y los servicios de WCF están bajo mi control. La aplicación web ASP.NET utiliza una implementación personalizada del Modelo de Proveedor de Membresía ASP.NET (con contraseñas almacenadas en forma de hash) para autenticar a los usuarios que inician sesión en la aplicación web. Tanto la aplicación web ASP.NET como los servicios WCF tienen acceso a la misma base de datos de miembros.
Dado que los usuarios proporcionarán su contraseña solo una vez, y no quiero tener que almacenar sus contraseñas en ningún lugar ni molestarlas pidiéndoles repetidamente que reabastezcan su contraseña, necesito un mecanismo apropiado para autenticar a los usuarios con el Servicios de WCF.
En base a otras preguntas y respuestas que he visto, estoy considerando un tipo de sesión de inicio de sesión, donde se creará una sesión de inicio de sesión en la base de datos de membresía personalizada cuando el usuario inicie sesión en la aplicación web, con la sesión de inicio de sesión identificada por un GUID, y expiró automáticamente después de un período de inactividad. La aplicación web "recordará" el GUID de la sesión de inicio de sesión para cada usuario conectado (ya sea almacenado en el Ticket de Autenticación de Formularios o en la sesión).
El servicio WCF también proporcionará su propia operación de inicio de sesión aceptando un nombre de usuario y contraseña, y devolviendo un GUID de sesión de inicio de sesión como se describió anteriormente.
El servicio WCF aceptaría entonces el GUID de la sesión de inicio de sesión para todas las demás operaciones y verificará que el GUID representa una sesión de inicio de sesión válida que no ha expirado antes de permitir que la operación continúe.
He leído bastante sobre esto, y hay un montón de material sobre el uso directo del tipo de credencial del nombre de usuario UserName, pero esto requeriría que la aplicación web recuerde la contraseña del usuario, que no lo hace Me parece una gran idea.
Investigué un poco y encontré material en MSDN, pero esto parece un gran esfuerzo para implementar lo que (al menos para mí) parece ser un escenario de uso bastante común.
Pregunta
es el enfoque general de la "sesión de inicio" descrito anteriormente razonable?
Si es así, ¿cuál es la mejor manera de lograrlo?
Si no es así, ¿puede sugerir una alternativa?
Es el servicio WCF accesible desde la red interna solamente? Si ese es el caso, no veo la necesidad de volver a autenticar las solicitudes. –
Disculpe la omisión: el servicio de WCF estará disponible en Internet. –