Bonjour à tous!
Je développe une application où j’ai besoin d’utiliser un service tier qui me retourne un token d’accès. J’ai besoin de stocker ce token en base de donnée car l’application charger doit certaines informations à son lancement et pour éviter que l’utilisateur ait à saisir son identifiant et mot de passe pour se connecter au service tier à chaque fois.
Seulement stocker un token comme il est en base de donnée me paraît trop peu sécurisé car j’y ait personellemet accès, de plus si quelqu’un arrive à accèder au système il y aura également accès. Il m’a paru alors nécessaire de devoir l’encrypter en utilisant une clé.
J’ai donc décidé d’encrypter le token en utilisant le mot de passe de l’utilisateur, seulement j’ai besoin de faire des appels d’API à différents moments et pour cela la clé (le mot de passe) dois être toujours accessible depuis le front end. J’envisage de le stocker dans le localStorage, mais ça veux dire que le mot de passe est clairement visible sur le navigateur et ce n’est pas recommandé.
Une autre solution auquelle j’ai pensé est de générer une clée unique pour l’utilisateur, la stocker en base de donnée et ensuite l’utiliser en tant que clée pour encrypter/décrypter les tokens. Mais cela veut dire que la clé sera accessible pour quelqu’un ayant accès à la base de donnée, de plus si je stocke la clé dans le localStorage je me retrouve dans la même situation qu’avec le mot de passe.
Je suis très confus sur la façon de faire afin que ce soit sécurisé. Quelqu’un a t-il déjà eu des cas similaires, que pourait être la solution?
J’utilise Node.js pour mon backend et le module crypto pour l’encryption.