我们正在连接到一个使用Kerberos身份验证的Kafka服务器,据我所知,当使用Kerberos时,我们可以通过两种方式向客户端应用程序提供凭据:一种是以有效的Kerberos票证的形式存储在票证缓存中,另一种是以keytab文件的形式,应用程序可以使用它来获取Kerberos票证。
在这里,我有一个keytab文件。所以,我创建了一个JASS配置如下,并设置为kafkaConfig。
kerberosConfig = "com.ibm.security.auth.module.Krb5LoginModule required "
+ "useKeytab=\""
+ keytabPath
+ "\" credsType=both principal=\""
+ principal + "\";";
kafkaConfig.setProperty("sasl.jaas.config", kerberosConfig );
现在,这里的问题是我刚刚使用这个JAAS配置和keytab进行Kafka连接,它工作正常,没有任何问题但是我发现我们还需要将krb5.confi传递给系统属性,以进行如下Kerberos身份验证
System.setProperty("java.security.krb5.conf", krb5.conf);
那么,有人能解释一下keytab和krb5.conf之间的区别吗?keytab文件本身是否足够,或者我是否需要将krb5.conf也传递给系统属性?或者krb5.conf本身是否足够?
1条答案
按热度按时间kgqe7b3p1#
第一个是仅针对Kafka客户端的特定配置。
第二个是JVM范围的属性,它被传递到您使用的任何需要Kerberos的库。