J'ai entendu parler du stockage sur le navigateur et des cookies, mais je n'arrive pas à déterminer quel est le meilleur moyen sécurisé de stocker un jeton. Je ne sais pas non plus si d'autres méthodes existent ou si des bibliothèques tierces fonctionnent correctement.
Je voudrais avoir une liste exhaustive des méthodes disponibles pour le faire, avec les avantages/inconvénients de chacune et surtout la meilleure, le cas échéant.
Avec l'authentification par jeton, vous avez le choix de l'emplacement de stockage du JWT. Nous vous recommandons fortement de stocker vos jetons dans le stockage local/stockage de session ou dans un cookie.
Généralement, le JWT est placé dans le stockage local des navigateurs et cela fonctionne bien pour la plupart des cas d'utilisation.
Lors de la connexion d'un utilisateur avec un nom d'utilisateur et un mot de passe, le corps de la réponse contient le access_token JWT
. Ensuite, vous devez gérer cette réponse dans le code côté client. Ce jeton peut ensuite être stocké dans localStorage ou sessionStorage.
Cliquez ici pour un exemple utilisant sessionStorage
localStorage
et sessionStorage
étendent les deux Storage
. La seule différence entre eux est la persistance des données:
localStorage
- les données persistent jusqu'à leur suppression explicite. Les modifications apportées sont enregistrées et disponibles pour toutes les visites actuelles et futures du site.
sessionStorage
- Les modifications apportées sont enregistrées et disponibles pour la page actuelle, ainsi que les futures visites du site sur la même fenêtre. Une fois la fenêtre fermée, le stockage est supprimé.
Vous pouvez également utiliser des cookies pour stocker le JWT. La manière exacte de définir un cookie dépend de la langue côté client que vous utilisez.
Il existe différentes options pour contrôler la durée de vie d'un cookie:
httpOnly
est défini.Referer
et Origin
.Article d'origine: https://auth0.com/docs/security/store-tokens#how-to-implement