From e4c31c5bd81373247d1601046a7fae0179d98606 Mon Sep 17 00:00:00 2001 From: wzy Date: Thu, 3 Mar 2022 14:04:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3redis=E5=88=B7=E6=96=B0token?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/redis/RedisConnection.java | 5 +++++ .../provider/token/store/RedisTokenStore.java | 22 +++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/maxkey-core/src/main/java/org/maxkey/persistence/redis/RedisConnection.java b/maxkey-core/src/main/java/org/maxkey/persistence/redis/RedisConnection.java index 5772af0f0..9ffd0150e 100644 --- a/maxkey-core/src/main/java/org/maxkey/persistence/redis/RedisConnection.java +++ b/maxkey-core/src/main/java/org/maxkey/persistence/redis/RedisConnection.java @@ -147,5 +147,10 @@ public class RedisConnection { public void setConn(Jedis conn) { this.conn = conn; } + + public Pipeline getPipeline() { + return pipeline; + } + } diff --git a/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/token/store/RedisTokenStore.java b/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/token/store/RedisTokenStore.java index 0cfa2ba42..b09855bd1 100644 --- a/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/token/store/RedisTokenStore.java +++ b/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/token/store/RedisTokenStore.java @@ -35,6 +35,7 @@ import org.maxkey.util.ObjectTransformer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import java.util.Date; /** @@ -216,14 +217,15 @@ public class RedisTokenStore implements TokenStore { RedisConnection conn = getConnection(); try { conn.openPipeline(); - conn.delete(accessKey); - conn.delete(accessToRefreshKey); - // Don't remove the refresh token - it's up to the caller to do that - conn.delete(authKey); + conn.getPipeline().get(accessKey); + conn.getPipeline().get(authKey); + conn.getPipeline().del(accessKey); + conn.getPipeline().del(accessToRefreshKey); + //Don't remove the refresh token - it's up to the caller to do that + conn.getPipeline().del(authKey); List results = conn.closePipeline(); String access = (String) results.get(0); String auth = (String) results.get(1); - OAuth2Authentication authentication = ObjectTransformer.deserialize(auth); if (authentication != null) { String key = authenticationKeyGenerator.extractKey(authentication); @@ -251,6 +253,7 @@ public class RedisTokenStore implements TokenStore { conn.openPipeline(); conn.setObject(refreshKey, refreshToken); conn.setObject(refreshAuthKey, authentication); + if (refreshToken instanceof ExpiringOAuth2RefreshToken) { ExpiringOAuth2RefreshToken expiringRefreshToken = (ExpiringOAuth2RefreshToken) refreshToken; Date expiration = expiringRefreshToken.getExpiration(); @@ -314,8 +317,8 @@ public class RedisTokenStore implements TokenStore { RedisConnection conn = getConnection(); try { conn.openPipeline(); - conn.get(key); - conn.delete(key); + conn.getPipeline().get(key); + conn.getPipeline().del(key); results = conn.closePipeline(); } finally { conn.close(); @@ -323,11 +326,12 @@ public class RedisTokenStore implements TokenStore { if (results == null) { return; } - String bytes = (String) results.get(0); - String accessToken = ObjectTransformer.deserialize(bytes); + String accessToken = (String) results.get(0); + //String accessToken = ObjectTransformer.deserialize(bytes); if (accessToken != null) { removeAccessToken(accessToken); } + } @Override