-->

Java 6的HttpURLConnection类和RHEL5.5的Project Server N

2019-10-16 21:28发布

目前,在对与集成Windows身份验证在IIS上运行的Microsoft Project Server 2007实例验证亏损从Java 1.6(U19)客户端启用在Linux,RHEL 5.5中运行。

注意:客户端的工作我的Windows工作站上。

我最初是想实现一个JAX-WS电话,发现我无法检索WSDL因身份验证错误,特别是401.2,随后是500。所以我把它简化为一个Java类:

  1. 创建一个Authenticator ,并将其设置有权限的项目服务器站点在广告中使用用户名/密码默认
  2. 创建java.net.URL对象
  3. 创建java.net.HttpURLConnection并调用getInputStream
  4. 正是在这一点上,其中一个发生故障。

随着HttpURLConnection调试打开,我可以看到:

  1. 初始认证失败(401.2)从服务器返回与“协商”,并包括在响应“NTLM”。
  2. 客户端创建一个NTLM令牌并将其发送回服务器
  3. 服务器以500个状态码返回

在日志中的Windows服务器上,我可以看到有只为我的再审,并包含在日志文件中没有用户名只是一个“ - ”我相信意思是“无名氏”。

我的想法是,Project Server已不顺心正在传递的NTLM令牌和窒息。 基于这个很多贴子,NTLM(V1和V2)的假设是在Java 1.6的支持。

任何帮助将不胜感激...

更新12年6月20日:缩小问题到了网络安全的本地安全策略设置:对于NTLM SSP的最小会话安全基于(包括RPC)服务器 。 导致Java客户端失败的设置要求NTLMv2的安全性 。 该违背什么是声称对NTLM的支持与JDK 1.6 ..

一些参考:

  • Java的HTTP认证
  • 博客显示的Java身份验证默认地将Impl

Answer 1:

前阵子,当我有这个问题,我结束了使用由他人创建的方案。

http://devsac.blogspot.com/2010/10/supoprt-for-ntlmv2-with-apache.html

工作对我来说,当我不得不从获得的图像文件和IIS服务器使用NTLM。 代码段使用上面的代码..

AuthPolicy.registerAuthScheme(AuthPolicy.NTLM, org.xyz.JCIFS_NTLMScheme.class);
            HttpClient client = new HttpClient();
            client.getState().setCredentials(AuthScope.ANY, new NTCredentials(userName, password, "", strDomain));
            GetMethod get = new GetMethod(strImageFile);
            get.setDoAuthentication(true);
            client.executeMethod(get);


文章来源: Java 6 HTTPURLConnection and Project Server NTLM Authentication from RHEL5.5