2013-06-05 18 views
8

Sono un po 'confuso su come autenticare correttamente e in modo sicuro gli utenti utilizzando la mia API REST e fornire e l'opzione per l'autenticazione anche con altri provider OAuth 2.0 (ad esempio Facebook, Google, ecc.).Autenticazione utente tramite la mia API REST e Facebook

Scenario

Gli utenti interagiscono con un'applicazione web che dovrebbe consumare il mio API REST. Gli utenti dovrebbero essere in grado di accedere ed eseguire operazioni CRUD usando sia nome utente/password sia utilizzando servizi di terze parti come Facebook. Userò SSL per crittografare il traffico al sito Web e all'API.

Senza prendere in considerazione i servizi di accesso di terze parti e studiando le varie domande già poste qui su SO, ho pensato di gestire l'autenticazione dell'utente come nell'immagine.

Tecnologie e idea corrente

L'API REST è scritto usando JS utilizzando NodeJS e Express. La WebApp fornita tramite un'altra istanza NodeJS è principalmente AngularJS con modelli che consumano l'API REST.

La mia idea attuale è di permettere a WebApp di gestire la sequenza di login e lasciare che Facebook salvi il proprio token nel mio DB usando il callback. Ma questa soluzione profuma troppo di soluzioni alternative!

Domande

  1. E 'la sequenza di autenticazione raffigurati nell'immagine corretta?
  2. In che modo la sequenza di autenticazione di cui sopra è stata confrontata con il flusso di credenziali della password del proprietario risorse in OAuth2.0? Vale la pena usare OAuth2.0 invece di farlo?
  3. Come posso integrare l'accesso tramite terze parti (ad esempio Facebook)? Qualche suggerimento o (meglio) esempio?

Riferimenti

passport.js RESTful auth

Login with facebook and using oauth 2.0 for authentication of REST api calls

e molti altri qui su SO :)

risposta

0

I miei 2 centesimi ..

  1. Il processo mi sembra buono .. Vorrei ri-emettere il token su ogni accesso e tenerlo all'interno di un database in modo che i token possano essere revocati facilmente.

Utilizzare PassportJS. Ha il supporto per i flussi OAuth e supporta molte integrazioni di terze parti come FB, Twitter, Github ecc. E poiché è un middleware nodojs .. la sua integrazione sarà molto stretta all'interno della tua applicazione ..

Problemi correlati