Pau*_*ulP 5 java ssl ntlm httpclient sharepoint-2010
我正在尝试在使用SSL加密(https)和NTLM身份验证的Sharepoint 2010服务器上进行简单的REST调用。当服务器设置为不需要SSL(仅出于测试目的,服务器将在生产中要求SSL)时,我的NTLM身份验证和后续的REST调用可以使用HttpClient正常运行。但是,启用SSL后,身份验证将不再起作用。
这是SSL处理的代码(设置为接受所有证书):
SSLContext sslContext = SSLContext.getInstance("TLS");
// set up a TrustManager that trusts everything
sslContext.init(null, new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs,
String authType) { }
public void checkServerTrusted(X509Certificate[] certs,
String authType) { }
} }, new SecureRandom());
SSLSocketFactory sf = new SSLSocketFactory(sslContext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Scheme httpsScheme = new Scheme("https", 443, sf);
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(httpsScheme);
ClientConnectionManager cm = new SingleClientConnManager(schemeRegistry);
Run Code Online (Sandbox Code Playgroud)
接下来是执行NTML和HTTP GET调用的代码:
HttpParams params = new BasicHttpParams();
DefaultHttpClient httpclient = new DefaultHttpClient(cm, params);
// Set up the NTLM credentials
NTCredentials creds = new NTCredentials(USERNAME, PASSWORD, MACHINE, DOMAIN);
httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY, creds);
// Setup the HTTP GET and execute it
HttpHost target = new HttpHost(HOSTNAME, 443, "https");
HttpContext localContext = new BasicHttpContext();
HttpGet httpget = new HttpGet("/site/_vti_bin/ListData.svc/TestList");
HttpResponse response1 = httpclient.execute(target, httpget, localContext);
Run Code Online (Sandbox Code Playgroud)
我总是得到的答复是:
HTTP/1.1 400 Bad Request
The server encountered an error processing the request. See server logs for more details.
Run Code Online (Sandbox Code Playgroud)
请注意,我已经使用FireFox Poster和CURL以编程方式完成此处要尝试的操作,并且效果很好。因此,服务器似乎已正确设置。
谢谢你的时间!
为可能遇到此问题的其他人记录此内容。
问题在于 IIS 服务器设置为允许匿名登录。显然,存在一个错误,如果设置了此项,则与该安装下的共享点实例的任何 REST 或 SOAP 连接都将不会成功。看起来好像字符串“anonymous”被添加到 REST/SOAP URL 中,这当然使其指向不存在的服务。在我们关闭 IIS 实例上允许匿名登录后,调用开始工作。
| 归档时间: |
|
| 查看次数: |
3562 次 |
| 最近记录: |