使用 SASL/SCRAM 连接到 Kafka 代理时出现 NullPointerException 异常

我们在 application.YAML 中配置了两个 Kafka broker,一个使用 SASL KERberOS,另一个使用 SASL SCRAM。在启动服务时,它使用 SASL KERberOS 连接到代理,并为其他代理 (SASL SCRAM) 提供以下错误。当我们在应用程序 YAML 中使用 SALS SCRAM 连接到一个代理时,它连接没有任何错误

================================================ ================================================ 将 SASL 客户端状态设置为 RECEIVE_APIVERSIONS_RESPONSE main] o.a.k.c.s.a.SaslClientAuthenticator 将 SASL 客户端状态设置为 SEND_HANDSHAKE_REQUEST main] o.a.k.c.s.a.SaslClientAuthenticator 将 SASL 客户端状态设置为 RECEIVE_HANDSHAKE_RESPONSE main] o.a.k.c.s.a.SaslClientAuthenticator 将 SASL 客户端状态设置为 INITIAL main] o.apache.kafka.common.network.Selector 来自 100.76.140.194 的意外错误;关闭连接

java.lang.NullPointerException: null 在 org.apache.kafka.common.security.authenticator.SaslClientAuthenticator.sendSaslClientToken(SaslClientAuthenticator.java:389) 在 org.apache.kafka.common.security.authenticator.SaslClientAuthenticator.sendInitialToken(SaslClientAuthenticator.java:296) 在 org.apache.kafka.common.security.authenticator.SaslClientAuthenticator.authenticate(SaslClientAuthenticator.java:237)

应用程序.YAML

  binders:
   binder1:
    type: kafka
    environment:
     spring:
      cloud:
       stream:
        kafka:
         binder:
          replication-factor: 1
          brokers: ${eventhub.broker.hosts2}
          zkNodes: ${eventhub.zookeper.hosts2}
          configuration:
            security:
              protocol: SASL_SSL
            sasl:
              mechanism: GSSAPI
            ssl:
              truststore:
                location: ${eventhub.broker.cert.location2}
                password: ${eventhub.broker.cert.password2}

          jaas:
           options:
            useKeyTab: true
            storeKey: true
            keyTab: /scratch/kafka/kafka2/krb5.keytab
            serviceName: kafka
            principal: kafka/XXXXXXXXXXXXXXXX.COM
         default:
          consumer:
           autoCommitOffset: false

   binder2:
    type: kafka
    environment:
     spring:
      cloud:
       stream:
        kafka:
         binder:
          brokers: ${eventhub.broker.hosts} # 10.40.158.93:9093
          zkNodes: ${eventhub.zookeper.hosts} #10.40.158.93:2181
          autoCreateTopics: false
          zkConnectionTimeout: 36000
          headers: 
           - event
           - sourceSystem
           - userId
           - branchCode
           - kafka_messageKey
          jaas:
            loginmodule: org.apache.kafka.common.security.scram.ScramLoginmodule
            options:
              username: ${eventhub.broker.user}
              password: ${eventhub.broker.password}
          configuration:
            security:
              protocol: SASL_SSL
            sasl:
              mechanism: SCRAM-SHA-256
            ssl:
              enabled:
              truststore:
                location: ${eventhub.broker.cert.location}
                password: ${eventhub.broker.cert.password}
frankjzp12 回答:使用 SASL/SCRAM 连接到 Kafka 代理时出现 NullPointerException 异常

当您在单个应用程序中有多个具有不同安全上下文的集群时,您需要使用 JAAS 上提到的方法,而不是依赖于通过 binder 设置 java.security.auth.login.config 配置或设置 sasl.jaas.config 属性{3}}。基本上,您需要设置优先于其他方法的 sasl.jaas.config 属性。通过使用 window.addEventListener('load',function() { web3.eth.getAccounts().then((acco) =>{ for(var i = 0 ; i <= lenght ; i++){ myContract.methods.contractmanager(acco[0],i).call().then((res)=>{ var table = document.getElementById("tb"); var row = table.insertRow(i + 1); var cell1 = row.insertCell(0); var cell2 = row.insertCell(1); var cell3 = row.insertCell(2); var cell4 = row.insertCell(3); var cell5 = row.insertCell(4); var cell6 = row.insertCell(5); cell1.innerHTML = res[0]; cell2.innerHTML = res[1]; cell3.innerHTML = res[2]; cell4.innerHTML = res[3]; cell5.innerHTML = res[4]; cell6.innerHTML = res[5]; }); } }); }); ,您可以覆盖使用 JVM 范围静态安全上下文的 JVM 设置的限制,从而忽略在第一个之后找到的任何后续 JAAS 配置。

这是一个 KIP-85,它演示了如何作为多绑定器应用程序连接到具有不同安全上下文的多个 Kafka 集群。

本文链接:https://www.f2er.com/281574.html

大家都在问