Наши попытки получить доступ к отчету SSRS через URL-адрес, который включает проверку подлинности Windows NTLM с использованием кода Java (несколько различных методов), потерпели неудачу.Наши попытки получить доступ к отчету с помощью Postman также терпят неудачу с той же ошибкой, но наш код .NET, который обращается к отчету, работает нормально.
В Win 10, с Java 1.8 и commcks httpclient-4.5.7.
Это пример кода, который мы попробовали из '4.7.1.Раздел «Постоянство соединения NTLM» в руководстве HTTP-аутентификации Apache Software Foundation (конечно, с нашими конкретными параметрами - мы опробовали несколько других методов, которые все терпят неудачу с одной и той же ошибкой):
CloseableHttpClient httpclient = <...>
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY,
new NTCredentials("user", "pwd", "myworkstation", "microsoft.com"));
HttpHost target = new HttpHost("www.microsoft.com", 80, "http");
// Make sure the same context is used to execute logically related requests
HttpClientContext context = HttpClientContext.create();
context.setCredentialsProvider(credsProvider);
// Execute a cheap method first. This will trigger NTLM authentication
HttpGet httpget = new HttpGet("/ntlm-protected/info");
CloseableHttpResponse response1 = httpclient.execute(target, httpget, context);
try {
HttpEntity entity1 = response1.getEntity();
} finally {
response1.close();
}
// Execute an expensive method next reusing the same context (and connection)
HttpPost httppost = new HttpPost("/ntlm-protected/form");
httppost.setEntity(new StringEntity("lots and lots of data"));
CloseableHttpResponse response2 = httpclient.execute(target, httppost, context);
try {
HttpEntity entity2 = response2.getEntity();
} finally {
response2.close();
}
Мы ожидаем получитьотчет в формате PDF - вместо этого мы получаем эту ошибку:
29 января 2019 г. 16:21:44 org.apache.http.impl.auth.HttpAuthenticator generateAuthResponse ПРЕДУПРЕЖДЕНИЕ: ошибка аутентификации NEGOTIATE: действительные учетные данные не предоставлены(Уровень механизма: действительные учетные данные не предоставлены (Уровень механизма: не удалось найти любой Kerberos tgt))