Ho due applicazioni:Mantenere chiave segreta e token di accesso per JWT in veloce e NodeJS con Facebook API REST
- del server (REST API Server)
- nodo js
- espresso
- jsonwebtokens
- express-jwt
- mangusta
- cliente (Portable front-end)
- bootstrap
- angolare JS
- locale di stoccaggio
- angolare-facebook
- angolare JWT
lateron, l'app client verrà portata per android, iphone e altre piattaforme usando phon eGap. Per OAuth, sto usando Facebook come fornitore. Ora, ho appena realizzato che i Token Web JSON sono la strada da seguire per questo tipo di installazione. La mia domanda è di tipo architettonico piuttosto che sintattica: come gestire una chiave segreta quando si firma il token di accesso di Facebook e l'ID utente con JWT in nodejs?
Quindi questo è come il flusso funziona nella mia app:
- angolare cliente ha un pulsante per il login
- utente fa clic sul pulsante di> Facebook Auth inizia
- client riceve user_id e FB Token di accesso
- Client invia [POST json body] entrambi ser_id e token di accesso a Nodo + Server a 'http://server.com/auth/login' espresso
nodo server ha applicato Express-JWT per tutte le rotte, tranne /auth/login con un
var expressJwt = require ('express-jwt');
var jwt = require ('jsonwebtoken');
app.use (expressjwt ({secret: ''}). A meno che ({percorso: ['/ auth/login']}));
server del nodo riceve i dati dal req.body, recupera i dettagli tutto profilo da Facebook utilizzando l'JavascriptSDK, e segni utilizzando
var di token = expressjwt.firmare ({profilo},);
- nodo server negozi (aggiornamenti, se esiste user_id) il nuovo token in dB e lo invia come risposta al cliente
- cliente memorizza il nuovo token ha ricevuto in dati JSON in locali-storage
- client utilizza angolare JWT per andare a prendere i dati del profilo del nuovo token e automaticamente collegare il nuovo token di intestazione di autorizzazione per tutte le richieste che invia al server
Ora, le mie domande sono:
- ne ho veramente bisogno di memorizzare i token JWT nel database? Non sto certamente confrontando i token nelle intestazioni delle richieste con il database
- Devo generare chiavi segrete casuali per sicurezza, ogni volta che una persona effettua l'accesso? Se sì, allora come si adatterebbe sia al client che al server?
- Quando e dove è necessario verificare la scadenza del token? e come lo aggiorno?
Sono un po 'perso per il flusso di progettazione e il meccanismo.
così finalmente ora come stai facendo ?? stai usando qualche db per archiviare i token revocati o cosa ?? per favore rispondi, sarà molto utile per me –