Պրոքսի մուտքը պատկանում է տրանսպորտի հավատարմագրերի մատակարարին։ Spring 6-ի և Apache HttpClient 5-ի դեպքում սահմանափակեք այդ հաշիվը միջնորդով։

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

Հավելվածը տրամադրում է proxyUser և proxyPassword արժեքները և տիրապետում է HTTP հաճախորդի կյանքի ցիկլին։ Աշխատանքային բեռի համար կրկին օգտագործեք rest-ը՝ կանչի վայրում ևս մեկ լռելյայն ձևանմուշ կառուցելու փոխարեն։

AuthScope-ը սահմանափակում է, թե որտեղ են այս հավատարմագրերը վավեր։ Օրինակը տրամադրում է սովորական օգտանուն/գաղտնաբառ հավատարմագրեր. BasicCredentialsProvider անվանումը չի պարտադրում, որ յուրաքանչյուր մարտահրավեր օգտագործի HTTP Basic սխեման։

HTTPS նպատակակետի դեպքում տրանսպորտը կարող է պատասխանել պրոքսի մարտահրավերին CONNECT-ի ընթացքում՝ նախքան հավելվածի գաղտնագրված HTTP հարցումը գոյություն ունենալը։ Ընդհանուր նպատակակետային ինտերսեպտորը, որն ավելացնում է Proxy-Authorization, համարժեք չէ այդ բանակցությանը։

Ցանկացած նպատակակետային հաշիվ կարգավորեք առանձին։ Եթե պրոքսին դեռ մերժում է հարցումը, պահպանեք նրա հայտարարած նույնականացման սխեման և փաստացի հոսթն ու պորտը։ Այլ վերջնակետի համար սահմանափակված հավատարմագիրը չի համապատասխանի միայն այն պատճառով, որ գաղտնաբառը ճիշտ է։

Առնչվող հոդվածներ