Autentikimi Basic i proxy-t në OkHttp: ndaloni përsëritjet e refuzuara
Përdorni proxyAuthenticator të OkHttp për sfidat e proxy-t dhe ndaloni përsëritjen e një përpjekjeje autorizimi të pandryshuar.
Për një proxy HTTP që ofron autentikim Basic, proxyAuthenticator i OkHttp mund të kthejë një kërkesë që mbart kredenciale. Ktheni null pasi një përpjekje autorizimi është refuzuar tashmë, në vend që të dërgoni përsëri të njëjtën përgjigje:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
Ky skicë përdor vlera llogarie nga konfigurimi sekret i aplikacionit. Mbrojtja lejon një përpjekje fillestare dhe ndalon një të përsëritur. Ai zbaton Basic, jo çdo skemë që një proxy mund të shpallë; shqyrtoni sfidën përpara se të zgjidhni atë përgjigje.
Nëse rezultati përfundimtar mbetet 407, krahasoni proxy-n e zgjedhur, skemën e shpallur dhe identitetin e dokumentuar të llogarisë. Një fjalëkalim i refuzuar, një metodë e pambështetur dhe një formë e gabuar e emrit të përdoruesit kërkojnë korrigjime të ndryshme. Ruani ato vëzhgime dhe statusin përfundimtar në diagnostifikime të redaktuara.
CONNECT ka një kontekst tjetër kthimi: OkHttp dokumenton një sfidë sintetike parandaluese të autentikimit të proxy-t përpara se të hapë tunelin. Trajtoni atë kontekst sipas API-së në vend që të supozoni se çdo kthim është një përgjigje e zakonshme destinacioni.
authenticator i veçantë është për autentikimin në serverin e destinacionit. Mbani kredencialet e tij të ndara nga hyrja në proxy; një interceptor gjenerik që vendos një fjalëkalim proxy në çdo kërkesë dalëse mund ta dërgojë atë në shtrirjen e gabuar.
Raportet historike përshkruajnë gjithashtu defekte implementimi, duke përfshirë trajtimin e trupit të përgjigjes së refuzuar të proxy-t. Regjistroni versionin e OkHttp dhe shkëmbimin përfundimtar përpara se t'i atribuoni një dështim aktual një raporti të vjetër. Vendimi për përsëritje duhet ende të ndalojë një përpjekje të pandryshuar kredencialesh që nuk ka asnjë përgjigje të re të dobishme.