【问题标题】:Why refresh token has to be replaced when used?为什么使用时必须更换刷新令牌?
【发布时间】:2019-10-21 18:29:43
【问题描述】:

我看到大多数人说当我们使用刷新令牌交换新的访问令牌时,身份验证服务器会发出一个新的刷新令牌并使之前的刷新令牌无效。参考 OAuth Refresh Token Best Practice

但是来自 OAuth 网站 https://www.oauth.com/oauth2-servers/access-tokens/refreshing-access-tokens/

它说身份验证服务器可以“可选地发出一个新的新令牌作为响应,或者如果我们不包含新的刷新令牌,客户端假定当前的刷新令牌将继续有效”

因此,OAuth2 标准似乎可以接受这两个选项(保留或更新刷新令牌)。

我的问题是:

1) 这两个选项是否同样安全?

2) 如果认证服务器返回一个新的刷新令牌,但客户端接收失败(例如网络错误),客户端无法使用已经失效的现有刷新令牌重新获得访问令牌。对吗?

3) 如果刷新令牌已经泄露给其他人,攻击者和受害者客户端都可以使用它。如果auth server采用renew方式,那么只有第一个使用refresh token的人才能重新获得access token。因此,如果受害者发现刷新令牌不再有效,它可能会认为刷新令牌已被泄露。这就是“更新方式”的原因吗?

【问题讨论】:

    标签: oauth-2.0 refresh-token


    【解决方案1】:

    2.) 是的,没错。

    3.) 这也是正确的。您可以查看讨论刷新令牌再生的OAuth 2.0 for Browser-Based Apps RFC。这主要对公共客户端很重要 - 那些没有 client_secret 的客户端,因为刷新令牌可以立即交换为访问令牌。

    1.) 刷新令牌重新生成是一项安全功能 - 它会缩短被盗刷新令牌的有效期,并使身份验证服务器能够检测到刷新令牌已被泄露。所以使用它比不使用它更安全。但是对于私人客户端而言,在每次使用时不获取新的刷新令牌可能更方便 - 例如,为了防止由于网络错误导致刷新令牌丢失 - 正如您在第 2 点中所描述的那样。

    【讨论】:

    • 感谢 RFC 链接。它对重新颁发刷新令牌有明确的指导。
    猜你喜欢
    • 2021-12-02
    • 1970-01-01
    • 2021-02-04
    • 2017-01-18
    • 2021-12-26
    • 1970-01-01
    • 2022-06-18
    • 2022-12-23
    相关资源
    最近更新 更多