【发布时间】:2016-12-22 07:01:04
【问题描述】:
为什么客户端不能简单地为每个授权请求同时发送访问令牌和刷新令牌?如果访问令牌已过期,则不需要两次额外的行程来检索新的访问令牌并最终发出相关请求。
我意识到这个操作是摊销的,但它会减少对非常短的访问令牌的请求数量。在 SSL 下,我看不出添加刷新令牌如何使其更容易受到攻击。还是这样?
【问题讨论】:
为什么客户端不能简单地为每个授权请求同时发送访问令牌和刷新令牌?如果访问令牌已过期,则不需要两次额外的行程来检索新的访问令牌并最终发出相关请求。
我意识到这个操作是摊销的,但它会减少对非常短的访问令牌的请求数量。在 SSL 下,我看不出添加刷新令牌如何使其更容易受到攻击。还是这样?
【问题讨论】:
我认为主要原因是刷新令牌和访问令牌被发送到不同的地方。访问令牌被发送到资源服务器,刷新令牌被发送到授权服务器。在一般情况下,资源服务器对刷新令牌无能为力。
【讨论】:
一些原因:
访问令牌提供了一个抽象层,替换不同的 授权结构(例如,用户名和密码) 资源服务器理解的令牌。这种抽象使 颁发比授权授予更严格的访问令牌 用于获取它们,以及消除资源服务器的需要 了解各种身份验证方法。
https://www.rfc-editor.org/rfc/rfc6749#section-1.4
...
因为刷新令牌通常是持久的凭据,用于 请求额外的访问令牌,刷新令牌绑定到 发给它的客户。 如果客户类型是机密或 客户端获得了客户端凭据(或分配了其他 身份验证要求),客户端必须与 第 3.2.1 节中描述的授权服务器。
https://www.rfc-editor.org/rfc/rfc6749#section-6
刷新请求需要客户端凭据。资源服务器不应该看到客户端的凭据。
刷新令牌应该是持久的,而访问令牌不是(或不应该)。
【讨论】: