I en Go-forward-proxy læser r.BasicAuth headeren Authorization, som hører til login på destinationswebstedet. Selve proxyens legitimationsoplysninger ankommer i Proxy-Authorization.

En lille adapter kan genbruge den offentlige parser uden at ændre den oprindelige anmodning:

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()
}

Dette uddrag bruger net/http. Det returnerer de parsede værdier og et flag for vellykket parsing; det godkender ikke kontoen. Send resultatet videre til proxyens tilsigtede legitimationsvalidering.

Hvis godkendelsen mislykkes, returner 407 med en passende Proxy-Authenticate-udfordring, og stop behandlingen af den anmodning. Godkend, før du åbner en forbindelse til destinationen eller accepterer en CONNECT-tunnel.

Når legitimationsoplysningerne er accepteret, skal du forbruge proxyens egen Proxy-Authorization-header før normal videresendelse. Bevar det oprindelige Authorization-felt til originen. En overordnet proxy ovenfor har brug for sin egen bevidste godkendelsesordning i stedet for ved et uheld at modtage denne klientlegitimation.

Relaterede artikler