OAuth 客户端凭据重新颁发访问令牌与刷新令牌

Posted

技术标签:

【中文标题】OAuth 客户端凭据重新颁发访问令牌与刷新令牌【英文标题】:OAuth Client Credentials Reissue Access Token vs. Refresh Token 【发布时间】:2019-05-24 23:22:09 【问题描述】:

阅读一些关于 Oauth 2 流程中刷新令牌用途的类似帖子,它们对于用户参与的身份验证(例如用户名和密码)有意义,但对于 Oauth2 客户端凭据流程,为什么要冒险使用刷新令牌有吗?

与通过客户端 ID 和客户端机密身份验证获取访问令牌相比,使用刷新令牌在过期后获取新的访问令牌是否会更小或更快?

引用的帖子:

Why Does OAuth v2 Have Both Access and Refresh Tokens? what's the point of refresh token?

【问题讨论】:

【参考方案1】:

短小精悍的是——客户端可以在不涉及资源所有者的情况下代表自己行事;只需像以前一样请求新的访问令牌。


...但是对于 Oauth2 客户端凭据流程,为什么要冒险使用 完全刷新令牌?

很好的观察;客户端凭据流不会发出刷新令牌。在没有资源所有者的情况下,假设客户端可以根据需要请求新的访问令牌是合理的。

系统压力是否更小,或者使用刷新令牌更快? 过期后获取新的访问令牌,而不是获取 通过客户端ID和客户端秘密身份验证访问令牌?

虽然刷新令牌的处理速度肯定是特定于实现的,但处理刷新令牌的速度可能比请求新访问令牌的速度要慢一些。这是因为客户端能够直接请求访问令牌,而无需针对调用客户端验证刷新令牌。

【讨论】:

以上是关于OAuth 客户端凭据重新颁发访问令牌与刷新令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何刷新存储的 Google oAuth 凭据

Oauth2 - 客户端凭证流中的长寿命令牌与重新身份验证

Oauth 刷新令牌授予类型

Oauth2/Openid 连接。如何撤销未知的访问/刷新令牌

无法通过 Postman 在 Django oauth 工具包客户端凭据授予中获取访问令牌

Spring Security OAuth 2 隐式授权 - 不支持刷新令牌