Попытки подключиться к URL-адресу SSRS и запросить отчет с помощью ошибок Java с ошибкой безопасности - PullRequest
0 голосов
/ 01 февраля 2019

Наши попытки получить доступ к отчету 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))

...