【发布时间】:2013-01-17 18:22:58
【问题描述】:
我的 Java 应用程序中需要一个 postdatable Kerberos ticket。但是我在GSSContext接口中没有找到任何方法。 Java 不支持这个 Kerberos 功能吗?
目的如下: 在我们的应用程序中,用户可以设置将在未来一段时间运行的批处理。并且应用服务器将不得不使用在批次执行时有效的委托票证,而原始票证可能已过期。
编辑:澄清我的第一个声明:我发现GSSContext、GSSContextImpl 以及GSSContextImpl 不能访问仅在Krb5Context 中可用的setAuthTime() 方法。在没有深入研究所有细节的情况下,似乎只能通过对未记录类的某些直接访问来实现后验身份验证。
由于在让客户端浏览器发送带有正确标志的票证方面似乎存在其他问题 - 正如@Michael-O 指出的那样 - 我想我将不得不找到另一个解决方案,也许只是询问用户用户名和密码,将它们与批处理加密保存,然后在批处理开始时请求新票证。
延期票的概念听起来很适合我的问题,但似乎缺乏实际用途,导致现有环境无法很好地支持它。
【问题讨论】:
-
好点!由于客户端是浏览器,可能我无法影响它的票证设置。
-
我已经在 Ubuntu 下检查了
kinit,我可以设置票证的开始日期 (TGT) => 可发布日期。我还使用kerbtray检查了我的 Windows 凭据缓存,并且 TGT 不是MAY-POSTDATE。据我所知,由于 SSPI 使用这个给定的 TGT,并且您不能拥有一个过时的转发 TGT。您应该在 MIT Kerbros 邮件列表中提出这个非常具体的问题。我真的很想听听开发者的意见。 -
@FrankPl:Web 应用程序/浏览器中的可发布票证的具体用例是什么?听起来很有趣。
-
@Koraktor:如上所述,我们的应用程序允许用户创建一些计划在未来某个日期/时间执行的批处理作业。这些作业需要通过 http(s) 访问另一个应用程序。目前,执行不需要用户特定的身份验证。但是下一个版本的应用程序需要使用在浏览器中运行客户端的用户的身份验证。这里我们遇到了一个问题,默认情况下 Kerberos 票证在 10 小时后过期,可能在计划作业执行之前。