web-dev-qa-db-fra.com

Actualiser le jeton Jsonwebtoken

J'utilise jsonwebtoken dans l'application API NodeJs pour authentifier l'utilisateur dans mon application API. Le flux que j'ai configuré est le suivant:

1) L'utilisateur s'enregistre via l'API d'inscription et le jeton d'accès est généré à l'aide des éléments suivants:

var jwt = require('jsonwebtoken');
var token = jwt.sign(user, _conf.authentication.superSecret, {
    expiresIn: 1440 // I intend to keep it short.
});

2) Le jeton expire dans 24 heures par exemple. Ce jeton est renvoyé à l'application mobile cliente pour être utilisé comme en-tête dans toutes les demandes d'API suivantes.

Je veux savoir comment contourner le jeton d'actualisation pour jwt. Actuellement, je n'ai pas de mécanisme pour rafraîchir le jeton. Par conséquent, si le jeton expire dans 24 heures, je veux que le client (application mobile) puisse demander un nouveau jeton d'accès. Merci d'avance.

17
Sagar Gopale

J'ai eu le même problème dans un projet.

1) J'ai créé le jeton d'actualisation et je l'ai renvoyé lorsque l'utilisateur s'est connecté (avec le jsonwebtoken). J'ai enregistré le jeton d'actualisation avec l'utilisateur.

2) Lorsque le client envoie une demande avec le jeton expiré, le serveur renvoie 401.

3) J'ai implémenté un nouveau chemin pour actualiser le jeton. Il reçoit le jeton d'actualisation et l'utilisateur en tant que param et renvoie un nouveau jeton (jsonwebtoken).

4) (facultatif) Vous pouvez implémenter un mécanisme pour invalider un jeton d'actualisation, au cas où quelqu'un l'aurait volé

J'ai basé mon implémentation dans ce post, de très bons extraits:

Actualiser le jeton dans JWT (implémentation Node.js)

J'espère que cela aide

28
David Vicente