Oauth 刷新令牌授予类型

Posted

技术标签:

【中文标题】Oauth 刷新令牌授予类型【英文标题】:Oauth refresh token grant types 【发布时间】:2020-09-08 20:27:27 【问题描述】:

我正在学习 Oauth 授权类型。我观察到刷新令牌仅适用于 授权代码和资源所有者密码凭证授予。 我的问题是为什么它仅适用于授权代码和资源所有者密码凭据授予而不适用于隐式和客户端凭据授予?

【问题讨论】:

【参考方案1】:

Refresh tokens 应该只发给可以在使用它时进行身份验证的客户端。

授权代码授予旨在供confidential clients(可以保密的客户端)使用。并且刷新令牌的使用应该使用客户端凭据进行身份验证。

资源所有者密码凭证流发出一个刷新令牌,这样客户端就不必保留用户的用户名和密码。它可以使用刷新令牌来获取新的访问令牌。

隐式授权旨在供公共客户(无法保密)使用。由于他们无法保密,因此这些客户端无法将客户端凭据与刷新授权一起使用。

最后,客户端凭据流不需要刷新令牌,因为它可以在旧的凭据过期时使用客户端凭据获取新的访问令牌。

【讨论】:

您能否详细说明一下上述场景中的隐式授权? 隐式授权 (tools.ietf.org/html/rfc6749#section-4.2) 直接从授权端点发出访问令牌,并在重定向 uri 的片段中返回令牌。它现在已被弃用,取而代之的是与 PKCE 结合的授权代码授予。【参考方案2】:

如果您使用的是 v5,则可以使用 https://docs.spring.io/spring/docs/5.0.0.M5_to_5.0.0.RC1/Spring%20Framework%205.0.0.RC1/org/springframework/web/cors/CorsConfiguration.html

CorsConfiguration#applyPermitDefaultValues

或者你可以使用

@RestController
@CrossOrigin(origins = "*", methods= RequestMethod.GET,RequestMethod.POST)
public class HelloRESTController 

【讨论】:

以上是关于Oauth 刷新令牌授予类型的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Passport 密码授予刷新令牌

使用 Spring oAuth2 impl,是不是可以在刷新令牌授予期间“降级”访问令牌的范围?

Dropbox API (OAuth v1) 授予的访问令牌的有效性是啥以及如何刷新它?

从passportjs中的刷新令牌获取oauth访问令牌

eBay oauth 令牌和刷新令牌

Spring oauth2刷新令牌 - 无法将访问令牌转换为JSON