我使用springboot1.5.6.release通过kerberos身份验证连接到kafka0.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服务器不在我们的管理范围内,我得到了一个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的新手,任何帮助都将不胜感激。
1条答案
按热度按时间xj3cbfub1#
请参阅kafka文档“使用sasl/kerberos进行身份验证”。
在客户机上配置sasl身份验证:客户机(生产者、消费者、连接工作者等)将使用自己的主体(通常与运行客户机的用户同名)对集群进行身份验证,因此根据需要获取或创建这些主体。然后为每个客户机配置jaas配置属性。jvm中的不同客户机可以通过指定不同的主体作为不同的用户运行。producer.properties或consumer.properties中的属性sasl.jaas.config描述了producer和consumer等客户机如何连接到kafka代理。以下是使用keytab的客户机配置示例(建议用于长时间运行的进程):
对于命令行实用程序,如kafka console consumer或kafka console producer,kinit可以与“useticketcache=true”一起使用,如:
客户机的jaas配置也可以指定为jvm参数,类似于这里描述的代理。客户端使用名为kafkaclient的登录部分。此选项只允许一个用户从jvm进行所有客户端连接。
确保启动kafka客户机的操作系统用户可以读取jaas配置中配置的keytab。可选地将krb5文件位置作为jvm参数传递给每个客户机jvm(有关更多详细信息,请参阅此处):
在producer.properties或consumer.properties中配置以下属性: