Prisijungimas prie tarpinio serverio priklauso transporto kredencialų teikėjui. Naudojant Spring 6 ir Apache HttpClient 5, apribokite tą paskyrą tarpininku:

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

Programa pateikia reikšmes proxyUser ir proxyPassword ir valdo HTTP kliento gyvavimo ciklą. Pakartotinai naudokite rest darbo krūviui, o ne kurdami dar vieną numatytąjį šabloną iškvietimo vietoje.

AuthScope apriboja, kur šie kredencialai galioja. Pavyzdys pateikia įprastus vartotojo vardo/slaptažodžio kredencialus; pavadinimas BasicCredentialsProvider neverčia kiekvieno iššūkio naudoti HTTP Basic schemą.

Su HTTPS paskirties vieta transportas gali atsakyti į tarpinio serverio iššūkį CONNECT metu, prieš atsirandant programos užšifruotai HTTP užklausai. Bendras paskirties vietos interceptorius, pridedantis Proxy-Authorization, nelygiavertis tam derėjimuisi.

Kiekvieną paskirties vietos paskyrą konfigūruokite atskirai. Jei tarpinis serveris vis tiek atmeta užklausą, išsaugokite jo skelbiamą autentifikavimo schemą bei faktinį mazgą ir prievadą. Kredencialai, apriboti kitam galiniam taškui, nesutaps vien todėl, kad slaptažodis teisingas.

Susiję straipsniai