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