V dopředném proxy v Go čte r.BasicAuth hlavičku Authorization, která patří přihlášení cílového webu. Vlastní přihlašovací údaje proxy přicházejí v Proxy-Authorization.

Malý adaptér může znovu použít veřejný parser bez změny původního požadavku:

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

Tento fragment používá net/http. Vrací zpracované hodnoty a příznak úspěšného zpracování; neověřuje účet. Výsledek předejte zamýšlenému validátoru přihlašovacích údajů proxy.

Pokud ověření selže, vraťte 407 s vhodnou výzvou Proxy-Authenticate a ukončete zpracování tohoto požadavku. Ověřte dříve, než otevřete spojení k cíli nebo přijmete tunel CONNECT.

Po přijetí přihlašovacích údajů spotřebujte vlastní hlavičku Proxy-Authorization proxy před běžným předáváním. Zachovejte původní pole Authorization pro původní server. Pokud existuje nadřazené proxy, potřebuje vlastní záměrné uspořádání ověřování, místo aby tyto klientské údaje dostalo omylem.

Související články