Apache HttpPost, использующий HttpClient с заголовком авторизации, всегда возвращает 401 из IIS 10.JAVA

Программисты JAVA общаются здесь
Anonymous
Apache HttpPost, использующий HttpClient с заголовком авторизации, всегда возвращает 401 из IIS 10.

Сообщение Anonymous »


Я пытаюсь вызвать REST к веб-API, на котором работает IIS 10.0, из клиента Java. Я использую
[*]org.apache.http.client.HttpClient [*]org.apache.http.client.methods.HttpGet [*]org.apache.http.client.methods.HttpPost
Вот как я настраиваю запрос:

... httpclient = HttpClients.custom() .setDefaultRequestConfig(RequestConfig.custom() .setCookieSpec(CookieSpecs.STANDARD).build()) .строить(); HttpPost httppost = новый HttpPost(endpoint.getHost()); for(Заголовок заголовка: endpoint.getHeaders()){ httppost.setHeader(header.getKey(), header.getValue()); } StringEntity stringentity = новый StringEntity(полезная нагрузка, HTTP.UTF_8); httppost.setEntity(строга); // записываем запрос на консоль logPostRequestDetails (httppost); ответ = httpclient.execute(httppost); ... частный недействительный logPostRequestDetails (сообщение HttpPost) { System.out.println("URI: " + post.getURI()); // Заголовки журналов System.out.println("Заголовки:"); org.apache.http.Header[] заголовки = post.getAllHeaders(); for (org.apache.http.Header заголовок: заголовки) { System.out.println(header.getName() + ": " + header.getValue()); } // Регистрируем тело запроса если (post.getEntity() != ноль) { пытаться { System.out.println("Тело запроса: " + EntityUtils.toString(post.getEntity())); } catch (IOException e) { System.out.println("Тело запроса на регистрацию ошибок: " + e.getMessage()); } } } где консоль подтверждает наличие заголовка Authorization:

Авторизация: носитель [JWT-УДАЛЕНО] Но всегда сталкиваюсь с ошибкой 401:

[HttpResponseProxy{HTTP/1.1 401 Несанкционировано [Кодирование передачи: фрагментированное, Сервер: Microsoft-IIS/10.0, WWW-аутентификация: ошибка носителя = "invalid_token", X-Powered-By: ASP.NET, Strict-Transport-Security: max-age=31536000, Дата: пятница, 1 марта 2024 г., 17:39:29 GMT] ResponseEntityProxy{[Chunked: true]}}] Токен проверен действительным, поскольку я могу успешно использовать его с POSTMAN и cURL, а также с Apache HttpUrlConnection в Java . Это исключение генерируется только при использовании устаревшего HttpClient.

Я пробовал кодировать JWT base64, результат тот же.

Этот же HttpClient работает с Jira, когда я кодирую JWT base64.

Что мне не хватает? Пожалуйста, сообщите.

Та же проблема с HttpGet.

Я просмотрел другие сообщения SO по этому вопросу, но безрезультатно:
[*]Токен носителя авторизации в HttpClient [*]Заголовок аутентификации HttpClient не отправляется [*]HttpClient не принимает заголовки авторизации (401 несанкционировано) [*]Атрибут Authorize всегда возвращает 401.

Вернуться в «JAVA»