Spring OAuth2刷新令牌刷新访问令牌后更改

Posted

技术标签:

【中文标题】Spring OAuth2刷新令牌刷新访问令牌后更改【英文标题】:Spring OAuth2 refresh token to change after refreshing access token 【发布时间】:2017-04-14 06:23:46 【问题描述】:

我创建了一个身份验证服务器和资源服务器,两者都工作正常,唯一的问题是刷新令牌,我希望在用grant_type=refresh_token 调用POST /oauth/token 后更改它,但是,spring 返回相同的刷新令牌。

我想知道在调用 oauth 端点刷新访问令牌时是否有办法获取新的刷新令牌?

【问题讨论】:

【参考方案1】:

通过查看DefaultTokenServices 类中的refreshAccessToken 方法:

public OAuth2AccessToken refreshAccessToken(String refreshTokenValue, 
                                            TokenRequest tokenRequest) 

    // Omitted
    if (!reuseRefreshToken) 
        tokenStore.removeRefreshToken(refreshToken);
        refreshToken = createRefreshToken(authentication);
    
    // Omitted

您应该以某种方式将reuseRefreshToken 标志设置为false。您可以在 AuthorizationServerConfigurerAdapter 实现中执行此操作:

@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter 
    // Other methods

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception 
        endpoints
                .reuseRefreshTokens(false);
    

【讨论】:

以上是关于Spring OAuth2刷新令牌刷新访问令牌后更改的主要内容,如果未能解决你的问题,请参考以下文章

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

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

如何在spring security oauth2中分离访问令牌和刷新令牌端点

Spring 5,401 返回后带有 Google 刷新访问令牌的 OAuth2

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

尝试使用spring oauth2中的刷新令牌获取新的访问令牌时出现无效的客户端错误