我试图在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个问题:
keytab中的冒号正在被转义。
文件输出流正在文件末尾添加附加信息,如(=:在文件末尾&&date在文件顶部),这导致它无法工作。
我需要的格式是
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=false
useKeyTab=true
keyTab="C:/Users/test.keytab"
serviceName="kafka"
storeKey=true
principal="example.com";
};
1条答案
按热度按时间zxlwwiss1#
您不需要字符串,只需要一个env var
例如,使用jaas文件运行kafka将如下所示