【问题标题】:Jaas - Requesting Renewable Kerberos TicketsJaas - 请求可更新的 Kerberos 票证
【发布时间】:2013-08-16 23:03:53
【问题描述】:

我有一个与 Kerberos 服务器通信并执行各种操作的 Java API。截至目前,我的 API 请求到 Kerberos 服务器的不可更新票证。据我了解,jaas 配置文件具有将 renewTGT 选项设置为 true 的选项,以便可以签发可更新票证。但是,Jaas 似乎对设置“renewUntil”时间有很多限制。谁能告诉我我们如何申请可更新票并控制其可更新性?基本上,有没有一种方法可以执行与 Java 等效的操作: kinit -R ?提前致谢。

【问题讨论】:

  • 实际上,renewTGT 应该可以。为什么不启用日志记录并使用 Wirshark 来查看 Java 的真正作用?
  • 谢谢迈克尔。我确实启用了日志记录,并尝试使用wireshark捕获请求/响应。即使将 renewTGT 设置为 true,所请求的票证也是不可更新的票证。是否需要进行其他配置?
  • 这可能是您的 KDC 中的设置。询问您的管理员。
  • 截至 JDK7 (1.7.0_55) renewTGT 仅在 useTicketCache=true 时可用,然后仅适用于从(本机)票证缓存中获取的票证。这意味着您使用了类似kinit 或Windows 登录来获取票证,并且相当于kinit -R。根据我在下面的回答,目前无法获得可更新的票证并使用 JAAS 获得的票证续签。

标签: kerberos jaas renewal


【解决方案1】:

从 JDK7 (1.7.0_55) 开始,JAAS Krb5LoginModule 在身份验证时不提供任何请求可更新 TGT 的选项,因此目前无法使用 JAAS。您或许能够实现这一点,但您需要绕过 JAAS 直接使用内部 Kerberos 类。

在内部,Krb5LoginModule 实例化 sun.security.krb5.KrbAsReqBuilder 以使用提供的密码或 keyTab 获取凭据。 KrbAsReqBuilder 有一个 setOptions(KDCOptions options) 方法,但是在登录模块中没有调用它。如果可以访问,您可以致电KDCOptions#set(KDCOptions.RENEWABLE, true),然后我希望返回的票证可以更新,前提是 KDC 配置为允许更新票证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    相关资源
    最近更新 更多