oauth-2.0 刷新令牌是否过期?如果过期,何时过期?

2ekbmq32  于 2022-10-31  发布在  其他
关注(0)|答案(4)|浏览(387)

我已经阅读了PODIO documentation。我特别考虑了以下关于使用refresh_token的声明:
此请求返回与上面相同的数据,您可以一次又一次地继续执行此操作,以保持应用程序已通过身份验证,而不必要求用户重新进行身份验证。
这是否意味着refresh_token将无限期有效,还是过期:
1.签发后X日内;或
1.最后一次使用后的X天,以获得新的access_token
编辑:请参阅这个PODIO Thread,它提出了同样的问题,但似乎没有给予任何关于Oauth2.0协议的PODIO实现的结论性答案。

euoag5mw

euoag5mw1#

您问题的答案:
这意味着refresh_token将无限期有效还是过期?
......可以从OAuth 2.0规范的第1.5节和第10.4节中得出结论。

第1.5节refresh_token状态简介:

刷新令牌由授权服务器颁发给客户端,用于在当前访问令牌无效或过期时获取新的访问令牌,或获取具有相同或更窄范围的其他访问令牌(访问令牌的生存期可能比资源所有者授权的更短,权限也可能更少)

第10.4节refresh_token状态的安全注意事项:

授权服务器必须验证刷新令牌和客户端身份之间的绑定,只要客户端身份可以被认证。当客户端身份认证不可能时,授权服务器应该部署其他手段来检测刷新令牌滥用。
例如,授权服务器可以采用刷新令牌轮换,在这种轮换中,新的刷新令牌随每个访问令牌刷新响应一起发出。先前的刷新令牌被无效,但由授权服务器保留。如果刷新令牌被泄露,并随后被攻击者和合法客户端使用,则攻击者和合法客户端中的一个将提供无效的刷新令牌,其将通知授权服务器该违反。
可以得出结论,如果授权服务器能够验证refresh_token和向其发布该refresh_token的客户端之间的绑定,则refresh_token可以用于获得多个access_token并且将永不过期。否则,授权服务器将使旧的refresh_token无效,并且利用每个访问令牌刷新响应生成新的refresh_token

3wabscal

3wabscal2#

TL; DR

刷新令牌 * 将 * 最终过期或变为无效,您应该为此做好准备。
两种情况:
1.面向用户的服务(例如:授权授权流程)--也许可以 * 忽略 * 这个问题,因为人们擅长 * 关闭和再次打开 *,也就是刷新页面:-)
1.服务器端长时间运行的服务(例如:客户端凭证流)-您应该准备好应对访问令牌或刷新令牌都不起作用的情况,并从头开始重新启动身份验证。
真实的生活
刷新令牌可能有也可能没有过期时间,这取决于您的提供商,它们永远不会过期,只要它们是 * 最近 * 使用的,以月或小时为单位。依赖于您将收到新的刷新令牌和刷新的访问令牌这一事实可能是棘手的。
逾时并不是Token变成无效的唯一方式。请考虑oauth0中所述的下列案例:
虽然重新整理记号通常是长期有效的,但授权服务器可能会使它们失效。重新整理记号可能不再有效的部分原因包括:

  • 授权服务器已撤销刷新令牌
  • 用户已撤销其授权同意
  • 刷新令牌已过期
  • 资源的身份验证策略已更改(例如,最初资源仅使用用户名和密码,但现在需要MFA)

此外,令牌(访问、刷新)可以存储在身份验证提供程序服务中的非持久性存储中,因此,如果服务重新启动(崩溃、更新),则令牌可能会丢失。
结论
如果您正在编写需要可靠的长时间运行的服务,则不要依赖于能够通过刷新令牌永久刷新授予的身份验证。

s5a0g9ez

s5a0g9ez3#

刷新令牌将在创建后X天(或小时)过期。根据您的安全要求,此过期时间为1个月或1小时。
您必须考虑到功能和安全性等方面来做出决定。

  • 如果您决定优先考虑安全性,那么较短的过期时间可能会使您的应用程序对用户失去作用。
  • 如果您决定排定功能的优先级,您的应用程序可能会更容易受到攻击。
yizd12fk

yizd12fk4#

它是否过期取决于实现,但它们可以被撤销,并且令牌端点将给出有效的刷新令牌。
无论何时使用令牌端点获取新的OAuth令牌,都会得到一个refresh_token值。该值应该用作活动刷新令牌。该值可能会根据实现而更改。
实施示例:

无论如何实现,当使用刷新令牌调用吊销终结点时,令牌都应该无效。

相关问题