gpt4 book ai didi

security - 如何为两条腿的 OAuth 提供者存储消费者 secret ?

转载 作者:行者123 更新时间:2023-12-04 21:24:38 25 4
gpt4 key购买 nike

我正在实现用于 API 身份验证的两条腿 OAuth 协议(protocol)的提供者端。我们将为消费者提供消费者 key 和 secret ,他们将使用它们来签署请求。 2-legged OAuth 由互操作性标准规定,因此是一项要求。

这个 secret 有点类似于密码,我通常不会将密码存储为纯文本(bCrypt 或类似的将是我的正常选择)。但是因为我的提供者需要访问纯文本 secret 来验证签名,所以它必须是某种纯文本或可逆形式。

我考虑了以下选项:

将 secret 存储为纯文本

这是最明显的解决方案,但如果数据库以某种方式受到损害,那么所有的 secret 都必须更改。对我来说,这个解决方案并不理想,因为它存在以纯文本形式存储密码的所有问题。

使用存储在其他地方的加密 key 应用可逆加密(例如 AES)

这将提供一些安全性,因为如果数据库被破坏,那么 secret 仍然是安全的。但是可逆加密需要一个加密 key ,并且 key 必须存储在服务器上。这意味着如果攻击者破坏了机器,则可以绕过加密。

有什么我没有想到的吗?

澄清 实际上,它使用 2-legged Oauth 作为单点登录系统。 “消费者”创建一个请求,其中包括消费者 key 、随机数和其他几个参数。然后通过使用消费者 secret 计算 HMAC-SHA1 对整个请求进行签名。当请求到达我们的提供商系统时,该过程会重复,如果签名匹配,则请求处理将继续。因此,我们也需要纯文本 key 来计算我们这边的 HMAC-SHA1 签名。不幸的是,这种机制是由我们需要遵守的行业标准协议(protocol)规定的。

最佳答案

看看this previous question .我不是该主题的专家,但我认为您缺少等式的一部分。除了使用者 key 和 secret 之外,您还将验证发送请求的应用程序(如果您使用的是 RSA-SHA1,则使用 x509 证书)。

关于security - 如何为两条腿的 OAuth 提供者存储消费者 secret ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5702672/

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