L'inici de sessió al proxy pertany al proveïdor de credencials del transport. Amb Spring 6 i Apache HttpClient 5, limita aquest compte a l'intermediari:

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);

L'aplicació subministra els valors proxyUser i proxyPassword i és propietària del cicle de vida del client HTTP. Reutilitza rest per a la càrrega de treball en lloc de construir una altra plantilla per defecte al lloc de la crida.

AuthScope limita on són elegibles aquestes credencials. L'exemple subministra credencials ordinàries d'usuari i contrasenya; el nom BasicCredentialsProvider no obliga cada desafiament a utilitzar l'esquema HTTP Basic.

Amb una destinació HTTPS, el transport pot respondre un desafiament del proxy durant CONNECT, abans que existeixi la petició HTTP xifrada de l'aplicació. Un interceptor de destinació genèric que afegeix Proxy-Authorization no equival a aquesta negociació.

Configura per separat qualsevol compte de destinació. Si el proxy encara rebutja la petició, conserva l'esquema d'autenticació que anuncia i l'amfitrió i el port efectius. Una credencial limitada a un altre punt final no coincidirà només perquè la contrasenya sigui correcta.

Articles relacionats