2015-10-05 30 views
8

Il passaporto sembra un'ottima opzione per l'autenticazione semplice, non invadente e difficile da configurare. Sto creando uno stack MEAN che autentica utilizzando JWT, quindi ho cercato Passport JWT. Comunque ci sono alcune cose di cui sono confuso.Passport JWT e Autorizza vs Autentica

1) Sono corretto nel presupporre che Passport JWT viene utilizzato solo per l'autenticazione delle richieste, non per generare un jwt valido? Cioè, dovrebbe essere usato solo per convalidare la presenza di un token?

2) Qual è la differenza tra passport.authorize e passport.authenticate? E quando dovrei usarne uno sull'altro?

3) Ho 3 percorsi che sto utilizzando per questioni relative all'autenticazione, login, signup e authenticate.

login controllerà se la combinazione utente email/password esiste e corrisponde e quindi genera un token per il client. signup controllerà per assicurarsi che l'e-mail non esiste già e quindi generare un token per il client. Ora per authenticate questo è il punto in cui mi sento un po 'confuso. Avrei anche bisogno di un percorso authenticate se ho già login e signup? Semmai, sembra che autenticare sarebbe la funzione che ho passato in passport.use per la strategia JWT e quindi login e signup con l'eventuale aggiunta di un itinerario verify_token sarebbero i miei unici percorsi non protetti, dove tutto il resto avrebbe una chiamata a passport.authenticate o passport.authorize.

risposta

4
  1. Corretto. Passport JWT (passport-jwt) è solo per l'autenticazione delle richieste. Avrai bisogno di un altro strumento per generare effettivamente un token. This tutorial utilizza JWT Simple (jwt-simple) e ho utilizzato jsonwebtoken (per this reference).
  2. Non ho visto alcun riferimento a passport.authorize, quindi credo che passport.authenticate sia quello che stai cercando. passport.authenticate è ciò che verrà utilizzato nei percorsi per verificare che una richiesta in entrata abbia il token JWT e sia consentita.
  3. Poiché si sta generando un token tramite sia login e signup, authenticate è ridondante e non necessario. Assicurati di utilizzare passport.authenticate nei tuoi percorsi per verificare l'accesso durante le richieste.

Le fasi di impostazione generali da tenere a mente qui sono:

  • passaporto-JWT è per l'autenticazione
  • è necessario un altro strumento per creare un JWT gettone
  • il token JWT, che si generare e tornare a qualsiasi richiesta effettuata, deve essere presente nell'intestazione ("Authorization: JWT eyJ0eXAiO...") sulle richieste successive
  • you need to setup your JWT strategy and tell passport to use it
  • utilizzare passport.authenticate per verificare l'accesso tramite il token JWT nell'intestazione per le richieste in arrivo, come:

router.post('/users', passport.authenticate('jwt', {session: false}), function(req, res) { 
 
    // do something... 
 
});

+0

si prega di aiutare se potete http://stackoverflow.com/questions/44044394/ how-to-set-jwtfromrequest-i-am-not-using-authorization-here @ user3006381 – Aditya