Ang pag-login sa proxy ay kabilang sa tagapagbigay ng kredensyal ng transport. Sa Spring 6 at Apache HttpClient 5, limitahan ang account na iyon sa tagapamagitan:

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

Ibinibigay ng application ang mga halagang proxyUser at proxyPassword at pagmamay-ari nito ang lifecycle ng HTTP client. Gamitin muli ang rest para sa workload sa halip na bumuo ng isa pang default na template sa lugar ng tawag.

Limitahan ng AuthScope kung saan wasto ang mga kredensyal na ito. Nagbibigay ang halimbawa ng ordinaryong kredensyal na username/password; hindi pinipilit ng pangalang BasicCredentialsProvider ang bawat hamon na gumamit ng HTTP Basic scheme.

Sa destinasyong HTTPS, maaaring sagutin ng transport ang hamon ng proxy habang CONNECT, bago pa umiral ang naka-encrypt na HTTP request ng application. Ang generic na interceptor ng destinasyon na nagdaragdag ng Proxy-Authorization ay hindi katumbas ng negosasyong iyon.

I-configure nang hiwalay ang anumang account ng destinasyon. Kung tinatanggihan pa rin ng proxy ang request, panatilihin ang inanunsyong scheme ng authentication at ang aktwal na host at port. Ang kredensyal na limitado sa ibang endpoint ay hindi magtutugma dahil lang tama ang password.

Kaugnay na mga artikulo