Principio del servidor de sondeo largo (autenticación de cliente)

Digamos que tengo un servidor de encuestas largo que funciona como debería: cuando se conecta un nuevo cliente al sitio web (simplemente se conecta como anónimo sin autenticación), se emite un nuevo GUID y se almacena en una cookie firmada que identifica esta conexión durante las encuestas entre cliente y servidor.

Ahora el cliente quiere iniciar sesión y continuar como usuario autenticado. El problema es que el servidor de encuestas largo (node.js) y el marco web (ASP.NET) funcionan como sistemas independientes. Puedo usar el mecanismo de autenticación específico de ASP.NET (MVC) para iniciar sesión desde el punto de vista del marco web, pero esto no afecta al servidor de encuestas largas (donde todavía se me conoce como un tipo GUID). Como podria yo segura autenticar al usuario desde el punto de vista del servidor de encuestas largas? ¿Existen "mejores prácticas" para este escenario? El cliente autenticado debe, después del procedimiento de autenticación, ser identificado por su clave única (digamos una dirección de correo en lugar de GUID).

preguntado el 08 de enero de 11 a las 23:01

2 Respuestas

Uno delgado que podría imaginar:

  1. Emita una ID de sesión, use las cosas de ASP.net o emita una adicional, es posible que tenga que conectarse a la autenticación de ASP.net para invalidarla cuando sea necesario.
  2. Al hacer el sondeo largo, asegúrese de enviar la cookie con ella, para que el servidor Node.js la reciba.
  3. Guarde el GUID en una base de datos a la que pueda acceder desde ASP y Node.js.

El resto debería ser claro, en cuanto a qué DBs podría usar, no tengo ninguna experiencia, pero hay bastantes DB de envoltorios para Node.js, aunque muchos de ellos no se mantienen o no tienen funciones completas.

Deberías revisar el listado de la base de datos en la wiki de Node.js y eche un vistazo a cada uno, no se olvide de buscar en Google al respecto y verificar los problemas para ver si falta algo importante antes de continuar.

Ah, y otra solución (sin DB) me viene a la mente:

  1. Hacer la autenticación a través de ASP.net
  2. Cuando Node.js recibe las cookies de autenticación, reenvíelas a una página ASP.net especial (puede hacer que solo sea accesible desde localhost) que solo le dice a Node.js si esta solicitud es válida (también podría proporcionar a Node.js algunos datos de usuario )
  3. Solo si la solicitud es válida, inicie el sondeo largo

Esto difícilmente debería introducir retrasos cuando se realiza en el mismo servidor.

Respondido el 09 de enero de 11 a las 13:01

Gracias por las ideas. También estaba pensando en la solución de base de datos compartida primero. La segunda solución suena interesante, especialmente la página localhost que puede devolver el identificador de usuario actualmente autenticado (propiedad ASP.NET User.Identity.Name). - yojimbo87

Actualmente estoy enfrentando el mismo problema y esto es lo que voy a hacer:

Tengo un servidor REST en Java que sirve la API a mi cliente web. Para el sondeo largo, he escrito un pequeño servidor node.js.

  1. El cliente se conecta a node.js enviando nombre de usuario / contraseña (a través de HTTPS). También puede pasar un token de sesión.
  2. node.js llama al servidor REST para autorizar al usuario con las credenciales dadas
  3. Si el usuario está autenticado, node.js espera o envía 401 de lo contrario

El beneficio es que el servidor node.js no necesita saber nada sobre la estructura de la base de datos, no necesita incluir llamadas sql. Esto también permite reescribir el servidor con Python retorcido si lo desea.

Respondido 01 Feb 11, 11:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.