image
image
image
image
image
image

Accesstoken refreshtoken

Ceci est un article invité de Pius Aboyi. Si vous souhaitez en savoir plus sur la gestion des sessions à l’aide de jetons d’actualisation, lisez ce blog . Si vous ne voulez pas avoir à écrire tout ce code, vous pouvez simplement utiliser Passage pour intégrer l’authentification sans mot de passe dans votre application et leur demander de gérer tous les détails de votre application.

Un flux courant pour l’authentification API est l’envoi de données à un point de terminaison qui vérifie un utilisateur. Une fois la vérification réussie, l’API renvoie un jeton d’accès que vous pouvez ensuite utiliser pour envoyer des requêtes à d’autres points de terminaison qui nécessitent une autorisation. En plus d’un jeton d’accès, la plupart des API renvoient également un jeton d’actualisation. Dans cet article, vous allez découvrir ce que sont les jetons d'actualisation et comment ils fonctionnent.

Qu’est-ce qu’un jeton d’actualisation ?

Un jeton d’actualisation est une clé spéciale qui permet à un client d’une API ou d’un service de récupérer de nouveaux jetons d’accès sans que l’utilisateur ait à effectuer une connexion complète. En d’autres termes, une application peut échanger un jeton d’actualisation valide contre un nouveau jeton d’accès. En plus du nouveau jeton d’accès, le service peut également renvoyer un nouveau jeton d’actualisation.

À quoi sert un jeton de rafraîchissement ?

Pourquoi les jetons d’actualisation sont-ils importants et un client doit-il les échanger contre un nouveau jeton d’accès ? La principale raison pour laquelle les jetons d'actualisation existent est que la plupart des jetons d'accès ne vivent pas éternellement. C’est-à-dire qu’un jeton d’accès peut expirer après une période de temps spécifique, comme quelques heures ou quelques jours. Par conséquent, afin d’éviter de demander au client d’effectuer une activité telle que la saisie d’un nom d’utilisateur et d’un mot de passe pour récupérer un nouveau jeton d’accès, vous pouvez utiliser des jetons d’actualisation pour obtenir un nouveau jeton d’accès.

Les jetons d’actualisation sont très importants car ils peuvent améliorer l’expérience utilisateur et la sécurité générale d’une application. Du côté de l’expérience utilisateur, imaginez forcer vos utilisateurs à se connecter chaque fois qu’ils reviennent à votre application après l’expiration du jeton d’accès. La plupart des services populaires permettent aux utilisateurs de revenir de manière transparente à leur session précédente en générant silencieusement de nouveaux jetons d’accès à l’aide de jetons d’actualisation.

Comment les jetons d’actualisation s’intègrent-ils dans la sécurité de votre application ?

Pour répondre à la question ci-dessus, permettez-moi d’expliquer plus en détail pourquoi les jetons d’accès ont généralement un délai d’expiration. Dans une situation où un utilisateur malveillant met la main sur un jeton d’accès valide, il peut effectuer des requêtes au nom d’un utilisateur et accéder à des données protégées. Par conséquent, les jetons d’accès expirent après un certain temps et deviennent non valides. Les jetons d’actualisation, en revanche, ont une durée de vie plus longue afin que votre application puisse utiliser pour récupérer un nouveau jeton d’accès. Afin d’augmenter la sécurité de votre application, vous devez éviter d’exposer les jetons d’actualisation.

Comment fonctionnent les jetons d'actualisation sous le capot

Dans cette section, nous allons examiner de plus près le fonctionnement des jetons d'actualisation. Pour ce faire, nous allons passer en revue les différentes étapes de l'authentification et de l'autorisation de l'API.

Étape 1 : Connexion

La première étape implique que l’utilisateur se connecte à un service API. Cela peut être fait en envoyant une requête HTTP avec un nom d’utilisateur et un mot de passe. Ensuite, en cas d’authentification réussie, l’API renvoie un jeton d’accès (par exemple, un JWT).

L’extrait de code suivant montre l’implémentation d’un point de terminaison de connexion API :

Dans le code ci-dessus, la durée du jeton d’accès est de cinq minutes. Par conséquent, ce jeton expirera et ne fonctionnera plus après cinq compte-rendu.

Étape 2 : Accès à un point de terminaison protégé

