OAuth2中刷新令牌的好处是什么?

8
根据OAuth 2.0协议刷新令牌用于重新验证访问令牌,并主要通过将刷新令牌保存到数据库并控制其来维护吊销。这样做的好处是什么?为什么不直接保存访问令牌本身?

访问令牌的生命周期很短,通常只能使用1小时。 - Linda Lawton - DaImTo
2个回答

13

访问令牌的有效期很短,通常只能使用1小时。为了获取新的访问令牌,您需要使用刷新令牌。

第24页

Authorization servers SHOULD issue access tokens with a limited
   lifetime and require clients to refresh them by requesting a new
   access token using the same assertion if it is still valid.
   Otherwise the client MUST obtain a new valid assertion.

通过发送刷新令牌并请求新的访问令牌,这使得认证服务器有机会验证您仍然具有访问权限,且用户尚未撤销您的访问权限。

以下是说明原因:

访问令牌短暂的原因是,如果它们被攻击者攻击,攻击者有限的时间来使用它。它通常会在一小时内过期。

如果刷新令牌被攻击者攻击,则无效,因为黑客无法访问必须同时发送到认证服务器以获取新的访问令牌的客户端ID。


OAuth 1.0或2.0的规范在哪里说明访问令牌“通常仅有效1小时”?你确定你不是编造这一部分吗? - user1431072
2
我是从经验中说出来的。我相信谷歌是一个小时,推特和脸书也是一个小时。这是在认证服务器中设置的,可能因服务器而异。我的经验是,我遇到的所有访问令牌都在一个小时后过期。顺便说一句,如果我编造答案,我很快就会没有声望了。欢迎来到Stack。 - Linda Lawton - DaImTo
3
我实现这个功能的一个实际原因是,您的用户不需要存储凭据即可保持登录状态,使用刷新令牌可以让您在无需访问数据库和加载整个授权票据的情况下使令牌失效(注销用户),您只需要在每次刷新请求中执行此操作。此外,我认为使用客户端ID和密钥来获取新的访问令牌没有意义,因为如果您能窃取刷新令牌,那么您可能也会得到客户端ID和密钥,从而使它们变得无关紧要。 - rethenhouser2
1
为什么客户端不能在刷新令牌请求中使用过期的访问令牌(当然还有额外的客户端)。服务器也可以重新发放新的访问令牌。由于请求数量相同,客户端每次访问令牌过期时都会触发刷新令牌流程。 - 404 Not Found
因为这不是Oauth2的工作方式。你可能想有一天阅读一下Oauth的RFC。 - Linda Lawton - DaImTo

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接