Skip to content

Commit 7d35cdf

Browse files
committed
Cleanup CredentialsSupplier (modified interface), removed CredentialsSuppliers
1 parent 1f3a09f commit 7d35cdf

File tree

6 files changed

+13
-58
lines changed

6 files changed

+13
-58
lines changed

services-api/src/main/java/io/scalecube/services/auth/CredentialsSupplier.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.scalecube.services.auth;
22

3-
import java.util.List;
43
import reactor.core.publisher.Mono;
54

65
/**
@@ -14,8 +13,8 @@ public interface CredentialsSupplier {
1413
* Obtains credentials for the given service role.
1514
*
1615
* @param service logical service name
17-
* @param serviceRoles allowed roles on the service (optional)
16+
* @param serviceRole service role (optional)
1817
* @return credentials
1918
*/
20-
Mono<byte[]> credentials(String service, List<String> serviceRoles);
19+
Mono<byte[]> credentials(String service, String serviceRole);
2120
}

services-api/src/main/java/io/scalecube/services/auth/CredentialsSuppliers.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

services-gateway/src/test/java/io/scalecube/services/gateway/files/FileDownloadTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
import static org.junit.jupiter.api.Assertions.assertNotNull;
88
import static org.junit.jupiter.api.Assertions.assertTrue;
99
import static org.junit.jupiter.api.Assertions.fail;
10-
import static org.mockito.ArgumentMatchers.any;
11-
import static org.mockito.ArgumentMatchers.anyList;
10+
import static org.mockito.ArgumentMatchers.anyString;
1211
import static org.mockito.Mockito.mock;
1312
import static org.mockito.Mockito.when;
1413

@@ -59,7 +58,7 @@ public class FileDownloadTest {
5958
@BeforeAll
6059
static void beforeAll() {
6160
credentialsSupplier = mock(CredentialsSupplier.class);
62-
when(credentialsSupplier.credentials(any(String.class), anyList())).thenReturn(Mono.never());
61+
when(credentialsSupplier.credentials(anyString(), anyString())).thenReturn(Mono.never());
6362

6463
gateway =
6564
Microservices.start(

services-security/src/main/java/io/scalecube/services/security/ServiceTokenCredentialsSupplier.java

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
import io.scalecube.security.vault.VaultServiceTokenSupplier;
44
import io.scalecube.services.auth.CredentialsSupplier;
5-
import io.scalecube.services.exceptions.ForbiddenException;
6-
import java.util.Collection;
75
import java.util.Collections;
8-
import java.util.List;
96
import java.util.Objects;
107
import java.util.concurrent.CompletableFuture;
118
import java.util.function.Supplier;
@@ -16,51 +13,30 @@ public class ServiceTokenCredentialsSupplier implements CredentialsSupplier {
1613
private final String environment;
1714
private final String vaultAddress;
1815
private final Supplier<CompletableFuture<String>> vaultTokenSupplier;
19-
private final Collection<String> allowedRoles;
2016

2117
/**
2218
* Constructor.
2319
*
2420
* @param environment logical environment name
2521
* @param vaultAddress vaultAddress
2622
* @param vaultTokenSupplier vaultTokenSupplier
27-
* @param allowedRoles allowedRoles (optional)
2823
*/
2924
public ServiceTokenCredentialsSupplier(
3025
String environment,
3126
String vaultAddress,
32-
Supplier<CompletableFuture<String>> vaultTokenSupplier,
33-
Collection<String> allowedRoles) {
27+
Supplier<CompletableFuture<String>> vaultTokenSupplier) {
3428
this.environment = Objects.requireNonNull(environment, "environment");
3529
this.vaultAddress = Objects.requireNonNull(vaultAddress, "vaultAddress");
3630
this.vaultTokenSupplier = Objects.requireNonNull(vaultTokenSupplier, "vaultTokenSupplier");
37-
this.allowedRoles = allowedRoles;
3831
}
3932

4033
@Override
41-
public Mono<byte[]> credentials(String service, List<String> serviceRoles) {
34+
public Mono<byte[]> credentials(String service, String serviceRole) {
4235
return Mono.defer(
4336
() -> {
44-
if (serviceRoles == null || serviceRoles.isEmpty()) {
37+
if (serviceRole == null || serviceRole.isEmpty()) {
4538
return Mono.just(new byte[0]);
4639
}
47-
48-
String serviceRole = null;
49-
50-
if (allowedRoles == null || allowedRoles.isEmpty()) {
51-
serviceRole = serviceRoles.get(0);
52-
} else {
53-
for (var allowedRole : allowedRoles) {
54-
if (serviceRoles.contains(allowedRole)) {
55-
serviceRole = allowedRole;
56-
}
57-
}
58-
}
59-
60-
if (serviceRole == null) {
61-
throw new ForbiddenException("Insufficient permissions");
62-
}
63-
6440
return Mono.fromFuture(
6541
VaultServiceTokenSupplier.builder()
6642
.vaultAddress(vaultAddress)

services-security/src/test/java/io/scalecube/services/security/ServiceTokenTests.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ void shouldAuthenticateSuccessfully(SuccessArgs args, VaultEnvironment vaultEnvi
3434
() -> CompletableFuture.completedFuture(vaultEnvironment.login());
3535

3636
final var credentialsSupplier =
37-
new ServiceTokenCredentialsSupplier(args.environment, vaultAddr, vaultTokenSupplier, null);
37+
new ServiceTokenCredentialsSupplier(args.environment, vaultAddr, vaultTokenSupplier);
3838

3939
final var authenticator =
4040
new ServiceTokenAuthenticator(
@@ -48,8 +48,7 @@ void shouldAuthenticateSuccessfully(SuccessArgs args, VaultEnvironment vaultEnvi
4848

4949
// Get service token
5050

51-
final var credentials =
52-
credentialsSupplier.credentials(args.service, List.of(args.serviceRole)).block();
51+
final var credentials = credentialsSupplier.credentials(args.service, args.serviceRole).block();
5352

5453
// Authenticate
5554

services-transport-parent/services-transport-rsocket/src/main/java/io/scalecube/services/transport/rsocket/RSocketClientTransport.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ private Mono<RSocket> connect(
9999
ServiceReference serviceReference,
100100
Map<Destination, Mono<RSocket>> monoMap) {
101101
return RSocketConnector.create()
102-
.setupPayload(Mono.defer(() -> getCredentials(serviceReference)))
102+
.setupPayload(Mono.defer(() -> getCredentials(destination, serviceReference)))
103103
.connect(() -> clientTransportFactory.clientTransport(destination.address()))
104104
.doOnSuccess(
105105
rsocket -> {
@@ -122,13 +122,12 @@ private Mono<RSocket> connect(
122122
ex -> LOGGER.warn("Failed to connect ({}), cause: {}", destination, ex.toString()));
123123
}
124124

125-
private Mono<Payload> getCredentials(ServiceReference serviceReference) {
126-
if (credentialsSupplier == null || !serviceReference.isSecured()) {
125+
private Mono<Payload> getCredentials(Destination destination, ServiceReference serviceReference) {
126+
if (destination.role() == null) {
127127
return Mono.just(EmptyPayload.INSTANCE);
128128
}
129-
130129
return credentialsSupplier
131-
.credentials(serviceReference.endpointName(), serviceReference.allowedRoles())
130+
.credentials(serviceReference.endpointName(), destination.role())
132131
.map(data -> data.length != 0 ? DefaultPayload.create(data) : EmptyPayload.INSTANCE)
133132
.onErrorMap(
134133
th -> {

0 commit comments

Comments
 (0)