Sto scrivendo un'applicazione nodejs che vorrei utilizzare sia come applicazione Web, sia come provider API. Una volta che un utente è autenticato, voglio assegnare a quell'utente un token da utilizzare per le richieste successive. Funziona perfettamente con il passaporto per l'applicazione Web, poiché serializzo e deserializzi l'utente con il token nella sessione. Tuttavia, quando si risponde alle richieste API, non vi è alcun cookie da impostare per memorizzare le informazioni sulla sessione. Idealmente, il passaporto dovrebbe cercare il token sia in sessione che nel corpo della richiesta. C'è un modo per configurare il passaporto per realizzare questo?token autenticazione passport nodojs
risposta
Basta usare il token di accesso su ogni richiesta. NON è necessario usare una sessione. Quanto segue è il flusso di lavoro:
POST /signin
- Il nome utente e la password sono pubblicati nella richiesta del cliente.
- Il server autentica l'utente utilizzando la strategia locale del passaporto. Vedi passport-local.
- Se le credenziali rappresentano un utente valido, il server restituisce il token di accesso generato da un generatore. node-jwt-simple è una buona scelta.
- Se le credenziali non sono valide, reindirizzare a
/signin
.
Quando il client riceve il token di accesso dal server di autorizzazione, può quindi effettuare richieste a risorse protette sul server. Per esempio:
GET /api/v1/somefunction?token='abcedf'
- il client chiama alcune API server con l'argomento token.
- Il server autentica il token utilizzando la strategia bearer del passaporto. Vedi passport-http-bearer.
Riferimenti
Make a secure oauth API with passport.js and express.js (node.js)
Come bnuhero menzioni non hai bisogno di sessioni (anche se questo approccio ha i suoi meriti troppo). Ecco un progetto di caldaia che sto iniziando per questo: https://github.com/roblevintennis/passport-api-tokens
Ecco un tut alternativo e facile da seguire (ma utilizza le sessioni). Potrebbe essere un bel riferimento incrociato: http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local
E un altro riferimento correlati: http://mherman.org/blog/2013/11/11/user-authentication-with-passport-dot-js/
Grazie sooooo molto per questo. Per qualche ragione ho pensato che OAuth doveva essere più complicato di così. – SomethingOn
Grande spiegazione – Omar
Per quanto riguarda la generazione di token, è sicuro avere un token che non scade mai? Devo far scadere i token e generarne di nuovi? – sanfilippopablo