【问题标题】:Spring OAuth2 refresh token to change after refreshing access tokenSpring OAuth2刷新令牌刷新访问令牌后更改
【发布时间】:2017-04-14 06:23:46
【问题描述】:
我创建了一个身份验证服务器和资源服务器,两者都工作正常,唯一的问题是刷新令牌,我希望在用grant_type=refresh_token 调用POST /oauth/token 后更改它,但是,spring 返回相同的刷新令牌。
我想知道在调用 oauth 端点刷新访问令牌时是否有办法获取新的刷新令牌?
【问题讨论】:
标签:
java
spring
spring-security
oauth-2.0
spring-security-oauth2
【解决方案1】:
通过查看DefaultTokenServices 类中的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);
}
}