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);
}
}
我创建了一个身份验证服务器和资源服务器,两者都工作正常,唯一的问题是刷新令牌,我希望在使用 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);
}
}