人们如何使Java SPNEGO客户端在Windows中工作?
为了在Windows上使用Java进行客户端HTTP SPNEGO身份验证,您需要设置Windows注册表项 allowtgtsessionkey。这是有据可查的。我不明白的是人们如何解决这个问题?大多数公司网站永远不会为了单个软件而接受在 Windows 中更改此注册表项。还要考虑是否需要在组织中的每个工作站上进行更改,那么麻烦。但这只是理论,因为到目前为止,我无法说服任何客户更改此注册表项。
我不怪他们。大多数公司管理员会认为这是放松安全性,因此会反对它。
我已经读过这个:在Java或命令行实用程序中,有没有办法使用本机SSPI API获取服务的Kerberos票证?
但它现在已经很老了。
所以我真的,真的不明白人们如何让Windows + Java客户端+ Kerberos在大学环境,家庭用户等以外的任何东西上工作。
我从企业管理员那里得到的问题是“当IE和Firefox等应用程序在不设置此注册表项的情况下执行SPNEGO没有问题时,为什么我们需要设置此注册表项?好吧,我知道答案是什么。这是因为(最有可能)像IE和Firefox这样的应用程序基于Windows原生GSS API(SSPI),而Sun的Java使用自己的实现。
我假设使用像WAFFLE这样的东西可以解决这个问题,但我更倾向于纯Java解决方案。我还假设使用基于Java的解决方案(如Spring安全或Apache HttpClient)无济于事,因为它们都将遭受此问题的困扰。
任何帮助或指导将不胜感激。
更新1:
我发现在Oracle的错误数据库中有一个RFE。还有一位Oracle员工就此事提交的补丁,并在JDK邮件列表中讨论了此功能。除了据我所知,这在当前的Java 7中不可用之外,并没有让我变得更聪明,甚至没有实验性的。右?
更新2:
这个问题现在在OpenJDK Security Dev邮件列表中再次活跃起来。