当前位置: 首页 > 知识库问答 >
问题:

camel kafka生产者异常登录模块控制标志在JAAS配置中不可用

钱瑞
2023-03-14

我正在通过camel从mqtt消费并试图发布到融合kafka,但当我生产到kafka时,我收到以下错误

java.lang.IllegalArgumentException: Login module control flag is not available in the JAAS config
    at org.apache.kafka.common.security.JaasConfig.loginModuleControlFlag(JaasConfig.java:85) ~[kafka-clients-3.1.1.jar:na]
    at org.apache.kafka.common.security.JaasConfig.parseAppConfigurationEntry(JaasConfig.java:111) ~[kafka-clients-3.1.1.jar:na]

我用于构建路由uri的camel配置如下所示

       builder.setScheme("kafka");
       builder.setHost(topicName);
       builder.setParameter("brokers",broker);
       builder.setParameter("saslMechanism","PLAIN");
       builder.setParameter("securityProtocol","SASL_SSL");
       builder.setParameter("saslJaasConfig", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"username\" password=\"Password\";");

我遵循了这个链接Camel Kafka安全协议SASL_SASL不起作用试图将JAAS配置放在RAW中,但它不起作用,即使我尝试将此处提到的JAAS属性外部化,Kafka“Login module not specified in JAAS config”,但我仍然收到相同的错误,不确定JAAS配置中缺少什么,或者Camel Kafka依赖性有问题

我使用的是camel版本2.25.4的依赖关系图

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
            <version>${camel.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-mqtt</artifactId>
            <version>${camel.version}</version>
        </dependency>


        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring-boot</artifactId>
            <version>${camel.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-kafka</artifactId>
            <version>${camel.version}</version>
        </dependency>

    </dependencies>

我一直在想,有什么帮助吗?

共有1个答案

谷彦君
2023-03-14

经过一些调试后,我发现当我在camel上下文中设置KafkaComponent时,它可以工作,我在app.properties中设置属性,然后我使用KafkaComponent并在camel上下文中设置它,它可以接受属性,但奇怪的是,在构建uri时,我使用了相同的属性,但它不工作,看起来camel无法从字符串uri读取属性

        KafkaComponent kafka = new KafkaComponent();
        KafkaConfiguration kafkaConfiguration = new KafkaConfiguration();
        kafkaConfiguration.setBrokers(kafkaBrokerUrl);
        kafkaConfiguration.setSaslMechanism(saslmechanism);
        kafkaConfiguration.setSecurityProtocol(saslprotocol);
        kafkaConfiguration.setSaslJaasConfig(kafkajaasconfig);

        kafka.setConfiguration(kafkaConfiguration);

        getContext().addComponent("kafka", kafka);
 类似资料:
  • 尝试在连接到Kafka时使用kerberos身份验证时遇到问题。使用scala和my看起来像这样。

  • 我正在尝试使用Java运行我的Kafka Streams应用程序,并以K,V对的形式将合流凭证作为环境变量传递。 但是我面临着一个错误的问题- 下面是我如何设置Kafka属性的- 下面是我如何传递环境变量的- 但是如果我直接在properties对象中硬编码Creds字符串,比如-

  • 问题内容: 与使用控制台脚本保护的Kafka通信时出现问题。Kafka受保护,监听器受保护,机制由。 我做了什么:我尝试使用kafka脚本之一列出一些数据: 但是我明白了 命令失败,这是可以理解的,因为它由sasl保护。 因此,我尝试了如何向该命令添加客户端用户名/密码。首先,我尝试运行脚本,我曾经添加必要的文件。我很快发现我无法直接添加文件,我需要使用文件,所以我做到了。 我的属性文件(请记住,

  • 有人可以使用jaas登录模块吗。我在看医生 我想是这些登录模块可以1.与OS用户进行身份验证2.提供该用户的组。 基本上我想通过操作系统进行身份验证。输入用户名和密码 我想用windows进行身份验证 我不想做LDAP认证只做os认证。 对于windows,有华夫饼干库可用。但我无法在使用64位机器时进行身份验证。在32位上运行良好。 对于linux,有jpam,但它不提供组。它只会检查用户名、密

  • 更新:关于以下问题的一些上下文。我的目标是处理用户的请求,他们为每个请求提供一个Kafka主题。我使用部署在Bluemix上的MessageHub作为Kafka提供者。请求将传递代理URL、主题名称、用户名、密码和API密钥。Bluemix上的MessageHub需要JAAS身份验证,并提供具有不同LoginModule实现的登录模块。一些基于CallbackHandler,其他基于Credent

  • 我使用的是Kafka producer客户端,我的项目中没有任何log4j配置。 在运行时,程序打印了大量的Kafka调试日志,这是我不想要的。