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

问题描述 投票:-1回答:1

我正在尝试在我的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";
};

我正在尝试在我的zookeeper-jass.conf文件中传递keytab的值。我使用以下代码检索它:String baseDirectory = System.getProperty(“ user.dir”); baseDirectory = ...

java apache-kafka kerberos keytab
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.