Maintenant que nous disposons d’un jeton d’accès valide, nous pouvons procéder à une demande au nom d’un utilisateur. Un point de terminaison protégé est un point de terminaison qui nécessite que l’utilisateur soit connecté pour récupérer ou écrire des données. Un bon exemple est un point de terminaison qui renvoie le profil de l'utilisateur actuel.

Voici un exemple qui permet à l'utilisateur du jeton d'accès d'interroger son profil :

Étape 3 : Renouvellement du jeton d'accès à l'aide d'un jeton d'actualisation

À l'étape 1 ci-dessus, j'ai mentionné que le jeton d'accès expirera au bout de cinq minutes. Ainsi, afin de récupérer un nouveau jeton après cela sans répéter l’étape 1, vous pouvez envoyer une demande à un autre point de terminaison pour renouveler le jeton d’accès.

Le code suivant contient la logique de ce point de terminaison d’actualisation :

Le rôle des jetons d’actualisation dans le processus d’autorisation

Habituellement, au cours de la première étape du processus d’autorisation, le système génère un jeton après une connexion réussie. Ensuite, le système renvoie le nouveau jeton d’actualisation avec le jeton d’accès, et il reste valide pendant une durée plus longue que le jeton d’accès.

Vous n’avez pas besoin du jeton d’actualisation pour accéder aux points de terminaison protégés. Une fois le jeton d’accès expiré, vous pouvez envoyer une autre demande à l’aide du jeton d’actualisation pour demander un nouveau jeton d’accès.

Enfin, une fois qu’un utilisateur révoque intentionnellement l’accès à sa session, le jeton d’accès et son jeton d’actualisation associé sont rendus invalides et inutiles. Par conséquent, l’envoi d’une demande pour un nouveau jeton d’accès à l’aide d’un tel jeton d’actualisation renverra une erreur.

Jeton d’actualisation et jeton d’accès

Les jetons d’actualisation et les jetons d’accès ont des objectifs très différents dans le processus d’autorisation. Dans cette section, nous allons examiner certaines de leurs différences et similitudes.

1. Aéroport Octroi de l’accès aux ressources protégées

Les jetons d’accès permettent aux API de déterminer qui demande quelle ressource et s’ils disposent des autorisations nécessaires. Les jetons d’actualisation, en revanche, ne peuvent pas le faire directement. Vous devez d'abord échanger un jeton d'actualisation contre un jeton d'accès valide que vous pouvez ensuite utiliser pour accéder aux ressources.

deux. Idéalement

, les jetons d’accès expirent après une courte période, tandis que les jetons d’actualisation durent longtemps.

3. Accès Mode de génération des jetons Les

jetons d’actualisation et d’accès peuvent être générés à l’aide des normes JSON Web Tokens (JWT). À l’aide de cette méthode, le jeton encode certaines données que vous pouvez spécifier en tant que charge utile. Il est possible de décoder ce jeton et de récupérer les données d'origine qui ont été encodées. Par exemple, un jeton peut contenir le nom d’utilisateur, l’ID de session et l’adresse e-mail de l’utilisateur actuel. Cependant, il est de mauvaise pratique d’inclure des informations sensibles comme des mots de passe dans les jetons.

Conclusion

Dans cet article, nous avons vu ce que sont les jetons d’actualisation et comment ils fonctionnent. Nous les avons décrites comme des clés que votre application peut échanger contre de nouveaux jetons d’accès. L’une des principales tâches du jeton d’actualisation à un niveau élevé consiste à garder les utilisateurs connectés plus longtemps et à leur éviter d’avoir à se connecter manuellement chaque fois qu’ils souhaitent accéder à votre application.

Nous avons également mentionné que les jetons d’actualisation et les jetons d’accès sont différents à plusieurs égards. Par exemple, les jetons d’actualisation durent plus longtemps que jetons d’accès. Enfin, vous ne pouvez pas utiliser de jetons d'actualisation à la place des jetons d'accès pour lire ou écrire des données sur un point de terminaison protégé.

Cet article a été écrit par Pius Aboyi. Pius est un développeur mobile et web avec plus de 4 ans d’expérience dans la création de la plate-forme Android. Il écrit du code en Java, Kotlin et PHP. Il adore écrire sur la technologie et créer des tutoriels pratiques pour les développeurs.