Java9中的KeyTab

时间:2017-08-31 16:59:14

标签: java kerberos

在JDK8中,可以像这样创建一个keytab文件:

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)中。

1 个答案:

答案 0 :(得分:0)

您使用的API是JRE内部的。您可以使用Apache Kerby项目中的备用Kerberos实现。有关示例,请参阅KeytabAddCommand