最后我找到了问题1 + 2的答案
kinit与Java发行版捆绑在一起的命令是一个Java应用程序,该应用程序对用户进行身份验证进入领域/域,并将获取的票证保存在
ccache文件中。该
kinit命令代码
sun.security.krb5.internal.tools在OpenJDK
的软件包中可用。主要的课程是
sun.security.krb5.internal.tools.Kinit。为了获取(认证)并保留Kerberos票证,您可以将所有
tool包复制到应用程序中,并通过提供cli参数从
Kinit类中调用该方法
main(String[]arv)。您也可以像我一样更改
Kinit类,以更好地与您的代码集成。
Kinit代码对于理解内部专用Kerberos代码的内部工作方式以及对其进行自定义非常有用。例如,有一个
KDCOptions您可以手动配置的实例,以索取可再生票证等等。让我们学习吧!;-)
请考虑:
- 不保证内部代码接口在将来的JDK版本中将保持不变
- 不保证不同JDK供应商之间内部代码的接口相同。
我可以确认我的代码在OpenJDK和Oracle JDK上都能正常工作。
大图
目前,我的应用程序使用Jaas来通过查看本地
ccache文件中的Krb凭证进行身份验证,如果失败,它将执行上述
kinit代码。然后,它使用更新
ccache文件中的Jaas进行身份验证。
下一步
我目前正在尝试将Kerberos票证直接从主题对象中的凭据持久保存到ccache。
我将尝试使用
sun.security.krb5.internal.ccache.FileCredentialCache该类,但它看起来很底层。让我们看看在
CredentialCachekinit代码中使用抽象类,可能有用。如果成功,我将更新线程。
谢谢
谢谢Michael-O向我展示了
sun.security.krb5.internal最终找到
kinit代码的软件包。
问候



