Безопасно ли шифровать сторонний API-ключ пользователя с помощью собственного пароля? - PullRequest
0 голосов
/ 19 марта 2020

Я запускаю приложение узла, которому нужно от имени моего пользователя звонить в сторонний API, используя их собственные ключи API.

API-вызовы должны выполняться только от имени пользователя, когда они зарегистрированы на моем сайте.

В настоящее время я использую bcrypt для ha sh и сравниваю их пароль:

bcrypt.hash(req.body.password, 12, function (err,   hash) {...
bcrypt.compare(req.body.password, users[req.body.username]['password'], function (err, result) {...

Я думал, что когда пользователь добавляет свой ключ API на веб-сайт, я мог бы снова запросить его пароль, и после проверки пароля я мог бы использовать метод шифрования Здесь для его шифрования (с его открытым текстом пароль как ключ)

Когда пользователь входит в систему, я могу проверить его пароль, расшифровать его ключ API, используя метод из ссылки выше (и его пароль), и сохранить ключ API в виде простого текста, используя express -сессии, готовые к совершению звонков по запросу пользователя.

При использовании этого метода, если пользователь потеряет пароль, ему придется сбросить свои ключи API. Я рад принять этот компромисс.

Этот подход безопасен или я что-то упускаю?

...