问题描述
我有一个使用 django-oauth-toolkit 构建的 OAuth2 服务器,默认情况下,刷新令牌在使用时会立即撤销。这意味着,如果客户端使用刷新令牌请求新的访问令牌,但由于网络中断而未收到响应,他们将被迫重新进行身份验证。
库提供了设置 REFRESH_TOKEN_GRACE_PERIOD_SECONDS
,它是在使用刷新令牌与其撤销之间等待的时间量。如果客户端使用刷新令牌但未收到响应,则原始刷新令牌对 REFRESH_TOKEN_GRACE_PERIOD_SECONDS
仍然有效,这使客户端无需重新进行身份验证即可获得新的访问令牌。
据我所知,在使用时立即撤销刷新令牌的目的是防止 replay attacks,但由于此授权服务器只使用 https,it seems this is a sufficient defense against this type of attack。
刷新令牌撤销宽限期是否会导致其他漏洞?永不撤销刷新令牌会产生什么影响?
解决方法
RFC 7009 https://tools.ietf.org/html/rfc7009#section-5
中提到了安全注意事项如果 TLS (HTTPS) 没有正确配置/管理(不安全的 TLS 版本、密码、中间人、过期的证书、证书颁发机构的问题等),您也可能受到攻击。
您的服务器上可能存在资源耗尽的问题。刷新令牌需要一些资源 - 例如内存,数据库记录,...