我创建了一个认证服务器和资源服务器,两者都工作正常,唯一的问题是刷新令牌,我希望在调用POST /oauth/token
并使用grant_type=refresh_token
后,刷新令牌会改变,然而,spring返回相同的刷新令牌。
我想知道在调用oauth端点刷新访问令牌时是否有办法获取一个新的刷新令牌?
我创建了一个认证服务器和资源服务器,两者都工作正常,唯一的问题是刷新令牌,我希望在调用POST /oauth/token
并使用grant_type=refresh_token
后,刷新令牌会改变,然而,spring返回相同的刷新令牌。
我想知道在调用oauth端点刷新访问令牌时是否有办法获取一个新的刷新令牌?
通过查看
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); } }