在使用spring-cloud-stream-binder-kafka时,在kafka服务开启登录认证之后需要客户端提供用户名密码才可以链接,需要在配置文件中做如下配置:
pom文件:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
<version>XX</version>
</dependency>
配置文件:
spring:
cloud:
stream:
default-binder: kafka
kafka:
binder:
brokers: ip:port,ip:port,...
configuration:
security:
protocol: SASL_SSL
sasl:
mechanism: PLAIN
ssl:
truststore:
location: XX/XX/truststore.jks
password: 证书密码
cipher:
suites: 加密套件1,加密套件2,...
endpoint:
identification:
algorithm:''
配置文件中ssl开始的配置为kafka的SSL链接配置,如kakfa服务没有开启SSL请勿配置!!!
如想了解更多关于SSL配置项,请参考kafka-client.jar中的SslConfig类
通过用户名密码连接配置:
1. springboot可以在启动启动类设置JVM参数:
System.setProperty("java.security.auth.login.config","classpath:kafka_auth.conf");
- 创建一个名为KafkaLoginModule.java类,实现javax.security.auth.spi.LoginModule接口并实现里面的方法, 方法具体实现方式可参考kafka-client.jar中的PlainLoginModule类
kafka_auth.conf配置文件:
KafkaClient {
com.XXX.XXX.KafkaLoginModule required
username="XXX" #kafka用户名
password="XXX"; #kafka密码
};