`refresh token`是否会过期,如果是的话?

时间:2016-11-11 20:40:30

标签: oauth-2.0 podio

我已阅读PODIO documentation。我特别考虑了以下关于使用refresh_token

的陈述
  

此请求返回与上面相同的数据,您可以继续   一遍又一遍地执行此操作,以保持您的应用程序的身份验证   无需要求用户重新进行身份验证。

这是否意味着refresh_token将无限期有效或过期:

  1. 发行后X天;或
  2. 最后一次使用它后X天获取新access_token
  3. 非常感谢任何帮助。 TIA!

    编辑:请参阅此PODIO Thread,其中提出了相同的问题,但似乎没有给出关于Ooduth2.0协议的PODIO实现的任何结论性答案。

3 个答案:

答案 0 :(得分:12)

你的问题的答案

  

这是否意味着refresh_token将无限期有效或   它会过期吗?

可以从oauth 2.0规范的section 1.5section 10.4得出结论。

第1.5节介绍refresh_token表示:

  

授权服务器向客户端发送刷新令牌   并用于在当前访问时获取新的访问令牌   令牌变为无效或过期,或获取其他访问权限   具有相同或较窄范围的令牌(访问令牌可能具有   更短的生命周期和更少的权限比授权的   资源所有者)

第10.4节refresh_token的安全注意事项表明:

  

授权服务器必须验证刷新之间的绑定   每当客户端身份可以时,令牌和客户端身份   认证。当无法进行客户端身份验证时   授权服务器应该部署其他方法来检测刷新令牌   滥用。

     

例如,授权服务器可以使用刷新令牌
  每次访问时发出新刷新令牌的轮换   令牌刷新响应。先前的刷新令牌无效但是   由授权服务器保留。如果刷新令牌是
  受到攻击并且随后被攻击者使用   合法客户,其中一个将呈现无效的刷新
  令牌,它将通知授权服务器该违规行为。

可以得出结论,如果authorization_server能够验证refresh_token与发布它的客户之间的绑定,那么refresh_token可用于获取多个access_token永远不会过期。否则授权服务器将使旧的refresh_token无效,并为每个访问令牌刷新响应生成新的refresh_token

答案 1 :(得分:3)

刷新令牌将在创建后的X天(或小时)到期。根据您的安全要求,此到期时间为1个月或1个小时。

您必须做出决定,将功能和安全性作为一些方面。

  • 如果您决定优先考虑安全性,则很短的过期可能会使您的应用程序对用户造成麻烦。
  • 如果您决定优先考虑功能,那么您的应用程序可能会更容易受到攻击。

答案 2 :(得分:0)

TL; DR

刷新令牌 最终会失效或失效,您应该为此做好准备。

两种情况:

  1. 面向用户的服务(例如,授权授予流程)-也许可以忽略该问题,因为人们擅长将其关闭并再次,再次刷新页面:-)

  2. 服务器端长期运行的服务(例如:客户端凭据流)-您应该为无法访问或刷新令牌都无法工作并重新启动身份验证的情况做好准备。

现实生活

刷新令牌可能有也可能没有到期时间,具体取决于您的提供者,这些令牌永远不会过期,只要它们最近使用(数月或数小时)即可。依靠您将收到带有刷新的访问令牌的新刷新令牌这一事实可能很棘手。

超时不是令牌可能变为无效的唯一方法。考虑以下oauth0中所述的方案:

  

虽然刷新令牌通常是长期存在的,但授权服务器   会使它们失效。刷新令牌可能不再的某些原因   有效的包括:

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

此外,令牌(访问,刷新)可以存储在身份验证提供程序服务的非永久性存储中,因此,如果服务重新启动(崩溃,更新),您的令牌可能会消失。

结论

如果您正在编写需要可靠的长期运行的服务,请不要依赖能够通过刷新令牌永久刷新授予的身份验证。