2014-04-03 27 views
13

Sto creando un server API REST con Node.js e Express + MongoDB. Questa API avrà diversi client mobili (iOS, Android) e possibilmente un'applicazione web in seguito. Ho bisogno che gli utenti effettuino il login per poter eseguire alcune richieste API. Non ci sono app di terze parti con cui voglio collegarmi (niente Facebook, Google, ecc.). Inoltre, non voglio forzare gli utenti a visitare una pagina Web o qualcosa di simile per poter accedere.Strategia di autenticazione per API REST e app mobile

Da quello che ho visto nelle mie numerose ricerche su SO, l'approccio migliore sarebbe quello di consentire agli utenti di accedere con credenziali complete una volta, inviare loro un token in cambio e utilizzare quel token per verificare le richieste future fino alla scadenza.

Tuttavia, non sono sicuro di come implementarlo. Sono molto confuso con tutte le diverse strategie. Questo è fatto con l'autenticazione di base su HTTPS, con OAuth, OAuth 2.0, ...? Non so proprio cosa usare. Inoltre, non voglio reinventare la ruota qui, non perché sono pigro, ma principalmente per motivi di sicurezza. C'è una biblioteca che potrei usare per implementare questo? Ho sentito parlare di Passport, ma non ho potuto capire se questo è fattibile o no. Sembra una cosa così generica, sono sicuro che là fuori ci sia una soluzione semplice.

Grazie!

+1

Provare: http://stackoverflow.com/questions/17397052/nodejs-passport-authentication-token –

+0

È meglio chiedere consigli su software e librerie su [Scambio stack di raccomandazioni software] (http: //softwarerecs.stackexchange. com /). –

risposta

0

Penso che sia necessario impostare un processo di autenticazione basato su token nel proprio server, in modo da poter effettuare richieste da diversi tipi di client (Android, iOS, Web, ecc.). Sfortunatamente, la documentazione di Passport (e le esercitazioni basate su Passport) sembra mirare solo alle "applicazioni web", quindi non penso che dovresti usarla per questi scopi.

Ho fatto qualcosa di simile seguendo questo tutorial grande: http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs--cms-22543

La parte client in questo tutorial è basato su AngularJS, ma può facilmente applicare gli stessi principi in un client mobile (si tratta solo di una questione di fare richieste HTTP incluso un token recuperato quando si registra in "/ signin" o "/ authenticate").

Buona fortuna!

8

Ora è possibile utilizzare Passport.js con JWT (Token Web JSON) con Passport-JWT. È abbastanza facile da usare.

Una volta effettuato l'accesso, l'utente invia un token all'utente. Il token contiene dati sull'utente, come un id (codificato, ovviamente). Sulle richieste successive (almeno dove è richiesta l'autenticazione) ci si assicura che il client invii il token. Sul server, puoi vedere chi ha inviato la richiesta (e ad esempio controlla l'autorizzazione dell'utente), semplicemente guardando il token. Per maggiori informazioni su come funziona JWT check this out.

Ci sono diversi modi per inviare il token. Dai un'occhiata ai documenti e sarà chiaro. In caso contrario, anche this mi ha aiutato.

Problemi correlati