Parse Proxy-Authorization i en Go-forward-proxy
Parse Proxy-Authorization separat i en Go-forward-proxy mens opphavets Authorization-header bevares.
I en Go-forward-proxy leser r.BasicAuth headeren Authorization, som hører til påloggingen på nettstedet du skal til. Proxyens egne legitimasjonsdata kommer i Proxy-Authorization.
En liten adapter kan gjenbruke den offentlige parseren uten å endre den opprinnelige forespørselen:
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()
}
Denne kodebiten bruker net/http. Den returnerer de parsede verdiene og et flagg for vellykket parsing; den autentiserer ikke kontoen. Send resultatet videre til proxyens tiltenkte validator for legitimasjonsdata.
Hvis autentiseringen mislykkes, returner 407 med en passende Proxy-Authenticate-utfordring og stopp behandlingen av den forespørselen. Autentiser før du åpner en forbindelse til destinasjonen eller godtar en CONNECT-tunnel.
Etter å ha godtatt legitimasjonsdataene, bruk opp proxyens egen Proxy-Authorization-header før vanlig videresending. Behold det opprinnelige Authorization-feltet for opphavet. En overordnet foreldreproxy, hvis den finnes, trenger sin egen bevisste autentiseringsordning i stedet for å motta denne klientlegitimasjonen ved et uhell.