gpt4 book ai didi

oauth - oAuth 服务器是否应该为同一客户端请求提供相同的 accessToken?

转载 作者:行者123 更新时间:2023-12-02 11:36:16 24 4
gpt4 key购买 nike

我正在开发一个 oAuth2 服务器,我偶然发现了这个问题。

让我们假设一个场景,我的 token 设置为在一小时内过期。在此时间范围内,某些客户端使用相同的 client_id 和相同的 redirect_uri 进行隐式身份验证五十次。基本上一切都一样。

我应该在后续请求中为其提供在第一个请求中生成的相同 accessToken 直至其过期,还是应该在每个请求上发出新的 accessToken

发送相同 token 的好处是,我不会在服务器上留下客户端的陈旧和未使用的 token ,从而最大限度地减少攻击者尝试猜测有效 token 的窗口。

我知道我应该对某些事情进行速率限制并且我正在这样做,但是在来自数千台不同机器的大型僵尸网络攻击的情况下,某些限制不会立即生效。

但是,我不确定这个解决方案的缺点,这就是我来到这里的原因。这是一个有效的解决方案吗?

最佳答案

我宁愿说 - 不。

原因:

  1. 您绝对不应该在授权服务器端以纯文本形式存储访问 token 。访问 token 是凭据,应以散列方式存储。加盐可能不是必需的,因为无论如何它们都是生成的字符串。请参阅OAuth RFC point 10.3 .
  2. 根据您处理后续请求的方式 - 攻击者知道某个资源所有者正在使用您的服务,并重复请求所使用的客户端 ID。这样攻击者就能够冒充资源所有者。如果您确实返回相同的 token ,那么至少确保您每次都对资源所有者进行身份验证。
  3. “状态”参数怎么样?如果状态参数不同,你会认为请求是“相同的”吗?如果不是,那么僵尸网络攻击只会每次使用不同的状态并迫使您发行新的代币。

作为补充 - 通常通过应用程序逻辑防御僵尸网络攻击非常困难。将您的 AS 暴露到互联网的服务器应该注意这一点。在应用程序层,您应该注意它不会因小带宽攻击而崩溃。

关于oauth - oAuth 服务器是否应该为同一客户端请求提供相同的 accessToken?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42400894/

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