Я пытаюсь выполнить простые вызовы REST на сервере Sharepoint 2010, который использует шифрование SSL (https), а также проверку подлинности NTLM.Когда сервер настроен так, чтобы не требовать 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);
Затем следует код для выполнения NTML.и HTTP GET call:
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);
Ответ, который я всегда получаю:
HTTP/1.1 400 Bad Request
The server encountered an error processing the request. See server logs for more details.
Обратите внимание, что я использовал FireFox Poster и CURL, чтобы делать то же самое, что и я.пытаюсь сделать тут программно, и все работает нормально.Похоже, сервер настроен правильно.
Спасибо за ваше время!