以编程方式传递密钥表位置失败(Kafka / Kerberos)



我正在尝试在我的 zookeeper-jass.conf 文件中传递 keytab 的值。 我使用以下代码检索它:

String baseDirectory = System.getProperty("user.dir");
baseDirectory = baseDirectory.replace("\", "/");
String keyTabPath = baseDirectory + "/test.keytab";
java.io.FileInputStream fs = null;
Properties prop=prop =new Properties();
fs = new java.io.FileInputStream(loginConfigPath);
prop.load(fs);
String keyTab = (String) prop.get("keyTab");
String newKeyTabPath = """+keyTabPath+""";
prop.setProperty("keyTab", newKeyTabPath);
prop.store(new java.io.FileOutputStream(loginConfigPath),null);

此代码的输出:

#Tue Jan 21 14:30:24 EST 2020
KafkaClient={
useTicketCache=false
serviceName="kafka"
useKeyTab=true
principal="example.com";
keyTab="C:/Users/conf/test.keytab"
com.sun.security.auth.module.Krb5LoginModule=required
storeKey=true
};=

2 问题:

  1. keyTab 中的冒号正在被转义。

  2. 文件输出流在末尾添加其他信息,例如( = : 在文件末尾 &&日期在文件顶部(,这导致它不起作用。

我需要格式

KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=false
useKeyTab=true
keyTab="C:/Users/test.keytab"
serviceName="kafka"
storeKey=true
principal="example.com";
};

你不需要字符串,只需要一个 env-var

例如,使用 JAAS 文件运行 Kafka 将像这样完成

set KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf"
binwindowskafka-server-start etckafkaserver.properties

相关内容

  • 没有找到相关文章

最新更新