You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2021/08/03 07:05:35 UTC
[camel] 01/02: CAMEL-16830: Use automatic detection of gRPC SSL
provider instead of hardcoded configuration
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 77bb5c490da373ca026793d9294fc8ee1a5239ec
Author: James Netherton <ja...@gmail.com>
AuthorDate: Tue Aug 3 07:35:13 2021 +0100
CAMEL-16830: Use automatic detection of gRPC SSL provider instead of hardcoded configuration
---
.../org/apache/camel/component/grpc/GrpcConsumer.java | 4 +---
.../org/apache/camel/component/grpc/GrpcProducer.java | 4 +---
.../camel/component/grpc/GrpcConsumerSecurityTest.java | 18 +++++++++++-------
.../camel/component/grpc/GrpcProducerSecurityTest.java | 18 +++++++++++-------
4 files changed, 24 insertions(+), 20 deletions(-)
diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java
index c6af1b3..c8b4e69 100644
--- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java
+++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java
@@ -27,7 +27,6 @@ import io.grpc.netty.NegotiationType;
import io.grpc.netty.NettyServerBuilder;
import io.netty.handler.ssl.ClientAuth;
import io.netty.handler.ssl.SslContextBuilder;
-import io.netty.handler.ssl.SslProvider;
import org.apache.camel.AsyncCallback;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
@@ -120,8 +119,7 @@ public class GrpcConsumer extends DefaultConsumer {
ResourceHelper.resolveResourceAsInputStream(endpoint.getCamelContext(),
configuration.getKeyResource()),
configuration.getKeyPassword())
- .clientAuth(ClientAuth.REQUIRE)
- .sslProvider(SslProvider.OPENSSL);
+ .clientAuth(ClientAuth.REQUIRE);
if (ObjectHelper.isNotEmpty(configuration.getTrustCertCollectionResource())) {
sslContextBuilder
diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java
index c1c8df9..eef7d85 100644
--- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java
+++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcProducer.java
@@ -26,7 +26,6 @@ import io.grpc.netty.NegotiationType;
import io.grpc.netty.NettyChannelBuilder;
import io.grpc.stub.StreamObserver;
import io.netty.handler.ssl.SslContextBuilder;
-import io.netty.handler.ssl.SslProvider;
import org.apache.camel.AsyncCallback;
import org.apache.camel.Exchange;
import org.apache.camel.component.grpc.auth.jwt.JwtCallCredentials;
@@ -165,7 +164,6 @@ public class GrpcProducer extends DefaultAsyncProducer {
ObjectHelper.notNull(configuration.getKeyResource(), "keyResource");
SslContextBuilder sslContextBuilder = GrpcSslContexts.forClient()
- .sslProvider(SslProvider.OPENSSL)
.keyManager(
ResourceHelper.resolveResourceAsInputStream(endpoint.getCamelContext(),
configuration.getKeyCertChainResource()),
@@ -179,7 +177,7 @@ public class GrpcProducer extends DefaultAsyncProducer {
configuration.getTrustCertCollectionResource()));
}
- channelBuilder = channelBuilder.sslContext(sslContextBuilder.build());
+ channelBuilder = channelBuilder.sslContext(GrpcSslContexts.configure(sslContextBuilder).build());
}
channel = channelBuilder.negotiationType(configuration.getNegotiationType())
diff --git a/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcConsumerSecurityTest.java b/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcConsumerSecurityTest.java
index 62ff3a8..932f19a 100644
--- a/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcConsumerSecurityTest.java
+++ b/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcConsumerSecurityTest.java
@@ -26,7 +26,8 @@ import io.grpc.ManagedChannel;
import io.grpc.netty.GrpcSslContexts;
import io.grpc.netty.NettyChannelBuilder;
import io.grpc.stub.StreamObserver;
-import io.netty.handler.ssl.SslProvider;
+import io.netty.handler.ssl.OpenSslClientContext;
+import io.netty.handler.ssl.SslContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.grpc.auth.jwt.JwtAlgorithm;
import org.apache.camel.component.grpc.auth.jwt.JwtCallCredentials;
@@ -42,6 +43,7 @@ import org.slf4j.LoggerFactory;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
public class GrpcConsumerSecurityTest extends CamelTestSupport {
@@ -70,13 +72,15 @@ public class GrpcConsumerSecurityTest extends CamelTestSupport {
String correctJwtToken = JwtHelper.createJwtToken(JwtAlgorithm.HMAC256, GRPC_JWT_CORRECT_SECRET, null, null);
String incorrectJwtToken = JwtHelper.createJwtToken(JwtAlgorithm.HMAC256, GRPC_JWT_INCORRECT_SECRET, null, null);
+ SslContext sslContext = GrpcSslContexts.forClient()
+ .keyManager(new File("src/test/resources/certs/client.pem"), new File("src/test/resources/certs/client.key"))
+ .trustManager(new File("src/test/resources/certs/ca.pem"))
+ .build();
+
+ assertTrue(sslContext instanceof OpenSslClientContext);
+
tlsChannel = NettyChannelBuilder.forAddress("localhost", GRPC_TLS_TEST_PORT)
- .sslContext(GrpcSslContexts.forClient()
- .sslProvider(SslProvider.OPENSSL)
- .keyManager(new File("src/test/resources/certs/client.pem"),
- new File("src/test/resources/certs/client.key"))
- .trustManager(new File("src/test/resources/certs/ca.pem"))
- .build())
+ .sslContext(sslContext)
.build();
jwtCorrectChannel = NettyChannelBuilder.forAddress("localhost", GRPC_JWT_CORRECT_TEST_PORT).usePlaintext().build();
diff --git a/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcProducerSecurityTest.java b/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcProducerSecurityTest.java
index 8812c2d..7ed5f4e 100644
--- a/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcProducerSecurityTest.java
+++ b/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcProducerSecurityTest.java
@@ -25,7 +25,8 @@ import io.grpc.netty.GrpcSslContexts;
import io.grpc.netty.NettyServerBuilder;
import io.grpc.stub.StreamObserver;
import io.netty.handler.ssl.ClientAuth;
-import io.netty.handler.ssl.SslProvider;
+import io.netty.handler.ssl.OpenSslServerContext;
+import io.netty.handler.ssl.SslContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.grpc.auth.jwt.JwtAlgorithm;
import org.apache.camel.component.grpc.auth.jwt.JwtServerInterceptor;
@@ -61,13 +62,16 @@ public class GrpcProducerSecurityTest extends CamelTestSupport {
@BeforeAll
public static void startGrpcServer() throws Exception {
+ SslContext sslContext = GrpcSslContexts
+ .forServer(new File("src/test/resources/certs/server.pem"), new File("src/test/resources/certs/server.key"))
+ .trustManager(new File("src/test/resources/certs/ca.pem"))
+ .clientAuth(ClientAuth.REQUIRE)
+ .build();
+
+ assertTrue(sslContext instanceof OpenSslServerContext);
+
grpcServerWithTLS = NettyServerBuilder.forPort(GRPC_TLS_TEST_PORT)
- .sslContext(GrpcSslContexts.forServer(new File("src/test/resources/certs/server.pem"),
- new File("src/test/resources/certs/server.key"))
- .trustManager(new File("src/test/resources/certs/ca.pem"))
- .clientAuth(ClientAuth.REQUIRE)
- .sslProvider(SslProvider.OPENSSL)
- .build())
+ .sslContext(sslContext)
.addService(new PingPongImpl()).build().start();
grpcServerWithJWT = NettyServerBuilder.forPort(GRPC_JWT_TEST_PORT)