Skip to content

Commit 6e590c6

Browse files
committed
Refactored VaultServiceTokenSupplier
1 parent 1c8cfaa commit 6e590c6

File tree

2 files changed

+33
-37
lines changed

2 files changed

+33
-37
lines changed
Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@
44
import com.bettercloud.vault.rest.Rest;
55
import com.bettercloud.vault.rest.RestException;
66
import com.bettercloud.vault.rest.RestResponse;
7-
import io.scalecube.services.ServiceReference;
8-
import io.scalecube.services.auth.CredentialsSupplier;
9-
import io.scalecube.services.security.ServiceTokens;
107
import io.scalecube.utils.MaskUtil;
11-
import java.util.Collections;
128
import java.util.Map;
139
import java.util.StringJoiner;
1410
import java.util.function.BiFunction;
@@ -18,10 +14,9 @@
1814
import reactor.core.Exceptions;
1915
import reactor.core.publisher.Mono;
2016

21-
public final class VaultServiceTokenCredentialsSupplier implements CredentialsSupplier {
17+
public final class VaultServiceTokenSupplier {
2218

23-
private static final Logger LOGGER =
24-
LoggerFactory.getLogger(VaultServiceTokenCredentialsSupplier.class);
19+
private static final Logger LOGGER = LoggerFactory.getLogger(VaultServiceTokenSupplier.class);
2520

2621
private static final String VAULT_TOKEN_HEADER = "X-Vault-Token";
2722

@@ -30,9 +25,9 @@ public final class VaultServiceTokenCredentialsSupplier implements CredentialsSu
3025
private Supplier<String> vaultTokenSupplier;
3126
private BiFunction<String, Map<String, String>, String> serviceTokenNameBuilder;
3227

33-
public VaultServiceTokenCredentialsSupplier() {}
28+
public VaultServiceTokenSupplier() {}
3429

35-
private VaultServiceTokenCredentialsSupplier(VaultServiceTokenCredentialsSupplier other) {
30+
private VaultServiceTokenSupplier(VaultServiceTokenSupplier other) {
3631
this.serviceRole = other.serviceRole;
3732
this.vaultAddress = other.vaultAddress;
3833
this.vaultTokenSupplier = other.vaultTokenSupplier;
@@ -45,8 +40,8 @@ private VaultServiceTokenCredentialsSupplier(VaultServiceTokenCredentialsSupplie
4540
* @param serviceRole serviceRole
4641
* @return new instance with applied setting
4742
*/
48-
public VaultServiceTokenCredentialsSupplier serviceRole(String serviceRole) {
49-
final VaultServiceTokenCredentialsSupplier c = copy();
43+
public VaultServiceTokenSupplier serviceRole(String serviceRole) {
44+
final VaultServiceTokenSupplier c = copy();
5045
c.serviceRole = serviceRole;
5146
return c;
5247
}
@@ -57,8 +52,8 @@ public VaultServiceTokenCredentialsSupplier serviceRole(String serviceRole) {
5752
* @param vaultAddress vaultAddress
5853
* @return new instance with applied setting
5954
*/
60-
public VaultServiceTokenCredentialsSupplier vaultAddress(String vaultAddress) {
61-
final VaultServiceTokenCredentialsSupplier c = copy();
55+
public VaultServiceTokenSupplier vaultAddress(String vaultAddress) {
56+
final VaultServiceTokenSupplier c = copy();
6257
c.vaultAddress = vaultAddress;
6358
return c;
6459
}
@@ -69,50 +64,51 @@ public VaultServiceTokenCredentialsSupplier vaultAddress(String vaultAddress) {
6964
* @param vaultTokenSupplier vaultTokenSupplier
7065
* @return new instance with applied setting
7166
*/
72-
public VaultServiceTokenCredentialsSupplier vaultTokenSupplier(
73-
Supplier<String> vaultTokenSupplier) {
74-
final VaultServiceTokenCredentialsSupplier c = copy();
67+
public VaultServiceTokenSupplier vaultTokenSupplier(Supplier<String> vaultTokenSupplier) {
68+
final VaultServiceTokenSupplier c = copy();
7569
c.vaultTokenSupplier = vaultTokenSupplier;
7670
return c;
7771
}
7872

7973
/**
8074
* Setter for serviceTokenNameBuilder.
8175
*
82-
* @param serviceTokenNameBuilder serviceTokenNameBuilder
76+
* @param serviceTokenNameBuilder serviceTokenNameBuilder; inputs for this function are {@code
77+
* serviceRole} and {@code tags} attributes
8378
* @return new instance with applied setting
8479
*/
85-
public VaultServiceTokenCredentialsSupplier serviceTokenNameBuilder(
80+
public VaultServiceTokenSupplier serviceTokenNameBuilder(
8681
BiFunction<String, Map<String, String>, String> serviceTokenNameBuilder) {
87-
final VaultServiceTokenCredentialsSupplier c = copy();
82+
final VaultServiceTokenSupplier c = copy();
8883
c.serviceTokenNameBuilder = serviceTokenNameBuilder;
8984
return c;
9085
}
9186

92-
@Override
93-
public Mono<Map<String, String>> apply(ServiceReference serviceReference) {
87+
/**
88+
* Returns credentials as {@code Map<String, String>} for the given args.
89+
*
90+
* @param tags tags attributes
91+
* @return vault service token
92+
*/
93+
public Mono<String> getServiceToken(Map<String, String> tags) {
9494
return Mono.fromCallable(vaultTokenSupplier::get)
95-
.map(vaultToken -> rpcGetServiceToken(serviceReference.tags(), vaultToken))
95+
.map(vaultToken -> rpcGetServiceToken(tags, vaultToken))
9696
.doOnNext(response -> verifyOk(response.getStatus()))
97-
.map(this::toCredentials)
97+
.map(
98+
response ->
99+
Json.parse(new String(response.getBody()))
100+
.asObject()
101+
.get("data")
102+
.asObject()
103+
.get("token")
104+
.asString())
98105
.doOnSuccess(
99106
creds ->
100107
LOGGER.info(
101108
"[rpcGetServiceToken] Successfully obtained vault service token: {}",
102109
MaskUtil.mask(creds)));
103110
}
104111

105-
private Map<String, String> toCredentials(RestResponse response) {
106-
return Collections.singletonMap(
107-
ServiceTokens.SERVICE_TOKEN_HEADER,
108-
Json.parse(new String(response.getBody()))
109-
.asObject()
110-
.get("data")
111-
.asObject()
112-
.get("token")
113-
.asString());
114-
}
115-
116112
private RestResponse rpcGetServiceToken(Map<String, String> tags, String vaultToken) {
117113
String uri = buildVaultServiceTokenUri(tags);
118114
LOGGER.info("[rpcGetServiceToken] Getting vault service token (uri='{}')", uri);
@@ -141,7 +137,7 @@ private String buildVaultServiceTokenUri(Map<String, String> tags) {
141137
.toString();
142138
}
143139

144-
private VaultServiceTokenCredentialsSupplier copy() {
145-
return new VaultServiceTokenCredentialsSupplier(this);
140+
private VaultServiceTokenSupplier copy() {
141+
return new VaultServiceTokenSupplier(this);
146142
}
147143
}

services-security-parent/services-security/src/main/java/io/scalecube/services/security/ServiceTokens.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
public final class ServiceTokens {
44

55
public static final String SERVICE_TOKEN_HEADER = "serviceToken";
6+
67
public static final String PERMISSIONS_CLAIM = "permissions";
7-
public static final String LOCAL_TOKEN_HEADER = "localToken";
88

99
private ServiceTokens() {
1010
// Do not instantiate

0 commit comments

Comments
 (0)