summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexis de Talhouët <adetalhouet89@gmail.com>2019-03-04 21:54:03 -0500
committerAlexis de Talhouët <adetalhouet89@gmail.com>2019-03-05 02:55:03 +0000
commit6bc7fe64f427e5d055d559ae37417cdf4638d489 (patch)
tree66c46e294ae93740060ecac0bc24a2ba66c8e6b7
parent09460aff611767884905680d504b4fc3c8bb1476 (diff)
Add support for CDS basic auth
Change-Id: Ib7fcf41500ac7e9f8dc5f7670c5dd4a9206e5e23 Issue-ID: CCSDK-1055 Signed-off-by: Alexis de Talhouët <adetalhouet89@gmail.com>
-rw-r--r--grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcProperties.java5
-rw-r--r--grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BasicAuthClientInterceptor.java54
-rw-r--r--grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClient.java1
-rw-r--r--grpc-resource/provider/src/main/resources/grpc.properties1
-rw-r--r--grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java2
5 files changed, 62 insertions, 1 deletions
diff --git a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcProperties.java b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcProperties.java
index 96775f37..ff158c2e 100644
--- a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcProperties.java
+++ b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/GrpcProperties.java
@@ -36,6 +36,7 @@ public class GrpcProperties {
private static final String BLUEPRINT_PROCESSOR_URL_PROP = "org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.url";
private static final String BLUEPRINT_PROCESSOR_PORT_PROP = "org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.port";
+ private static final String BLUEPRINT_PROCESSOR_AUTH_PROP = "org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.auth";
private Properties properties;
@@ -47,6 +48,10 @@ public class GrpcProperties {
return properties.getProperty(BLUEPRINT_PROCESSOR_URL_PROP);
}
+ public String getAuth() {
+ return properties.getProperty(BLUEPRINT_PROCESSOR_AUTH_PROP);
+ }
+
public int getPort() {
return Integer.parseInt(properties.getProperty(BLUEPRINT_PROCESSOR_PORT_PROP));
}
diff --git a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BasicAuthClientInterceptor.java b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BasicAuthClientInterceptor.java
new file mode 100644
index 00000000..5d2e848c
--- /dev/null
+++ b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BasicAuthClientInterceptor.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2019 Bell Canada.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.ccsdk.sli.adaptors.grpc.cds;
+
+import io.grpc.CallOptions;
+import io.grpc.Channel;
+import io.grpc.ClientCall;
+import io.grpc.ClientInterceptor;
+import io.grpc.ForwardingClientCall;
+import io.grpc.Metadata;
+import io.grpc.Metadata.Key;
+import io.grpc.MethodDescriptor;
+import org.apache.http.HttpHeaders;
+import org.onap.ccsdk.sli.adaptors.grpc.GrpcProperties;
+
+public class BasicAuthClientInterceptor implements ClientInterceptor {
+
+ private GrpcProperties props;
+
+ public BasicAuthClientInterceptor(GrpcProperties props) {
+ this.props = props;
+ }
+
+ @Override
+ public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
+ MethodDescriptor<ReqT, RespT> method,
+ CallOptions callOptions,
+ Channel channel) {
+
+ Key<String> authHeader = Key.of(HttpHeaders.AUTHORIZATION, Metadata.ASCII_STRING_MARSHALLER);
+
+ return new ForwardingClientCall.SimpleForwardingClientCall<ReqT, RespT>(
+ channel.newCall(method, callOptions)) {
+ @Override
+ public void start(Listener<RespT> responseListener, Metadata headers) {
+ headers.put(authHeader, props.getAuth());
+ super.start(responseListener, headers);
+ }
+ };
+ }
+}
diff --git a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClient.java b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClient.java
index a5ccff87..f922f9ec 100644
--- a/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClient.java
+++ b/grpc-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClient.java
@@ -39,6 +39,7 @@ public class BlueprintProcessingClient implements GrpcClient {
.forAddress(props.getUrl(), props.getPort())
.nameResolverFactory(new DnsNameResolverProvider())
.loadBalancerFactory(new PickFirstLoadBalancerProvider())
+ .intercept(new BasicAuthClientInterceptor(props))
.usePlaintext()
.build();
this.handler = new BlueprintProcessingHandler();
diff --git a/grpc-resource/provider/src/main/resources/grpc.properties b/grpc-resource/provider/src/main/resources/grpc.properties
index 650910eb..7e1bf40e 100644
--- a/grpc-resource/provider/src/main/resources/grpc.properties
+++ b/grpc-resource/provider/src/main/resources/grpc.properties
@@ -15,3 +15,4 @@
#
org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.url=blueprint-processor
org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.port=9111
+org.onap.ccsdk.sli.adaptors.grpc.blueprint.processor.auth=Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==
diff --git a/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java b/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java
index 25de0d7f..8c0da511 100644
--- a/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java
+++ b/grpc-resource/provider/src/test/java/org/onap/ccsdk/sli/adaptors/grpc/cds/BlueprintProcessingClientTest.java
@@ -118,7 +118,7 @@ public class BlueprintProcessingClientTest {
GrpcProperties props = Mockito.mock(GrpcProperties.class);
doReturn(999).when(props).getPort();
doReturn("localhost").when(props).getUrl();
- new BlueprintProcessingClient(props);
+ new BlueprintProcessingClient(props).stop();
}