为了做客户端的HTTP SPNEGO认证的Java在Windows,你需要设置Windows注册表键allowtgtsessionkey 。 这是有据可查的。 我不明白的是人们解决这个怎么弄? 大多数企业网站决不会接受改变此注册表项在Windows的单件的软件的缘故。 想想也麻烦,如果这需要组织中的每个工作站上进行改变。 但是,这只是理论,因为我迄今未能说服任何客户更改此注册表项。
我不怪他们。 大多数企业管理者会看到这是一个放松的安全性,因此会反对它。
我读过这样的: 有没有在Java中的方式或命令行UTIL以获得使用本地SSPI API的服务的Kerberos票据?
但现在已是相当陈旧。
所以,我真的,真的不明白人们是如何使Windows + Java客户端+ Kerberos的工作,对任何事情,但学校环境,家庭用户等。
我从企业管理者获得的问题是“为什么我们需要在应用程序,如IE和Firefox都没有问题的话SPNEGO 没有设置该键设置此注册表项?”。 好吧,我知道答案。 这是因为(最有可能),像IE和Firefox应用都是基于Windows本地GSS API(SSPI),而Sun公司的Java使用它自己的实现。
我假设使用类似WAFFLE会解决这个问题,但我赞成一个纯Java的解决方案。 我也假设,这将不利于使用基于Java的解决方案,例如Spring安全或Apache HttpClient的,因为它们都将被从这个问题的痛苦。
任何帮助或指针将不胜感激。
UPDATE1:
我发现有一个RFE Oracle的bug数据库这一点。 还有一个提交了关于此事的补丁由甲骨文员工和讨论有关此功能的JDK邮件列表上 。 没有让我比,据我能理解这么多聪明另一种是不提供当前的Java 7,甚至还不如实验。 对?
UPDATE2:
现在的问题是复活了 OpenJDK的安全开发邮件列表。