Ограничите proxy акредитиве RestTemplate-а уз HttpClient 5
Ограничите акредитиве Apache HttpClient 5 на proxy хост и порт пре него што транспорт предате Spring 6 RestTemplate-у.
Пријава на proxy припада добављачу акредитива транспорта. Уз 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 одредиштем транспорт може одговорити на proxy изазов током CONNECT, пре него што захтев апликације буде шифрован. Општи пресретач одредишта који додаје Proxy-Authorization није једнак том преговарању.
Конфигуришите сваки налог одредишта засебно. Ако proxy и даље одбија захтев, задржите његову објављену шему аутентификације те стварни хост и порт. Акредитиве ограничене на другу крајњу тачку неће се подударати само зато што је лозинка исправна.