Я пытаюсь выполнить HTTP-вызов на бэкэнд с помощью аутентификации SPNEGO. Сама часть аутентификации SPNEGO, похоже, работает в соответствии с журналами трассировки, но вход завершается с ошибкой, так как серверный сервер является работоспособным, а cookie сеанса, который он отправляет обратно с его первым ответом 401, не используется httpclient. Я могу видеть в журнале трассировки, как httpclient отправляет первый запрос, получает 401 с заголовком «set-cookie», но не обрабатывает этот файл cookie; а затем, когда httpclient отвечает новым запросом с заголовком «Авторизация», cookie не существует; из-за этого сервер запускает другой логин с нуля и просто отвечает на 401 снова, с новым заголовком «set-cookie» и новым сеансом.Apache httpclient 4.5.3 Связывание с SPNEGO не хранит cookie
После неудачного рукопожатия, httpclient фактически обрабатывает новый, второй сеанс cookie и сохраняет его; это также видно в журнале трассировки. Мой печенье код обработки выглядит следующим образом:
BasicCookieStore cookieStore = new BasicCookieStore();
HttpClientBuilder clientBuilder = HttpClients.custom()
.setConnectionManager(SslHandler.createClientConnectionManager(adapterType))
.setRedirectStrategy(new IgnoreRedirectStrategy())
.setRetryHandler(new DefaultHttpRequestRetryHandler(2, true))
.setDefaultHeaders(allHeaders)
.setSSLHostnameVerifier(SslHandler.getHostnameVerifier(adapterType))
.setDefaultRequestConfig(defaultRequestConfig)
.setDefaultCookieStore(cookieStore);
RequestConfig localConfig = RequestConfig.custom()
.setCookieSpec(CookieSpecs.STANDARD)
.build();
request.setConfig(localConfig);
CloseableHttpClient client = clientBuilder.build();
localcontext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
org.apache.http.HttpResponse response = client.execute(request, localcontext);
Так в основном вопрос: Нужно ли делать что-то особенное для того, чтобы хранить/обработки печенье во время SPNEGO или NTLM рукопожатия? Кажется, он работает вне таких рукопожатий, но не во время них.
4.5.3 IS - самая последняя версия на странице загрузки. См. Http://hc.apache.org/httpcomponents-client-4.5.x/httpclient/dependency-info.html. – MaeseDude