nodejs passeport jeton d'authentification

j'écris une application nodejs que j'aimerais utiliser à la fois comme application web et comme fournisseur D'API. Une fois qu'un utilisateur est authentifié, je veux lui assigner un token à utiliser pour les requêtes suivantes. Cela fonctionne très bien avec le passeport pour l'application web, comme je viens de sérialiser et deserialiser l'utilisateur avec le jeton dans la session. Cependant, lorsque vous répondez à des requêtes API, il n'y a pas de cookie à configurer pour stocker les informations de session. Idéalement, passeport devrait chercher le jeton à la fois en session et le corps de la requête. Est-il possible de configurer passeport pour accomplir cette?

67
demandé sur laggingreflex 2013-07-01 07:27:55

2 réponses

utilisez simplement le jeton d'accès sur chaque demande. À l'aide d'une session n'est PAS nécessaire. Le flux de travail est le suivant:

POST /signin
  1. le nom d'utilisateur et le mot de passe sont affichés dans la demande du client.
  2. le serveur authentifie l'utilisateur en utilisant la stratégie locale de passport. Voir passeport-local .
  3. si les informations d'identification représentent un utilisateur valide, le serveur renvoie le token d'accès généré par certains générateur. nœud-jwt-simple est un bon choix.
  4. si les lettres de créance sont invalides, rediriger vers /signin .

lorsque le client reçoit le token d'accès du serveur d'autorisation, il peut alors adresser des requêtes aux ressources protégées du serveur. Par exemple:

GET /api/v1/somefunction?token='abcedf'

  1. le client appelle une api de serveur avec l'argument token.
  2. le serveur authentifie le jeton en utilisant la stratégie du titulaire du passeport. Voir passeport-http-porteur .

Références

un API oauth avec passeport.js et express.js (nœud.js)

126
répondu bnuhero 2017-05-23 12:10:35

comme le mentionne bnuhero, vous n'avez pas besoin de sessions (bien que cette approche ait aussi ses mérites). Voici un projet de chaudière-Plaque que je commence pour ceci: https://github.com/roblevintennis/passport-api-tokens

Voici une alternative et facile à suivre tut (mais il utilise des sessions). Peut-être une belle référence croisée: http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local

et une autre référence liée: http://mherman.org/blog/2013/11/11/user-authentication-with-passport-dot-js/

7
répondu Rob 2013-12-14 17:46:31