我正在开发一个Java代码库,用于检查Kerberos KeyTab文件是否有效,但它使用内部类SELECT (count(column1)) - count(column2)) from table;
作为其sun.security.krb5.internal.ktab.KeyTab
方法。目前,它正在执行以下操作:
isValid()
在Java 9中访问此方法更令人烦恼,所以我正在寻找避免使用此内部类的方法,但浏览JDK源代码时,我还没有看到任何暴露{{1}的内容方法或非内部类中的等价物。
是否存在不依赖于黑客的选项,如反映私有方法或访问内部API?
答案 0 :(得分:2)
<强> 1)强>
您可以尝试使用本机可执行文件验证密钥表文件,并按照输出继续以通过java ProcessBuilder确定有效性。例如对于linux / * nix,你可以运行
klist -k –t your.keytab
<强> 2)强>
因为,你已经提到了排除访问内部API的愿望,我假设你知道这些选项。但只是在这里包括这个特定案例的信息:
javac --add-exports java.security.jgss/sun.security.krb5.internal.ktab=ALL-UNNAMED your-class.java
java --add-exports java.security.jgss/sun.security.krb5.internal.ktab=ALL-UNNAMED your-class
第3)强>
您也可以推出自己的验证器。我认为source并不复杂。