【问题标题】:Should oAuth 2.0 revoke older Authorization Codes if new code requested如果请求新代码,oAuth 2.0 是否应该撤销旧的授权代码
【发布时间】:2014-11-17 23:04:54
【问题描述】:

我不知道 oAuth 2.0 服务器是否应该在请求新代码时撤销旧的授权代码(不是授权令牌)?如果在应用设置中没有指定有效的 redirect_uri 参数,我也无法弄清楚 oAuth 服务器应该以什么格式显示错误。

感谢您帮助我理解此 RFC。

https://www.rfc-editor.org/rfc/rfc6749

【问题讨论】:

    标签: oauth-2.0


    【解决方案1】:

    据我所知,规范未涵盖您的问题,因此以下答案仅反映我对实际实施的个人意见。

    客户可以合法地请求多个不同范围的授权代码。您可以争论这是否有意义(尽管我认为确实如此),但标准并没有禁止它。因此,我认为只有在客户端重新发送请求时才应撤销旧代码(即具有完全相同的请求详细信息:客户端 ID、重定向 uri、范围)。

    对于缺少 redirect_uri,服务器应返回 HTTP 400 Bad Request 并在消息正文(和/或适当的 HTTP 标头)中包含错误详细信息。

    【讨论】:

    • 如果我理解正确,授权码应该有一个小的 TTL。那么如果每个代码只存在1-10分钟,那么允许多个不同范围的授权代码就没有意义了吗?在 RFC 中,它说客户端应尽快交换授权代码以获取授权令牌。
    • 一个短的 TTL 与多个请求并不矛盾,它们都可以在短时间内得到服务。然而,再想一想,我意识到授权代码 OAuth 场景需要明确的用户批准(即用户交互)。由于该场景将用户从客户端 webapp 重定向到身份验证服务器,因此在检索到第一个请求的结果之前,客户端不可能请求另一个令牌。因此,您应该撤销来自同一客户端的新请求的代码。
    猜你喜欢
    • 2015-07-08
    • 2016-10-15
    • 2018-08-05
    • 1970-01-01
    • 2015-12-11
    • 2019-07-07
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多