From 7007f9494a2f43e066141dda90c85cde62a83f1c Mon Sep 17 00:00:00 2001 From: Soby Chacko Date: Fri, 27 Jul 2018 13:14:20 -0400 Subject: [PATCH] JAAS initializer regression Fix JAAS initializer with setting the missing properties. Resoves #419 Polishing --- .../config/KafkaBinderConfiguration.java | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/config/KafkaBinderConfiguration.java b/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/config/KafkaBinderConfiguration.java index 3772829b3..4d63ab074 100644 --- a/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/config/KafkaBinderConfiguration.java +++ b/spring-cloud-stream-binder-kafka/src/main/java/org/springframework/cloud/stream/binder/kafka/config/KafkaBinderConfiguration.java @@ -18,6 +18,8 @@ package org.springframework.cloud.stream.binder.kafka.config; import java.io.IOException; +import javax.security.auth.login.AppConfigurationEntry; + import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.binder.MeterBinder; @@ -59,7 +61,8 @@ import org.springframework.lang.Nullable; */ @Configuration @ConditionalOnMissingBean(Binder.class) -@Import({KafkaAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class, KafkaBinderHealthIndicatorConfiguration.class }) +@Import({ KafkaAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class, + KafkaBinderHealthIndicatorConfiguration.class }) @EnableConfigurationProperties({ KafkaExtendedBindingProperties.class }) public class KafkaBinderConfiguration { @@ -84,7 +87,7 @@ public class KafkaBinderConfiguration { @Bean KafkaMessageChannelBinder kafkaMessageChannelBinder(KafkaBinderConfigurationProperties configurationProperties, - KafkaTopicProvisioner provisioningProvider, @Nullable ListenerContainerCustomizer> listenerContainerCustomizer) { + KafkaTopicProvisioner provisioningProvider, @Nullable ListenerContainerCustomizer> listenerContainerCustomizer) { KafkaMessageChannelBinder kafkaMessageChannelBinder = new KafkaMessageChannelBinder( configurationProperties, provisioningProvider, listenerContainerCustomizer); @@ -100,8 +103,34 @@ public class KafkaBinderConfiguration { } @Bean - public KafkaJaasLoginModuleInitializer jaasInitializer() throws IOException { - return new KafkaJaasLoginModuleInitializer(); + @ConditionalOnMissingBean(KafkaJaasLoginModuleInitializer.class) + public KafkaJaasLoginModuleInitializer jaasInitializer(KafkaBinderConfigurationProperties configurationProperties) throws IOException { + KafkaJaasLoginModuleInitializer kafkaJaasLoginModuleInitializer = new KafkaJaasLoginModuleInitializer(); + JaasLoginModuleConfiguration jaas = configurationProperties.getJaas(); + if (jaas != null) { + kafkaJaasLoginModuleInitializer.setLoginModule(jaas.getLoginModule()); + + KafkaJaasLoginModuleInitializer.ControlFlag controlFlag = null; + AppConfigurationEntry.LoginModuleControlFlag controlFlagValue = jaas.getControlFlagValue(); + + if (AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL.equals(controlFlagValue)) { + controlFlag = KafkaJaasLoginModuleInitializer.ControlFlag.OPTIONAL; + } + else if (AppConfigurationEntry.LoginModuleControlFlag.REQUIRED.equals(controlFlagValue)) { + controlFlag = KafkaJaasLoginModuleInitializer.ControlFlag.REQUIRED; + } + else if (AppConfigurationEntry.LoginModuleControlFlag.REQUISITE.equals(controlFlagValue)) { + controlFlag = KafkaJaasLoginModuleInitializer.ControlFlag.REQUISITE; + } + else if (AppConfigurationEntry.LoginModuleControlFlag.SUFFICIENT.equals(controlFlagValue)) { + controlFlag = KafkaJaasLoginModuleInitializer.ControlFlag.SUFFICIENT; + } + if (controlFlag != null) { + kafkaJaasLoginModuleInitializer.setControlFlag(controlFlag); + } + kafkaJaasLoginModuleInitializer.setOptions(jaas.getOptions()); + } + return kafkaJaasLoginModuleInitializer; } /**