Limita as credenciais de proxy de RestTemplate con HttpClient 5
Limita as credenciais de Apache HttpClient 5 ao host e ao porto do proxy antes de entregar o transporte a un RestTemplate de Spring 6.
O inicio de sesión no proxy pertence ao provedor de credenciais do transporte. Con Spring 6 e Apache HttpClient 5, limita esa conta ao intermediario:
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);A aplicación fornece os valores proxyUser e proxyPassword e é propietaria do ciclo de vida do cliente HTTP. Reutiliza rest para a carga de traballo en lugar de construír outro modelo por defecto no lugar da chamada.
AuthScope limita onde son elixibles estas credenciais. O exemplo fornece credenciais habituais de usuario e contrasinal; o nome BasicCredentialsProvider non obriga a que cada desafío use o esquema HTTP Basic.
Cun destino HTTPS, o transporte pode responder a un desafío do proxy durante CONNECT, antes de que exista a solicitude HTTP cifrada da aplicación. Un interceptor de destino xenérico que engade Proxy-Authorization non equivale a esa negociación.
Configura por separado calquera conta de destino. Se o proxy segue rexeitando a solicitude, conserva o esquema de autenticación que anuncia e o host e porto efectivos. Unha credencial limitada a outro punto final non coincidirá só porque o contrasinal sexa correcto.