Authentification

Connexion

La connexion est la première étape de l'authentification. L'une des façons les plus courantes d'authentifier un utilisateur est d'utiliser un nom d'utilisateur et un mot de passe. Mais une fois que l'utilisateur est authentifié, comment gérer toutes les requêtes qui nécessitent une authentification, pour par exemple accéder à des données privées ? En utilisant des jetons d'authentification.

Jetons d'authentification JWT

JWT (json web token) est un format standardisé de jetons d'authentification. Les JWT permettent d'authentifier un utilisateur sur un serveur (par exemple un API REST). Ils sont utilisés lorsqu'une communication avec le serveur nécessite une autorisation.

À l'étape de connexion, le serveur vérifie si les informations sont correctes et renvoie un jeton d'authentification (JWT) au client. Ce jeton est ensuite utilisé pour authentifier les requêtes suivantes.

exemple

Les JWT sont des chaînes de caractères qui contiennent des informations sur l'utilisateur authentifié et qui sont encodées dans un format JSON. Un JWT est composé de trois parties séparées par un point. Exemple :

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6In
Rlc3RAdGVzdC5jb20iLCJpYXQiOjE2MTczOTc1OTAsImV4cCI6MTYxNzQwMTE5MCwic3ViIjoiMSJ
9.UXCUOlHNDXhLHZ2WKl62Zw36kYlGNZ6QECBJHLNzlc8

Les trois sections sont :

Les jetons sont encodés (ne pas confondre avec chiffrés). Il est donc possible d'accéder au contenu en les décodant. Ce qui est chiffré, c'est la signature. Ce chiffrement permet de s'assurer que le jeton n'a pas été modifié. Pour cela, il faut utiliser la même clé secrète que celle utilisée pour le chiffrement. Cette validation ce fait coté serveur.

À essayer : voir le contenu d'un jeton en ligne
Utiliser le site jwt.io en copier/collant le jeton ci-dessus pour voir son contenu.

Exemples avec jeton

Dans le projet exemple-auth, voir :

Rafraîchissement de jeton

Le rafraîchissement de jeton est une technique utilisée pour prolonger la durée de validité d'un JWT sans que l'utilisateur ait besoin de s'authentifier à nouveau. En général, pour mettre en place le rafraîchissement de jeton côté client il faut :

Redirections

La gestion de la connexion et des pages authentifiées est une fonctionnalité qui nécessite habituellement la gestion de redirections. Voir Bonnes pratiques : Connexion pour des exemples concrets de redirections nécessaires dans une application.

Il est possible avec Vue.js de gérer les redirections avec les gardes de navigation beforeEach de Vue Router. Par exemple, dans le code du projet exemple-auth :