增加灵活性配置参数<code>sos.reuse.refresh-token</code>可实时延长token时效(类似session机制)

2.1.0
shengzhaoli.shengz 2022-04-30 22:43:57 +08:00
parent 56242e1174
commit 89997127b3
3 changed files with 36 additions and 6 deletions

View File

@ -165,13 +165,24 @@ Base on Spring-Boot
<ul> <ul>
<li> <li>
<p> <p>
Version: <strong>2.1.0</strong> [pending] Version: <strong>2.1.1</strong> [pending]
<br/> <br/>
Date: 2020-06-05 / --- Date: 2022-05-05 / ---
</p> </p>
<ol> <ol>
<li><p>升级access_token, refresh_token为JWT(Json Web Token), 提高性能</p></li> <li><p>尝试升级替换spring-security-oauth2, 详见<a href="https://andaily.com/blog/?p=20077">背景说明</a></p></li>
<li><p>增加灵活性配置参数<code>reuse.refresh-token</code>可延长token时效</p></li> </ol>
<br/>
</li>
<li>
<p>
Version: <strong>2.1.0</strong> [finished]
<br/>
Date: 2020-06-05 / 2022-05-01
</p>
<ol>
<li><p><del>升级access_token, refresh_token为JWT(Json Web Token), 提高性能</del></p></li>
<li><p><del>增加灵活性配置参数<code>sos.reuse.refresh-token</code>可实时延长token时效(类似session机制)</del></p></li>
<li><p><del>升级spring-security oauth2版本为2.3.8.RELEASE, 增加spring-security-jwt版本1.1.1.RELEASE</del></p></li> <li><p><del>升级spring-security oauth2版本为2.3.8.RELEASE, 增加spring-security-jwt版本1.1.1.RELEASE</del></p></li>
</ol> </ol>
<br/> <br/>

View File

@ -18,7 +18,7 @@ import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;
* <p> * <p>
* <p> * <p>
* JWT TokenStore config * JWT TokenStore config
* * <p>
* 使 * 使
* <pre>sos.token.store=jwt</pre> * <pre>sos.token.store=jwt</pre>
* *
@ -32,13 +32,21 @@ public class JWTTokenStoreConfiguration {
/** /**
* jwtKey * jwtKey
* * <p>
* HMAC key, default: IH6S2dhCEMwGr7uE4fBakSuDh9SoIrRa * HMAC key, default: IH6S2dhCEMwGr7uE4fBakSuDh9SoIrRa
* alg: HMACSHA256 * alg: HMACSHA256
*/ */
@Value("${sos.token.store.jwt.key:IH6S2dhCEMwGr7uE4fBakSuDh9SoIrRa}") @Value("${sos.token.store.jwt.key:IH6S2dhCEMwGr7uE4fBakSuDh9SoIrRa}")
private String jwtKey; private String jwtKey;
/**
* 使 refresh_token true
*
* @since 2.1.0
*/
@Value("${sos.reuse.refresh-token:true}")
private boolean reuseRefreshToken;
@Bean @Bean
public JwtAccessTokenConverter accessTokenConverter(UserService userService) { public JwtAccessTokenConverter accessTokenConverter(UserService userService) {
@ -77,6 +85,7 @@ public class JWTTokenStoreConfiguration {
//support refresh token //support refresh token
tokenServices.setSupportRefreshToken(true); tokenServices.setSupportRefreshToken(true);
tokenServices.setTokenEnhancer(tokenEnhancer); tokenServices.setTokenEnhancer(tokenEnhancer);
tokenServices.setReuseRefreshToken(this.reuseRefreshToken);
return tokenServices; return tokenServices;
} }

View File

@ -1,5 +1,6 @@
package com.monkeyk.sos.config; package com.monkeyk.sos.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -26,6 +27,14 @@ import javax.sql.DataSource;
public class JdbcTokenStoreConfiguration { public class JdbcTokenStoreConfiguration {
/**
* 使 refresh_token true
*
* @since 2.1.0
*/
@Value("${sos.reuse.refresh-token:true}")
private boolean reuseRefreshToken;
/** /**
* JDBC TokenStore * JDBC TokenStore
*/ */
@ -42,6 +51,7 @@ public class JdbcTokenStoreConfiguration {
tokenServices.setClientDetailsService(clientDetailsService); tokenServices.setClientDetailsService(clientDetailsService);
//support refresh token //support refresh token
tokenServices.setSupportRefreshToken(true); tokenServices.setSupportRefreshToken(true);
tokenServices.setReuseRefreshToken(this.reuseRefreshToken);
return tokenServices; return tokenServices;
} }