Într-un forward proxy Go, r.BasicAuth citește antetul Authorization, care aparține autentificării pe site-ul destinație. Acreditările proxy-ului însuși sosesc în Proxy-Authorization.

Un adaptor mic poate reutiliza parserul public fără a modifica cererea originală:

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

Acest fragment folosește net/http. Returnează valorile analizate și un indicator de succes al analizei; nu autentifică contul. Transmiteți rezultatul validatorului de acreditări prevăzut de proxy.

Dacă autentificarea eșuează, returnați 407 cu o provocare Proxy-Authenticate adecvată și opriți procesarea acelei cereri. Autentificați-vă înainte de a deschide o conexiune către destinație sau de a accepta un tunel CONNECT.

După acceptarea acreditărilor, consumați antetul Proxy-Authorization al proxy-ului însuși înainte de redirecționarea obișnuită. Păstrați câmpul Authorization original pentru origine. Un proxy părinte superior, dacă există, are nevoie de propria configurare deliberată de autentificare, în loc să primească accidental această acreditare a clientului.

Articole similare