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

9
我创建了一个认证服务器和资源服务器,两者都工作正常,唯一的问题在于刷新令牌(refresh token),我希望在调用POST /oauth/token并使用grant_type=refresh_token时,能够更改刷新令牌,但是Spring返回相同的刷新令牌。
我想知道在调用OAuth端点以刷新访问令牌时,是否有一种方法可以获取新的刷新令牌?
1个回答

22
通过查看DefaultTokenServices类中的refreshAccessToken方法:
public OAuth2AccessToken refreshAccessToken(String refreshTokenValue, 
                                            TokenRequest tokenRequest) {

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

你需要在你的AuthorizationServerConfigurerAdapter实现中以某种方式将reuseRefreshToken标志设置为false
@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {
    // Other methods

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接