web-dev-qa-db-fra.com

À quoi sert un "jeton d'actualisation"?

J'ai un programme qui s'intègre à l'API YouTube Live Streaming. Il fonctionne sur des minuteries, il m'a donc été relativement facile de programmer pour récupérer un nouveau jeton d'accès toutes les 50 minutes avec un jeton d'actualisation. Ma question est, pourquoi?

Lorsque je me suis authentifié avec YouTube, cela m'a donné un jeton d'actualisation. J'utilise ensuite ce jeton d'actualisation pour obtenir un nouveau jeton d'accès environ une fois par heure. Si j'ai le jeton d'actualisation, je peux TOUJOURS l'utiliser pour obtenir un nouveau jeton d'accès, car il n'expire jamais. Je ne vois donc pas en quoi cela est plus sûr que de me donner un jeton d'accès dès le départ et de ne pas me soucier de l'ensemble du système de rafraîchissement des jetons.

27
Jason Axelrod

Fondamentalement, les jetons d'actualisation sont utilisés pour obtenir un nouveau jeton d'accès.

Pour différencier clairement ces deux jetons et éviter de se mélanger, voici leurs fonctions données dans The OAuth 2.0 Authorization Framework :

  • Les jetons d'accès sont délivrés aux clients tiers par un serveur d'autorisation avec l'approbation du propriétaire de la ressource. Le client utilise le jeton d'accès pour accéder aux ressources protégées hébergées par le serveur de ressources.
  • Les jetons d'actualisation sont des informations d'identification utilisées pour obtenir des jetons d'accès. Les jetons d'actualisation sont délivrés au client par le serveur d'autorisation et sont utilisés pour obtenir un nouveau jeton d'accès lorsque le jeton d'accès actuel devient invalide ou expire, ou pour obtenir des jetons d'accès supplémentaires de portée identique ou plus étroite.

Maintenant, pour répondre à votre question sur la raison pour laquelle vous recevez toujours un jeton d'actualisation au lieu de simplement sécuriser un jeton d'accès, la principale raison fournie par Internet Engineering Task Force dans Actualiser les jetons est:

Il y a une raison de sécurité, le refresh_token n'est échangée qu'avec le serveur d'autorisation alors que access_token est échangé avec les serveurs de ressources. Cela atténue le risque de fuite d'un access_token de longue durée dans le "un jeton d'accès valable pendant une heure, avec un jeton d'actualisation valable pendant un an ou valable jusqu'à révocation" vs "un jeton d'accès valable jusqu'à révoqué sans actualisation jeton."

Pour une information plus détaillée et complète de OAuth 2.0 Flow, veuillez essayer de parcourir les références suivantes:

35
Teyam

@Teyam mention SO post Pourquoi est-ce que OAuth v2 a à la fois des jetons d'accès et de rafraîchissement? Mais je préfère une autre réponse ici: https: // stackoverflow.com/a/12885823/254109

TL; DR refresh_token n'apporte pas une sécurité accrue. C'est dans le but d'améliorer l'évolutivité et les performances. Alors, access_token peut être stocké uniquement dans un stockage temporaire rapide (comme la mémoire). Il permet également la séparation des serveurs d'autorisation et de ressources.

4
xmedeko