From 048041bfdb875bcc7b178edbc4b1b789de0a2218 Mon Sep 17 00:00:00 2001 From: Soby Chacko Date: Thu, 10 Aug 2023 12:13:40 -0400 Subject: [PATCH] KafkaJaasLoginModuleInitializer init changes - Insted of unconditionally initializing KafkaJaasLoginModuleInitializer, only create it, if jaas properties are set properly. By creating it always, we unncessarily expose Java security related class requirements to the binder apps. For e.g. if the underlying JVM security classes change and require reflection, that could break AOT apps that don't use a secure Kafka cluster. Fixing these type of issues by creating KafkaJaasLoginModuleInitializer only if required. --- .../binder/kafka/config/KafkaBinderConfiguration.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/binders/kafka-binder/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/config/KafkaBinderConfiguration.java b/binders/kafka-binder/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/config/KafkaBinderConfiguration.java index 9790ffb68..0d43aabe4 100644 --- a/binders/kafka-binder/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/config/KafkaBinderConfiguration.java +++ b/binders/kafka-binder/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/config/KafkaBinderConfiguration.java @@ -169,20 +169,23 @@ public class KafkaBinderConfiguration { public KafkaJaasLoginModuleInitializer jaasInitializer( KafkaBinderConfigurationProperties configurationProperties) throws IOException { - KafkaJaasLoginModuleInitializer kafkaJaasLoginModuleInitializer = new KafkaJaasLoginModuleInitializer(); JaasLoginModuleConfiguration jaas = configurationProperties.getJaas(); - if (jaas != null) { + if (jaas == null) { + return null; + } + else { + KafkaJaasLoginModuleInitializer kafkaJaasLoginModuleInitializer = new KafkaJaasLoginModuleInitializer(); kafkaJaasLoginModuleInitializer.setLoginModule(jaas.getLoginModule()); KafkaJaasLoginModuleInitializer.ControlFlag controlFlag = jaas - .getControlFlag(); + .getControlFlag(); if (controlFlag != null) { kafkaJaasLoginModuleInitializer.setControlFlag(controlFlag); } kafkaJaasLoginModuleInitializer.setOptions(jaas.getOptions()); + return kafkaJaasLoginModuleInitializer; } - return kafkaJaasLoginModuleInitializer; } @Configuration(proxyBeanMethods = false)