Polishing.
Extract methods. Make ReactiveLifecycleAwareSessionManager.isTokenRenewable(…) an instance method with protected visibilit to align with LifecycleAwareSessionManager. See gh-257.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ public class ReactiveLifecycleAwareSessionManager extends
|
||||
}).map(TokenWrapper::getToken);
|
||||
}
|
||||
|
||||
Mono<TokenWrapper> doRenew(TokenWrapper tokenWrapper) {
|
||||
private Mono<TokenWrapper> doRenew(TokenWrapper tokenWrapper) {
|
||||
|
||||
Mono<VaultResponse> 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<VaultToken> augmentWithSelfLookup(WebClient webClient, VaultToken token) {
|
||||
private static Mono<VaultToken> augmentWithSelfLookup(WebClient webClient,
|
||||
VaultToken token) {
|
||||
|
||||
Mono<Map<String, Object>> data = lookupSelf(webClient, token);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user