文章目录
首先,认证服务器导入依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
使用注解,开启spring session支持
@EnableRedisHttpSession(maxInactiveIntervalInSeconds =2592000 )
注:将session信息存入redis中,失效时间设置为一个月
OAuth2 token增加刷新令牌
数据库中修改配置,在oauth_client_details表字段authorizaed_grant_types添加refresh_token支持,并添加refresh_token_validity失效时间为一个月,这样在执行/oauth/token接口时就会返回一个refresh_token的属性值,为保证安全一般access_token一般设置的时间很短,refresh_token可以设置较长时间,通过refresh_token不断去刷新access_token以保证程序的正常运行
修改代码,让其支持refresh_token刷新令牌
首先判断access_是否失效
遇到问题:在passwod模式下,执行刷新token时,抛出异常Handling error: IllegalStateException, UserDetailsService is required.
解决方法:
@Configuration
@EnableAuthorizationServer
public class OAuth2AuthorizationServer extends AuthorizationServerConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
// 执行token刷新需要带上此参数
endpoints.userDetailsService(userDetailsService);
}
}