Spring OAuth2刷新令牌刷新访问令牌后更改
Posted
技术标签:
【中文标题】Spring OAuth2刷新令牌刷新访问令牌后更改【英文标题】:Spring OAuth2 refresh token to change after refreshing access token 【发布时间】:2017-04-14 06:23:46 【问题描述】:我创建了一个身份验证服务器和资源服务器,两者都工作正常,唯一的问题是刷新令牌,我希望在用grant_type=refresh_token
调用POST /oauth/token
后更改它,但是,spring 返回相同的刷新令牌。
我想知道在调用 oauth 端点刷新访问令牌时是否有办法获取新的刷新令牌?
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于Spring OAuth2刷新令牌刷新访问令牌后更改的主要内容,如果未能解决你的问题,请参考以下文章
Spring oauth2 刷新令牌 - 无法将访问令牌转换为 JSON
Spring oauth2刷新令牌 - 无法将访问令牌转换为JSON
如何在spring security oauth2中分离访问令牌和刷新令牌端点
Spring 5,401 返回后带有 Google 刷新访问令牌的 OAuth2