Go perdavimo proxy r.BasicAuth nuskaito Authorization antraštę, kuri priklauso tikslinės svetainės prisijungimui. Paties proxy kredencialai atkeliauja Proxy-Authorization antraštėje.

Nedidelis adapteris gali pakartotinai naudoti viešą analizatorių nekeisdamas pradinės užklausos:

func proxyBasicAuth(r *http.Request) (string, string, bool) {
    headers := make(http.Header)
    headers.Set("Authorization", r.Header.Get("Proxy-Authorization"))
    return (&http.Request{Header: headers}).BasicAuth()
}

Šis fragmentas naudoja net/http. Jis grąžina išanalizuotas reikšmes ir analizės sėkmės vėliavą; jis nenustato paskyros tapatybės. Perduokite rezultatą numatytam proxy kredencialų tikrintojui.

Jei autentifikacija nepavyksta, grąžinkite 407 su tinkamu Proxy-Authenticate iššūkiu ir sustabdykite tos užklausos apdorojimą. Autentifikuokite prieš atidarydami ryšį su tikslu ar priimdami CONNECT tunelį.

Priėmę kredencialus, prieš įprastą perdavimą sunaudokite paties proxy Proxy-Authorization antraštę. Išsaugokite pradinį Authorization lauką šaltiniui. Aukštesnis pirminis proxy, jei yra, turi turėti savo sąmoningą autentifikacijos tvarką, o ne atsitiktinai gauti šiuos kliento kredencialus.

Susiję straipsniai