gpt4 book ai didi

javascript - 存储密码以登录到 3rd 方 API

转载 作者:搜寻专家 更新时间:2023-11-01 00:21:38 26 4
gpt4 key购买 nike

我正在为后端使用 Node & Express 编写交易应用程序。每个用户都将拥有自己的应用程序本身的登录名,但为了使其有用,该应用程序还需要登录到用户的经纪帐户。

有问题的经纪账户有一个 REST API,您可以在其中发布该系统的登录名和密码。该 API 不提供 SSO 或 OAuth 作为身份验证选项。唯一的身份验证方法是发布 uid 和密码。

所以这里涉及两个登录:一个是我的应用程序,另一个是完全独立的经纪账户登录。这些登录名中的每一个都使用不同的用户 ID 和密码。

我遇到的问题是弄清楚如何存储经纪帐户的密码。我知道存储密码根本不是一个好主意。但如果我存储的只是经纪密码的加盐哈希值,我将无法逆转它并取回实际密码。因此,除非用户再次输入该密码,否则我的应用程序将无法登录到经纪帐户。

(顺便说一句,还有另一个程序可以做到这一点。https://dough.com 要求用户登录 dough,然后您还必须登录 TD Ameritrade。我希望避免登录两次.)

是否有一种合理且安全的方式来存储此第 3 方 API 的密码,以便我的应用程序可以代表用户登录,而不必在用户每次使用我的应用程序时都强制他们提交密码?我知道这里存在很大的安全风险。如果答案是否定的,那么我不会。

最佳答案

编辑和强制 - 真正的解决方案是不这样做。虽然在技术上可行,但几乎肯定不会正确实现并且会暴露您的用户密码。

是的,但这并不容易,实现是关键。 JavaScript OpenPGPJS library是你想要的。

为了保证系统的安全,您的后端不允许解密密码。这是 JS 库的用武之地,它通过浏览器提供 PGP 加密。

您可以将 PGP 密码基于用户密码,或者让他们提供一个新的密码进行解密。或者,您可以为密码加密生成随 secret 钥,然后创建一个可以访问随 secret 钥的主 key - 使用用户输入加密主 key 。

无论采用哪种方法,您都需要让他们输入密码以便在需要时解密记录,或者将他们的密码添加到他们的本地 session 中。前者是安全的,后者具有明显的安全隐患。

使用示例提供的密码对简单字符串进行加密:

var options, encrypted;

options = {
data: 'Hello, World!', // input as String
passwords: ['secret stuff'] // multiple passwords possible
};

openpgp.encrypt(options).then(function(ciphertext) {
encrypted = ciphertext.data; // '-----BEGIN PGP MESSAGE ... END PGP MESSAGE-----'
});

解密:

options = {
message: openpgp.message.readArmored(encrypted), // parse armored message
password: 'secret stuff' // decrypt with password
};

openpgp.decrypt(options).then(function(plaintext) {
return plaintext.data; // 'Hello, World!'
});

关于javascript - 存储密码以登录到 3rd 方 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com