Обмеження облікових даних проксі RestTemplate за допомогою HttpClient 5
Обмежте облікові дані Apache HttpClient 5 хостом і портом проксі, перш ніж передати транспорт у Spring 6 RestTemplate.
Вхід до проксі належить постачальнику облікових даних транспорту. Для Spring 6 з Apache HttpClient 5 обмежте цей обліковий запис посередником:
var proxy = new org.apache.hc.core5.http.HttpHost(
"http", "proxy.example", 8080);
var credentials = new org.apache.hc.client5.http.impl.auth
.BasicCredentialsProvider();
credentials.setCredentials(
new org.apache.hc.client5.http.auth.AuthScope(proxy),
new org.apache.hc.client5.http.auth.UsernamePasswordCredentials(
proxyUser, proxyPassword.toCharArray()));
var http = org.apache.hc.client5.http.impl.classic.HttpClients.custom()
.setProxy(proxy)
.setDefaultCredentialsProvider(credentials)
.build();
var factory = new org.springframework.http.client
.HttpComponentsClientHttpRequestFactory(http);
var rest = new org.springframework.web.client.RestTemplate(factory);Програма надає значення proxyUser і proxyPassword та володіє життєвим циклом HTTP-клієнта. Використовуйте rest повторно для робочого навантаження, а не створюйте ще один шаблон за замовчуванням у місці виклику.
AuthScope обмежує, де ці облікові дані дійсні. Приклад надає звичайні облікові дані з іменем користувача та паролем; назва BasicCredentialsProvider не змушує кожен виклик використовувати схему HTTP Basic.
З HTTPS-призначенням транспорт може відповісти на запит проксі під час CONNECT, перш ніж існуватиме зашифрований HTTP-запит програми. Загальний перехоплювач призначення, що додає Proxy-Authorization, не еквівалентний цим переговорам.
Налаштовуйте будь-який обліковий запис призначення окремо. Якщо проксі все ще відхиляє запит, збережіть оголошену ним схему автентифікації та фактичні хост і порт. Облікові дані, обмежені іншою кінцевою точкою, не збігатимуться лише тому, що пароль правильний.