当前位置: 首页 > 知识库问答 >
问题:

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

郎刚捷
2023-03-14

我已经阅读了跑道文档。我特别考虑了以下关于使用refresh_token的声明:

此请求返回与上述相同的数据,您可以继续反复执行此操作,以保持应用程序的身份验证,而无需要求用户重新身份验证。

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

    < li >签发后X天;或者 < li >最后一次使用它获取新的< code>access_token后的X天

编辑:请参阅此跑道线程,该线程提出相同的问题,但似乎没有给出任何关于Oauth2.0协议的跑道实现的结论性答案。

共有3个答案

吴城
2023-03-14

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

您必须在考虑功能和安全性等某些方面的情况下做出决定。

  • 如果您决定优先考虑安全性,那么短暂的过期可能会使您的应用程序对用户来说变得异常
  • 如果您决定优先考虑功能,您的应用程序可能更容易受到攻击
林意蕴
2023-03-14

刷新令牌最终将过期或变得无效,您应该为此做好准备。

两种情况:

>

  • 面向用户的服务(例如:授权流程) - 也许可以忽略这个问题,因为人们擅长关闭它并再次打开它,也就是刷新页面:-)

    服务器端长时间运行服务(例如:客户端凭据流)-您应该准备好应对访问或刷新令牌都不起作用的情况,并从头开始重新启动身份验证。

    刷新令牌可能有到期时间,也可能没有到期时间,这取决于您的提供商,它们永远不会到期,无论是最近使用的,以月或小时为单位。依赖于您将收到具有刷新访问令牌的新刷新令牌这一事实可能很棘手。

    超时并不是令牌可能无效的唯一方式。考虑以下在oAuth0中描述的场景:

    虽然刷新令牌通常寿命很长,但授权服务器可以使它们失效。刷新令牌可能不再有效的一些原因包括:

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

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

    如果您正在编写需要可靠的常住服,不要依赖于能够通过刷新令牌永久刷新授予的身份验证。

  • 于鹏
    2023-03-14

    您问题的答案:

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

    ...可以从OAuth 2.0规范的第1.5节和第10.4节中得出结论。

    第1.5节 refresh_token的介绍:

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

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

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

    例如,授权服务器可以采用刷新令牌轮换,其中在每次访问令牌刷新响应时都发布新的刷新令牌。先前的刷新令牌无效,但由授权服务器保留。如果刷新令牌被攻击者和合法客户端泄露并随后使用,其中一方将提供一个无效的刷新令牌,该令牌将通知授权服务器该漏洞。

    可以得出这样的结论:如果authorization_server能够验证refresh_token和它被发布到的客户端之间的绑定,那么refresh_token<-code>可以用于获取多个 ,并且永远不会过期。否则,授权服务器将使旧的 refresh_token无效,并在每次访问令牌刷新响应时生成新的 refresh _token

     类似资料:
    • google oauth2刷新令牌何时过期? 我所说的过期是指过期是因为经过了某个时间跨度(不是因为用户已撤销访问权限或用户已请求新的刷新令牌) 我做了一些研究,没有一个引用官方的谷歌文档(我也找不到一个有效的谷歌文档) 其他一些问题表示,由于时间,它从未过期: 谷歌刷新令牌过期了吗? https://community.fitbit.com/t5/web-api-development/inva

    • 我一定是漏掉了什么! 我一直在尝试使用新的(对我来说是新的,来自delphi xe2环境)TOAuth2Authenticator、TRESTClient、TRESTRequest、TRESTResponse组件刷新过期的OAUTH2令牌 null 我假设(看来是错误的),如果我尝试对服务器执行请求,并且令牌已经过期,那么组件应该有足够的细节来意识到令牌已经过期,并在需要的时候刷新它。 我认为没有

    • 当访问Google-Drive时,访问令牌可能过期,我们可以使用刷新令牌获得新的访问令牌。但是,有许多可能的原因,即刷新令牌本身停止工作或过期,请参见: https://developers.google.com/identity/protocols/oauth2#过期 所以我的问题是,如果刷新令牌在6个月后过期了会发生什么,我如何检测它?刷新访问令牌的请求是否在403被禁止的情况下失败,或者返回

    • 任何人都可以告诉我通过 OAuth2 生成刷新令牌的到期时间。实际上,它通常返回 2 个参数访问令牌和刷新令牌。我们使用刷新令牌,以便在访问令牌过期时生成新的访问 toke。但是谷歌日历版本3,我正在使用刷新令牌来调用日历API。但是在这里我遇到了令牌过期的问题。所以任何人都可以建议我当令牌过期时我该怎么办。据我说,刷新令牌没有过期时间。请检查下面的代码以使用刷新令牌创建日历服务:-

    • 我在我的应用程序中使用Google API,并且oAuth2刷新令牌在1小时后过期。我正在使用此刷新令牌执行每天运行的任务。我使用OAuth2游乐场创建刷新令牌。有没有办法延长刷新令牌的过期时间?(1个月)