我有连接到我的kafka集群的spring boot应用程序。 应用程序(作为kafka客户端)使用SASL身份验证,我在初始化kafka生产者和使用者之前通过System.setProperty()指定了JAAS配置。 单个kafka群集设置可以很好地工作。
kafka_client_jaas.conf
xsd1 = '''<?xml version...
<xs:schema targetNamespace="...
'''
xsd2 = '''...'''
import xmlschema
schema = xmlschema.XMLSchema([xsd1, xsd2]) # it seems xmlschema does not accept such arguments
# then using schema to validate xml files
MyKafkaProducer.java
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="myClusterUser"
password="user-secret";
};
现在我有一个第三方(别人的)kafka集群,该集群与我的kafka集群完全断开了连接。第三方kafka群集也使用SASL身份验证。
java应用程序如何连接到两个不同的kafka集群,并且两个集群都需要SASL身份验证?
两个集群的用户名和密码都不相同,我只能在…
private void init()
{
System.setProperty("java.security.auth.login.config", "kafka_client_jaas.conf");
…
}
中设置一个JAAS配置文件。
答案 0 :(得分:1)
从Kafka 0.10.2开始,您可以使用sasl.jaas.config
设置为每个Kafka客户端配置SASL身份验证。这样可以在单个JVM中运行具有不同(或相同)SASL配置的多个Kafka客户端。
要这样做:
未设置java.security.auth.login.config
在每个Kafka客户端属性中添加sasl.jaas.config
。例如:
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="myClusterUser" \
password="user-secret";
有关详细信息,请参见http://kafka.apache.org/documentation.html#security_sasl_plain_clientconfig
MyKafkaClient.java
import org.apache.kafka.common.config.SaslConfigs;
private void init() {
properties.put(SaslConfigs.SASL_JAAS_CONFIG,
"org.apache.kafka.common.security.plain.PlainLoginModule required username=\"myClusterUser\" password=\"user-secret\"");
}
删除您的JAAS文件