web-dev-qa-db-fra.com

Comment enregistrer des jetons d'actualisation?

J'essaie d'ajouter une fonction d'authentification à mon application. Le serveur d'authentification implémente oauth 2.

Je ne sais pas comment enregistrer le refresh_token. Je veux l'enregistrer dans un fichier, donc la prochaine fois que l'application démarre et qu'il y a un refresh_token disponible, il peut demander un nouveau access_token. L'utilisateur n'aura pas besoin de se reconnecter à nouveau.

Mais cela ne me semble pas sûr, car si quelqu'un copie mon fichier contenant le rafraîchissement sur un autre ordinateur, il peut pirater mon compte.

28
Bill Yan

Vous avez raison avec l'attaque que vous décrivez. Les jetons d'actualisation doivent être stockés en toute sécurité afin d'être utilisés comme prévu. Si je comprends bien, vous créez une application autonome. Par conséquent, vous pouvez compter sur la sécurité du système de fichiers pour empêcher la copie d'un jeton d'actualisation par un utilisateur non autorisé. Vous pouvez également utiliser le chiffrement pour le jeton d'actualisation, mais la clé devrait être liée à la session d'un utilisateur sur votre ordinateur local (sinon, l'utilisateur devrait le fournir lors du processus de "connexion" pour que l'application pour déchiffrer le jeton d'actualisation).

Pensez à lire le fil du GT OAuth, qui traite de problèmes similaires à celui décrit et fournit quelques conseils: https://www.ietf.org/mail-archive/web /oauth/current/msg02292.html

12
mmachulak

Les jetons d'actualisation sont utilisés pour obtenir l'accès (ce processus nécessite HTTP Basic Auth). Donc, à moins que l'utilisateur n'ait votre combinaison (id, secret), il ne peut pas y faire grand-chose. Cependant, le stockage du jeton d'actualisation doit être considéré très sérieusement.

Voici mes deux cents:

  1. Stockez vos jetons dans une base de données

  2. Chaque fois que vous utilisez un jeton d'actualisation pour obtenir un jeton d'accès, réinitialisez également le jeton d'actualisation. (Oauth2.0 a cette fonctionnalité, vous pouvez également laisser le jeton d'actualisation inchangé, mais il est sage en termes de perspective de sécurité de continuer à le changer et à mettre à jour la base de données)

J'espère que cela donne un aperçu !!

8
Sudip Bhandari