2017-06-07 62 views

回答

0

參見the kafka documentation

在那裏所述設置sasl.jaas.config屬性:

sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required \ 
    useKeyTab=true \ 
    storeKey=true \ 
    keyTab="/etc/security/keytabs/kafka_client.keytab" \ 
    principal="[email protected]"; 

並且還

security.protocol=SASL_PLAINTEXT (or SASL_SSL) 
sasl.mechanism=GSSAPI 
sasl.kerberos.service.name=kafka 
+0

謝謝@加里羅素的即時回覆。如果我設置屬性如 Map props = new HashMap <>(); props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrapServers); 如何爲ProducerConfig設置sasl.jaas.config – user2515163

+0

用於SASL配置的常量位於類「SaslConfigs」中,因此是「put(SaslConfigs.SASL_JAAS_CONFIG,...)」。 –

0

我已消耗從kerberozied卡夫卡(HDP羣集)消息。所以我分享我的想法。它可能有幫助。

我已經構造我的消費屬性

Map<String, Object> consumerConf = new HashMap<>(); 
    consumerConf.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "hdp.master:6667"); 
    consumerConf.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); 
    consumerConf.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); 
    consumerConf.put(ConsumerConfig.GROUP_ID_CONFIG, "grp12"); 
    consumerConf.put("security.protocol", "SASL_PLAINTEXT"); 

所以,你可以在你的生產配置添加consumerConf.put("security.protocol", "SASL_PLAINTEXT");

同樣需要設置系統屬性

 System.setProperty("java.security.krb5.conf", "Path to krb5.conf"); 
     System.setProperty("java.security.auth.login.config", "path to kafka-jaas.conf"); 
     System.setProperty("javax.security.auth.useSubjectCredsOnly", "true"); 
     System.setProperty("sun.security.krb5.debug", "true"); 

的端口號這裏使用的是6667,因爲我使用的卡夫卡在我們霍頓的工作平臺。