2012-10-11 44 views
6

Más una pregunta general sobre algunas propuestas para implementar un sistema de autenticación basado en tokens, motivado por el hecho de que Node.js no parece tener algo listo. .Autenticación basada en tokens (en Node.js)

Como queremos construir un servidor API sin estado para manipular nuestro almacén de datos, queremos proporcionar a nuestros usuarios un token de autenticación (un 'ticket to ride') que se incluirá en cada llamada a la API.

La pregunta es cómo generar este token de forma segura.

[idea 1] - El usuario solicita un token de autenticación mediante el envío (identificación de usuario, contraseña-hash) al servidor - servidor responde con (user_id, EXPIRY_DATE), firmado por los servidores de la API aleatoria clave - servidor puede comprobar la validez de la señal en cada petición - servidor tendría que almacenar fichas por un período limitado de tiempo

[idea 2] - Igual que el anterior pero evitar el envío de hash de la contraseña - el usuario solicita una autenticación token de - El servidor envía al usuario un desafío, luego el usuario realiza el desafío con su par (user_id, password_hash) - Servidor valida esto y luego genera token como por idea 1.

[idea 3] - Utilice el mismo hash de la contraseña como un token de autenticación, enviado en cada solicitud, para evitar el problema de la gestión de testigos - Más sencillo pero luego hay tiempo- limitedness

[idea 4] - Igual que 2, pero la challenged_hashed_by_ (user_id, password_hash) se convierte en el testigo y se envía en cada petición

Gracias por cualquier punteros

+0

Eche un vistazo a esto: http://stackoverflow.com/questions/11187342/mongoose-express-authorisation-on-http-verbs – freakish

Respuesta

0

Puede usar OAuth 2.0 con pasaporte. Passport en sí tiene un buen ejemplo de cómo usarlo y es una solución adecuada para asegurar las API sin estado sin enviar la contraseña del usuario en cada solicitud.

Cuestiones relacionadas