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

Spring OAuth2 refresh token to change after refreshing access token

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

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

通过查看 DefaultTokenServices class 中的 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);
    }
}