From 7b6fda5e39346fa4ed8ede1ef8970815c864a944 Mon Sep 17 00:00:00 2001 From: Artem Vysochyn Date: Sat, 28 Sep 2024 14:00:07 +0300 Subject: [PATCH] Add more to auth api (#851) * Added more classes to api.auth package, removed dep on slf4j-api from services-api --- services-api/pom.xml | 4 ---- .../java/io/scalecube/services/ServiceCall.java | 16 +++++----------- .../services/auth/CredentialsSupplier.java | 9 +++++++++ .../services/auth/CredentialsSuppliers.java | 6 ++++++ .../services/methods/ServiceMethodInvoker.java | 5 ----- .../io/scalecube/services/routing/Routers.java | 4 ---- services/pom.xml | 9 +++++++-- .../scalecube/services/ServiceCallLocalTest.java | 8 ++++++-- 8 files changed, 33 insertions(+), 28 deletions(-) create mode 100644 services-api/src/main/java/io/scalecube/services/auth/CredentialsSupplier.java create mode 100644 services-api/src/main/java/io/scalecube/services/auth/CredentialsSuppliers.java diff --git a/services-api/pom.xml b/services-api/pom.xml index ada0a3ab5..f094ddd3c 100644 --- a/services-api/pom.xml +++ b/services-api/pom.xml @@ -18,10 +18,6 @@ io.projectreactor reactor-core - - org.slf4j - slf4j-api - diff --git a/services-api/src/main/java/io/scalecube/services/ServiceCall.java b/services-api/src/main/java/io/scalecube/services/ServiceCall.java index a09a82489..f95875bf6 100644 --- a/services-api/src/main/java/io/scalecube/services/ServiceCall.java +++ b/services-api/src/main/java/io/scalecube/services/ServiceCall.java @@ -22,16 +22,12 @@ import java.util.Optional; import java.util.function.Function; import org.reactivestreams.Publisher; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import reactor.core.Exceptions; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; public class ServiceCall { - private static final Logger LOGGER = LoggerFactory.getLogger(ServiceCall.class); - private ClientTransport transport; private ServiceRegistry serviceRegistry; private Router router; @@ -355,14 +351,12 @@ private ServiceMessage toServiceMessage(MethodInfo methodInfo, Object request) { .build(); } - private ServiceUnavailableException noReachableMemberException(ServiceMessage request) { - LOGGER.error( - "Failed to invoke service, " - + "No reachable member with such service definition [{}], args [{}]", - request.qualifier(), - request); + private static ServiceUnavailableException noReachableMemberException(ServiceMessage request) { return new ServiceUnavailableException( - "No reachable member with such service: " + request.qualifier()); + "No reachable member with such service: " + + request.qualifier() + + ", failed request: " + + request); } /** diff --git a/services-api/src/main/java/io/scalecube/services/auth/CredentialsSupplier.java b/services-api/src/main/java/io/scalecube/services/auth/CredentialsSupplier.java new file mode 100644 index 000000000..868680aa7 --- /dev/null +++ b/services-api/src/main/java/io/scalecube/services/auth/CredentialsSupplier.java @@ -0,0 +1,9 @@ +package io.scalecube.services.auth; + +import java.util.Map; +import reactor.core.publisher.Mono; + +public interface CredentialsSupplier { + + Mono> credentials(Map tags); +} diff --git a/services-api/src/main/java/io/scalecube/services/auth/CredentialsSuppliers.java b/services-api/src/main/java/io/scalecube/services/auth/CredentialsSuppliers.java new file mode 100644 index 000000000..3c9eb29da --- /dev/null +++ b/services-api/src/main/java/io/scalecube/services/auth/CredentialsSuppliers.java @@ -0,0 +1,6 @@ +package io.scalecube.services.auth; + +public interface CredentialsSuppliers { + + CredentialsSupplier forServiceRole(String serviceRole); +} diff --git a/services-api/src/main/java/io/scalecube/services/methods/ServiceMethodInvoker.java b/services-api/src/main/java/io/scalecube/services/methods/ServiceMethodInvoker.java index aae999c68..4d9fa7c09 100644 --- a/services-api/src/main/java/io/scalecube/services/methods/ServiceMethodInvoker.java +++ b/services-api/src/main/java/io/scalecube/services/methods/ServiceMethodInvoker.java @@ -17,16 +17,12 @@ import java.util.Optional; import java.util.StringJoiner; import org.reactivestreams.Publisher; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.util.context.Context; public final class ServiceMethodInvoker { - private static final Logger LOGGER = LoggerFactory.getLogger(ServiceMethodInvoker.class); - private final Method method; private final Object service; private final MethodInfo methodInfo; @@ -164,7 +160,6 @@ private Mono authenticate(ServiceMessage message, Context context) { if (context.hasKey(AUTH_CONTEXT_KEY)) { return Mono.just(context.get(AUTH_CONTEXT_KEY)); } else { - LOGGER.error("Authentication failed (auth context not found and authenticator not set)"); throw new UnauthorizedException("Authentication failed"); } } diff --git a/services-api/src/main/java/io/scalecube/services/routing/Routers.java b/services-api/src/main/java/io/scalecube/services/routing/Routers.java index 707019003..9ad07da5c 100644 --- a/services-api/src/main/java/io/scalecube/services/routing/Routers.java +++ b/services-api/src/main/java/io/scalecube/services/routing/Routers.java @@ -1,12 +1,9 @@ package io.scalecube.services.routing; import java.util.concurrent.ConcurrentHashMap; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import reactor.core.Exceptions; public final class Routers { - private static final Logger LOGGER = LoggerFactory.getLogger(Routers.class); private static final ConcurrentHashMap, Router> routers = new ConcurrentHashMap<>(); @@ -28,7 +25,6 @@ private static Router create(Class routerType) { try { return routerType.newInstance(); } catch (Exception ex) { - LOGGER.error("Create router type: {} failed: {}", routerType, ex); throw Exceptions.propagate(ex); } } diff --git a/services/pom.xml b/services/pom.xml index 1475d48a9..674e90127 100644 --- a/services/pom.xml +++ b/services/pom.xml @@ -1,5 +1,7 @@ - + 4.0.0 @@ -22,7 +24,10 @@ io.projectreactor reactor-core - + + org.slf4j + slf4j-api + org.jctools jctools-core diff --git a/services/src/test/java/io/scalecube/services/ServiceCallLocalTest.java b/services/src/test/java/io/scalecube/services/ServiceCallLocalTest.java index aa3f5c7f1..be400b5c6 100644 --- a/services/src/test/java/io/scalecube/services/ServiceCallLocalTest.java +++ b/services/src/test/java/io/scalecube/services/ServiceCallLocalTest.java @@ -19,6 +19,7 @@ import io.scalecube.services.api.ServiceMessage; import io.scalecube.services.discovery.ScalecubeServiceDiscovery; import io.scalecube.services.exceptions.ServiceException; +import io.scalecube.services.exceptions.ServiceUnavailableException; import io.scalecube.services.registry.api.ServiceRegistry; import io.scalecube.services.routing.RoundRobinServiceRouter; import io.scalecube.services.sut.EmptyGreetingResponse; @@ -183,8 +184,11 @@ public void test_async_greeting_return_string_service_not_found_error_case() { Mono.from(service.requestOne(NOT_FOUND_REQ)).block(timeout); fail("Expected no-service-found exception"); } catch (Exception ex) { - assertEquals( - ex.getMessage(), "No reachable member with such service: " + NOT_FOUND_REQ.qualifier()); + assertEquals(ServiceUnavailableException.class, ex.getClass()); + assertNotNull(ex.getMessage()); + assertTrue( + ex.getMessage() + .startsWith("No reachable member with such service: " + NOT_FOUND_REQ.qualifier())); } }