gpt4 book ai didi

oauth-2.0 - 作为 OAuth 服务器,我应该如何生成和存储 OAuth 2.0 token ?

转载 作者:行者123 更新时间:2023-12-02 03:49:12 26 4
gpt4 key购买 nike

OAuth 2 token 只是随机的 blob。我已经看到 OAuth 服务器的实现似乎建议将这个随机字符串直接存储在数据库中并进行查找。

这违背了我更好的判断。

token 本质上是用户的另一个密码。将这些 token 以纯文本形式存储在数据库中 - 尽管这些密码是随机生成的 - 似乎是一个坏主意。这是因为如果数据库遭到破坏,那么攻击者所要做的就是传递 auth_token=code 并模拟任何拥有有效 token 的用户。

为 OAuth 2 生成和存储授权 token 的最佳方法是什么?

最佳答案

喜欢拥有一个易于撤销的不透明 token 的想法。但我想保留 O(1) 查找时间。

假设一个键查找是 O(1),我认为下面的方案应该可行。

 Client Auth Code Issued = Url64(ENC(random_index||secretkey) || HMAC)
Database Record = {KEY: random_index , VALUE: scrypt(secretkey)}

解释:

发行

  1. 生成 2 个随机字符串,random_indexsecret_key
  2. 使用密码哈希最佳实践对 secret_key 进行哈希处理,并将其存储在数据库中的 random_index 下。
  3. 加密 random_indexsecret_key 并将其作为 auth_code 提供给客户端

验证

  1. 将客户端auth_code解密为random_indexsecret_key组件
  2. 在数据库中通过random_index查找token
  3. 在发行时使用哈希方法验证secret_key

我认为以上解决了问题,但我欢迎任何其他解决方案。

注意:我会将其他元数据与 key (过期、权限等)一起存储,但这对回答问题并不重要。

注意 2:我也可以使用 SHA2 或其他快速哈希算法而不是 scryptbcrypt,因为我控制了熵在 secret_key 中。

关于oauth-2.0 - 作为 OAuth 服务器,我应该如何生成和存储 OAuth 2.0 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15072754/

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