The Service Registry fails Kafka authentication if the SCRAM password contains a "@"

Solution Verified - Updated -

Issue

  • The Service Registry fails Kafka authentication if the SCRAM password contains a "@" with the following exception:

        2020-09-08 14:24:42,813 ERROR [io.qua.application] (main) Failed to start application: org.apache.kafka.common.KafkaException: Failed to create new KafkaAdminClient
                    at org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:451)
                    at org.apache.kafka.clients.admin.Admin.create(Admin.java:69)
                    at org.apache.kafka.streams.processor.internals.DefaultKafkaClientSupplier.getAdmin(DefaultKafkaClientSupplier.java:41)
                    at org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:737)
                    at org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:647)
                    at org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:557)
                    at io.apicurio.registry.streams.StreamsRegistryConfiguration.storageStreams(StreamsRegistryConfiguration.java:98)
                    at io.apicurio.registry.streams.StreamsRegistryConfiguration_ProducerMethod_storageStreams_f2537b9bcd15d7b768fa2bd48bdd1fdfe11117c1_Bean.create(StreamsRegistryConfiguration_ProducerMethod_storageStreams_f2537b9bcd15d7b768fa2bd48bdd1fdfe11117c1_Bean.zig:325)
                    at io.apicurio.registry.streams.StreamsRegistryConfiguration_ProducerMethod_storageStreams_f2537b9bcd15d7b768fa2bd48bdd1fdfe11117c1_Bean.create(StreamsRegistryConfiguration_ProducerMethod_storageStreams_f2537b9bcd15d7b768fa2bd48bdd1fdfe11117c1_Bean.zig:78)
                    at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:80)
                    at io.quarkus.arc.impl.ComputingCache$CacheFunction.lambda$apply$0(ComputingCache.java:99)
                    at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
                    at io.quarkus.arc.impl.ComputingCache.getValue(ComputingCache.java:41)
                    at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:25)
                    at io.apicurio.registry.streams.StreamsRegistryConfiguration_ProducerMethod_storageStreams_f2537b9bcd15d7b768fa2bd48bdd1fdfe11117c1_Bean.get(StreamsRegistryConfiguration_ProducerMethod_storageStreams_f2537b9bcd15d7b768fa2bd48bdd1fdfe11117c1_Bean.zig:225)
                    at io.apicurio.registry.streams.StreamsRegistryConfiguration_ProducerMethod_storageStreams_f2537b9bcd15d7b768fa2bd48bdd1fdfe11117c1_Bean.get(StreamsRegistryConfiguration_ProducerMethod_storageStreams_f2537b9bcd15d7b768fa2bd48bdd1fdfe11117c1_Bean.zig:93)
                    at io.apicurio.registry.streams.StreamsRegistryConfiguration_Observer_init_c449f8498a775a6043659cf6f47a7bd5492d1695.notify(StreamsRegistryConfiguration_Observer_init_c449f8498a775a6043659cf6f47a7bd5492d1695.zig:107)
                    at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:282)
                    at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:267)
                    at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:69)
                    at io.quarkus.arc.runtime.LifecycleEventRunner.fireStartupEvent(LifecycleEventRunner.java:23)
                    at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:113)
                    at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent43.deploy_0(LifecycleEventsBuildStep$startupEvent43.zig:77)
                    at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent43.deploy(LifecycleEventsBuildStep$startupEvent43.zig:36)
                    at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:210)
                    at io.quarkus.runtime.Application.start(Application.java:90)
                    at io.quarkus.runtime.Application.run(Application.java:228)
                    at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:41)
        Caused by: java.lang.IllegalArgumentException: Value not specified for key 'null' in JAAS config
                    at org.apache.kafka.common.security.JaasConfig.parseAppConfigurationEntry(JaasConfig.java:116)
                    at org.apache.kafka.common.security.JaasConfig.<init>(JaasConfig.java:63)
                    at org.apache.kafka.common.security.JaasContext.load(JaasContext.java:90)
                    at org.apache.kafka.common.security.JaasContext.loadClientContext(JaasContext.java:84)
                    at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:124)
                    at org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:67)
                    at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:99)
                    at org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:426)
                    ... 27 more
    

Environment

  • Red Hat Integration
    • Service Registry
      • 1.0
      • streams persistence
      • SCRAM-512 authentication over TLS

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content