This is an automated email from the ASF dual-hosted git repository.
ijokarumawak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/master by this push:
new 4166392 NIFI-6174: Add ClientAuth property to ListenBeats
4166392 is described below
commit 41663929a4727592972e6be04b3c516a752e760e
Author: DimDroll <[email protected]>
AuthorDate: Wed Jun 19 15:59:52 2019 +0300
NIFI-6174: Add ClientAuth property to ListenBeats
This closes #3539.
Signed-off-by: Koji Kawamura <[email protected]>
---
.../apache/nifi/processors/beats/ListenBeats.java | 30 +++++++++++++++++++---
1 file changed, 27 insertions(+), 3 deletions(-)
diff --git
a/nifi-nar-bundles/nifi-beats-bundle/nifi-beats-processors/src/main/java/org/apache/nifi/processors/beats/ListenBeats.java
b/nifi-nar-bundles/nifi-beats-bundle/nifi-beats-processors/src/main/java/org/apache/nifi/processors/beats/ListenBeats.java
index af5d1b4..6a4a568 100644
---
a/nifi-nar-bundles/nifi-beats-bundle/nifi-beats-processors/src/main/java/org/apache/nifi/processors/beats/ListenBeats.java
+++
b/nifi-nar-bundles/nifi-beats-bundle/nifi-beats-processors/src/main/java/org/apache/nifi/processors/beats/ListenBeats.java
@@ -28,6 +28,8 @@ import java.util.Map;
import java.util.concurrent.BlockingQueue;
import javax.net.ssl.SSLContext;
+import org.apache.nifi.security.util.SslContextFactory;
+import org.apache.commons.lang3.StringUtils;
import org.apache.nifi.annotation.behavior.InputRequirement;
import org.apache.nifi.annotation.behavior.WritesAttribute;
@@ -85,11 +87,21 @@ public class ListenBeats extends
AbstractListenEventBatchingProcessor<BeatsEvent
.identifiesControllerService(RestrictedSSLContextService.class)
.build();
+ public static final PropertyDescriptor CLIENT_AUTH = new
PropertyDescriptor.Builder()
+ .name("Client Auth")
+ .displayName("Client Auth")
+ .description("The client authentication policy to use for the SSL
Context. Only used if an SSL Context Service is provided.")
+ .required(false)
+ .allowableValues(RestrictedSSLContextService.ClientAuth.values())
+ .defaultValue(RestrictedSSLContextService.ClientAuth.REQUIRED.name())
+ .build();
+
@Override
protected List<PropertyDescriptor> getAdditionalProperties() {
return Arrays.asList(
MAX_CONNECTIONS,
- SSL_CONTEXT_SERVICE
+ SSL_CONTEXT_SERVICE,
+ CLIENT_AUTH
);
}
@@ -105,6 +117,14 @@ public class ListenBeats extends
AbstractListenEventBatchingProcessor<BeatsEvent
.valid(false).subject(SSL_CONTEXT_SERVICE.getName()).build());
}
+ // Validate CLIENT_AUTH
+ final String clientAuth =
validationContext.getProperty(CLIENT_AUTH).getValue();
+ if (sslContextService != null && StringUtils.isBlank(clientAuth)) {
+ results.add(new ValidationResult.Builder()
+ .explanation("Client Auth must be provided when using
TLS/SSL")
+ .valid(false).subject("Client Auth").build());
+ }
+
return results;
}
@@ -133,14 +153,18 @@ public class ListenBeats extends
AbstractListenEventBatchingProcessor<BeatsEvent
// if an SSLContextService was provided then create an SSLContext to
pass down to the dispatcher
SSLContext sslContext = null;
+ SslContextFactory.ClientAuth clientAuth = null;
final SSLContextService sslContextService =
context.getProperty(SSL_CONTEXT_SERVICE).asControllerService(SSLContextService.class);
if (sslContextService != null) {
- sslContext =
sslContextService.createSSLContext(SSLContextService.ClientAuth.REQUIRED);
+ final String clientAuthValue =
context.getProperty(CLIENT_AUTH).getValue();
+ sslContext =
sslContextService.createSSLContext(SSLContextService.ClientAuth.valueOf(clientAuthValue));
+ clientAuth = SslContextFactory.ClientAuth.valueOf(clientAuthValue);
+
}
// if we decide to support SSL then get the context and pass it in here
return new SocketChannelDispatcher<>(eventFactory, handlerFactory,
bufferPool, events,
- getLogger(), maxConnections, sslContext, charSet);
+ getLogger(), maxConnections, sslContext, clientAuth, charSet);
}