我有一个使用Microsoft Azure
active directory来允许身份验证(oauth2
)的springboot
应用程序。
我遵循了微软(https://docs.microsoft.com/en-us/java/azure/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory?view=azure-java-stable)提供的"how to“。
一切都很好,除了我不知道如何处理过期令牌(1小时后),它不会影响用户的方式。
我知道可以使用刷新令牌获得新的令牌,但是如果我查看一下NimbusAuthorizationCodeTokenResponseClient.java
,刷新令牌不会保存在任何地方,即使它是可用的。
我找不到任何关于如何保留这个刷新令牌以及如何使用它的示例,比如它应该像整个过程一样自动工作。
有没有人对这个Azure活动目录spring启动模块有任何经验?
我在azure spring boot module 2.0.5
中使用Springboot 2.0.4
发布于 2018-09-13 23:56:00
refresh_token会自动刷新您的access_token。
但是,当您的refresh_token令牌过期时,您仍然可以遇到相同的错误。为了处理这个问题,你可以让你的refresh_token在获得新access_token的同时自动续费。在身份验证服务器代码处的AuthorizationServerEndpointsConfigurer配置中使用reuseRefreshTokens(false):
看看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);
}
}
https://stackoverflow.com/questions/52184654
复制