From 8abddfbb7d4b542330bbdc218d64da0bd0611367 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 25 Jun 2018 14:56:35 +0200 Subject: [PATCH] Polishing. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extract methods. Make ReactiveLifecycleAwareSessionManager.isTokenRenewable(…) an instance method with protected visibilit to align with LifecycleAwareSessionManager. See gh-257. --- .../LifecycleAwareSessionManager.java | 112 +++++++++--------- .../ReactiveLifecycleAwareSessionManager.java | 7 +- 2 files changed, 62 insertions(+), 57 deletions(-) diff --git a/spring-vault-core/src/main/java/org/springframework/vault/authentication/LifecycleAwareSessionManager.java b/spring-vault-core/src/main/java/org/springframework/vault/authentication/LifecycleAwareSessionManager.java index 8c812c7e..799d5fe7 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/authentication/LifecycleAwareSessionManager.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/authentication/LifecycleAwareSessionManager.java @@ -179,37 +179,8 @@ public class LifecycleAwareSessionManager extends LifecycleAwareSessionManagerSu return false; } - TokenWrapper wrapper = token.get(); - try { - - VaultResponse vaultResponse = restOperations.postForObject( - "auth/token/renew-self", - new HttpEntity<>(VaultHttpHeaders.from(token.get().getToken())), - VaultResponse.class); - - LoginToken renewed = LoginTokenUtil.from(vaultResponse.getRequiredAuth()); - - Duration validTtlThreshold = getRefreshTrigger() - .getValidTtlThreshold(renewed); - if (renewed.getLeaseDuration().compareTo(validTtlThreshold) <= 0) { - - if (logger.isDebugEnabled()) { - logger.info(String - .format("Token TTL (%s) exceeded validity TTL threshold (%s). Dropping token.", - renewed.getLeaseDuration(), validTtlThreshold)); - } - else { - logger.info("Token TTL exceeded validity TTL threshold. Dropping token."); - } - - this.token = Optional.empty(); - return false; - } - - this.token = Optional.of(new TokenWrapper(renewed, wrapper.revocable)); - - return true; + return doRenew(token.get()); } catch (HttpStatusCodeException e) { @@ -237,6 +208,36 @@ public class LifecycleAwareSessionManager extends LifecycleAwareSessionManagerSu } } + private boolean doRenew(TokenWrapper wrapper) { + + VaultResponse vaultResponse = restOperations.postForObject( + "auth/token/renew-self", + new HttpEntity<>(VaultHttpHeaders.from(wrapper.token)), + VaultResponse.class); + + LoginToken renewed = LoginTokenUtil.from(vaultResponse.getRequiredAuth()); + + Duration validTtlThreshold = getRefreshTrigger().getValidTtlThreshold(renewed); + if (renewed.getLeaseDuration().compareTo(validTtlThreshold) <= 0) { + + if (logger.isDebugEnabled()) { + logger.info(String + .format("Token TTL (%s) exceeded validity TTL threshold (%s). Dropping token.", + renewed.getLeaseDuration(), validTtlThreshold)); + } + else { + logger.info("Token TTL exceeded validity TTL threshold. Dropping token."); + } + + this.token = Optional.empty(); + return false; + } + + this.token = Optional.of(new TokenWrapper(renewed, wrapper.revocable)); + + return true; + } + @Override public VaultToken getSessionToken() { @@ -245,30 +246,7 @@ public class LifecycleAwareSessionManager extends LifecycleAwareSessionManagerSu synchronized (lock) { if (!token.isPresent()) { - - VaultToken token = clientAuthentication.login(); - TokenWrapper wrapper = new TokenWrapper(token, - token instanceof LoginToken); - - if (isTokenSelfLookupEnabled() - && !ClassUtils.isAssignableValue(LoginToken.class, token)) { - try { - token = LoginTokenAdapter.augmentWithSelfLookup( - this.restOperations, token); - wrapper = new TokenWrapper(token, false); - } - catch (VaultTokenLookupException e) { - logger.warn(String.format( - "Cannot enhance VaultToken to a LoginToken: %s", - e.getMessage())); - } - } - - this.token = Optional.of(wrapper); - - if (isTokenRenewable()) { - scheduleRenewal(); - } + doGetSessionToken(); } } } @@ -277,6 +255,32 @@ public class LifecycleAwareSessionManager extends LifecycleAwareSessionManagerSu () -> new IllegalStateException("Cannot obtain VaultToken")); } + private void doGetSessionToken() { + + VaultToken token = clientAuthentication.login(); + + TokenWrapper wrapper = new TokenWrapper(token, token instanceof LoginToken); + + if (isTokenSelfLookupEnabled() + && !ClassUtils.isAssignableValue(LoginToken.class, token)) { + try { + token = LoginTokenAdapter.augmentWithSelfLookup(this.restOperations, + token); + wrapper = new TokenWrapper(token, false); + } + catch (VaultTokenLookupException e) { + logger.warn(String.format( + "Cannot enhance VaultToken to a LoginToken: %s", e.getMessage())); + } + } + + this.token = Optional.of(wrapper); + + if (isTokenRenewable()) { + scheduleRenewal(); + } + } + protected VaultToken login() { return clientAuthentication.login(); } diff --git a/spring-vault-core/src/main/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManager.java b/spring-vault-core/src/main/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManager.java index f1cb8537..11727590 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManager.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManager.java @@ -243,7 +243,7 @@ public class ReactiveLifecycleAwareSessionManager extends }).map(TokenWrapper::getToken); } - Mono doRenew(TokenWrapper tokenWrapper) { + private Mono doRenew(TokenWrapper tokenWrapper) { Mono exchange = webClient .post() @@ -338,7 +338,7 @@ public class ReactiveLifecycleAwareSessionManager extends /** * @return {@literal true} if the token is renewable. */ - private static boolean isTokenRenewable(VaultToken token) { + protected boolean isTokenRenewable(VaultToken token) { return Optional.of(token) .filter(LoginToken.class::isInstance) @@ -384,7 +384,8 @@ public class ReactiveLifecycleAwareSessionManager extends (LoginToken) token)); } - static Mono augmentWithSelfLookup(WebClient webClient, VaultToken token) { + private static Mono augmentWithSelfLookup(WebClient webClient, + VaultToken token) { Mono> data = lookupSelf(webClient, token);