在JDK8一個可以使keytab文件像這樣:密鑰表中Java9
static File a(String spn, String password) throws Exception {
final File f = File.createTempFile("tmp_", ".ktab");
final sun.security.krb5.internal.ktab.KeyTab ktab = sun.security.krb5.internal.ktab.KeyTab.create(f.getAbsolutePath());
final sun.security.krb5.PrincipalName p = new sun.security.krb5.PrincipalName(spn, sun.security.krb5.PrincipalName.KRB_NT_SRV_HST);
ktab.addEntry(p, password.toCharArray(), 1, true);
ktab.save();
return f;
}
在JDK9這將產生
error: package sun.security.krb5 is not visible
有
javax.security.auth.kerberos.KeyTab
但it顯得缺乏ktab和密碼功能。
在Java9中製作keytab文件的最佳方法是什麼?
使用來自JDK8的1.5M sun.security.jar工作,但它並不理想。
使用ProcessBuilder的ktab更好,但仍然很難看,並且ktab不包含在JRE/JDK(8或9)中。
這就是爲什麼人們不應該使用sun。*類。它們是JVM的內部組件,因爲廣告可隨時消失。 –
@RomainHippeau是的,我明白這就是爲什麼我問什麼是最好的選擇。 – user1133275
你正在嘗試做你自己的ktab.exe工具嗎?只是想知道爲什麼你不使用ProcessBuilder/Process來執行它。在任何情況下,JDK 9的變化都是JDK內部類在編譯時不可訪問。您將在JDK 9文檔和發行說明中閱讀關於此的更多信息。 –