U Go forward proxyju r.BasicAuth čita zaglavlje Authorization, koje pripada prijavi na odredišno web sjedište. Vjerodajnice samog proxyja dolaze u Proxy-Authorization.

Mali adapter može ponovno upotrijebiti javni parser bez promjene izvornog zahtjeva:

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

Ovaj fragment koristi net/http. Vraća raščlanjene vrijednosti i oznaku uspješnog raščlanjivanja; ne provjerava autentičnost računa. Proslijedite rezultat namijenjenom validatoru vjerodajnica proxyja.

Ako provjera autentičnosti ne uspije, vratite 407 s odgovarajućim Proxy-Authenticate izazovom i zaustavite obradu tog zahtjeva. Provjerite autentičnost prije otvaranja veze prema odredištu ili prihvaćanja CONNECT tunela.

Nakon prihvaćanja vjerodajnica, potrošite vlastito Proxy-Authorization zaglavlje proxyja prije uobičajenog prosljeđivanja. Sačuvajte izvorno Authorization polje za izvor. Ako postoji nadređeni proxy, potrebno mu je vlastito namjerno rješenje provjere autentičnosti, umjesto da slučajno primi ove klijentske vjerodajnice.

Povezani članci