我有一个 Java API,它与 Kerberos 服务器通信并执行各种操作。截至目前,我的 API 向 Kerberos 服务器请求不可更新的票证。据我了解,jaas 配置文件有一个选项可以将 renewTGT 选项设置为 true,以便可以发出可更新的票证。然而,Jaas似乎对设置“renewUntil”时间有很多限制。谁能告诉我如何请求可更新的机票并控制其可更新性?基本上,有没有一种方法可以执行与 Java 等效的操作: kinit -R ?提前致谢。
最佳答案
从 JDK7 (1.7.0_55) 开始,JAAS Krb5LoginModule
不提供任何在身份验证时请求可更新 TGT 的选项,因此目前无法使用 JAAS。您也许能够实现这一点,但您需要直接使用内部 Kerberos 类,绕过 JAAS。
内部,Krb5LoginModule
实例化 sun.security.krb5.KrbAsReqBuilder
使用提供的密码或 keyTab 获取凭据。 KrbAsReqBuilder
有一个setOptions(KDCOptions options)
方法,但是登录模块中没有调用该方法。如果可以访问,您可以调用KDCOptions#set(KDCOptions.RENEWABLE, true)
,如果 KDC 配置为允许更新票据,那么我希望返回的票据可以更新。
关于kerberos - Jaas - 请求可更新的 Kerberos 票证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283325/