我正在使用 Spring Boot 1.5.6.RELEASE 连接到使用 Kerberos 认证的 Kafka 0.11。以下是我用于 Kafka 的依赖项:
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-kafka</artifactId>
<version>3.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kafka</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
我需要向一个不受我们管理的Kafka服务器发送消息,我拥有一个Kafka用户名、keytab
文件和一个krb5.conf
文件。
以下是用于未使用Kerberos测试的属性:
spring:
kafka:
bootstrap-servers: "10.10.20.185:9092"
producer:
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
运行良好。
我该如何在我的应用程序配置中实现Kerberos?由于我对Kafka和Kerberos都很新,所以任何帮助都将不胜感激。
jaas.conf
文件:KafkaClient{ com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true useTicketCache=true keyTab="/home/tomi/user-host.keytab" principal="user/host@x.com"; };
我使用java -jar -Djava.security.auth.login.config=/home/tomi/jaas.conf -Djava.security.krb5.conf=/home/tomi/krb5.conf kafka.jar
启动应用程序。 当尝试发送消息时,我收到以下错误:sun.security.krb5.KrbException: no supported default etypes for default_tkt_enctypes
。 在我的 krb5.conf 文件中,default_tkt_enctypes
被定义为aes256-cts-hmac-sha1-96
。 - tomi