2012-10-11 18 views
6

Più di una domanda generale point-out-the-difetti su alcune proposte per l'implementazione di un sistema di autenticazione basato su token, motivata dal fatto che Node.js non sembra avere qualcosa di pronto .Autenticazione basata su token (in Node.js)

Dal momento che vogliamo creare un server API senza stato per manipolare il nostro archivio dati, vogliamo fornire ai nostri utenti un token di autenticazione (un "ticket to ride") che sarà incluso in ogni chiamata all'API.

Domanda è come generare questo token in modo sicuro.

[idea 1] - L'utente richiede un token di autenticazione inviando (user-id, password hash) al server - server risponde con (user_id, EXPIRY_DATE), firmato dai server API casuale chiave - di server può controllare l'integrità della gettone su ogni richiesta - Server avrebbe bisogno di memorizzare i token per un periodo limitato di tempo

[idea 2] - Idem come sopra, ma di evitare l'invio di hash della password - le richieste degli utenti un'autenticazione token - Il server invia all'utente una sfida, l'utente esegue il hashing della sfida con la sua coppia (user_id, password_hash) - Server convalida questo e quindi genera token come per idea 1.

[idea 3] - Utilizzare l'hash della password stessa come un token di autenticazione, inviato in ogni richiesta, per evitare il problema della gestione di token - Più semplice, ma poi non tempo- limitatezza

[idea 4] - come 2, ma il challenged_hashed_by_ (user_id, password_hash) diventa il token e inviato a ogni richiesta

Grazie per tutti i puntatori

+0

Dai un'occhiata a questo: http://stackoverflow.com/questions/11187342/mongoose-express-authorisation-on-http-verbs – freakish

risposta

0

È possibile utilizzare OAuth 2.0 con Passport. Passaporto stesso ha un buon esempio su come usarlo ed è una soluzione adeguata per proteggere le API senza stato senza inviare la password dell'utente ad ogni richiesta.

Problemi correlati