在JDK8中,你可以这样创建一个密钥表文件:
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中创建密钥表文件的最好方法是什么?
使用来自JDK8的15M sun.security.jar是可行的,但并不理想。
使用ProcessBuilder中的ktab会更好,但仍然很难看,而且JRE/JDK (8或9)中没有包含ktab。
发布于 2017-09-12 17:47:32
您使用的API是JRE内部的。您可以使用Apache Kerby项目中的其他Kerberos实现。有关示例,请参阅KeytabAddCommand。
https://stackoverflow.com/questions/45986701
复制相似问题