Välityspalvelinkirjautuminen kuuluu siirron tunnusten tarjoajalle. Kun käytössä on Spring 6 ja Apache HttpClient 5, rajaa kyseinen tili välittäjään:

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

Sovellus toimittaa proxyUser- ja proxyPassword-arvot ja omistaa HTTP-asiakkaan elinkaaren. Käytä restiä uudelleen työkuormaan sen sijaan, että rakentaisit kutsupaikassa toisen oletusmallin.

AuthScope rajaa, missä nämä tunnukset ovat kelvollisia. Esimerkki toimittaa tavalliset käyttäjätunnus/salasana-tunnukset; nimi BasicCredentialsProvider ei pakota jokaista haastetta käyttämään HTTP Basic -skeemaa.

HTTPS-kohteen kanssa siirto voi vastata välityspalvelimen haasteeseen CONNECTin aikana, ennen kuin sovelluksen salattu HTTP-pyyntö on olemassa. Yleinen kohdekoukku, joka lisää Proxy-Authorization-otsikon, ei vastaa tätä neuvottelua.

Määritä jokainen kohdetili erikseen. Jos välityspalvelin yhä hylkää pyynnön, säilytä sen ilmoittama todennusmenetelmä sekä todellinen isäntä ja portti. Toiseen päätepisteeseen rajattu tunnus ei täsmää pelkästään siksi, että salasana on oikein.

Aiheeseen liittyvät artikkelit