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

IT小君   2023-09-16T19:44:13

我创建了一个认证服务器和资源服务器,两者都工作正常,唯一的问题是刷新令牌,我希望在调用POST /oauth/token并使用grant_type=refresh_token后,刷新令牌会改变,然而,spring返回相同的刷新令牌。

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

评论(1)
IT小君

通过查看DefaultTokenServices类中的refreshAccessToken方法,你可以了解到:

public OAuth2AccessToken refreshAccessToken(String refreshTokenValue, 
                                            TokenRequest tokenRequest) {

    // 省略部分代码
    if (!reuseRefreshToken) {
        tokenStore.removeRefreshToken(refreshToken);
        refreshToken = createRefreshToken(authentication);
    }
    // 省略部分代码
}

你应该将reuseRefreshToken标志设置为false。可以在你的AuthorizationServerConfigurerAdapter实现中进行设置:

@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {
    // 其他方法

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints
                .reuseRefreshTokens(false);
    }
}
2023-09-16T19:44:32   回复