Základná proxy autentifikácia v OkHttp: zastavte odmietnuté opakovania
Použite proxyAuthenticator v OkHttp pre výzvy proxy a zastavte opakovanie nezmeneného pokusu o autorizáciu.
Pre HTTP proxy ponúkajúcu základnú autentifikáciu môže proxyAuthenticator v OkHttp vrátiť požiadavku s prihlasovacími údajmi. Po už odmietnutom pokuse o autorizáciu vracajte null namiesto opätovného odoslania tej istej odpovede:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
Tento náčrt používa hodnoty účtu z tajnej konfigurácie aplikácie. Poistka povoľuje prvý pokus a zastavuje opakovaný. Implementuje Basic, nie každú schému, ktorú proxy môže inzerovať; pred voľbou tejto odpovede preskúmajte výzvu.
Ak konečný výsledok zostáva 407, porovnajte zvolenú proxy, inzerovanú schému a dokumentovanú identitu účtu. Odmietnuté heslo, nepodporovaná metóda a nesprávny tvar používateľského mena vyžadujú rôzne opravy. Tieto pozorovania a konečný stav uchovajte v redigovanej diagnostike.
CONNECT má iný kontext spätného volania: OkHttp dokumentuje syntetickú preventívnu výzvu proxy autentifikácie pred otvorením tunela. S týmto kontextom zaobchádzajte podľa API, namiesto toho, aby ste predpokladali, že každé spätné volanie je bežná odpoveď cieľa.
Samostatný authenticator slúži na autentifikáciu cieľového servera. Jeho prihlasovacie údaje uchovávajte oddelene od prihlásenia k proxy; všeobecný interceptor vkladajúci heslo proxy do každej odchádzajúcej požiadavky ho môže odoslať v nesprávnom rozsahu.
Historické správy opisujú aj chyby implementácie, vrátane spracovania tela odmietnutej odpovede proxy. Pred priradením súčasného zlyhania starej správe zaznamenajte verziu OkHttp a konečnú výmenu. Rozhodnutie o opakovaní by stále malo zastaviť nezmenený pokus s prihlasovacími údajmi, ktorý nemá žiadnu užitočnú novú odpoveď.