Абмежаванне ўліковых даных проксі RestTemplate з дапамогай HttpClient 5
Абмяжуйце ўліковыя даныя Apache HttpClient 5 хастом і портам проксі, перш чым перадаць транспарт у Spring 6 RestTemplate.
Уваход у проксі належыць пастаўшчыку ўліковых даных транспарту. Для 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, не эквівалентны гэтаму ўзгадненню.
Наладжвайце любы ўліковы запіс прызначэння асобна. Калі проксі ўсё яшчэ адхіляе запыт, захавайце абвешчаную схему аўтэнтыфікацыі і фактычныя хост і порт. Уліковыя даныя, абмежаваныя іншай канчатковай кропкай, не супадуць толькі таму, што пароль правільны.